如何进行模型对比
1、发起模型对比
调用服务端API即可发起模型对比。
2、等待对比结果
转换发起后,一般需要等待5~10分钟,你可以通过两种方式获取对比状态:
1、BIMFACE完成对比后,回调(即callback)你的系统。BIMFACE推荐当前方式。
回调的URL在调用“发起模型对比”的API时通过参数指定,如何处理回调结果,请参考“发起模型对比”API的详细说明。
2、你也可以调用服务端API轮询获取对比状态
3、首先显示修改后的模型
按照显示单文件的方式,直接显示修改后的模型,请注意,务必采用“进阶模式”或“高级模式”。
4、在修改后的模型上叠加几何差异模型
1、 获取几何差异模型的ViewToken
调用服务端API获取,输入参数:compareId
2、 在前端,使用JSSDK提供的method,把几何差异模型添加到场景
// 修改后模型的viewToken
var viewToken = '<viewToken>';
// 使用compareId换取的几何差异模型的viewToken
var viewTokenDiff = '<viewTokenDiff>';
// 初始化显示组件
var options = new BimfaceSDKLoaderConfig();
options.viewToken = viewToken;
BimfaceSDKLoader.load(options, successCallback, failureCallback);
function successCallback(viewMetaData) {
// 获取DOM元素
var dom4Show = document.getElementById('domId');
var webAppConfig = new Glodon.Bimface.Application.WebApplication3DConfig();
webAppConfig.domElement = dom4Show;
// 创建WebApplication
var app = new Glodon.Bimface.Application.WebApplication3D(webAppConfig);
// 添加修改后的模型
app.addView(viewToken);
// 监听添加view完成的事件
app.addEventListener(Glodon.Bimface.Application.WebApplication3DEvent.ViewAdded, function () {
// 从WebApplication获取viewer3D对象
var viewer3D = app.getViewer();
// 添加模型对比差异部分
viewer3D.addView(viewTokenDiff);
viewer3D.render();
});
}
function failureCallback(error) {
console.log(error);
};
5、获取变更的构件列表
为了更好地显示模型对比结果,需要对变更的构件进行相应的着色处理,因此,我们需要调用服务端API获取模型对比后,新增的构件、删除的、修改前后的构件ID。
6、对变更构件着色
注意:
新增构件的objectIds为followingElementId
删除构件的objectIds为previousFileId.previousElementId
修改前构件的objectIds为previousFileId.previousElementId
修改后构件的objectIds为followingElementId
步骤:
1、首先,隔离掉没有变化的构件,让其半透明
// 根据上述服务端接口,填充所有变化的构件ID
var allChangedObjectIds = "<allChangedObjectIds>";
viewer3D.isolateComponentsById(allChangedObjectIds, Glodon.Bimface.Viewer.IsolateOption.MakeOthersTranslucent);
2、然后,对于删除的构件着色,如:红色
// 红色
var redColor = new Glodon.Web.Graphics.Color(255, 0, 0, 1);
// 根据上述服务端接口,得到删除的构件ID
var deletedObjectIds = "<deletedObjectIds>";
viewer3D.overrideComponentsColorById(deletedObjectIds, redColor);
3、对新增的构件着色,如:绿色
参考第2步
4、对修改构件,修改前的构件ID着色,如:浅黄色
参考第2步
5、对修改构件,修改后的构件DI着色,如:黄色
参考第2步
7、针对修改的构件,显示前后属性的变更结果
修改的构件,其构件ID并未发生变化,但属性值一定发生了变化,可能存在新增、删除、修改的属性,可以通过服务端API获取