# 文件对比

# 背景

在实际项目中,由于需求变更经常需要对模型和图纸文件进行修改。为了便于用户了解文件修改前后发生的变化,BIMFACE提供了在线的文件对比功能。

# 说明

  1. 原始文件转换成功后才能进行对比;
  2. 目前仅支持rvt模型和dwg图纸的文件对比。

# 主要流程

  1. 通过服务端API发起文件对比;   API:发起文件对比 (opens new window)
  2. 等待云端对比任务执行;BIMFACE支持在文件对比完成以后,通过Callback机制通知用户;另外,用户也可以通过服务端接口查询对比状态。   API:查询对比状态 (opens new window)
  3. 对比完成后,在网页端通过调用JavaScript API实现对比模型的显示;
  4. 除了显示对比模型,还可以调用服务端API获取对比结果(包括新增、删除、修改的构件列表等信息)。

# 对比逻辑说明

模型和图纸文件经过云端转换后,生成了BIMFACE定义的轻量化数据包。因此,要对比两个文件,实际上需要对比两个文件的轻量化数据包。如下图所示,文件B是文件A修改后的版本,对比完成之后,其结果包括两个部分:

  • 几何差异;
  • 变更构件及属性。

image

# 几何差异

几何差异指的是文件A相对于文件B,在显示方面的几何图形变化。 为了清晰描述几何差异,我们通过举例来详细说明:

  • 假设文件A中,包含有5个构件,分别是:1、2、3、4、5;
  • 假设文件A经过修改后,保存为文件B,其包含的构件为:2、3、4'、5、6、7。

image

通过对比,我们知道文件B相对于文件A,删除了构件 1,新增了构件 6、7,修改构件4变成了构件4' 因此,经过对比计算,几何差异保留了如下信息:

  • 删除的构件1;
  • 修改构件中,修改前的构件4。

image

需要注意的是,在几何差异中,保留的是文件A相对于文件B的修改内容,因此,新增的构件6、7,和修改构件中修改后的构件4',并没有包含在几何差异内。

# 变更构件及属性

变更构件指的是文件B相对于文件A新增、删除和修改的构件;变更的属性指的是构件修改前后,其属性值发生的变化。 在对比完成之后,可以调用服务端的API获取变更构件的列表和修改前后发生变化的构件属性列表。

  • 获取模型对比结果:可以调用服务端接口获取对比结果,返回的结果是一个列表,列表中详细列出了新增、删除、修改构件的ID和名称,并按照专业、类型进行了分组;  API:分页获取模型对比结果 (opens new window)
  • 获取变更构件属性差异:可以调用服务端接口获取修改构件的属性差异,返回的结果也是一个列表,仅针对修改的构件(不包含新增、删除的构件),是指对于一个修改过的构件ID,其修改前后分别新增、删除了哪些属性,或是哪些属性值发生了变化。  API:获取模型构件对比差异 (opens new window)

# 如何显示文件对比结果的几何图形部分

  • 完整显示文件B;
  • 在此基础上显示几何差异;
  • 隔离未变更的构件(如半透明未变更的构件);
  • 对新增、删除、修改前后的构件进行着色。 文件对比结果的显示逻辑见下图:

image