Autodesk.DiffTool并排模式问题:左侧模型无法显示
Autodesk DiffTool 并排模式左侧模型不显示问题排查与解决
可能原因及解决方案
确认模型加载状态
确保第一个模型m1已完全加载完成后再加载第二个模型。DiffTool 需要模型的几何数据、材质等资源全部就绪才能正常渲染,可通过调用viewer.waitForLoadDone()等待第一个模型加载完成:// 等待第一个模型加载完成后再执行后续逻辑 viewer.waitForLoadDone().then(() => { viewer.loadDocumentNode(doc2, doc2.getRoot().search({ name: oldVersionName })[0].getDefaultGeometry(), { keepCurrentModels: true }).then(m2 => { // ... 后续代码 }); });检查配置参数准确性
- 确认
primaryModels和diffModels指向的模型实例正确,避免变量引用错误(比如m1是否确实是第一个加载的模型)。 - 核对
mimeType与模型格式匹配,若模型不是Revit格式,需修改为对应类型(如FBX模型用application/vnd.autodesk.fbx)。 - 尝试调整模型顺序:若左侧应为旧版本,可将
primaryModels设置为[m2],diffModels设置为[m1],同时对应调整versionA和versionB。
- 确认
验证模型是否已添加到Viewer
加载第二个模型后,检查viewer.modelCount()返回值是否为2,确认两个模型都已成功添加到Viewer实例中。若数量不对,排查loadDocumentNode的调用是否存在错误,比如doc2.getRoot().search()是否找到正确的模型节点。强制刷新视图与模式切换
扩展加载完成后,手动触发模式切换并刷新渲染场景,确保配置生效:viewer.loadExtension('Autodesk.DiffTool', extensionConfig) .then(function (res) { window.DIFF_EXT = res; // 直接使用返回的扩展实例,避免重复调用getExtension console.log("DiffTool has been loaded."); // 强制切换并排模式并刷新视图 DIFF_EXT.setDiffMode('sidebyside'); viewer.impl.invalidate(true); })确保模型可见性
加载模型后显式设置两个模型为可见状态,避免模型默认被隐藏:m1.show(); m2.show();
修改后的完整代码示例
viewer.waitForLoadDone().then(() => { viewer.loadDocumentNode(doc2, doc2.getRoot() .search({ name: oldVersionName })[0] .getDefaultGeometry(), { keepCurrentModels: true }).then(m2 => { model2 = m2; // 显式设置两个模型可见 m1.show(); m2.show(); var extensionConfig = {}; extensionConfig.mimeType = 'application/vnd.autodesk.revit'; extensionConfig.primaryModels = [m1]; extensionConfig.diffModels = [m2]; extensionConfig.diffMode = 'sidebyside'; extensionConfig.versionA = newVersionName || 'New Version'; extensionConfig.versionB = oldVersionName || 'Old Version'; viewer.loadExtension('Autodesk.DiffTool', extensionConfig) .then(function (res) { window.DIFF_EXT = res; console.log("DiffTool has been loaded."); // 强制触发模式切换和视图刷新 DIFF_EXT.setDiffMode('sidebyside'); viewer.impl.invalidate(true); }) .catch(function (err) { console.log(err); }); }) });
内容的提问来源于stack exchange,提问作者黃衍齊
相关产品推荐
相关产品推荐

