autodesk-forge - 如何在 Forge 查看器中的 AEC 模型的 2D 图纸空间坐标和世界 3D 坐标之间进行转换?
问题描述
我正在关注 Petr Broz 的博客文章,其中包含我在 BIM 360 中的 Revit 项目中发布的视图,但我想知道如果我发布的 2D 视图实际上只是一个独立的楼层,我将如何在 2D 坐标和 3D 世界坐标之间进行转换平面视图而不放置在任何图纸上。
我试图获取视口,但我意识到发布的视图在模型中没有任何视口。所以我实际上不能在视口扩展中使用这些功能。任何建议将不胜感激。
解决方案
我的错误是手动尝试通过将 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);
推荐阅读
- python - 如何从内部类调用外部类函数
- java - 如何使用 J8583 解析十六进制 ISO8583 消息?
- python - 如何拆分列表中的数字?
- reactjs - 如何在下一个 js 中创建 url 别名并表达您通过 id 获取数据的帖子或用户?
- java - 我可以为多个 Web 操作只调用一次 PageFactory 实例吗?
- javascript - Sequelize 中的迁移在我自己的文件夹结构中
- android - 在 ARCore 中使用 ImageView 显示图像
- perl - 如何在 Perl 中实现断言?
- python - 如何索引,删除和计算列表中元素的所有实例?
- jquery - 如何在 onclick 事件之前触发 onchange 事件(Bootstrap 4 单选按钮)