forge viewer - 如何与查看器一起显示对象树/组件树?
forge viewer - how to show object tree / components tree along with viewer?
我们如何将对象树/组件树与查看器一起显示?这样用户可以单击树节点,然后他可以在查看器中看到选择的 object/dbid?
对此有什么想法吗?
所以,您想通过 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])
它将缩放到对象。
我们如何将对象树/组件树与查看器一起显示?这样用户可以单击树节点,然后他可以在查看器中看到选择的 object/dbid?
对此有什么想法吗?
所以,您想通过 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])
它将缩放到对象。