将DWG模型坐标转换至Autodesk Forge Viewer坐标报错求助
解决Autodesk Forge Viewer v7中DWG坐标转Viewer坐标的问题
问题出在你使用的是旧版本Viewer的API,v7及以后的版本已经移除了WGS.LmvMatrix4这个类,直接使用Three.js原生的THREE.Matrix4即可。
正确的坐标转换代码如下:
// 获取视口到模型的变换矩阵(单视口模型可直接用getActiveViewportId) const viewportId = viewer.model.getActiveViewportId(); const vpXform = viewer.model.getPageToModelTransform(viewportId).clone(); // 创建逆矩阵(直接使用Three.js的Matrix4类) const invVpXform = new THREE.Matrix4().getInverse(vpXform, true); // DWG模型中的原始坐标 const ptInCadX = ...; const ptInCadY = ...; // 转换为Viewer世界坐标系的点 const verticesInViewer = new THREE.Vector3(ptInCadX, ptInCadY, 0).applyMatrix4(invVpXform);
补充说明:
- Forge Viewer v7及后续版本深度整合了Three.js,所有矩阵、向量操作均直接使用Three.js原生类,不再保留
LmvMatrix4这类旧封装。 - 若DWG模型包含多视口,可通过
viewer.model.getViewports()获取所有视口信息,再选择目标视口的ID。 - 转换后的点为Viewer世界坐标系坐标,若需转为屏幕坐标,可额外调用
viewer.worldToClient(verticesInViewer)。
内容的提问来源于stack exchange,提问作者Clara
相关产品推荐
相关产品推荐

