加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

UG二次开发—NURBS曲线的绘制

(2017-03-08 15:20:23)
标签:

ug

二次开发

教育

cad

    UG OpenAPI关于曲线绘制的资料网上并不多,凑巧最近有人来询问UG二次开发画样条曲线该怎么弄,顺带自己琢磨了一下,以以下方式能够正常绘制NURBS曲线,主要用到如下函数:
    int UF_CURVE_create_spline
    (
        UF_CURVE_spline_p_t spline_data
        tag_p_t spline_tag
        int * num_states
        UF_CURVE_state_p_t * states
    )
    1、首先要增加几个用于输出的变量        
    tag_t tag_spline;   //曲线标识
    //下面两个反正是用于输出的,生成状态之类的变量,不用多考虑
    int nStates;   
    UF_CURVE_state_p_t states;

    2、接下来可以定义曲线数据了,主要是结构体UF_CURVE_spline_t
    UF_CURVE_spline_t spline_data; 
    spline_data.is_rational = 1;   //是否接受权值
    double dknots[10] = { 0,0,0,0,0.333,0.667,1,1,1,1 };  //节点向量
    spline_data.knots = dknots;
    spline_data.num_poles = 6;   //控制点个数
    spline_data.order = 4;       //阶数
    //这两个字面意思是起始和终止参数,但不太明确具体含义,还是由于NURBS理论研究不够深入
    spline_data.start_param = 0; 
    spline_data.end_param = 1;
    //控制点数组,123号位为控制点坐标,4号位为该控制点权值
    double dPoles[6][4] = { {-56,-50,28,1} , {-10,2,23,1} , {24,75,71,1} , {92,130,27,1} , {136,234,76,1} ,{178,298,123,1} };
    spline_data.poles = dPoles;
    3、调用绘制样条曲线函数
    int nRet = UF_CURVE_create_spline(&spline_data , &tag_spline , &nStates , &states);   //构建曲线
    4、释放要求释放的变量
    UF_free(states);
    以这个方式可以绘制出NURBS曲线,但这个函数的使用要求深入理解NURBS理论,如果某些数据定义有问题,是不能绘制出曲线的。还是需要先好好看一下NURBS曲线的理论,节点,控制点,阶数的定义及相互之间的关系等等。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有