前言
本系列文章主要讲解NXOpen UF API(简称ufun函数)的使用,之前看教学视频大都建议用ufun进行开发,这里西门子官方还专门给了一套系列文章来讲,说明官方也是特别推崇ufun。
本人从事二开也有一段时间了,我的二开启蒙师父就特别喜欢用NXOpen API,用他的话来说“年少不知nxopen好,错把ufun当成宝”,其实就我个人而言,还是喜欢NXOPEN+ufun联合开发。
一、小节概要
本实例实现了曲线的拉伸,主要知识点如下:
1、创建直线 theUfSession.Curve.CreateLine
2、创建圆弧,封闭曲线 theUfSession.Curve.CreateArc
3、拉伸 theUfSession.Modl.CreateExtruded
二、需求分析
1、效果图
2、需求分解
1、创建直线
2、创建圆弧,封闭曲线
3、拉伸
三、程序分析
1、源码所在目录
UGOPEN\SampleNXOpenApplications\.NET\NXOpenExamples\EX_Modl_CreateExtruded
2、主要功能分析
1、创建直线
line1.start_point = new double[3];
line1.start_point[0] = l1_endpt1[0];
line1.start_point[1] = l1_endpt1[1];
line1.start_point[2] = l1_endpt1[2];
line1.end_point = new double[3];
line1.end_point[0] = l1_endpt2[0];
line1.end_point[1] = l1_endpt2[1];
line1.end_point[2] = l1_endpt2[2];
Tag[] objarray= new Tag[5];
theUfSession.Curve.CreateLine(ref line1,out objarray[0]);
2、创建圆弧,封闭曲线
arc1.start_angle = arc1_start_ang;
arc1.end_angle = arc1_end_ang;
arc1.arc_center = new double[3];
arc1.arc_center[0] = l3_endpt1[0];
arc1.arc_center[1] = l3_endpt1[1];
arc1.arc_center[2] = l3_endpt1[2];
arc1.radius = arc1_rad;
theUfSession.Csys.AskWcs(out wcs_tag);
theUfSession.Csys.AskMatrixOfObject(wcs_tag, out matrix_tag);
arc1.matrix_tag = matrix_tag;
theUfSession.Curve.CreateArc(ref arc1,out objarray[2]);
3、拉伸
Tag[] features;
double[] direction = { 0.0, 0.0, 1.0 };
string taper_angle = "0.0";
string[] limit1 = { "0", "1.25" };
ArrayList arr_loop_list = new ArrayList();
for(i = 0; i < count; i++)
{
arr_loop_list.Add(objarray[i]);
}
loop_list = (Tag [])arr_loop_list.ToArray(typeof(Tag));
theUfSession.Modl.CreateExtruded(loop_list, taper_angle, limit1, ref_pt, direction, FeatureSigns.Nullsign, out features);