这篇文章的原著是 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]); } }) }}
透过上面的修改,现在透过点击构件就可以选中构件的父节点,就可以看到所有我们想要的属性数据。