微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Forge Viewer 如何计算 globalOffset?

如何解决Forge Viewer 如何计算 globalOffset?

在我们的应用程序中,我们通过从 IFC 文件中读取信息来绘制房间,然后生成添加到模型构建器的自定义对象。对于每个顶点,我们减去 globalOffset,以便房间与模型很好地对齐。这适用于我们拥有的大多数模型。但是,对于一个模型,globalOffset 很大,因此自定义对象将被绘制到远离模型的地方。

globalOffset is far too high

我们从 IFC 文件中读取的顶点位于 {0,0} 附近的合理空间中。

vertice example

我现在的问题是:globalOffset 是如何计算的?考虑了 IFC 文件的哪些属性

如前所述,当我们从每个顶点减去 globalOffset 时,其他模型工作正常。下面是一个例子:

enter image description here

预先感谢您提供任何形式的帮助!

编辑: 对于对 IFC 文件中全局偏移的来源感兴趣的每个人:搜索“ifcsite”,应该有对本地位置的引用,这可能包含相当大的翻译(至少在我的情况下)。

解决方法

默认情况下,全局偏移是模型边界框的中点,如下所示:

    Dim rngData As Range
    Dim ColALastRow As Long,LastRowOfD As Long
    
    ColALastRow = Cells(Rows.Count,"A").End(xlUp).Row
    Set rngData = ActiveSheet.Range("A4:A" & ColALastRow)
    LastRowOfD = Cells(Rows.Count,"D").End(xlUp).Row

    Range("E4:E" & ColALastRow) =Application.WorksheetFunction.Product=(Range("A4:A" & ColALastRow),Range("D4:D" & LastRowOfD))

它用于避免远离查看器原点的模型的浮点精度问题。默认情况下,Forge Viewer 将使用此偏移量将整个模型移动到查看器的原点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。