UG NX二次开发(C#)-最小包容体(块)

Posted GimiGimmy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UG NX二次开发(C#)-最小包容体(块)相关的知识,希望对你有一定的参考价值。

前言

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

测试用例

以下面的实体为例。

这个实体模型是随意创建的,首先创建一个封闭的自由曲线,然后沿某一个轴向拉伸获得的。

创建实现方法

创建最小包容体的方法如下:

   public static void CreateMinimumInclusion(Body body)
                   
            theSession.ToolingSession.SetWizardType(2);

            NXOpen.Features.ToolingBox nullNXOpen_Features_ToolingBox = null;
            NXOpen.Features.ToolingBoxBuilder toolingBoxBuilder1;
            toolingBoxBuilder1 = workPart.Features.ToolingFeatureCollection.CreateToolingBoxBuilder(nullNXOpen_Features_ToolingBox);

            toolingBoxBuilder1.Type = NXOpen.Features.ToolingBoxBuilder.Types.BoundedBlock;
          
            NXOpen.Matrix3x3 matrix1 = new NXOpen.Matrix3x3();
            matrix1.Xx = 0.0;
            matrix1.Xy = 1.0;
            matrix1.Xz = 0.0;
            matrix1.Yx = 0.0;
            matrix1.Yy = 0.0;
            matrix1.Yz = 1.0;
            matrix1.Zx = 1.0;
            matrix1.Zy = 0.0;
            matrix1.Zz = 0.0;
            NXOpen.Point3d position1 = new NXOpen.Point3d(0.0, 0.0, 0.0);
            toolingBoxBuilder1.SetBoxMatrixAndPosition(matrix1, position1);

        
            NXOpen.SelectionIntentRuleOptions selectionIntentRuleOptions1;
            selectionIntentRuleOptions1 = workPart.ScRuleFactory.CreateRuleOptions();

            selectionIntentRuleOptions1.SetSelectedFromInactive(false);

            NXOpen.Body[] bodies1 = new NXOpen.Body[1];           
            bodies1[0] = body;
            NXOpen.BodyDumbRule bodyDumbRule1;
            bodyDumbRule1 = workPart.ScRuleFactory.CreateRuleBodyDumb(bodies1, true, selectionIntentRuleOptions1);

            selectionIntentRuleOptions1.Dispose();
            NXOpen.ScCollector scCollector1;
            scCollector1 = toolingBoxBuilder1.BoundedObject;

            NXOpen.SelectionIntentRule[] rules1 = new NXOpen.SelectionIntentRule[1];
            rules1[0] = bodyDumbRule1;
            scCollector1.ReplaceRules(rules1, false);

            NXOpen.NXObject[] selections1 = new NXOpen.NXObject[1];
            selections1[0] = body;
            NXOpen.NXObject[] deselections1 = new NXOpen.NXObject[0];
            toolingBoxBuilder1.SetSelectedOccurrences(selections1, deselections1);

            NXOpen.SelectNXObjectList selectNXObjectList1;
            selectNXObjectList1 = toolingBoxBuilder1.FacetBodies;

            NXOpen.NXObject[] objects1 = new NXOpen.NXObject[0];
            bool added1;
            added1 = selectNXObjectList1.Add(objects1);

            toolingBoxBuilder1.CalculateBoxSize();         

            NXOpen.NXObject nXObject1;
            nXObject1 = toolingBoxBuilder1.Commit();      

            NXOpen.Expression expression1 = toolingBoxBuilder1.OffsetPositiveZ;
            toolingBoxBuilder1.Destroy();

            theSession.CleanUpFacetedFacesAndEdges();
        

在这个方法中,我们将坐标系设置为VX=(0,1,0),VY=(0,0,1),VZ=(1,0,0),

创建调用的UI界面和调用代码

我们制作一个测试的UI界面,如下图所示。

将这个方法在“简化体为长方体”按钮中调用,代码如下:

Body body = (Body)_BodySelect.GetSelectedObjects()[0];
CreateMinimumInclusion(body);

测试结果

测试结果如下图所示。

以上是关于UG NX二次开发(C#)-最小包容体(块)的主要内容,如果未能解决你的问题,请参考以下文章

UG NX二次开发(C#)-UIStyler-创建长方体

ug8.0包容块怎么弄

UG NX二次开发(C#)-分析-测量体对象的体积

UG NX二次开发(C#)-分析-测量体对象的体积

UG NX二次开发(C#)-模型处理功能

UG NX二次开发(C#)-模型处理功能