代码编织梦想

 上篇讲了NXOPEN获取投影曲线,这篇主要讲一下通过ufun来获取线到面的投影曲线,

UG/NX 二次开发(C#) 创建边到平面的投影曲线​​​​​​​

先上源码:

public static void Main(string[] args)
    {
        try
        {
            theSession = Session.GetSession();
            displayPart = theSession.Parts.Display;
            theUFSession = UFSession.GetUFSession();
            workPart = theSession.Parts.Work;

            Body bodyYZHU = (Body)workPart.Bodies.FindObject("BLOCK(1)");
            Body bodyYZUI = (Body)workPart.Bodies.FindObject("CONE(2)");
            Auto_Init.BodyInit init = new Auto_Init.BodyInit(bodyYZHU);
            BodyModel model = init.ProcBody();
            Face topface = (Face)NXOpen.Utilities.NXObjectManager.GetObjectFromUInt(uint.Parse(model.faceFlag.faceTop));
            Face face3 = (Face)NXOpen.Utilities.NXObjectManager.GetObjectFromUInt(uint.Parse(model.faceFlag.face3));

            Tag LineTag = Tag.Null;
            theUFSession.Obj.CycleByName("LINE", ref LineTag);
            Tag[] cures_refs;
            theUFSession.Modl.CreateList(out cures_refs);
            theUFSession.Modl.PutListItem(ref cures_refs, LineTag);

            Tag[] face_refs;
            theUFSession.Modl.CreateList(out face_refs);
            theUFSession.Modl.PutListItem(ref face_refs, topface.Tag);
            theUFSession.Modl.PutListItem(ref face_refs, face3.Tag);
            int along_face = 0; //0=使用投影矢量,1 =使用面法线
            double[] proj_vector = new double[3] { 0.0, 0.0, -1.0 }; //投影矢量
            Tag projTag;
            theUFSession.Modl.CreateProjCurves(cures_refs, face_refs, along_face, proj_vector, out projTag);
            
        }
        catch (NXOpen.NXException ex)
        {
            theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString());
        }
    }

这里需要注意的是:

1、ufun获取的是线到面的投影曲线,目前发现圆锥的低边投影会报错

2、当线的投影无法直接落在面上的时候,会报错如下:

 NXOPEN这种情况不会报错,会投影到面的外面

运行结果如下:

​​​​​​​

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MarcoPro/article/details/128017836

NX/UG二次开发—3D BOX选择—内部类构造-爱代码爱编程

在做某些项目时,经常需要获取某一对象的周围的对象,比如获取距离一个实体最近的实体,如果简单数模,遍历当前视图的实体逐一测量,获取最小值即为所求。但对于复杂数模,比如汽车前舱数模,包含发动机,那么这种方法就不适合了,速度会很慢。  在新版UG中(本文使用的是NX1872),提供了3DBOX选择工具,可以快速选择一个对象盒子内的所有对象,还可以根据类型设定范

UG NX二次开发-外部模式-爱代码爱编程

NX二次开发外部模式(.exe)制作设置 UG/Open API 函数能在两种不同的环境下运行,根据编译链接情况的不同,UG/Open API 二次开发程序又具有两种形式: a、外部式(External):此时UG/Open API程序可以脱离UG环境,在操作系统下单独运行,或者作为UG的一个子进程独立运行。 特点:调用灵活,用途广泛。但是无法利用UG的

NX/UG二次开发-矩阵-UFUN函数UF_mtx***-爱代码爱编程

以前只是用UFUN函数中的UF_MTX中的矩阵函数,也没具体输出的结果。今天自己通过线性代数中的矩阵变换,自己写了一些变换矩阵,然后在NX中测试是否正确。但测试发现UF_MTX4_vec3_multiply运行结果与预期不符合,开始以为变换矩阵错了,然后用矩阵相乘发现变换矩阵是正确的,然后就用UF_MTX4中的函数求一个变换矩阵,并打印,发现UF是以列表示

NXOPEN/UG二次开发C#---类型转换封装-爱代码爱编程

/// <summary> /// TaggedObject转tag /// </summary> /// <param name="taggedObject"></param> /// <returns></

nx二次开发-ufun获取工程图所有视图tag uf_draw_ask_views_阿飞2018的博客-爱代码爱编程

NX二次开发-UFUN获取工程图所有视图tag UF_DRAW_ask_views #include <uf.h> #include <uf_draw.h> #include <uf_drf.

nx二次开发-ufun添加工程图投影视图uf_draw_add_orthographic_view_阿飞2018的博客-爱代码爱编程

NX二次开发-UFUN添加工程图投影视图UF_DRAW_add_orthographic_view NX9+VS2012 #include <uf.h> #include <uf_draw.h>

nx二次开发-ufun创建工程图注释uf_drf_create_note_阿飞2018的博客-爱代码爱编程

NX二次开发-UFUN创建工程图注释UF_DRF_create_note NX9+VS2012 #include <uf.h> #include <uf_drf.h> #include <N

nx二次开发-ufun获取投影曲线里的曲线uf_curve_ask_proj_curves_阿飞2018的博客-爱代码爱编程

NX二次开发-UFUN获取投影曲线里的曲线UF_CURVE_ask_proj_curves NX11+VS2013 #include <uf.h> #include <uf_modl.h> #in

ug/nx二次开发(c#) 获取组件里面的部件实体_marcopro的博客-爱代码爱编程

 部件一旦装配之后,UG会对部件进行封装,并生成新的tag,那我们如何去查找装配后的部件呢? 这里提供2种思路: 1、通过ufun函数获取; 2、通过NXOPEN遍历部件; 上代码: /// <summary> /// 通过ufun获取组件里的部件信息 /// </summary&

ug/nx 二次开发(c#) 获取两个体的相交体_marcopro的博客-爱代码爱编程

 ufun方法:UF_MODL_intersect_bodies_with_retained_options 直接上源码: public static void Main(string[] args) { try { theSession = Session.GetSession(

nx二次开发-ufun创建块uf_modl_create_block_阿飞2018的博客-爱代码爱编程

NX二次开发-UFUN创建块UF_MODL_create_block NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(

ug nx二次开发(c#)-爱代码爱编程

前言 在做一些仿真项目中,经常遇到将UG NX的三维模型导入到其他仿真软件中,这是由于UG NX的造型功能比较强大,能对三维模型进行前期处理。本文将讲述采用UG NX二次开发来实现模型处理中的简化功能,即将一个实体简化为一