*BIMFACE二次开发系列目录 【已更新最新开发文章,点击查看详细】*
随着建筑信息化模型技术的发展,越来越多的人选择在云端浏览建筑模型。现阶段的云端模型浏览大多是基于文件级别,一次只可以浏览一个模型文件中的内容。而在工程项目模型设计的过程中,通常由多个设计师协同设计,不同的设计师负责不同的专业领域(例如建筑、结构、水电等)。如果想要在云端浏览整个项目工程,就需要把这些组成部分集成起来一起展示。更近一步,如果要在集成的模型之上进行业务集成的话,就要求在集成过程中对构件按单体,楼层,专业,构件分类,系统类型等进行分类或映射。
目前在实际项目中,不同专业的团队成员可能会采用不同软件进行建模,然后再将不同格式的模型导入如Navisworks等软件中,但这样的方法有如下的缺点:
针对上述的限制,BIMFACE的模型集成,能完美解决上述的所有问题。
在业务方面,BIMFACE的模型集成能:
在技术方法,BIMFACE的模型集成充分运用了云端无穷的计算资源,在模型集成过程中:
运用图形几何算法进行了如下优化,大大提升在浏览器里能展示模型的规模以及渲染的性能:构件属性在云端进行入库索引,提供任意的属性查询能力。
构件属性在云端进行入库索引,提供任意的属性查询能力
当单个模型文件转换成功以后,可以将多个单文件集成,生成一个全专业/楼层模型。由于集成不能立即完成,BIMFACE支持在模型集成完成以后,通过Callback机制通知调用方(请参考作者的博客《C#开发BIMFACE系列36 服务端API回调机制》);另外,调用方也可以通过接口查询集成状态。目前BIMFACE支持集成的模型文件格式包括:rvt、dgn、ifc、nwd、skp、3dm、3ds、fbx、stp。
下面的截图分别是建筑模型、结构模型、集成后的模型效果图,可以直观的看出建筑与结构集成后的效果。
BIMFACE官方提供了非常丰富的模型集成接口
下面详细讲解模型集成接口如何实现上述的集成效果。
接口地址:PUT https://api.bimface.com/integrate
接口参数:
请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"
请求 body:
1 {
2 "callback" : "https://api.glodon.com/viewing/callback?authCode=6kj0Jk0affae&signature=2ef131395fb6442eb99abd83d45c6016",
3 "config" : {},
4 "name" : "integrate",
5 "sourceId" : "hduf2w3ho21nowr23rqwjrn2o3",
6 "sources" : [ {
7 "fileId" : 1656504297006400
8 },
9 {
10 "fileId" : 1552501367034816
11 }]
12 }
HTTP响应示例(200):
1 {
2 "code" : "success",
3 "data" : {
4 "createTime" : "2017-12-25 17:25:25",
5 "integrateId" : 1248789977538784,
6 "name" : "integrate-x",
7 "reason" : "reason",
8 "sourceId" : "123156522123",
9 "status" : "success",
10 "thumbnail" : [ "https://m.bimface.com/dc6aa5e35b6a269972b005b4b2aac8ce/thumbnail/96.png", "https://m.bimface.com/dc6aa5e35b6a269972b005b4b2aac8ce/thumbnail/256.png" ]
11 },
12 "message" : ""
13 }
C#实现方法:
1 ///
5 /// 【必填】令牌
6 /// 集成时的请求参数
7 /// 集成时的请求参数
8 /// 集成时的请求参数
9 ///
10 public virtual ModelIntegrateResponse Integrate(string accessToken, long fileId1, long fileId2, string callBack = "")
11 {
12 //PUT https://api.bimface.com/integrate
13 string url = BIMFaceConstants.API_HOST + "/integrate";
14
15 FileIntegrateRequest request = new FileIntegrateRequest();
16
17 IntegrateSource source1 = new IntegrateSource(fileId1);
18 IntegrateSource source2 = new IntegrateSource(fileId2);
19 request.Sources = new IntegrateSource[] { source1, source2 };
20 request.CallBack = callBack;
21
22 string data = request.SerializeToJson();
23
24 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders();
25 headers.AddOAuth2Header(accessToken);
26
27 try
28 {
29 ModelIntegrateResponse response;
30
31 HttpManager httpManager = new HttpManager(headers);
32 HttpResult httpResult = httpManager.Put(url, data);
33 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
34 {
35 response = httpResult.Text.DeserializeJsonToObject
36 }
37 else
38 {
39 response = new ModelIntegrateResponse
40 {
41 Message = httpResult.RefText
42 };
43 }
44
45 return response;
46 }
47 catch (Exception ex)
48 {
49 throw new BIMFaceException("[发起模型集成]发生异常!", ex);
50 }
51 }
代码中使用的 HttpManager 类请参考我的博客文章《C# HTTP系列 HttpWebRequest 与 HttpWebResponse》。
返回类型 ModelIntegrateResponse 类如下:
1 public class ModelIntegrateResponse : GeneralResponse
2 {
3
4 }
1 public class FileIntegrateBean
2 {
3 ///
6 [JsonProperty("createTime", NullValueHandling = NullValueHandling.Ignore)]
7 public string CreateTime { get; set; }
8
9 ///
12 [JsonProperty("integrateId", NullValueHandling = NullValueHandling.Ignore)]
13 public long? IntegrateId { get; set; }
14
15 ///
18 [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
19 public string Name { get; set; }
20
21 ///
24 [JsonProperty("priority", NullValueHandling = NullValueHandling.Ignore)]
25 public int? Priority { get; set; }
26
27 ///
30 [JsonProperty("reason", NullValueHandling = NullValueHandling.Ignore)]
31 public string Reason { get; set; }
32
33 ///
36 [JsonProperty("sourceId", NullValueHandling = NullValueHandling.Ignore)]
37 public string SourceId { get; set; }
38
39 ///
42 [JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
43 public string Status { get; set; }
44
45 [JsonProperty("thumbnail", NullValueHandling = NullValueHandling.Ignore)]
46 public string[] Thumbnails { get; set; }
47
48 ///
51 [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
52 public string Type { get; set; }
53 }
测试程序:
BIMFACE控制台中查询到的集成结果如下:
集成成功后,等待一段时间,查看集成结果如下图:
上述测试程序使用了 《BIMFace.SDK.CSharp》开源SDK。欢迎大家下载使用。
*BIMFACE二次开发系列目录 【已更新最新开发文章,点击查看详细】*
手机扫一扫
移动阅读更方便
你可能感兴趣的文章