【发布时间】:2022-11-12 01:55:37
【问题描述】:
一些背景:
我正在使用 Forge 来可视化 IFC 模型。我上传的一些模型有 IfcOpeningElements,默认情况下它似乎隐藏在 Forge 中,至少在通过 viewer.setGhosting(false) 将重影设置为 false 时。我还具有在查看器中隐藏普通元素 (viewer.hide(dbIds, model)) 和显示/隐藏所有元素 (model.setAllVisibility(show)) 的功能。
我遇到的问题是我希望能够显示/隐藏IfcOpeningElements,而不管显示和隐藏“正常”元素。
我尝试过但效果不佳的方法是致电model.visibilityManager.getHiddenNodes()。这种方法的问题在于,即使对于具有 IfcOpeningElements 的模型,getHiddenNodes 也只会在大约 15 秒后返回一个非空数组(可能会随着模型的大小而变化)。同时,如果用户做了任何使应用程序调用model.setAllVisibility(true) 的事情,我将不再能够检测到原来隐藏的 IfcOpeningElements。
此外,在模型加载后的任意等待期后调用getHiddenNodes 时,我不确定它是否返回一个空数组,因为模型还没有“准备好”检测来自 IfcOpeningElements 的隐藏元素,或者模型根本没有有任何 IfcOpeningElements。
那么,有没有什么好方法可以检测模型是否有任何“默认”隐藏元素,而无需在模型加载后等待很长时间?或者也许有一种方法可以在不改变 IfcOpeningElements 的可见性的情况下调用更改整个模型的可见性?
我知道可以收听HIDE_EVENT 事件,但是由于我不确定它是否会触发(因为我不确定模型是否有任何 IfcOpeningElements),所以我无法阻止应用程序调用model.setAllVisibility(true) 反过来会使getHiddenNodes() 返回一个空数组,即使有隐藏元素开始。
【问题讨论】:
标签: autodesk-forge ifc