
C#开发BIMFACE系列35 服务端API之模型对比6:获取模型构建对比分类树
View Code View Code
发布日期:2021-05-09 00:14:57
浏览次数:11
分类:博客文章
本文共 17704 字,大约阅读时间需要 59 分钟。
BIMFACE平台提供了服务端“获取模型对比构件分类树”API。目录树返回结果以树状层级关系显示了增删改的构件信息,里面无法区分哪些构建是新增、修改或者删除的,所以在实际项目中使用意义不大。
请求地址:GET https://api.bimface.com/data/v2/comparisons/{comparisonId}/tree
参数:
请求 path(示例):https://api.bimface.com/data/v2/comparisons/1136906400211168/tree
请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"
HTTP响应示例(200):
1 { 2 "code" : "success", 3 "data" : { 4 "items" : [ { 5 "actualName" : "actualName", 6 "data" : "object", 7 "elementCount" : 0, 8 "id" : "24507acf86734fcdafcfcc5b70497cd5", 9 "items" : [ {10 "actualName" : "actualName",11 "data" : "object",12 "elementCount" : 0,13 "id" : "24507acf86734fcdafcfcc5b70497cd5",14 "items" : [ "..." ],15 "name" : "name",16 "type" : "type"17 } ],18 "name" : "name",19 "type" : "type"20 } ],21 "root" : "specialty"22 },23 "message" : ""24 }
C#实现方法:
1 ///2 /// 获取模型对比构件分类树 3 /// 4 /// 【必填】令牌 5 /// 【必填】对比ID 6 ///7 public virtual ModelCompareTreeResponse GetModelCompareTree(string accessToken, long compareId) 8 { 9 // GET https://api.bimface.com/data/v2/comparisons/{comparisonId}/tree10 string url = string.Format(BimfaceConstants.API_HOST + "/data/v2/comparisons/{0}/tree", compareId);11 12 BimFaceHttpHeaders headers = new BimFaceHttpHeaders();13 headers.AddOAuth2Header(accessToken);14 15 try16 {17 ModelCompareTreeResponse response;18 19 HttpManager httpManager = new HttpManager(headers);20 HttpResult httpResult = httpManager.Get(url);21 if (httpResult.Status == HttpResult.STATUS_SUCCESS)22 {23 response = httpResult.Text.DeserializeJsonToObject ();24 }25 else26 {27 response = new ModelCompareTreeResponse28 {29 Message = httpResult.RefText30 };31 }32 33 return response;34 }35 catch (Exception ex)36 {37 throw new Exception("[获取模型构件对比差异]发生异常!", ex);38 }39 }
代码中使用的 HttpManager 类请参考我的博客文章《》。
返回类型 ModelCompareTreeResponse 类如下:
1 ///2 /// 获取模型构件对比差异的响应类 3 /// 4 public class ModelCompareTreeResponse : GeneralResponse5 { 6 } 7 8 public class Tree 9 {10 [JsonProperty("items", NullValueHandling = NullValueHandling.Ignore)]11 public TreeNode[] Items { get; set; }12 13 [JsonProperty("root", NullValueHandling = NullValueHandling.Ignore)]14 public string Root { get; set; }15 }16 17 public class TreeNode18 {19 [JsonProperty("actualName", NullValueHandling = NullValueHandling.Ignore)]20 public string ActualName { get; set; }21 22 [JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)]23 public object Data { get; set; }24 25 [JsonProperty("elementCount", NullValueHandling = NullValueHandling.Ignore)]26 public int? ElementCount { get; set; }27 28 [JsonProperty("id", NullValueHandling = NullValueHandling.Ignore)]29 public string Id { get; set; }30 31 [JsonProperty("items", NullValueHandling = NullValueHandling.Ignore)]32 public TreeNode[] Items { get; set; }33 34 [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]35 public string Name { get; set; }36 37 [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]38 public string Type { get; set; }39 }
测试代码:
1 ///2 /// 获取模型对比构件分类树 3 /// 4 protected void btnGetModelCompareTree_Click(object sender, EventArgs e) 5 { 6 txtResult.Text = string.Empty; 7 8 long compareId = txtCompareID.Text.ToLong(); 9 IModelCompareApi api = new ModelCompareApi();10 ModelCompareTreeResponse response = api.GetModelCompareTree(txtAccessToken.Text, compareId);11 12 txtResult.Text = response.SerializeToJson(true);13 }
测试结果:
完整结果为:
1 { 2 "code": "success", 3 "message": null, 4 "data": { 5 "items": [ 6 { 7 "actualName": "墙", 8 "elementCount": 48, 9 "id": "-2000011", 10 "items": [ 11 { 12 "actualName": "基本墙", 13 "elementCount": 48, 14 "items": [], 15 "name": "基本墙", 16 "type": "family" 17 } 18 ], 19 "name": "墙", 20 "type": "category" 21 }, 22 { 23 "actualName": "楼板", 24 "elementCount": 2, 25 "id": "-2000032", 26 "items": [ 27 { 28 "actualName": "楼板", 29 "elementCount": 2, 30 "items": [], 31 "name": "楼板", 32 "type": "family" 33 } 34 ], 35 "name": "楼板", 36 "type": "category" 37 }, 38 { 39 "actualName": "家具", 40 "elementCount": 30, 41 "id": "-2000080", 42 "items": [ 43 { 44 "actualName": "Bar Chair", 45 "elementCount": 6, 46 "items": [], 47 "name": "Bar Chair", 48 "type": "family" 49 }, 50 { 51 "actualName": "Cabinet 1", 52 "elementCount": 1, 53 "items": [], 54 "name": "Cabinet 1", 55 "type": "family" 56 }, 57 { 58 "actualName": "Dining Chair (3)", 59 "elementCount": 8, 60 "items": [], 61 "name": "Dining Chair (3)", 62 "type": "family" 63 }, 64 { 65 "actualName": "M_TV - Flat Screen", 66 "elementCount": 1, 67 "items": [], 68 "name": "M_TV - Flat Screen", 69 "type": "family" 70 }, 71 { 72 "actualName": "Seat - Single with Island", 73 "elementCount": 1, 74 "items": [], 75 "name": "Seat - Single with Island", 76 "type": "family" 77 }, 78 { 79 "actualName": "Seating - Artemis - Lounge chair", 80 "elementCount": 2, 81 "items": [], 82 "name": "Seating - Artemis - Lounge chair", 83 "type": "family" 84 }, 85 { 86 "actualName": "Side Table 2 (2)", 87 "elementCount": 2, 88 "items": [], 89 "name": "Side Table 2 (2)", 90 "type": "family" 91 }, 92 { 93 "actualName": "Sofa - Ottoman", 94 "elementCount": 7, 95 "items": [], 96 "name": "Sofa - Ottoman", 97 "type": "family" 98 }, 99 {100 "actualName": "Table-Dining 01 (M)",101 "elementCount": 2,102 "items": [],103 "name": "Table-Dining 01 (M)",104 "type": "family"105 }106 ],107 "name": "家具",108 "type": "category"109 },110 {111 "actualName": "楼梯",112 "elementCount": 3,113 "id": "-2000120",114 "items": [115 {116 "actualName": "组合楼梯",117 "elementCount": 1,118 "items": [],119 "name": "组合楼梯",120 "type": "family"121 },122 {123 "actualName": "预浇注楼梯",124 "elementCount": 2,125 "items": [],126 "name": "预浇注楼梯",127 "type": "family"128 }129 ],130 "name": "楼梯",131 "type": "category"132 },133 {134 "actualName": "栏杆扶手",135 "elementCount": 10,136 "id": "-2000126",137 "items": [138 {139 "actualName": "栏杆扶手",140 "elementCount": 10,141 "items": [],142 "name": "栏杆扶手",143 "type": "family"144 }145 ],146 "name": "栏杆扶手",147 "type": "category"148 },149 {150 "actualName": "常规模型",151 "elementCount": 26,152 "id": "-2000151",153 "items": [154 {155 "actualName": "Miele Built-under Dishwasher G 4101 U CS",156 "elementCount": 1,157 "items": [],158 "name": "Miele Built-under Dishwasher G 4101 U CS",159 "type": "family"160 },161 {162 "actualName": "Miele Induction Cooktop KM 6350 LPT",163 "elementCount": 1,164 "items": [],165 "name": "Miele Induction Cooktop KM 6350 LPT",166 "type": "family"167 },168 {169 "actualName": "Miele Washing Machine W 5820 WPS",170 "elementCount": 1,171 "items": [],172 "name": "Miele Washing Machine W 5820 WPS",173 "type": "family"174 },175 {176 "actualName": "Walvit_Hung Bowl_604118 W",177 "elementCount": 4,178 "items": [],179 "name": "Walvit_Hung Bowl_604118 W",180 "type": "family"181 },182 {183 "actualName": "Water Glass",184 "elementCount": 8,185 "items": [],186 "name": "Water Glass",187 "type": "family"188 },189 {190 "actualName": "White Porcelain Plate",191 "elementCount": 8,192 "items": [],193 "name": "White Porcelain Plate",194 "type": "family"195 },196 {197 "actualName": "aalto vase - tall",198 "elementCount": 1,199 "items": [],200 "name": "aalto vase - tall",201 "type": "family"202 },203 {204 "actualName": "fire place hang",205 "elementCount": 1,206 "items": [],207 "name": "fire place hang",208 "type": "family"209 },210 {211 "actualName": "宣传画",212 "elementCount": 1,213 "items": [],214 "name": "宣传画",215 "type": "family"216 }217 ],218 "name": "常规模型",219 "type": "category"220 },221 {222 "actualName": "橱柜",223 "elementCount": 2,224 "id": "-2001000",225 "items": [226 {227 "actualName": "4500_Kitchen Island",228 "elementCount": 1,229 "items": [],230 "name": "4500_Kitchen Island",231 "type": "family"232 },233 {234 "actualName": "4500_Kitchen Island_DW",235 "elementCount": 1,236 "items": [],237 "name": "4500_Kitchen Island_DW",238 "type": "family"239 }240 ],241 "name": "橱柜",242 "type": "category"243 },244 {245 "actualName": "电气设备",246 "elementCount": 12,247 "id": "-2001040",248 "items": [249 {250 "actualName": "Photovoltaic-Panel-SolarWorld-SunModule-(235-240)",251 "elementCount": 12,252 "items": [],253 "name": "Photovoltaic-Panel-SolarWorld-SunModule-(235-240)",254 "type": "family"255 }256 ],257 "name": "电气设备",258 "type": "category"259 },260 {261 "actualName": "照明设备",262 "elementCount": 8,263 "id": "-2001120",264 "items": [265 {266 "actualName": "Trck_BswySystms_Cooper_RSA_Profile Series_AR111 Closed Back Integral Xfmr",267 "elementCount": 8,268 "items": [],269 "name": "Trck_BswySystms_Cooper_RSA_Profile Series_AR111 Closed Back Integral Xfmr",270 "type": "family"271 }272 ],273 "name": "照明设备",274 "type": "category"275 },276 {277 "actualName": "卫浴装置",278 "elementCount": 6,279 "id": "-2001160",280 "items": [281 {282 "actualName": "DC_Tankworks_PLM_5000L",283 "elementCount": 2,284 "items": [],285 "name": "DC_Tankworks_PLM_5000L",286 "type": "family"287 },288 {289 "actualName": "Lavatory-TOTO-Luminist_Rectangle_Vessel_LLT151",290 "elementCount": 4,291 "items": [],292 "name": "Lavatory-TOTO-Luminist_Rectangle_Vessel_LLT151",293 "type": "family"294 }295 ],296 "name": "卫浴装置",297 "type": "category"298 },299 {300 "actualName": "场地",301 "elementCount": 3,302 "id": "-2001260",303 "items": [304 {305 "actualName": "M_Wind Power Generator",306 "elementCount": 3,307 "items": [],308 "name": "M_Wind Power Generator",309 "type": "family"310 }311 ],312 "name": "场地",313 "type": "category"314 },315 {316 "actualName": "建筑地坪",317 "elementCount": 1,318 "id": "-2001263",319 "items": [320 {321 "actualName": "建筑地坪",322 "elementCount": 1,323 "items": [],324 "name": "建筑地坪",325 "type": "family"326 }327 ],328 "name": "建筑地坪",329 "type": "category"330 },331 {332 "actualName": "结构基础",333 "elementCount": 22,334 "id": "-2001300",335 "items": [336 {337 "actualName": "M_Pile Cap-600 Pile",338 "elementCount": 11,339 "items": [],340 "name": "M_Pile Cap-600 Pile",341 "type": "family"342 },343 {344 "actualName": "M_Pile-Steel Pipe",345 "elementCount": 11,346 "items": [],347 "name": "M_Pile-Steel Pipe",348 "type": "family"349 }350 ],351 "name": "结构基础",352 "type": "category"353 },354 {355 "actualName": "结构柱",356 "elementCount": 1,357 "id": "-2001330",358 "items": [359 {360 "actualName": "M_Concrete-Round-Column with Drop Caps",361 "elementCount": 1,362 "items": [],363 "name": "M_Concrete-Round-Column with Drop Caps",364 "type": "family"365 }366 ],367 "name": "结构柱",368 "type": "category"369 },370 {371 "actualName": "专用设备",372 "elementCount": 7,373 "id": "-2001350",374 "items": [375 {376 "actualName": "Miele Built-in Microwave M 8260-2",377 "elementCount": 1,378 "items": [],379 "name": "Miele Built-in Microwave M 8260-2",380 "type": "family"381 },382 {383 "actualName": "Miele Built-in Rangehood DA 2210",384 "elementCount": 1,385 "items": [],386 "name": "Miele Built-in Rangehood DA 2210",387 "type": "family"388 },389 {390 "actualName": "Miele MasterCool KF 1911 Vi",391 "elementCount": 1,392 "items": [],393 "name": "Miele MasterCool KF 1911 Vi",394 "type": "family"395 },396 {397 "actualName": "Miele Oven H 5681 BP",398 "elementCount": 1,399 "items": [],400 "name": "Miele Oven H 5681 BP",401 "type": "family"402 },403 {404 "actualName": "Miele Tumble Dryer T 7944 C",405 "elementCount": 1,406 "items": [],407 "name": "Miele Tumble Dryer T 7944 C",408 "type": "family"409 },410 {411 "actualName": "Vase (3)-with Flower",412 "elementCount": 1,413 "items": [],414 "name": "Vase (3)-with Flower",415 "type": "family"416 },417 {418 "actualName": "Wine Bottles",419 "elementCount": 1,420 "items": [],421 "name": "Wine Bottles",422 "type": "family"423 }424 ],425 "name": "专用设备",426 "type": "category"427 },428 {429 "actualName": "植物",430 "elementCount": 16,431 "id": "-2001360",432 "items": [433 {434 "actualName": "RPC Tree - Deciduous",435 "elementCount": 16,436 "items": [],437 "name": "RPC Tree - Deciduous",438 "type": "family"439 }440 ],441 "name": "植物",442 "type": "category"443 },444 {445 "actualName": "环境",446 "elementCount": 5,447 "id": "-2001370",448 "items": [449 {450 "actualName": "M_RPC Beetle",451 "elementCount": 1,452 "items": [],453 "name": "M_RPC Beetle",454 "type": "family"455 },456 {457 "actualName": "RPC Female",458 "elementCount": 3,459 "items": [],460 "name": "RPC Female",461 "type": "family"462 },463 {464 "actualName": "RPC Male",465 "elementCount": 1,466 "items": [],467 "name": "RPC Male",468 "type": "family"469 }470 ],471 "name": "环境",472 "type": "category"473 }474 ],475 "root": "category"476 }477 }
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月03日 15时04分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
.net 4种单例模式
2019-03-06
T4 生成数据库实体类
2019-03-06
C#搞个跨平台的桌面NES游戏模拟器
2019-03-06
手把手教你安装Eclipse最新版本的详细教程 (非常详细,非常实用)
2019-03-06
《带你装B,带你飞》pytest成魔之路4 - fixture 之大解剖
2019-03-06
互联网App应用程序测试流程及测试总结
2019-03-06
根据轨迹分析出用户家在哪
2019-03-06
PostgreSQL查询表名称及表结构
2019-03-06
是什么?评估分类器的常用概念----准确率,精确率,召回率
2019-03-06
linux中使用awk命令
2019-03-06
LAB2 内核的内存管理
2019-03-06
如何使用google搜索?
2019-03-06
Redis分布式锁的正确实现方式
2019-03-06
设计模式-抽象工厂模式
2019-03-06
MySQL Explain查看执行计划详解
2019-03-06
IntelliJ IDEA 中,项目文件右键菜单没有svn选项解决办法
2019-03-06
Spring 动态绑定多实现类实例综述
2019-03-06
IDEA 调试Java代码的两个技巧
2019-03-06
Spring AOP 面向切面编程之AOP是什么
2019-03-06
MyBatis常见面试题:#{}和${}的区别是什么?
2019-03-06