UG/NX二开Siemens官方实例解析 4.4 EX_Curve_ProjCurves(创建投影曲线)

前言

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

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


一、小节概要

本实例实现了直线到面的投影,主要知识点如下:

1、创建长方体 theUfSession.Modl.CreateBlock1

2、创建直线 theUfSession.Curve.CreateLine

3、创建投影曲线 theUfSession.Curve.CreateProjCurves

二、需求分析

1、效果图

2、需求分解

创建投影曲线,需要做以下准备工作:

1、被投影的曲线tag

2、投影平台面tag

3、投影方式

4、投影方向设置

三、程序分析

1、源码所在目录

UGOPEN\SampleNXOpenApplications\.NET\NXOpenExamples\EX_Curve_ProjCurves

2、主要功能分析

1、创建长方体 theUfSession.Modl.CreateBlock1

double[] origin={0.0,0.0,0.0};
Tag block_tag;
String[] edge_lens={"300.0","25.0","150.0"};
theUfSession.Modl.CreateBlock1(FeatureSigns.Nullsign,origin,edge_lens,out block_tag);

获取长方体面tag方法:theUfSession.Modl.AskFeatFaces(block_tag,out face_list); 

2、 创建直线 theUfSession.Curve.CreateLine

line_data.start_point = new double[3];
line_data.start_point[0] =  25.0;
line_data.start_point[1] =  50.0;
line_data.start_point[2] =  25.0;
line_data.end_point = new double[3]; 
line_data.end_point[0]   = 275.0;
line_data.end_point[1]   =  50.0;
line_data.end_point[2]   = 125.0;
theUfSession.Curve.CreateLine(ref line_data, out curves_to_proj[0]);

3、 创建投影曲线 theUfSession.Curve.CreateProjCurves

proj_data.proj_type = 3;
proj_data.proj_vec = new Double[3];
proj_data.proj_vec[0] = 0.0;
proj_data.proj_vec[1] = 1.0;
proj_data.proj_vec[2] = 0.0;
proj_data.multiplicity = 2;
theUfSession.Curve.CreateProjCurves(1,curves_to_proj,face_list.Length,face_list,3,ref proj_data,out proj_curve_feature);

4、 返回与投影曲线要素关联的曲线

theUfSession.Curve.AskProjCurves(proj_curve_feature,out num_proj_curves,out proj_curves);
for (i = 0;i < num_proj_curves;i++)
{
    theUfSession.Curve.AskProjCurveParents(proj_curves[i],out defining_feature,out defining_target,out defining_curve);
    w.WriteLine("proj_curves[{0}]\n",i);
    w.WriteLine("  belongs to feature tag = {0}\n",defining_feature);
    w.WriteLine("  was projected onto tag = {0}\n",defining_target);
    w.WriteLine("  was generated by UFCurve tag = {0}\n", defining_curve);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MarcoPro

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

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

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

打赏作者

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

抵扣说明:

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

余额充值