1

选择覆载

这篇文章的原著是 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]);
            }
        })
    }
}

透过上面的修改,现在透过点击构件就可以选中构件的父节点,就可以看到所有我们想要的属性数据。
选择覆载2


康益昇
748 声望103 粉丝