首页 > 解决方案 > 如何在 Forge 查看器中的 AEC 模型的 2D 图纸空间坐标和世界 3D 坐标之间进行转换?

问题描述

我正在关注 Petr Broz 的博客文章,其中包含我在 BIM 360 中的 Revit 项目中发布的视图,但我想知道如果我发布的 2D 视图实际上只是一个独立的楼层,我将如何在 2D 坐标和 3D 世界坐标之间进行转换平面视图而不放置在任何图纸上。

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

标签: autodesk-forgevieweraec

解决方案


我的错误是手动尝试通过将 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);

推荐阅读