Node.js开发Forge BIM360/Fusion模型查看器多模型叠加功能求助
Autodesk Forge Viewer多专业模型叠加实现方案
代码放置位置
根据你当前的项目结构,所有Viewer相关的前端逻辑都在wwwroot/js/ForgeViewer.js文件中,你只需要修改该文件的模型加载逻辑即可。
核心实现代码
你需要将原教程中单模型加载的逻辑调整为多模型依次加载,核心需要开启keepCurrentModels参数保证新加载的模型不会覆盖已有模型,示例代码如下:
// 调整原Viewer初始化函数 function initViewer(urn, token) { const options = { env: 'AutodeskProduction', accessToken: token }; Autodesk.Viewing.Initializer(options, async function () { const viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer')); viewer.start(); // 加载第一个建筑专业模型 await loadSingleModel(viewer, '建筑模型URN', token); // 加载结构专业模型 await loadSingleModel(viewer, '结构模型URN', token); // 加载MEP专业模型 await loadSingleModel(viewer, 'MEP模型URN', token); }); } // 通用单模型加载函数 function loadSingleModel(viewer, urn, token, offset = {x:0, y:0, z:0}) { return new Promise((resolve, reject) => { Autodesk.Viewing.Document.load(`urn:${urn}`, (doc) => { const viewables = doc.getRoot().getDefaultGeometry(); const loadOptions = { keepCurrentModels: true, // 核心参数:保留已加载模型 preserveView: true, // 如模型坐标未对齐,可调整offset参数设置位移 placementTransform: new THREE.Matrix4().makeTranslation(offset.x, offset.y, offset.z) }; viewer.loadDocumentNode(doc, viewables, loadOptions) .then(model => resolve(model)) .catch(err => reject(err)); }, err => reject(err)); }); }
注意事项
- 所有叠加模型需提前在建模软件中对齐坐标系,否则加载后会出现位置错位,如需调整可修改
offset参数配置位移,单位为毫米 - 你需要确保使用的access token拥有所有待加载模型的访问权限
- 多模型加载完成后,Viewer内置的选择、测量、剖切等功能默认支持跨模型使用
内容的提问来源于stack exchange,提问作者Prakash P
相关产品推荐
相关产品推荐

