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#)-最小包容体(块)的主要内容,如果未能解决你的问题,请参考以下文章