如下所示,在一个部件中包含以下几个部分:实体对象,抽取的流体域,将流体域拆分部分的体等几个部分:
为了 二次开发隐藏和显示流体及结构体部分,首先得通过获取特征来获得以下不同的体。
1、获取特征:
Part workpart=theSession.Parts.Work;
FeatureCollection featureCollection=workpart.Features;
Feature[] features=featureCollection.ToArray();
2、获取以上部分的特征类型
foreach(var ft in features)
{
// MessageBox.Show(ft.featureType);获取特征类型
if (ft.FeatureType.Contains("BREP"))//实体类型
{
string strBody = "UNPARAMETERIZED_FEATURE" + ft.GetFeatureName().Remove(0, 1);
}
//流体或拆分体
if (ft.FeatureType.Contains("SKIN")|| ft.FeatureType.Contains("SPLIT BODY"))
{
}
}
//拆分体类型
public static void HideSplitBody(string args)
{
NXOpen.Session theSession = NXOpen.Session.GetSession();
NXOpen.Part workPart = theSession.Parts.Work;
NXOpen.Part displayPart = theSession.Parts.Display;
NXOpen.Session.UndoMarkId markId1;
markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Hide
Feature Parents");
NXOpen.Features.SplitBody splitBody1 =
(NXOpen.Features.SplitBody)workPart.Features.FindObject(args);
splitBody1.HideBody();
}
//结构体类型
public static void ShowStruct(string str)
{
NXOpen.Session theSession = NXOpen.Session.GetSession();
NXOpen.Part workPart = theSession.Parts.Work;
NXOpen.Part displayPart = theSession.Parts.Display;
NXOpen.Session.UndoMarkId markId1;
markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Show");
NXOpen.DisplayableObject[] objects1 = new NXOpen.DisplayableObject[1];
NXOpen.Body body1 = (NXOpen.Body)workPart.Bodies.FindObject(str);
objects1[0] = body1;
theSession.DisplayManager.ShowObjects(objects1,
NXOpen.DisplayManager.LayerSetting.ChangeLayerToSelectable);
workPart.ModelingViews.WorkView.FitAfterShowOrHide(NXOpen.View.ShowOrHideType.ShowOnly);
}