# 文件对比
# 背景
在实际项目中,由于需求变更经常需要对模型和图纸文件进行修改。为了便于用户了解文件修改前后发生的变化,BIMFACE提供了在线的文件对比功能。
# 说明
- 原始文件转换成功后才能进行对比;
- 目前仅支持rvt模型和dwg图纸的文件对比。
# 主要流程
- 通过服务端API发起文件对比; API:发起文件对比 (opens new window)
- 等待云端对比任务执行;BIMFACE支持在文件对比完成以后,通过Callback机制通知用户;另外,用户也可以通过服务端接口查询对比状态。 API:查询对比状态 (opens new window)
- 对比完成后,在网页端通过调用JavaScript API实现对比模型的显示;
- 除了显示对比模型,还可以调用服务端API获取对比结果(包括新增、删除、修改的构件列表等信息)。
# 对比逻辑说明
模型和图纸文件经过云端转换后,生成了BIMFACE定义的轻量化数据包。因此,要对比两个文件,实际上需要对比两个文件的轻量化数据包。如下图所示,文件B是文件A修改后的版本,对比完成之后,其结果包括两个部分:
- 几何差异;
- 变更构件及属性。
# 几何差异
几何差异指的是文件A相对于文件B,在显示方面的几何图形变化。 为了清晰描述几何差异,我们通过举例来详细说明:
- 假设文件A中,包含有5个构件,分别是:1、2、3、4、5;
- 假设文件A经过修改后,保存为文件B,其包含的构件为:2、3、4'、5、6、7。
通过对比,我们知道文件B相对于文件A,删除了构件 1,新增了构件 6、7,修改构件4变成了构件4' 因此,经过对比计算,几何差异保留了如下信息:
- 删除的构件1;
- 修改构件中,修改前的构件4。
需要注意的是,在几何差异中,保留的是文件A相对于文件B的修改内容,因此,新增的构件6、7,和修改构件中修改后的构件4',并没有包含在几何差异内。
# 变更构件及属性
变更构件指的是文件B相对于文件A新增、删除和修改的构件;变更的属性指的是构件修改前后,其属性值发生的变化。 在对比完成之后,可以调用服务端的API获取变更构件的列表和修改前后发生变化的构件属性列表。
- 获取模型对比结果:可以调用服务端接口获取对比结果,返回的结果是一个列表,列表中详细列出了新增、删除、修改构件的ID和名称,并按照专业、类型进行了分组; API:分页获取模型对比结果 (opens new window)
- 获取变更构件属性差异:可以调用服务端接口获取修改构件的属性差异,返回的结果也是一个列表,仅针对修改的构件(不包含新增、删除的构件),是指对于一个修改过的构件ID,其修改前后分别新增、删除了哪些属性,或是哪些属性值发生了变化。 API:获取模型构件对比差异 (opens new window)
# 如何显示文件对比结果的几何图形部分
- 完整显示文件B;
- 在此基础上显示几何差异;
- 隔离未变更的构件(如半透明未变更的构件);
- 对新增、删除、修改前后的构件进行着色。 文件对比结果的显示逻辑见下图:
← 模型集成 callback说明 →