伪造查看器-如何与查看器一起显示对象树/组件树?

时间:2020-02-13 11:56:03

标签: autodesk-forge autodesk-viewer autodesk-model-derivative autodesk-data-management

我们如何与查看器一起显示对象树/组件树?这样用户可以单击树节点,然后可以看到在查看器中选择的对象/标价?

对此有何想法?

1 个答案:

答案 0 :(得分:0)

因此,除了Forge Viewer,您还想构建一个类似的模型树。您共享的演示使用JStree library列出BIM 360中的文件。我相信您对JsTree很熟悉。

要转储Forge Viewer的模型树节点,下面的代码可以作为参考。它枚举层次结构,并一一获取节点名称和dbId。

function getAllLeafComponents(viewer, callback) {
    var cbCount = 0;  
    var tree;  
    var jsData = []

function getLeafComponentsRec(current,parent) {
    cbCount++;
    if (tree.getChildCount(current) != 0) {
        tree.enumNodeChildren(current, function (children) {
            getLeafComponentsRec(children,current);
        }, false);
    } 
    var nodeName = viewer.model.getInstanceTree().getNodeName(current)
    jsData.push({id:current,parent:parent,text:nodeName})  

    if (--cbCount == 0) callback(jsData);
}
viewer.getObjectTree(function (objectTree) {
    tree = objectTree;
    var rootId = tree.getRootId()
    var nodeName = viewer.model.getInstanceTree().getNodeName(rootId)
    jsData.push({id:rootId,parent:'#',text:nodeName}) 
    var allLeafComponents = getLeafComponentsRec(rootId,'#');

 });
}

要使用该功能,

getAllLeafComponents(viewer, function (jsonData) {
   console.log(jsonData);

})

它将转储可与JSTree一起使用的树。由于数据告诉DbId,因此单击JStree节点时,请获取dbId,然后调用

viewer.fitToView([dbId])

它将缩放到对象。

enter image description here

相关问题