You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,提问作者黃衍齊

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:00:07