【问题标题】:Some models loaded in a forge viewer do not return any viewportForge 查看器中加载的某些模型不返回任何视口
【发布时间】:2021-12-23 17:06:19
【问题描述】:

我有一个伪造查看器从 BIM360 中的 Revit 项目加载包含多个可视项的文档。我可以看到所有可视项都渲染得很好。我正在使用 Autodesk.AEC.ViewportsExtension 在特定位置的查看器上显示某些元素,例如标签。我按照 Petr 的 blog post 成功地显示了标签,但是一些查看器模型无法返回任何视口。

    viewportExt = viewer.getExtension("Autodesk.AEC.ViewportsExtension");
    viewport = viewportExt.getViewports(viewer.model)[0]; // this returns null
    viewportXform = viewport.get3DTo2DMatrix(viewer.model.getUnitScale());

这适用于某些可视项,但有些不返回我需要的任何视口,以便在 3D 和 2D 空间之间进行转换。我可以看到在这两种情况下都加载了 AEC 元数据。我不知道为什么只有某些视图无法返回视口。


我刚刚在 BIM360 中使用我自己的模型尝试了 Petr 的 sample。我的 Revit 项目中的可视项没有返回任何视口。我怀疑这与 BIM 360 发布过程中发生的事情有关。

任何建议将不胜感激。

【问题讨论】:

    标签: autodesk-forge


    【解决方案1】:

    在这两种情况下,我都可以获得从 BIM 360 中的 Revit 项目发布的所有视口的列表,包括视口的 guid。但是,即使使用 findViewportByGuid(),我仍然无法获得用于视口扩展的视口对象。

    在对 Forge 查看器中加载的模型数据进行一些研究和挖掘之后,我注意到那些我无法从中获取视口对象的已发布视图没有 geometryViewportRegion 属性,并且 isCropBoxActive 值设置为 false。

    我猜这就是 getViewports() 为这些视图返回 null 的原因。从我可以从 AEC 扩展 source code 中读取的内容来看,get3Dto2DMatrix(vp, sheetUnitScale) 也需要视口边界,所以我想如果没有为 Revit 视图明确定义视口边界,我就无法从 3D 坐标转换为 2D 坐标。

    我可以通过选中这些视图的 Revit 视图属性中的“裁剪视图”复选框来解决问题,尽管我希望保持不选中它,这样我就可以发布所有可见的视图,而无需任何视图边界。

    【讨论】:

    • 是的,很遗憾,这种情况需要Crop View checkbox enabled
    【解决方案2】:

    根据我们的 BIM360 用户手册 hereCrop View checkbox enabled 是必需的。

    • 新发布的数据。它不适用于以前发布的模型。
    • 具有平面图视图、结构平面图或反射天花板平面图的二维图纸。目前不支持其他带有标注或区域平面视图的图纸。
    • 在 Revit 中带有 Crop View checkbox enabled 的工作表。
    • 没有视图中断的视图。当前不支持包含视图中断或视图拆分的视图。

    【讨论】:

      猜你喜欢
      • 2020-04-07
      • 2018-07-16
      • 2017-03-28
      • 1970-01-01
      • 2018-11-22
      • 2021-11-25
      • 2019-08-18
      • 2021-03-07
      • 2019-03-27
      相关资源
      最近更新 更多