如何在 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);
我正在关注 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);