UG/NX二开Siemens官方实例解析 4.3 EX_Curve_CreateSpline(创建样条曲线)

前言

本系列文章主要讲解NXOpen UF API(简称ufun函数)的使用,之前看教学视频大都建议用ufun进行开发,这里西门子官方还专门给了一套系列文章来讲,说明官方也是特别推崇ufun。

本人从事二开也有一段时间了,我的二开启蒙师父就特别喜欢用NXOpen API,用他的话来说“年少不知nxopen好,错把ufun当成宝”,其实就我个人而言,还是喜欢NXOPEN+ufun联合开发。


一、小节概要

1、背景知识引用

样条曲线的概念:
样条曲线是指利用指定的若干个点拟合出的多项式曲线,样条曲线采用的是近似的拟合方法,但可以很好的满足工程需求,因此得到广泛的应用。

2、知识点提取

1)theUfSession的初始化

2)通过StreamWriter记录日志

3)创建样条曲线相关ufun方法

4)计算样条曲线的拐点信息

二、需求分析

1、效果图

2、需求分解

1)创建样条曲线相关ufun方法

2)计算样条曲线的拐点信息

三、程序分析

1、源码所在位置

UGOPEN\SampleNXOpenApplications\.NET\NXOpenExamples\EX_Curve_CreateSpline

2、主要功能分析

1)创建样条曲线相关ufun方法

int i, k, curve_cnt=0;
Tag curve_array;
char[] buf= new char[UF_OBJ_NAME_LEN+1];
String newnam= new String(buf);
int num_infpts;
double[] range={0.0, 100.0};
double[] inf_pts;
double[] proj_matrx={ 1.0, 0.0, 0.0, 0.0, 1.0, 0.0,0.0, 0.0, 1.0};
int    knot1_fix, knot2_fix, pole1_fix, pole2_fix;
double[] bc1_knots = {-3.0/8.0, -2.0/8.0, -1.0/8.0, 0.0, 1.0/8.0,
                            2.0/8.0, 3.0/8.0, 4.0/8.0, 5.0/8.0, 6.0/8.0,
                            7.0/8.0, 1.0, 9.0/8.0, 10.0/8.0, 11.0/8};
double[] bc1_poles = { 2.0, 0.0, 0.0, 1.0,
                            4.0, 0.0, 0.0, 1.0,
                            3.5, 2.0, 0.0, 1.0,
                            6.0, 6.0, 0.0, 1.0,
                            2.0, 3.5, 0.0, 1.0,
                            0.0, 4.0, 0.0, 1.0,
                            0.0, 2.0, 0.0, 1.0,
                            0.0, 0.0, 0.0, 1.0,
                            2.0, 0.0, 0.0, 1.0,
                            4.0, 0.0, 0.0, 1.0,
                            3.5, 2.0, 0.0, 1.0  };
double[] bc2_knots = {0.0, 0.0, 0.0, 1.0/3.0,
                            2.0/3.0, 1.0, 1.0, 1.0};
double[] bc2_poles = {0.0, 0.0, 1.0, 1.0,
                            1.0, 2.0, 1.0, 1.0,
                            0.625, 0.0, 0.25, 0.25,
                            4.0, 2.0, 1.0, 1.0,
                            5.0, 0.0, 1.0, 1.0 };
theUfSession.Modl.CreateSpline(11,4,bc1_knots,bc1_poles,out curve_array,out knot1_fix,out pole1_fix);
创建样条曲线参数初始化:
1、nc 极点
2、kc 未知
3、bc1_knots 极点+阶数
4、bc1_poles 阵列控制点
5、curve_array 样条曲线tag
6、knot1_fix 结固定状态 0 =未执行修正,1 =结固定序列
7、pole1_fix 极点修正状态 0 =没有执行修正,1 =极点阵列固定

2)计算样条曲线的拐点信息并输出

theUfSession.Curve.AskCurveInflections(curve_array,proj_matrx,range,out num_infpts,out inf_pts);
if (num_infpts > 0)
{
    w.WriteLine("There are {0} inflection points for UFCurve {1}\n",num_infpts, i+1);
    for(k = 0; k < (num_infpts * 4); k++)
    {
        w.WriteLine("inf_pts[{0}] = {1}\n", k, inf_pts[k]);
    }
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MarcoPro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值