C#开发BIMFACE系列35 服务端API之模型对比6:获取模型构建对比分类树
发布日期:2021-05-09 00:14:57 浏览次数:11 分类:博客文章

本文共 17704 字,大约阅读时间需要 59 分钟。

BIMFACE二次开发系列目录    

  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 : GeneralResponse
5 { 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 }
View Code
测试

测试代码:

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 }
View Code
 
BIMFACE二次开发系列目录    
上一篇:C#开发BIMFACE系列36 服务端API回调机制
下一篇:C#开发BIMFACE系列34 服务端API之模型对比5:获取模型构件对比差异

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月03日 15时04分02秒