iCAx开思工具箱

标题: 有没有人知道如何获取椭圆长轴短轴 [打印本页]

作者: begtostudy    时间: 2008-7-21 08:56
标题: 有没有人知道如何获取椭圆长轴短轴
有没有人知道如何能够获得一个椭圆面的Edge的椭圆长轴和短轴长度?
作者: dianzi24    时间: 2008-7-21 12:38
首先必须有一个椭圆面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中可以查询椭圆的任何属性。
申明一下:必须是标准的椭圆,如果是类似椭圆实际是不规则形状,此方法无效。




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3