摘要:本文提供方法可用于多层结构树遍历,将结构树遍历和人机交互相结合,达到指哪打哪的效果。
(PS:感谢 隔壁老曹的指导)
话不多说,先上效果:
人机交互遍历结构树演示
当用户选择树上某个零件时,即可拿到当前VPMOccurrence,然后就是熟悉的配方、熟悉的套路,从此节点开始向下遍历,为了验证程序完成了当前节点的遍历,点击OK按钮后将弹窗显示该零件下名为666的几何图形集名称。
实现方法
1.利用Selection选择零件读取当前VPMOccurrence
Selection sel = ActiveEditor.Selection;
sel.Clear();
Array filter = Array.CreateInstance(typeof(object), 1);
filter.SetValue("VPMOccurrence", 0);
string status = sel.SelectElement(filter, "选择对象", false);
if (status == "Cancel" || status == "Undo")
{
// do nothing
sel.Clear();
}
else if (status == "Redo")
{
// do nothing
sel.Clear();
}
else
{
// do something
mainWinVM.VpmOcc = sel.Item(1).Value as VPMOccurrence;
sel.Clear();
}
2.从当前VPMOccurrence向下遍历拿到零件内部元素
VPMReference vPMRefOnRoot = VpmOcc.InstanceOccurrenceOf.ReferenceInstanceOf;
var vpmInstsL1 = vPMRefOnRoot.RepInstances; //根节点子级 3DShape集合
VPMRepInstance vpmInstL1 = vpmInstsL1.Item(1) as VPMRepInstance;//获取第一个3DShape
var vpmRefInstL1 = vpmInstL1.ReferenceInstanceOf;//获取第一个3DShape参考
Part activePart = vpmRefInstL1.GetItem("Part") as Part;//获取到当前零件
HybridBody firstHB = activePart.HybridBodies.Item(1);