如何进行模型对比_文档_BIMFACE_BIM应用二次开发平台

如何进行模型对比

1、发起模型对比

调用服务端API即可发起模型对比。

API:发起模型对比

2、等待对比结果

转换发起后,一般需要等待5~10分钟,你可以通过两种方式获取对比状态:

1、BIMFACE完成对比后,回调(即callback)你的系统。BIMFACE推荐当前方式。

回调的URL在调用“发起模型对比”的API时通过参数指定,如何处理回调结果,请参考“发起模型对比”API的详细说明。

2、你也可以调用服务端API轮询获取对比状态

API:获取模型对比状态

3、首先显示修改后的模型

按照显示单文件的方式,直接显示修改后的模型,请注意,务必采用“进阶模式”或“高级模式”。

进阶方式显示修改后的模型

4、在修改后的模型上叠加几何差异模型

1、 获取几何差异模型的ViewToken

调用服务端API获取,输入参数:compareId

API:获取ViewToken

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。

API:获取模型对比结果

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获取

API:查看修改构件属性