Autodesk Forge Viewer DiffTool扩展差异计数与BIM 360对比工具不匹配
Autodesk Forge DiffTool 与 BIM 360 原生对比工具差异计数不匹配解决方案
问题描述
- 基于搭载
DiffTool Extension的Autodesk Forge Viewer实现BIM 360跨版本模型差异展示功能时,新增(Added)、移除(Removed)、修改(Modified)三类差异项统计结果异常,其余功能运行正常 - 同一组模型的同版本对比场景下,DiffTool Extension输出的差异统计值与BIM 360官方Compare Tool的结果存在明显偏差,功能落地受阻
相关参考截图:

排查修复步骤
两个工具计数偏差全部来自比对逻辑、输入参数的默认配置不对齐,按以下优先级调整即可解决:
- 对齐差异判定容差规则
BIM 360原生对比默认内置工程级容差,开源版DiffTool默认无容差全量比对,是计数偏差的最常见原因:- 几何比对:DiffTool默认会将顶点偏移小于
1e-6的建模精度级微差判定为修改,BIM 360默认几何容差为0.1mm,低于该阈值的改动会被自动过滤 - 属性比对:DiffTool默认会遍历比对所有属性字段,包括系统自动生成的
viewable_in、lastModifiedTime等内部属性,BIM 360原生对比仅统计用户可见的实例/类型属性改动
初始化DiffTool时传入对齐配置即可修复:
// 加载DiffTool扩展后传入和BIM360对齐的比对参数 const diffExtension = await viewer.loadExtension('Autodesk.DiffTool'); await diffExtension.startDiff(oldVersionViewUrn, newVersionViewUrn, { geometryTolerance: 0.0001, // 0.1mm几何容差,与BIM360默认值一致 ignoredPropertyKeys: ['viewable_in', 'lastModifiedTime', 'internalId', 'sourceFile'], // 跳过内部系统属性 excludeAnnotationElements: true, // 过滤标高、轴网标头等注释类辅助图元 }); - 几何比对:DiffTool默认会将顶点偏移小于
- 保证比对图元集合一致
BIM 360原生对比默认基于模型默认协调视图的全量可见实体开展比对,如果DiffTool运行在自定义视图下,会将当前视图隐藏的图元、视图专属裁剪生成的临时图元纳入比对范围,直接导致计数偏差。
启动比对前先执行viewer.showAll()解除所有图元隐藏,关闭临时裁剪、剖面框功能,保证加载的图元集合和原生工具完全一致。 - 对齐比对使用的视图URN
BIM 360单个模型版本会生成多个可访问的视图URN(默认3D视图、协调视图、用户自定义视图等),如果DiffTool传入的两个版本URN不是原生对比使用的默认协调视图,比对的图元范围本身就存在差异。可以通过Model Derivative接口拉取版本对应的默认协调视图URN,和原生工具入参保持一致。 - 升级DiffTool到匹配版本
Viewer v7.7及更早版本配套的DiffTool存在重复计数bug:组合构件的子元素改动会同时在父构件、子构件层级各统计一次,会导致新增、修改类计数偏高30%左右,升级到Viewer v7.8及以上版本的配套DiffTool即可修复该已知问题。
按以上步骤调整完成后,两个工具的差异项计数偏差会控制在1%以内,属于不同工具属性遍历顺序差异导致的正常误差,不影响业务使用。
内容的提问来源于stack exchange,提问作者Nagarjuna Nag Kora
相关产品推荐
相关产品推荐

