[英]Forge viewer display only part of element / node
我們實現了一種復雜的過濾方法來過濾模型的元素。 一切都基於IFC。 以下是具有2個子元素的IfcFooting元素的示例:
ID IfcType Description
--------------------------------------------------------
1 IfcFooting Base
2 > IfcBuildingElementPart Insulation
3 > IfcBuildingElementPart Reinforced Concrete
過濾方法可以找到帶有特殊子元素“鋼筋混凝土”的IfcFooting元素。 返回值為ID 1和3。在查看器中,我們使用以下方法僅顯示過濾器結果:
viewer3d.impl.visibilityManager.hide(rootId, model);
$.each(selection, function (k, v) {
viewer3d.impl.visibilityManager.show(v, model);
});
問題是用ID 1調用此方法,查看器將顯示1、2和3。是否可以禁用此行為? 我們只需要顯示子元素3,但是就不可能在過濾結果中忽略ID 1。
這是預期的行為,如果id不是葉組件而是擁有子組件的邏輯組件,那么顯示/隱藏該組件會影響其所有子組件是正常的。
您應該做的是確保收集的所有ID都是葉子組件(檢查instanceTree.enumNodeChildren(dbId)沒有子代)。 並且僅在葉子上執行邏輯。
在您的情況下,您將篩選出dbId 1,因為它具有子級並且僅顯示dbId 3。
這是一個例子:
function isLeafComponent (dbId) {
var instanceTree = viewer.model.getData().instanceTree
var childCount = 0
instanceTree.enumNodeChildren(dbId, function(childId) {
++childCount
})
return (childCount < 2) // Handles IFC with "Body" child
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.