这篇文章的原著是 Autodesk ADN 的 Adam Nagy。
当我们在 Viewer 里选中构件后,在模型浏览器窗口里永远只会选中叶子(Leaf)节点。以上图为例,你选中的构件通常都会有一个子节点叫作 "Body" 或 "Solid" 等,通常这些构件的属性都不会是你关注的,这会让终端使用者无法取得他们想要的数据。幸运的是,你可以透过撰写一个函数很轻易的去覆写选择集,选中原本构件的父节点,而且你只要去监听 Autodesk.Viewing.SELECTION_CHANGED_EVENT
事件就可以达成了:
// ...
oViewer =new Autodesk.Viewing.Private.GuiViewer3D ($("#viewer") [0], {});
oViewer.addEventListener(Autodesk.Viewing.SELECTION_CHANGED_EVENT, onSelectionChanged)
}
function onSelectionChanged(event) {
// Let's only control selection in case of
// single user selection
if (event.dbIdArray.length === 1) {
oViewer.getProperties(event.dbIdArray[0], function(data) {
console.log(data.name)
if (data.name.startsWith("Solid")) {
var instanceTree = oViewer.model.getData().instanceTree;
var parentId = instanceTree.getNodeParentId(event.dbIdArray[0])
oViewer.select([parentId]);
}
})
}
}
透过上面的修改,现在透过点击构件就可以选中构件的父节点,就可以看到所有我们想要的属性数据。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。