C# NX二次开发:将实体数模复制到指定图层

今天分享的是如何将实体part复制到一个固定的图层中。

逻辑如下:首先将无选择过滤器调成实体(这块不知道如何调整可以看我之前发的文章,具体讲了如何操作),然后用鼠标选中坐标系中显示的part(注意此处不要点击左侧部件导航器上的内容)。选中以后运行代码就可以实现将实体复制到指定图层的操作。

实现代码如下:

NXOpen.Session theSession = NXOpen.Session.GetSession();

NXOpen.Part workPart =theSession.Parts.Work;

NXOpen.Part displayPart =theSession.Parts.Display;

int selcount = 0;

Tag[] objs;

theUfSession.Ui.AskGlobalSelObjectList(out selcount, out objs);

if (selcount < 1)

{

theUI.NXMessageBox.Show("提示", NXMessageBox.DialogType.Information, "请选中体");

return retValue;

}

NXOpen.NXObject[] objectArray1 = newNXOpen.NXObject[selcount];

for(int i=0;i<selcount;i++)

{

NXOpen.NXObject q1 =(NXOpen.NXObject)NXObjectManager.Get(objs[i]);

objectArray1[i] = q1;

}

NXOpen.Features.FeatureCollectionfeatureCollection1 = workPart.Features;

NXOpen.Features.Feature[]baseParts1 = featureCollection1.ToArray();

int layerNum = 255;

workPart.Layers.CopyObjects(layerNum,objectArray1);

string layerName = "客户数模";

CategoryCollection category=workPart.LayerCategories;

Category cateG1=null;

Category [] cateG=category.ToArray();

bool a = false;

for (int i = 0; i < cateG.Length; i++)

{

string Name = null;

theUfSession.Obj.AskName(cateG[i].Tag, out Name);

if (Name == layerName)

{

a = true;

cateG1 = cateG[i];

}

}

if (a)

{

int[] b = cateG1.GetMemberLayers();

int[] layers1 = new int[b.Length + 1];

for (int i = 0; i < b.Length; i++)

{

layers1[i] = b[i];

}

layers1[b.Length] = layerNum;

cateG1.SetMemberLayers(layers1);

}

else

{

SetLayerName(layerNum, layerName);

}

NXOpen.Features.FeatureCollectionfeatureCollection2 = workPart.Features;

NXOpen.Features.Feature[]baseParts2 = featureCollection2.ToArray();

List<NXObject> obj3 = newList<NXObject>();

foreach (NXObject aitem in baseParts2)

{

if (!baseParts1.Contains(aitem))

{

obj3.Add(aitem);

}

}

for (int j = 0; j < obj3.Count; j++)

{

int u; int v;

theUfSession.Obj.AskTypeAndSubtype(obj3[j].Tag, out u, out v);

obj3[j].SetName("客户数模");

}

State state =workPart.Layers.GetState(layerNum);

if (state == State.Selectable)

{

workPart.Layers.SetState(layerNum, State.Hidden);

}

theUI.NXMessageBox.Show("提示", NXMessageBox.DialogType.Information, "复制成功");

运行代码效果之前如下图所示:

运行代码效果之后如下图所示:

我已经把原有体隐藏,把新复制的体放到了255图层。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵桑さん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值