0
点赞
收藏
分享

微信扫一扫

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

前言

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

测试用例

以下面的实体为例。
UG NX二次开发(C#)-最小包容体(块)_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界面,如下图所示。
UG NX二次开发(C#)-最小包容体(块)_ui界面_02
将这个方法在“简化体为长方体”按钮中调用,代码如下:

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

测试结果

测试结果如下图所示。
UG NX二次开发(C#)-最小包容体(块)_实体模型_03


举报

相关推荐

0 条评论