【问题标题】:Check if Model has any default hidden elements in Forge's 3D Viewer检查模型在 Forge 的 3D 查看器中是否有任何默认隐藏元素
【发布时间】: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


    【解决方案1】:

    只是不想显示 IfcOpeningElements 的几何图形?如果是这样,请尝试将skipHiddenFragments: true 传递给Viewer3D#loadDocumentNode 的第三个参数

    viewer.loadDocumentNode(
        doc,
        viewable,
        {
            skipHiddenFragments: true
        }
    );
    

    这种方法将跳过加载 IfcOpeningElements 的网格,但您仍然可以在模型结构面板上选择 IfcOpeningElements 时看到它们的属性。另一方面,您无法使用这种方法访问它们的边界框和几何图形。

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 1970-01-01
      • 2010-09-15
      • 2021-06-25
      相关资源
      最近更新 更多