如何在 Forge 查看器中的 AEC 模型的 2D 纸张 space 坐标和世界 3D 坐标之间进行转换?

How do I convert between 2D paper space coordinates world 3D coordinates for AEC models in a forge viewer?

我正在关注 Petr Broz 的博客 post,其中包含我在 BIM 360 中的 Revit 项目中发布的视图,但我想知道如果我发布的 2D 坐标如何在 2D 坐标和 3D 世界坐标之间转换视图实际上只是一个独立的平面图,没有放置在任何 sheet.

我试图获取视口,但我意识到发布的视图在模型中没有任何视口。所以我实际上不能在视口扩展中使用这些函数。任何建议将不胜感激。

不幸的是,它不支持未放置 sheet 的平面图视图,因为此时缺少一些必需的信息。我们仍在与我们的工程团队讨论这个问题。

当前的工作路径是创建 Revit Sheet 视图并在其中放置平面图,参见 https://www.youtube.com/watch?v=smMap86YZUY

我的错误是尝试通过将 x、y、z 坐标除以视口比例来手动转换它们,因此它们无法与 3D 世界坐标对齐。

通过提供正确的模型单位比例,我可以使用 get3DTo2DMatrix() 进行转换。

    viewport = viewportExt.getViewports(viewer.model)[0];
    viewportXform viewport.get3DTo2DMatrix(viewer.model.getUnitScale());
    
    // From foot to millimeters
    x = x* 0.00328084;
    y = y* 0.00328084;
    z = z* 0.00328084;
    var worldPt = new THREE.Vector3(x,y,z);
    worldPt.applyMatrix4(viewportXform);