首先必须有一个椭圆面tag_t face;
再定义几个变量
uf_list_p_t edge_list;
int list_count;
tag_t edge_temp;
tag_t curve_ellipse;
UF_MODL_ask_face_edges(face,&edge_list); //根据面得到边界
UF_MODL_ask_list_count(edge_list,&list_count); //查询边界数量
UF_MODL_ask_list_item(edge_list,0,&edge_temp); //得到第一个边界即椭圆边界,
//如果数量大于1,就是说边界是多个,需要用循环查询全部。如果椭圆标准,边界只有一个,这里投机一下。
UF_MODL_create_curve_from_edge(edge_temp,&curve_ellipse); //通过椭圆边界创建一个椭圆tag_t
UF_EVAL_p_t evaluator;
UF_EVAL_ellipse_s ellipse_a;
UF_EVAL_initialize(curve_ellipse,&evaluator);
UF_EVAL_ask_ellipse(evaluator,&ellipse_a);
完成OK。
另外椭圆结构为
struct UF_EVAL_ellipse_s
{
logical is_periodic; /* Is the curve periodic or not? */
double limits[2]; /* Curve limits: [0] = min; [1] = max */
double minor; /* Minor radius */
double major; /* Major radius */
double center[3]; /* Center (ABS coordinates) */
double x_axis[3]; /* Unit direction vector of the x axis (ABS) */
double y_axis[3]; /* Unit direction vector of the y axis (ABS) */
};
在ellipse_a中可以查询椭圆的任何属性。
申明一下:必须是标准的椭圆,如果是类似椭圆实际是不规则形状,此方法无效。 |