C#开发BIMFACE系列44 服务端API之计算图纸对比差异项来源自哪个图框

在前两篇博客《C#开发BIMFACE系列42 服务端API之图纸对比》、《C#开发BIMFACE系列43 服务端API之图纸拆分》中介绍了单文件多图框的拆分与对比
本文将详细讲解如何计算图纸对比差异项来源自哪个图框。
以控制台中的2张图纸【建筑图纸1-已拆分.dwg】 与 【建筑图纸2-已拆分-已变更.dwg】为例
对比结果参考上面第2个动态图。
调用BIMFACE服务端接口
- 1 /// <summary>
- 2 /// 分页获取二维图纸对比结果。结果中包含 Type 为 Model 与 Layer 的两种结果对比,所以可能有重复的构建ID,需要手动过滤。
- 3 /// </summary>
- 4 /// <param name="accessToken">【必填】令牌</param>
- 5 /// <param name="compareId">【必填】对比ID</param>
- 6 /// <param name="page">页码(提示:私有云部署不支持分页查询)。如果不传参数,则默认为1</param>
- 7 /// <param name="pageSize">每页记录数(提示:私有云部署不支持分页查询)。如果不传参数,则默认为50</param>
- 8 /// <returns></returns>
- 9 public virtual DrawingCompareDiffResponse GetDrawingCompareDiff(string accessToken, long compareId, int? page = null, int? pageSize = null)
- 10 {
- 11 // GET https://api.bimface.com/data/v2/comparisons/{comparisonId}/diff
- 12 string url = string.Format(BIMFaceConstants.API_HOST + "/data/v2/comparisons/{0}/drawingdiff?v=1", compareId);
- 13 if (page.HasValue)
- 14 {
- 15 if (page.Value <= 1)
- 16 {
- 17 page = 1;
- 18 }
- 19
- 20 url += "&page=" + page;
- 21 }
- 22
- 23 if (pageSize.HasValue)
- 24 {
- 25 if (pageSize.Value <= 0)
- 26 {
- 27 pageSize = 50;
- 28 }
- 29
- 30 url += "&pageSize=" + pageSize;
- 31 }
- 32
- 33 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders();
- 34 headers.AddOAuth2Header(accessToken);
- 35
- 36 try
- 37 {
- 38 DrawingCompareDiffResponse response;
- 39
- 40 HttpManager httpManager = new HttpManager(headers);
- 41 HttpResult httpResult = httpManager.Get(url);
- 42 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
- 43 {
- 44 response = httpResult.Text.DeserializeJsonToObject<DrawingCompareDiffResponse>();
- 45 }
- 46 else
- 47 {
- 48 response = new DrawingCompareDiffResponse
- 49 {
- 50 Message = httpResult.RefText
- 51 };
- 52 }
- 53
- 54 return response;
- 55 }
- 56 catch (Exception ex)
- 57 {
- 58 throw new BIMFaceException("[分页获取图纸对比结果]发生异常!", ex);
- 59 }
- 60 }
完整的对比差异项纪录信息如下:


- 1 {
- 2 "code": "success",
- 3 "message": null,
- 4 "data": {
- 5 "data": [
- 6 {
- 7 "diffType": "NEW",
- 8 "id": "1946877",
- 9 "layer": "D1",
- 10 "sheetId": "0",
- 11 "sheetName": "Model",
- 12 "type": "Model"
- 13 },
- 14 {
- 15 "diffType": "NEW",
- 16 "id": "1946878",
- 17 "layer": "D1",
- 18 "sheetId": "0",
- 19 "sheetName": "Model",
- 20 "type": "Model"
- 21 },
- 22 {
- 23 "diffType": "DELETE",
- 24 "id": "122566",
- 25 "layer": "D1",
- 26 "sheetId": "0",
- 27 "sheetName": "Model",
- 28 "type": "Model"
- 29 },
- 30 {
- 31 "diffType": "CHANGE",
- 32 "id": "104778",
- 33 "layer": "0",
- 34 "sheetId": "0",
- 35 "sheetName": "Model",
- 36 "type": "Model"
- 37 },
- 38 {
- 39 "diffType": "CHANGE",
- 40 "id": "104779",
- 41 "layer": "0",
- 42 "sheetId": "0",
- 43 "sheetName": "Model",
- 44 "type": "Model"
- 45 },
- 46 {
- 47 "diffType": "CHANGE",
- 48 "id": "104780",
- 49 "layer": "0",
- 50 "sheetId": "0",
- 51 "sheetName": "Model",
- 52 "type": "Model"
- 53 },
- 54 {
- 55 "diffType": "CHANGE",
- 56 "id": "104781",
- 57 "layer": "0",
- 58 "sheetId": "0",
- 59 "sheetName": "Model",
- 60 "type": "Model"
- 61 },
- 62 {
- 63 "diffType": "CHANGE",
- 64 "id": "104782",
- 65 "layer": "0",
- 66 "sheetId": "0",
- 67 "sheetName": "Model",
- 68 "type": "Model"
- 69 },
- 70 {
- 71 "diffType": "CHANGE",
- 72 "id": "104783",
- 73 "layer": "0",
- 74 "sheetId": "0",
- 75 "sheetName": "Model",
- 76 "type": "Model"
- 77 },
- 78 {
- 79 "diffType": "CHANGE",
- 80 "id": "104784",
- 81 "layer": "0",
- 82 "sheetId": "0",
- 83 "sheetName": "Model",
- 84 "type": "Model"
- 85 },
- 86 {
- 87 "diffType": "CHANGE",
- 88 "id": "104785",
- 89 "layer": "0",
- 90 "sheetId": "0",
- 91 "sheetName": "Model",
- 92 "type": "Model"
- 93 },
- 94 {
- 95 "diffType": "CHANGE",
- 96 "id": "104786",
- 97 "layer": "0",
- 98 "sheetId": "0",
- 99 "sheetName": "Model",
- 100 "type": "Model"
- 101 },
- 102 {
- 103 "diffType": "CHANGE",
- 104 "id": "104787",
- 105 "layer": "0",
- 106 "sheetId": "0",
- 107 "sheetName": "Model",
- 108 "type": "Model"
- 109 },
- 110 {
- 111 "diffType": "CHANGE",
- 112 "id": "96095",
- 113 "layer": "0",
- 114 "sheetId": "0",
- 115 "sheetName": "Model",
- 116 "type": "Model"
- 117 },
- 118 {
- 119 "diffType": "CHANGE",
- 120 "id": "96096",
- 121 "layer": "0",
- 122 "sheetId": "0",
- 123 "sheetName": "Model",
- 124 "type": "Model"
- 125 },
- 126 {
- 127 "diffType": "CHANGE",
- 128 "id": "96097",
- 129 "layer": "0",
- 130 "sheetId": "0",
- 131 "sheetName": "Model",
- 132 "type": "Model"
- 133 },
- 134 {
- 135 "diffType": "CHANGE",
- 136 "id": "96098",
- 137 "layer": "0",
- 138 "sheetId": "0",
- 139 "sheetName": "Model",
- 140 "type": "Model"
- 141 },
- 142 {
- 143 "diffType": "CHANGE",
- 144 "id": "96099",
- 145 "layer": "0",
- 146 "sheetId": "0",
- 147 "sheetName": "Model",
- 148 "type": "Model"
- 149 },
- 150 {
- 151 "diffType": "CHANGE",
- 152 "id": "96100",
- 153 "layer": "0",
- 154 "sheetId": "0",
- 155 "sheetName": "Model",
- 156 "type": "Model"
- 157 },
- 158 {
- 159 "diffType": "CHANGE",
- 160 "id": "96101",
- 161 "layer": "0",
- 162 "sheetId": "0",
- 163 "sheetName": "Model",
- 164 "type": "Model"
- 165 },
- 166 {
- 167 "diffType": "CHANGE",
- 168 "id": "96102",
- 169 "layer": "0",
- 170 "sheetId": "0",
- 171 "sheetName": "Model",
- 172 "type": "Model"
- 173 },
- 174 {
- 175 "diffType": "CHANGE",
- 176 "id": "96103",
- 177 "layer": "0",
- 178 "sheetId": "0",
- 179 "sheetName": "Model",
- 180 "type": "Model"
- 181 },
- 182 {
- 183 "diffType": "CHANGE",
- 184 "id": "96104",
- 185 "layer": "0",
- 186 "sheetId": "0",
- 187 "sheetName": "Model",
- 188 "type": "Model"
- 189 },
- 190 {
- 191 "diffType": "CHANGE",
- 192 "id": "22307",
- 193 "layer": "AXIS",
- 194 "sheetId": "0",
- 195 "sheetName": "Model",
- 196 "type": "Model"
- 197 },
- 198 {
- 199 "diffType": "CHANGE",
- 200 "id": "22314",
- 201 "layer": "AXIS",
- 202 "sheetId": "0",
- 203 "sheetName": "Model",
- 204 "type": "Model"
- 205 },
- 206 {
- 207 "diffType": "CHANGE",
- 208 "id": "22315",
- 209 "layer": "AXIS",
- 210 "sheetId": "0",
- 211 "sheetName": "Model",
- 212 "type": "Model"
- 213 },
- 214 {
- 215 "diffType": "CHANGE",
- 216 "id": "53351",
- 217 "layer": "D1",
- 218 "sheetId": "0",
- 219 "sheetName": "Model",
- 220 "type": "Model"
- 221 },
- 222 {
- 223 "diffType": "CHANGE",
- 224 "id": "53352",
- 225 "layer": "D1",
- 226 "sheetId": "0",
- 227 "sheetName": "Model",
- 228 "type": "Model"
- 229 },
- 230 {
- 231 "diffType": "CHANGE",
- 232 "id": "53355",
- 233 "layer": "D1",
- 234 "sheetId": "0",
- 235 "sheetName": "Model",
- 236 "type": "Model"
- 237 },
- 238 {
- 239 "diffType": "CHANGE",
- 240 "id": "53356",
- 241 "layer": "D1",
- 242 "sheetId": "0",
- 243 "sheetName": "Model",
- 244 "type": "Model"
- 245 },
- 246 {
- 247 "diffType": "CHANGE",
- 248 "id": "53357",
- 249 "layer": "D1",
- 250 "sheetId": "0",
- 251 "sheetName": "Model",
- 252 "type": "Model"
- 253 },
- 254 {
- 255 "diffType": "CHANGE",
- 256 "id": "53358",
- 257 "layer": "D1",
- 258 "sheetId": "0",
- 259 "sheetName": "Model",
- 260 "type": "Model"
- 261 },
- 262 {
- 263 "diffType": "CHANGE",
- 264 "id": "53359",
- 265 "layer": "D1",
- 266 "sheetId": "0",
- 267 "sheetName": "Model",
- 268 "type": "Model"
- 269 },
- 270 {
- 271 "diffType": "CHANGE",
- 272 "id": "53361",
- 273 "layer": "D1",
- 274 "sheetId": "0",
- 275 "sheetName": "Model",
- 276 "type": "Model"
- 277 },
- 278 {
- 279 "diffType": "CHANGE",
- 280 "id": "53362",
- 281 "layer": "D1",
- 282 "sheetId": "0",
- 283 "sheetName": "Model",
- 284 "type": "Model"
- 285 },
- 286 {
- 287 "diffType": "CHANGE",
- 288 "id": "53363",
- 289 "layer": "D1",
- 290 "sheetId": "0",
- 291 "sheetName": "Model",
- 292 "type": "Model"
- 293 },
- 294 {
- 295 "diffType": "CHANGE",
- 296 "id": "53364",
- 297 "layer": "D1",
- 298 "sheetId": "0",
- 299 "sheetName": "Model",
- 300 "type": "Model"
- 301 },
- 302 {
- 303 "diffType": "CHANGE",
- 304 "id": "53365",
- 305 "layer": "D1",
- 306 "sheetId": "0",
- 307 "sheetName": "Model",
- 308 "type": "Model"
- 309 },
- 310 {
- 311 "diffType": "CHANGE",
- 312 "id": "53366",
- 313 "layer": "D1",
- 314 "sheetId": "0",
- 315 "sheetName": "Model",
- 316 "type": "Model"
- 317 },
- 318 {
- 319 "diffType": "CHANGE",
- 320 "id": "53367",
- 321 "layer": "D1",
- 322 "sheetId": "0",
- 323 "sheetName": "Model",
- 324 "type": "Model"
- 325 },
- 326 {
- 327 "diffType": "CHANGE",
- 328 "id": "53368",
- 329 "layer": "D1",
- 330 "sheetId": "0",
- 331 "sheetName": "Model",
- 332 "type": "Model"
- 333 },
- 334 {
- 335 "diffType": "CHANGE",
- 336 "id": "53369",
- 337 "layer": "D1",
- 338 "sheetId": "0",
- 339 "sheetName": "Model",
- 340 "type": "Model"
- 341 },
- 342 {
- 343 "diffType": "CHANGE",
- 344 "id": "53370",
- 345 "layer": "D1",
- 346 "sheetId": "0",
- 347 "sheetName": "Model",
- 348 "type": "Model"
- 349 },
- 350 {
- 351 "diffType": "CHANGE",
- 352 "id": "53371",
- 353 "layer": "D1",
- 354 "sheetId": "0",
- 355 "sheetName": "Model",
- 356 "type": "Model"
- 357 },
- 358 {
- 359 "diffType": "CHANGE",
- 360 "id": "53372",
- 361 "layer": "D1",
- 362 "sheetId": "0",
- 363 "sheetName": "Model",
- 364 "type": "Model"
- 365 },
- 366 {
- 367 "diffType": "CHANGE",
- 368 "id": "53373",
- 369 "layer": "D1",
- 370 "sheetId": "0",
- 371 "sheetName": "Model",
- 372 "type": "Model"
- 373 },
- 374 {
- 375 "diffType": "CHANGE",
- 376 "id": "53374",
- 377 "layer": "D1",
- 378 "sheetId": "0",
- 379 "sheetName": "Model",
- 380 "type": "Model"
- 381 },
- 382 {
- 383 "diffType": "CHANGE",
- 384 "id": "53375",
- 385 "layer": "D1",
- 386 "sheetId": "0",
- 387 "sheetName": "Model",
- 388 "type": "Model"
- 389 },
- 390 {
- 391 "diffType": "CHANGE",
- 392 "id": "53376",
- 393 "layer": "D1",
- 394 "sheetId": "0",
- 395 "sheetName": "Model",
- 396 "type": "Model"
- 397 },
- 398 {
- 399 "diffType": "CHANGE",
- 400 "id": "53377",
- 401 "layer": "D1",
- 402 "sheetId": "0",
- 403 "sheetName": "Model",
- 404 "type": "Model"
- 405 },
- 406 {
- 407 "diffType": "CHANGE",
- 408 "id": "53378",
- 409 "layer": "D1",
- 410 "sheetId": "0",
- 411 "sheetName": "Model",
- 412 "type": "Model"
- 413 },
- 414 {
- 415 "diffType": "CHANGE",
- 416 "id": "53381",
- 417 "layer": "D1",
- 418 "sheetId": "0",
- 419 "sheetName": "Model",
- 420 "type": "Model"
- 421 },
- 422 {
- 423 "diffType": "CHANGE",
- 424 "id": "53383",
- 425 "layer": "D1",
- 426 "sheetId": "0",
- 427 "sheetName": "Model",
- 428 "type": "Model"
- 429 },
- 430 {
- 431 "diffType": "CHANGE",
- 432 "id": "53384",
- 433 "layer": "D1",
- 434 "sheetId": "0",
- 435 "sheetName": "Model",
- 436 "type": "Model"
- 437 },
- 438 {
- 439 "diffType": "CHANGE",
- 440 "id": "53385",
- 441 "layer": "D1",
- 442 "sheetId": "0",
- 443 "sheetName": "Model",
- 444 "type": "Model"
- 445 },
- 446 {
- 447 "diffType": "CHANGE",
- 448 "id": "53386",
- 449 "layer": "D1",
- 450 "sheetId": "0",
- 451 "sheetName": "Model",
- 452 "type": "Model"
- 453 },
- 454 {
- 455 "diffType": "CHANGE",
- 456 "id": "53387",
- 457 "layer": "D1",
- 458 "sheetId": "0",
- 459 "sheetName": "Model",
- 460 "type": "Model"
- 461 },
- 462 {
- 463 "diffType": "CHANGE",
- 464 "id": "53389",
- 465 "layer": "D1",
- 466 "sheetId": "0",
- 467 "sheetName": "Model",
- 468 "type": "Model"
- 469 },
- 470 {
- 471 "diffType": "CHANGE",
- 472 "id": "53390",
- 473 "layer": "D1",
- 474 "sheetId": "0",
- 475 "sheetName": "Model",
- 476 "type": "Model"
- 477 },
- 478 {
- 479 "diffType": "CHANGE",
- 480 "id": "53391",
- 481 "layer": "D1",
- 482 "sheetId": "0",
- 483 "sheetName": "Model",
- 484 "type": "Model"
- 485 },
- 486 {
- 487 "diffType": "CHANGE",
- 488 "id": "53392",
- 489 "layer": "D1",
- 490 "sheetId": "0",
- 491 "sheetName": "Model",
- 492 "type": "Model"
- 493 },
- 494 {
- 495 "diffType": "CHANGE",
- 496 "id": "53395",
- 497 "layer": "D1",
- 498 "sheetId": "0",
- 499 "sheetName": "Model",
- 500 "type": "Model"
- 501 },
- 502 {
- 503 "diffType": "CHANGE",
- 504 "id": "53396",
- 505 "layer": "D1",
- 506 "sheetId": "0",
- 507 "sheetName": "Model",
- 508 "type": "Model"
- 509 },
- 510 {
- 511 "diffType": "CHANGE",
- 512 "id": "53397",
- 513 "layer": "D1",
- 514 "sheetId": "0",
- 515 "sheetName": "Model",
- 516 "type": "Model"
- 517 },
- 518 {
- 519 "diffType": "CHANGE",
- 520 "id": "53400",
- 521 "layer": "D1",
- 522 "sheetId": "0",
- 523 "sheetName": "Model",
- 524 "type": "Model"
- 525 },
- 526 {
- 527 "diffType": "CHANGE",
- 528 "id": "53401",
- 529 "layer": "D1",
- 530 "sheetId": "0",
- 531 "sheetName": "Model",
- 532 "type": "Model"
- 533 },
- 534 {
- 535 "diffType": "CHANGE",
- 536 "id": "53403",
- 537 "layer": "D1",
- 538 "sheetId": "0",
- 539 "sheetName": "Model",
- 540 "type": "Model"
- 541 },
- 542 {
- 543 "diffType": "CHANGE",
- 544 "id": "53404",
- 545 "layer": "D1",
- 546 "sheetId": "0",
- 547 "sheetName": "Model",
- 548 "type": "Model"
- 549 },
- 550 {
- 551 "diffType": "CHANGE",
- 552 "id": "53405",
- 553 "layer": "D1",
- 554 "sheetId": "0",
- 555 "sheetName": "Model",
- 556 "type": "Model"
- 557 },
- 558 {
- 559 "diffType": "CHANGE",
- 560 "id": "53406",
- 561 "layer": "D1",
- 562 "sheetId": "0",
- 563 "sheetName": "Model",
- 564 "type": "Model"
- 565 },
- 566 {
- 567 "diffType": "CHANGE",
- 568 "id": "53407",
- 569 "layer": "D1",
- 570 "sheetId": "0",
- 571 "sheetName": "Model",
- 572 "type": "Model"
- 573 },
- 574 {
- 575 "diffType": "CHANGE",
- 576 "id": "53408",
- 577 "layer": "D1",
- 578 "sheetId": "0",
- 579 "sheetName": "Model",
- 580 "type": "Model"
- 581 },
- 582 {
- 583 "diffType": "CHANGE",
- 584 "id": "53409",
- 585 "layer": "D1",
- 586 "sheetId": "0",
- 587 "sheetName": "Model",
- 588 "type": "Model"
- 589 },
- 590 {
- 591 "diffType": "CHANGE",
- 592 "id": "53410",
- 593 "layer": "D1",
- 594 "sheetId": "0",
- 595 "sheetName": "Model",
- 596 "type": "Model"
- 597 },
- 598 {
- 599 "diffType": "CHANGE",
- 600 "id": "53411",
- 601 "layer": "D1",
- 602 "sheetId": "0",
- 603 "sheetName": "Model",
- 604 "type": "Model"
- 605 }
- 606 ],
- 607 "page": 1,
- 608 "total": 75
- 609 }
- 610 }
参数说明
(1)diffType:图元变更类型。NEW 表示新增的图元、DELETE 表示删除的图元、CHANGE 表示修改的图元。
(2)id:变更的图元的唯一编号。
(3)layer:变更的图元所在的图层名称。
(4)sheetId:未知
(5)sheetName:未知
(6)type:变更的图元所在的图纸展示类型(Model 与Layer )
从上述Json结果中只能看出图元的变更类型与编号,并不知道其所属的图框,需要通过解析图纸对比的数据包信息才能计算出来。
调用BIMFACE服务端接口如下:
- 1 /// <summary>
- 2 /// 【官方非正式接口】根据 CompareId 获取图纸对比的数据包信息
- 3 /// </summary>
- 4 /// <param name="compareId">对比记录的ID</param>
- 5 /// <returns></returns>
- 6 public DrawingCompareDatabagResponse GetDrawingCompareDatabage(string accessToken, long compareId)
- 7 {
- 8 IBasicApi api = new BasicApi();
- 9
- 10 ViewTokenResponse viewTokenResponse = api.GetViewTokenByCompareId(accessToken, compareId);
- 11 if (viewTokenResponse != null && viewTokenResponse.Code == "success" && viewTokenResponse.Data != null)
- 12 {
- 13 return GetDrawingCompareDatabageByCompareViewToken(viewTokenResponse.Data);
- 14 }
- 15
- 16 return null;
- 17 }
- 18
- 19
- 20 /// <summary>
- 21 /// 【官方非正式接口】根据对比记录的 ViewToken 获取图纸对比的数据包信息
- 22 /// </summary>
- 23 /// <param name="compareViewToken">对比记录的ViewToken</param>
- 24 /// <returns></returns>
- 25 public DrawingCompareDatabagResponse GetDrawingCompareDatabageByCompareViewToken(string compareViewToken)
- 26 {
- 27 //GET https://api.bimface.com/inside/databag?viewToken=b80412dcba2a47b0860eeff8f2c578a9
- 28
- 29 string url = string.Format(BIMFaceConstants.API_HOST + "/inside/databag?viewToken={0}", compareViewToken);
- 30 try
- 31 {
- 32 DrawingCompareDatabagResponse response;
- 33
- 34 HttpManager httpManager = new HttpManager();
- 35 HttpResult httpResult = httpManager.Get(url);
- 36 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
- 37 {
- 38 response = httpResult.Text.DeserializeJsonToObject<DrawingCompareDatabagResponse>();
- 39 }
- 40 else
- 41 {
- 42 response = new DrawingCompareDatabagResponse
- 43 {
- 44 Message = httpResult.RefText
- 45 };
- 46 }
- 47
- 48 return response;
- 49 }
- 50 catch (Exception ex)
- 51 {
- 52 throw new BIMFaceException("[获取图纸对比的数据包信息]发生异常!", ex);
- 53 }
- 54 }
- 55
接口返回的完整信息如下:
- 1 {
- 2 "code": "success",
- 3 "message": null,
- 4 "data": {
- 5 "databagId": "76d256b09416830a8079914ab7d40fdf",
- 6 "isSupportComponentProperty": false,
- 7 "isSupportDrawing": false,
- 8 "isSupportFamilyTypeList": false,
- 9 "isSupportMaterialProperty": false,
- 10 "isSupportMiniMap": false,
- 11 "isSupportModelTree": false,
- 12 "isSupportRoomArea": false,
- 13 "isSupportWalk": true,
- 14 "jsSDKVersion": "3.6.159",
- 15 "modelId": 2230429779838240,
- 16 "modelType": "compareModel",
- 17 "name": "202110121516-对比",
- 18 "renderType": "drawingView",
- 19 "renderVersion": "3.0",
- 20 "subRenders": [
- 21 {
- 22 "isSupportComponentProperty": false,
- 23 "isSupportFamilyTypeList": false,
- 24 "isSupportMiniMap": false,
- 25 "isSupportModelTree": false,
- 26 "jsSDKVersion": "3.6.159",
- 27 "renderType": "bimView",
- 28 "renderVersion": "3.0"
- 29 },
- 30 {
- 31 "isSupportComponentProperty": false,
- 32 "isSupportFamilyTypeList": false,
- 33 "isSupportMiniMap": false,
- 34 "isSupportModelTree": false,
- 35 "jsSDKVersion": "Drawing@1.6.95",
- 36 "renderType": "drawingView",
- 37 "renderVersion": "1.0"
- 38 }
- 39 ],
- 40 "type": 3,
- 41 "workerType": "drawing-compare"
- 42 }
- 43 }
该接口主要获取 databagId,供下面的接口使用。
测试程序如下:
调用BIMFACE服务端接口如下:
- 1 /// <summary>
- 2 /// 【官方非正式接口】根据图纸对比的数据包Id,获取图纸对比差异数据包结果
- 3 /// </summary>
- 4 /// <param name="databagId">图纸对比的数据包Id,</param>
- 5 /// <returns></returns>
- 6 public DrawingCompareDatabagDiffResult GetDrawingCompareDatabageDiffResult(string databagId)
- 7 {
- 8 //GET https://m.bimface.com/{databagId}/result.json
- 9
- 10 string url = string.Format("https://m.bimface.com/{0}/result.json", databagId);
- 11 try
- 12 {
- 13 DrawingCompareDatabagDiffResult response = null;
- 14
- 15 HttpManager httpManager = new HttpManager();
- 16 HttpResult httpResult = httpManager.Get(url);
- 17 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
- 18 {
- 19 response = httpResult.Text.DeserializeJsonToObject<DrawingCompareDatabagDiffResult>();
- 20 }
- 21
- 22 return response;
- 23 }
- 24 catch (Exception ex)
- 25 {
- 26 throw new BIMFaceException("[获取图纸对比的数据包信息]发生异常!", ex);
- 27 }
- 28 }
接口返回的完整信息如下:


- 1 {
- 2 "ver": "4.0",
- 3 "model": {
- 4 "id": "0",
- 5 "name": "Model",
- 6 "additions": [
- 7 {
- 8 "layer": "D1",
- 9 "id": "1946878",
- 10 "frame": {
- 11 "id": "6",
- 12 "name": "基础接地平面",
- 13 "number": "电施05"
- 14 }
- 15 },
- 16 {
- 17 "layer": "D1",
- 18 "id": "1946877",
- 19 "frame": {
- 20 "id": "5",
- 21 "name": "屋顶防雷平面",
- 22 "number": "电施04"
- 23 }
- 24 }
- 25 ],
- 26 "deletions": [
- 27 {
- 28 "layer": "D1",
- 29 "id": "122566",
- 30 "frame": {
- 31 "id": "3",
- 32 "name": "一层电气平面(一)",
- 33 "number": "电施02"
- 34 }
- 35 }
- 36 ],
- 37 "modifications": [
- 38 {
- 39 "previousLayer": "0",
- 40 "currentLayer": "0",
- 41 "id": "96103",
- 42 "previousFrame": {
- 43 "id": "2",
- 44 "name": "电气抗震设计专篇",
- 45 "number": "电施01"
- 46 },
- 47 "currentFrame": {
- 48 "id": "2",
- 49 "name": "电气抗震设计专篇",
- 50 "number": "电施01"
- 51 }
- 52 },
- 53 {
- 54 "previousLayer": "D1",
- 55 "currentLayer": "D1",
- 56 "id": "53383",
- 57 "previousFrame": {
- 58 "id": "3",
- 59 "name": "一层电气平面(一)",
- 60 "number": "电施02"
- 61 },
- 62 "currentFrame": {
- 63 "id": "3",
- 64 "name": "一层电气平面(一)",
- 65 "number": "电施02"
- 66 }
- 67 },
- 68 {
- 69 "previousLayer": "D1",
- 70 "currentLayer": "D1",
- 71 "id": "53351",
- 72 "previousFrame": {
- 73 "id": "3",
- 74 "name": "一层电气平面(一)",
- 75 "number": "电施02"
- 76 },
- 77 "currentFrame": {
- 78 "id": "3",
- 79 "name": "一层电气平面(一)",
- 80 "number": "电施02"
- 81 }
- 82 },
- 83 {
- 84 "previousLayer": "0",
- 85 "currentLayer": "0",
- 86 "id": "96099",
- 87 "previousFrame": {
- 88 "id": "2",
- 89 "name": "电气抗震设计专篇",
- 90 "number": "电施01"
- 91 },
- 92 "currentFrame": {
- 93 "id": "2",
- 94 "name": "电气抗震设计专篇",
- 95 "number": "电施01"
- 96 }
- 97 },
- 98 {
- 99 "previousLayer": "0",
- 100 "currentLayer": "0",
- 101 "id": "104785",
- 102 "previousFrame": {
- 103 "id": "2",
- 104 "name": "电气抗震设计专篇",
- 105 "number": "电施01"
- 106 },
- 107 "currentFrame": {
- 108 "id": "2",
- 109 "name": "电气抗震设计专篇",
- 110 "number": "电施01"
- 111 }
- 112 },
- 113 {
- 114 "previousLayer": "D1",
- 115 "currentLayer": "D1",
- 116 "id": "53403",
- 117 "previousFrame": {
- 118 "id": "3",
- 119 "name": "一层电气平面(一)",
- 120 "number": "电施02"
- 121 },
- 122 "currentFrame": {
- 123 "id": "3",
- 124 "name": "一层电气平面(一)",
- 125 "number": "电施02"
- 126 }
- 127 },
- 128 {
- 129 "previousLayer": "D1",
- 130 "currentLayer": "D1",
- 131 "id": "53395",
- 132 "previousFrame": {
- 133 "id": "3",
- 134 "name": "一层电气平面(一)",
- 135 "number": "电施02"
- 136 },
- 137 "currentFrame": {
- 138 "id": "3",
- 139 "name": "一层电气平面(一)",
- 140 "number": "电施02"
- 141 }
- 142 },
- 143 {
- 144 "previousLayer": "AXIS",
- 145 "currentLayer": "AXIS",
- 146 "id": "22315",
- 147 "previousFrame": {
- 148 "id": "5",
- 149 "name": "屋顶防雷平面",
- 150 "number": "电施04"
- 151 },
- 152 "currentFrame": {
- 153 "id": "5",
- 154 "name": "屋顶防雷平面",
- 155 "number": "电施04"
- 156 }
- 157 },
- 158 {
- 159 "previousLayer": "0",
- 160 "currentLayer": "0",
- 161 "id": "104786",
- 162 "previousFrame": {
- 163 "id": "2",
- 164 "name": "电气抗震设计专篇",
- 165 "number": "电施01"
- 166 },
- 167 "currentFrame": {
- 168 "id": "2",
- 169 "name": "电气抗震设计专篇",
- 170 "number": "电施01"
- 171 }
- 172 },
- 173 {
- 174 "previousLayer": "D1",
- 175 "currentLayer": "D1",
- 176 "id": "53384",
- 177 "previousFrame": {
- 178 "id": "3",
- 179 "name": "一层电气平面(一)",
- 180 "number": "电施02"
- 181 },
- 182 "currentFrame": {
- 183 "id": "3",
- 184 "name": "一层电气平面(一)",
- 185 "number": "电施02"
- 186 }
- 187 },
- 188 {
- 189 "previousLayer": "D1",
- 190 "currentLayer": "D1",
- 191 "id": "53352",
- 192 "previousFrame": {
- 193 "id": "3",
- 194 "name": "一层电气平面(一)",
- 195 "number": "电施02"
- 196 },
- 197 "currentFrame": {
- 198 "id": "3",
- 199 "name": "一层电气平面(一)",
- 200 "number": "电施02"
- 201 }
- 202 },
- 203 {
- 204 "previousLayer": "D1",
- 205 "currentLayer": "D1",
- 206 "id": "53400",
- 207 "previousFrame": {
- 208 "id": "3",
- 209 "name": "一层电气平面(一)",
- 210 "number": "电施02"
- 211 },
- 212 "currentFrame": {
- 213 "id": "3",
- 214 "name": "一层电气平面(一)",
- 215 "number": "电施02"
- 216 }
- 217 },
- 218 {
- 219 "previousLayer": "D1",
- 220 "currentLayer": "D1",
- 221 "id": "53368",
- 222 "previousFrame": {
- 223 "id": "3",
- 224 "name": "一层电气平面(一)",
- 225 "number": "电施02"
- 226 },
- 227 "currentFrame": {
- 228 "id": "3",
- 229 "name": "一层电气平面(一)",
- 230 "number": "电施02"
- 231 }
- 232 },
- 233 {
- 234 "previousLayer": "AXIS",
- 235 "currentLayer": "AXIS",
- 236 "id": "22307",
- 237 "previousFrame": {
- 238 "id": "5",
- 239 "name": "屋顶防雷平面",
- 240 "number": "电施04"
- 241 },
- 242 "currentFrame": {
- 243 "id": "5",
- 244 "name": "屋顶防雷平面",
- 245 "number": "电施04"
- 246 }
- 247 },
- 248 {
- 249 "previousLayer": "D1",
- 250 "currentLayer": "D1",
- 251 "id": "53371",
- 252 "previousFrame": {
- 253 "id": "3",
- 254 "name": "一层电气平面(一)",
- 255 "number": "电施02"
- 256 },
- 257 "currentFrame": {
- 258 "id": "3",
- 259 "name": "一层电气平面(一)",
- 260 "number": "电施02"
- 261 }
- 262 },
- 263 {
- 264 "previousLayer": "AXIS",
- 265 "currentLayer": "AXIS",
- 266 "id": "22314",
- 267 "previousFrame": {
- 268 "id": "5",
- 269 "name": "屋顶防雷平面",
- 270 "number": "电施04"
- 271 },
- 272 "currentFrame": {
- 273 "id": "5",
- 274 "name": "屋顶防雷平面",
- 275 "number": "电施04"
- 276 }
- 277 },
- 278 {
- 279 "previousLayer": "0",
- 280 "currentLayer": "0",
- 281 "id": "96098",
- 282 "previousFrame": {
- 283 "id": "2",
- 284 "name": "电气抗震设计专篇",
- 285 "number": "电施01"
- 286 },
- 287 "currentFrame": {
- 288 "id": "2",
- 289 "name": "电气抗震设计专篇",
- 290 "number": "电施01"
- 291 }
- 292 },
- 293 {
- 294 "previousLayer": "D1",
- 295 "currentLayer": "D1",
- 296 "id": "53386",
- 297 "previousFrame": {
- 298 "id": "3",
- 299 "name": "一层电气平面(一)",
- 300 "number": "电施02"
- 301 },
- 302 "currentFrame": {
- 303 "id": "3",
- 304 "name": "一层电气平面(一)",
- 305 "number": "电施02"
- 306 }
- 307 },
- 308 {
- 309 "previousLayer": "0",
- 310 "currentLayer": "0",
- 311 "id": "96097",
- 312 "previousFrame": {
- 313 "id": "2",
- 314 "name": "电气抗震设计专篇",
- 315 "number": "电施01"
- 316 },
- 317 "currentFrame": {
- 318 "id": "2",
- 319 "name": "电气抗震设计专篇",
- 320 "number": "电施01"
- 321 }
- 322 },
- 323 {
- 324 "previousLayer": "D1",
- 325 "currentLayer": "D1",
- 326 "id": "53397",
- 327 "previousFrame": {
- 328 "id": "3",
- 329 "name": "一层电气平面(一)",
- 330 "number": "电施02"
- 331 },
- 332 "currentFrame": {
- 333 "id": "3",
- 334 "name": "一层电气平面(一)",
- 335 "number": "电施02"
- 336 }
- 337 },
- 338 {
- 339 "previousLayer": "0",
- 340 "currentLayer": "0",
- 341 "id": "104783",
- 342 "previousFrame": {
- 343 "id": "2",
- 344 "name": "电气抗震设计专篇",
- 345 "number": "电施01"
- 346 },
- 347 "currentFrame": {
- 348 "id": "2",
- 349 "name": "电气抗震设计专篇",
- 350 "number": "电施01"
- 351 }
- 352 },
- 353 {
- 354 "previousLayer": "D1",
- 355 "currentLayer": "D1",
- 356 "id": "53405",
- 357 "previousFrame": {
- 358 "id": "3",
- 359 "name": "一层电气平面(一)",
- 360 "number": "电施02"
- 361 },
- 362 "currentFrame": {
- 363 "id": "3",
- 364 "name": "一层电气平面(一)",
- 365 "number": "电施02"
- 366 }
- 367 },
- 368 {
- 369 "previousLayer": "0",
- 370 "currentLayer": "0",
- 371 "id": "104779",
- 372 "previousFrame": {
- 373 "id": "2",
- 374 "name": "电气抗震设计专篇",
- 375 "number": "电施01"
- 376 },
- 377 "currentFrame": {
- 378 "id": "2",
- 379 "name": "电气抗震设计专篇",
- 380 "number": "电施01"
- 381 }
- 382 },
- 383 {
- 384 "previousLayer": "0",
- 385 "currentLayer": "0",
- 386 "id": "96095",
- 387 "previousFrame": {
- 388 "id": "2",
- 389 "name": "电气抗震设计专篇",
- 390 "number": "电施01"
- 391 },
- 392 "currentFrame": {
- 393 "id": "2",
- 394 "name": "电气抗震设计专篇",
- 395 "number": "电施01"
- 396 }
- 397 },
- 398 {
- 399 "previousLayer": "D1",
- 400 "currentLayer": "D1",
- 401 "id": "53375",
- 402 "previousFrame": {
- 403 "id": "3",
- 404 "name": "一层电气平面(一)",
- 405 "number": "电施02"
- 406 },
- 407 "currentFrame": {
- 408 "id": "3",
- 409 "name": "一层电气平面(一)",
- 410 "number": "电施02"
- 411 }
- 412 },
- 413 {
- 414 "previousLayer": "D1",
- 415 "currentLayer": "D1",
- 416 "id": "53355",
- 417 "previousFrame": {
- 418 "id": "3",
- 419 "name": "一层电气平面(一)",
- 420 "number": "电施02"
- 421 },
- 422 "currentFrame": {
- 423 "id": "3",
- 424 "name": "一层电气平面(一)",
- 425 "number": "电施02"
- 426 }
- 427 },
- 428 {
- 429 "previousLayer": "0",
- 430 "currentLayer": "0",
- 431 "id": "96104",
- 432 "previousFrame": {
- 433 "id": "2",
- 434 "name": "电气抗震设计专篇",
- 435 "number": "电施01"
- 436 },
- 437 "currentFrame": {
- 438 "id": "2",
- 439 "name": "电气抗震设计专篇",
- 440 "number": "电施01"
- 441 }
- 442 },
- 443 {
- 444 "previousLayer": "D1",
- 445 "currentLayer": "D1",
- 446 "id": "53356",
- 447 "previousFrame": {
- 448 "id": "3",
- 449 "name": "一层电气平面(一)",
- 450 "number": "电施02"
- 451 },
- 452 "currentFrame": {
- 453 "id": "3",
- 454 "name": "一层电气平面(一)",
- 455 "number": "电施02"
- 456 }
- 457 },
- 458 {
- 459 "previousLayer": "D1",
- 460 "currentLayer": "D1",
- 461 "id": "53357",
- 462 "previousFrame": {
- 463 "id": "3",
- 464 "name": "一层电气平面(一)",
- 465 "number": "电施02"
- 466 },
- 467 "currentFrame": {
- 468 "id": "3",
- 469 "name": "一层电气平面(一)",
- 470 "number": "电施02"
- 471 }
- 472 },
- 473 {
- 474 "previousLayer": "D1",
- 475 "currentLayer": "D1",
- 476 "id": "53358",
- 477 "previousFrame": {
- 478 "id": "3",
- 479 "name": "一层电气平面(一)",
- 480 "number": "电施02"
- 481 },
- 482 "currentFrame": {
- 483 "id": "3",
- 484 "name": "一层电气平面(一)",
- 485 "number": "电施02"
- 486 }
- 487 },
- 488 {
- 489 "previousLayer": "D1",
- 490 "currentLayer": "D1",
- 491 "id": "53359",
- 492 "previousFrame": {
- 493 "id": "3",
- 494 "name": "一层电气平面(一)",
- 495 "number": "电施02"
- 496 },
- 497 "currentFrame": {
- 498 "id": "3",
- 499 "name": "一层电气平面(一)",
- 500 "number": "电施02"
- 501 }
- 502 },
- 503 {
- 504 "previousLayer": "D1",
- 505 "currentLayer": "D1",
- 506 "id": "53361",
- 507 "previousFrame": {
- 508 "id": "3",
- 509 "name": "一层电气平面(一)",
- 510 "number": "电施02"
- 511 },
- 512 "currentFrame": {
- 513 "id": "3",
- 514 "name": "一层电气平面(一)",
- 515 "number": "电施02"
- 516 }
- 517 },
- 518 {
- 519 "previousLayer": "D1",
- 520 "currentLayer": "D1",
- 521 "id": "53362",
- 522 "previousFrame": {
- 523 "id": "3",
- 524 "name": "一层电气平面(一)",
- 525 "number": "电施02"
- 526 },
- 527 "currentFrame": {
- 528 "id": "3",
- 529 "name": "一层电气平面(一)",
- 530 "number": "电施02"
- 531 }
- 532 },
- 533 {
- 534 "previousLayer": "D1",
- 535 "currentLayer": "D1",
- 536 "id": "53363",
- 537 "previousFrame": {
- 538 "id": "3",
- 539 "name": "一层电气平面(一)",
- 540 "number": "电施02"
- 541 },
- 542 "currentFrame": {
- 543 "id": "3",
- 544 "name": "一层电气平面(一)",
- 545 "number": "电施02"
- 546 }
- 547 },
- 548 {
- 549 "previousLayer": "D1",
- 550 "currentLayer": "D1",
- 551 "id": "53364",
- 552 "previousFrame": {
- 553 "id": "3",
- 554 "name": "一层电气平面(一)",
- 555 "number": "电施02"
- 556 },
- 557 "currentFrame": {
- 558 "id": "3",
- 559 "name": "一层电气平面(一)",
- 560 "number": "电施02"
- 561 }
- 562 },
- 563 {
- 564 "previousLayer": "D1",
- 565 "currentLayer": "D1",
- 566 "id": "53365",
- 567 "previousFrame": {
- 568 "id": "3",
- 569 "name": "一层电气平面(一)",
- 570 "number": "电施02"
- 571 },
- 572 "currentFrame": {
- 573 "id": "3",
- 574 "name": "一层电气平面(一)",
- 575 "number": "电施02"
- 576 }
- 577 },
- 578 {
- 579 "previousLayer": "D1",
- 580 "currentLayer": "D1",
- 581 "id": "53366",
- 582 "previousFrame": {
- 583 "id": "3",
- 584 "name": "一层电气平面(一)",
- 585 "number": "电施02"
- 586 },
- 587 "currentFrame": {
- 588 "id": "3",
- 589 "name": "一层电气平面(一)",
- 590 "number": "电施02"
- 591 }
- 592 },
- 593 {
- 594 "previousLayer": "D1",
- 595 "currentLayer": "D1",
- 596 "id": "53367",
- 597 "previousFrame": {
- 598 "id": "3",
- 599 "name": "一层电气平面(一)",
- 600 "number": "电施02"
- 601 },
- 602 "currentFrame": {
- 603 "id": "3",
- 604 "name": "一层电气平面(一)",
- 605 "number": "电施02"
- 606 }
- 607 },
- 608 {
- 609 "previousLayer": "D1",
- 610 "currentLayer": "D1",
- 611 "id": "53369",
- 612 "previousFrame": {
- 613 "id": "3",
- 614 "name": "一层电气平面(一)",
- 615 "number": "电施02"
- 616 },
- 617 "currentFrame": {
- 618 "id": "3",
- 619 "name": "一层电气平面(一)",
- 620 "number": "电施02"
- 621 }
- 622 },
- 623 {
- 624 "previousLayer": "D1",
- 625 "currentLayer": "D1",
- 626 "id": "53370",
- 627 "previousFrame": {
- 628 "id": "3",
- 629 "name": "一层电气平面(一)",
- 630 "number": "电施02"
- 631 },
- 632 "currentFrame": {
- 633 "id": "3",
- 634 "name": "一层电气平面(一)",
- 635 "number": "电施02"
- 636 }
- 637 },
- 638 {
- 639 "previousLayer": "D1",
- 640 "currentLayer": "D1",
- 641 "id": "53372",
- 642 "previousFrame": {
- 643 "id": "3",
- 644 "name": "一层电气平面(一)",
- 645 "number": "电施02"
- 646 },
- 647 "currentFrame": {
- 648 "id": "3",
- 649 "name": "一层电气平面(一)",
- 650 "number": "电施02"
- 651 }
- 652 },
- 653 {
- 654 "previousLayer": "D1",
- 655 "currentLayer": "D1",
- 656 "id": "53373",
- 657 "previousFrame": {
- 658 "id": "3",
- 659 "name": "一层电气平面(一)",
- 660 "number": "电施02"
- 661 },
- 662 "currentFrame": {
- 663 "id": "3",
- 664 "name": "一层电气平面(一)",
- 665 "number": "电施02"
- 666 }
- 667 },
- 668 {
- 669 "previousLayer": "D1",
- 670 "currentLayer": "D1",
- 671 "id": "53374",
- 672 "previousFrame": {
- 673 "id": "3",
- 674 "name": "一层电气平面(一)",
- 675 "number": "电施02"
- 676 },
- 677 "currentFrame": {
- 678 "id": "3",
- 679 "name": "一层电气平面(一)",
- 680 "number": "电施02"
- 681 }
- 682 },
- 683 {
- 684 "previousLayer": "D1",
- 685 "currentLayer": "D1",
- 686 "id": "53376",
- 687 "previousFrame": {
- 688 "id": "3",
- 689 "name": "一层电气平面(一)",
- 690 "number": "电施02"
- 691 },
- 692 "currentFrame": {
- 693 "id": "3",
- 694 "name": "一层电气平面(一)",
- 695 "number": "电施02"
- 696 }
- 697 },
- 698 {
- 699 "previousLayer": "0",
- 700 "currentLayer": "0",
- 701 "id": "96101",
- 702 "previousFrame": {
- 703 "id": "2",
- 704 "name": "电气抗震设计专篇",
- 705 "number": "电施01"
- 706 },
- 707 "currentFrame": {
- 708 "id": "2",
- 709 "name": "电气抗震设计专篇",
- 710 "number": "电施01"
- 711 }
- 712 },
- 713 {
- 714 "previousLayer": "D1",
- 715 "currentLayer": "D1",
- 716 "id": "53377",
- 717 "previousFrame": {
- 718 "id": "3",
- 719 "name": "一层电气平面(一)",
- 720 "number": "电施02"
- 721 },
- 722 "currentFrame": {
- 723 "id": "3",
- 724 "name": "一层电气平面(一)",
- 725 "number": "电施02"
- 726 }
- 727 },
- 728 {
- 729 "previousLayer": "D1",
- 730 "currentLayer": "D1",
- 731 "id": "53378",
- 732 "previousFrame": {
- 733 "id": "3",
- 734 "name": "一层电气平面(一)",
- 735 "number": "电施02"
- 736 },
- 737 "currentFrame": {
- 738 "id": "3",
- 739 "name": "一层电气平面(一)",
- 740 "number": "电施02"
- 741 }
- 742 },
- 743 {
- 744 "previousLayer": "D1",
- 745 "currentLayer": "D1",
- 746 "id": "53381",
- 747 "previousFrame": {
- 748 "id": "3",
- 749 "name": "一层电气平面(一)",
- 750 "number": "电施02"
- 751 },
- 752 "currentFrame": {
- 753 "id": "3",
- 754 "name": "一层电气平面(一)",
- 755 "number": "电施02"
- 756 }
- 757 },
- 758 {
- 759 "previousLayer": "D1",
- 760 "currentLayer": "D1",
- 761 "id": "53385",
- 762 "previousFrame": {
- 763 "id": "3",
- 764 "name": "一层电气平面(一)",
- 765 "number": "电施02"
- 766 },
- 767 "currentFrame": {
- 768 "id": "3",
- 769 "name": "一层电气平面(一)",
- 770 "number": "电施02"
- 771 }
- 772 },
- 773 {
- 774 "previousLayer": "D1",
- 775 "currentLayer": "D1",
- 776 "id": "53387",
- 777 "previousFrame": {
- 778 "id": "3",
- 779 "name": "一层电气平面(一)",
- 780 "number": "电施02"
- 781 },
- 782 "currentFrame": {
- 783 "id": "3",
- 784 "name": "一层电气平面(一)",
- 785 "number": "电施02"
- 786 }
- 787 },
- 788 {
- 789 "previousLayer": "D1",
- 790 "currentLayer": "D1",
- 791 "id": "53389",
- 792 "previousFrame": {
- 793 "id": "3",
- 794 "name": "一层电气平面(一)",
- 795 "number": "电施02"
- 796 },
- 797 "currentFrame": {
- 798 "id": "3",
- 799 "name": "一层电气平面(一)",
- 800 "number": "电施02"
- 801 }
- 802 },
- 803 {
- 804 "previousLayer": "D1",
- 805 "currentLayer": "D1",
- 806 "id": "53390",
- 807 "previousFrame": {
- 808 "id": "3",
- 809 "name": "一层电气平面(一)",
- 810 "number": "电施02"
- 811 },
- 812 "currentFrame": {
- 813 "id": "3",
- 814 "name": "一层电气平面(一)",
- 815 "number": "电施02"
- 816 }
- 817 },
- 818 {
- 819 "previousLayer": "D1",
- 820 "currentLayer": "D1",
- 821 "id": "53392",
- 822 "previousFrame": {
- 823 "id": "3",
- 824 "name": "一层电气平面(一)",
- 825 "number": "电施02"
- 826 },
- 827 "currentFrame": {
- 828 "id": "3",
- 829 "name": "一层电气平面(一)",
- 830 "number": "电施02"
- 831 }
- 832 },
- 833 {
- 834 "previousLayer": "D1",
- 835 "currentLayer": "D1",
- 836 "id": "53391",
- 837 "previousFrame": {
- 838 "id": "3",
- 839 "name": "一层电气平面(一)",
- 840 "number": "电施02"
- 841 },
- 842 "currentFrame": {
- 843 "id": "3",
- 844 "name": "一层电气平面(一)",
- 845 "number": "电施02"
- 846 }
- 847 },
- 848 {
- 849 "previousLayer": "D1",
- 850 "currentLayer": "D1",
- 851 "id": "53396",
- 852 "previousFrame": {
- 853 "id": "3",
- 854 "name": "一层电气平面(一)",
- 855 "number": "电施02"
- 856 },
- 857 "currentFrame": {
- 858 "id": "3",
- 859 "name": "一层电气平面(一)",
- 860 "number": "电施02"
- 861 }
- 862 },
- 863 {
- 864 "previousLayer": "D1",
- 865 "currentLayer": "D1",
- 866 "id": "53401",
- 867 "previousFrame": {
- 868 "id": "3",
- 869 "name": "一层电气平面(一)",
- 870 "number": "电施02"
- 871 },
- 872 "currentFrame": {
- 873 "id": "3",
- 874 "name": "一层电气平面(一)",
- 875 "number": "电施02"
- 876 }
- 877 },
- 878 {
- 879 "previousLayer": "D1",
- 880 "currentLayer": "D1",
- 881 "id": "53404",
- 882 "previousFrame": {
- 883 "id": "3",
- 884 "name": "一层电气平面(一)",
- 885 "number": "电施02"
- 886 },
- 887 "currentFrame": {
- 888 "id": "3",
- 889 "name": "一层电气平面(一)",
- 890 "number": "电施02"
- 891 }
- 892 },
- 893 {
- 894 "previousLayer": "D1",
- 895 "currentLayer": "D1",
- 896 "id": "53406",
- 897 "previousFrame": {
- 898 "id": "3",
- 899 "name": "一层电气平面(一)",
- 900 "number": "电施02"
- 901 },
- 902 "currentFrame": {
- 903 "id": "3",
- 904 "name": "一层电气平面(一)",
- 905 "number": "电施02"
- 906 }
- 907 },
- 908 {
- 909 "previousLayer": "D1",
- 910 "currentLayer": "D1",
- 911 "id": "53407",
- 912 "previousFrame": {
- 913 "id": "3",
- 914 "name": "一层电气平面(一)",
- 915 "number": "电施02"
- 916 },
- 917 "currentFrame": {
- 918 "id": "3",
- 919 "name": "一层电气平面(一)",
- 920 "number": "电施02"
- 921 }
- 922 },
- 923 {
- 924 "previousLayer": "D1",
- 925 "currentLayer": "D1",
- 926 "id": "53408",
- 927 "previousFrame": {
- 928 "id": "3",
- 929 "name": "一层电气平面(一)",
- 930 "number": "电施02"
- 931 },
- 932 "currentFrame": {
- 933 "id": "3",
- 934 "name": "一层电气平面(一)",
- 935 "number": "电施02"
- 936 }
- 937 },
- 938 {
- 939 "previousLayer": "D1",
- 940 "currentLayer": "D1",
- 941 "id": "53409",
- 942 "previousFrame": {
- 943 "id": "3",
- 944 "name": "一层电气平面(一)",
- 945 "number": "电施02"
- 946 },
- 947 "currentFrame": {
- 948 "id": "3",
- 949 "name": "一层电气平面(一)",
- 950 "number": "电施02"
- 951 }
- 952 },
- 953 {
- 954 "previousLayer": "D1",
- 955 "currentLayer": "D1",
- 956 "id": "53410",
- 957 "previousFrame": {
- 958 "id": "3",
- 959 "name": "一层电气平面(一)",
- 960 "number": "电施02"
- 961 },
- 962 "currentFrame": {
- 963 "id": "3",
- 964 "name": "一层电气平面(一)",
- 965 "number": "电施02"
- 966 }
- 967 },
- 968 {
- 969 "previousLayer": "D1",
- 970 "currentLayer": "D1",
- 971 "id": "53411",
- 972 "previousFrame": {
- 973 "id": "3",
- 974 "name": "一层电气平面(一)",
- 975 "number": "电施02"
- 976 },
- 977 "currentFrame": {
- 978 "id": "3",
- 979 "name": "一层电气平面(一)",
- 980 "number": "电施02"
- 981 }
- 982 },
- 983 {
- 984 "previousLayer": "0",
- 985 "currentLayer": "0",
- 986 "id": "104782",
- 987 "previousFrame": {
- 988 "id": "2",
- 989 "name": "电气抗震设计专篇",
- 990 "number": "电施01"
- 991 },
- 992 "currentFrame": {
- 993 "id": "2",
- 994 "name": "电气抗震设计专篇",
- 995 "number": "电施01"
- 996 }
- 997 },
- 998 {
- 999 "previousLayer": "0",
- 1000 "currentLayer": "0",
- 1001 "id": "96096",
- 1002 "previousFrame": {
- 1003 "id": "2",
- 1004 "name": "电气抗震设计专篇",
- 1005 "number": "电施01"
- 1006 },
- 1007 "currentFrame": {
- 1008 "id": "2",
- 1009 "name": "电气抗震设计专篇",
- 1010 "number": "电施01"
- 1011 }
- 1012 },
- 1013 {
- 1014 "previousLayer": "0",
- 1015 "currentLayer": "0",
- 1016 "id": "104778",
- 1017 "previousFrame": {
- 1018 "id": "2",
- 1019 "name": "电气抗震设计专篇",
- 1020 "number": "电施01"
- 1021 },
- 1022 "currentFrame": {
- 1023 "id": "2",
- 1024 "name": "电气抗震设计专篇",
- 1025 "number": "电施01"
- 1026 }
- 1027 },
- 1028 {
- 1029 "previousLayer": "0",
- 1030 "currentLayer": "0",
- 1031 "id": "96100",
- 1032 "previousFrame": {
- 1033 "id": "2",
- 1034 "name": "电气抗震设计专篇",
- 1035 "number": "电施01"
- 1036 },
- 1037 "currentFrame": {
- 1038 "id": "2",
- 1039 "name": "电气抗震设计专篇",
- 1040 "number": "电施01"
- 1041 }
- 1042 },
- 1043 {
- 1044 "previousLayer": "0",
- 1045 "currentLayer": "0",
- 1046 "id": "96102",
- 1047 "previousFrame": {
- 1048 "id": "2",
- 1049 "name": "电气抗震设计专篇",
- 1050 "number": "电施01"
- 1051 },
- 1052 "currentFrame": {
- 1053 "id": "2",
- 1054 "name": "电气抗震设计专篇",
- 1055 "number": "电施01"
- 1056 }
- 1057 },
- 1058 {
- 1059 "previousLayer": "0",
- 1060 "currentLayer": "0",
- 1061 "id": "104780",
- 1062 "previousFrame": {
- 1063 "id": "2",
- 1064 "name": "电气抗震设计专篇",
- 1065 "number": "电施01"
- 1066 },
- 1067 "currentFrame": {
- 1068 "id": "2",
- 1069 "name": "电气抗震设计专篇",
- 1070 "number": "电施01"
- 1071 }
- 1072 },
- 1073 {
- 1074 "previousLayer": "0",
- 1075 "currentLayer": "0",
- 1076 "id": "104781",
- 1077 "previousFrame": {
- 1078 "id": "2",
- 1079 "name": "电气抗震设计专篇",
- 1080 "number": "电施01"
- 1081 },
- 1082 "currentFrame": {
- 1083 "id": "2",
- 1084 "name": "电气抗震设计专篇",
- 1085 "number": "电施01"
- 1086 }
- 1087 },
- 1088 {
- 1089 "previousLayer": "0",
- 1090 "currentLayer": "0",
- 1091 "id": "104784",
- 1092 "previousFrame": {
- 1093 "id": "2",
- 1094 "name": "电气抗震设计专篇",
- 1095 "number": "电施01"
- 1096 },
- 1097 "currentFrame": {
- 1098 "id": "2",
- 1099 "name": "电气抗震设计专篇",
- 1100 "number": "电施01"
- 1101 }
- 1102 },
- 1103 {
- 1104 "previousLayer": "0",
- 1105 "currentLayer": "0",
- 1106 "id": "104787",
- 1107 "previousFrame": {
- 1108 "id": "2",
- 1109 "name": "电气抗震设计专篇",
- 1110 "number": "电施01"
- 1111 },
- 1112 "currentFrame": {
- 1113 "id": "2",
- 1114 "name": "电气抗震设计专篇",
- 1115 "number": "电施01"
- 1116 }
- 1117 }
- 1118 ]
- 1119 }
- 1120 }
参数说明
通过 GetDrawingCompareDiff() 接口获取的结果中包含的差异类型 diffType 、id 与 GetDrawingCompareDatabageDiffResult()接口获取的结果中的 additions、deletions、modifications 对象以及对象属性ID 对比,即可知道变更项来自哪个图框。关联关系如下图:
参考下面的计算逻辑
1 /// <summary>
2 /// 计算对比结果中差异项来自的图框信息
3 /// </summary>
4 /// <param name="node_Child">图纸节点</param>
5 /// <param name="compareId">对比ID</param>
6 /// <param name="diffResult">对比差异结果</param>
7 private void CalcaDiffTK(Node node_Child, long compareId, string diffResult)
8 {
9 DrawingCompareDiffResponse diffResponse =
10 BIMFace.SDK.CSharp.Common.Extensions.CommonExtension.DeserializeJsonToObject<DrawingCompareDiffResponse>(diffResult);//arrCompare[0]["DiffResult"].ToString2()
11 if (diffResponse != null)
12 {
13 if (diffResponse.Code == "success" && diffResponse.Data != null)
14 {
15 List<BIMCompareDiffDetail> diffNews = new List<BIMCompareDiffDetail>();
16 List<BIMCompareDiffDetail> diffChanges = new List<BIMCompareDiffDetail>();
17 List<BIMCompareDiffDetail> diffDeletes = new List<BIMCompareDiffDetail>();
18 DrawingCompareDiff[] diffData = diffResponse.Data.Data;
19 if (diffData != null && diffData.Length > 0)
20 {
21 // diffData 中有重复的数据(包含模型、布局),需要 DistinctBy() 去重
22 diffNews =
23 diffData.Where(x => x.DiffType == ModelCompareDiffType.NEW.ToString())
24 .Select(x => new BIMCompareDiffDetail
25 {
26 categoryName = "",
27 elementId = x.Id,
28 elementName = ""
29 }).DistinctBy(x => x.elementId).ToList();
30
31 diffChanges =
32 diffData.Where(x => x.DiffType == ModelCompareDiffType.CHANGE.ToString())
33 .Select(x => new BIMCompareDiffDetail
34 {
35 categoryName = "",
36 elementId = x.Id,
37 elementName = ""
38 }).DistinctBy(x => x.elementId).ToList();
39
40 diffDeletes =
41 diffData.Where(x => x.DiffType == ModelCompareDiffType.DELETE.ToString())
42 .Select(x => new BIMCompareDiffDetail
43 {
44 categoryName = "",
45 elementId = x.Id,
46 elementName = ""
47 }).DistinctBy(x => x.elementId).ToList();
48
49 SimpleResult<string> compareDatabagDiffResult = new WebServiceDAL().GetDrawingCompareDatabagDiffResult(compareId);// arrCompare[0]["CompareId"].ToInt64()
50 if (compareDatabagDiffResult.ResultCode)
51 {
52 if (string.IsNullOrWhiteSpace(compareDatabagDiffResult.ResultObject) == false)
53 {
54 DrawingCompareDatabagDiffResult objCompareDatabagDiffResult =
55 BIMFace.SDK.CSharp.Common.Extensions.CommonExtension.DeserializeJsonToObject<DrawingCompareDatabagDiffResult>(compareDatabagDiffResult.ResultObject);
56 if (objCompareDatabagDiffResult.Model != null)
57 {
58 if (objCompareDatabagDiffResult.Model.Additions != null &&
59 objCompareDatabagDiffResult.Model.Additions.Count > 0)
60 {
61 foreach (var item in diffNews)
62 {
63 var addition = objCompareDatabagDiffResult.Model.Additions.Where(x => x.Id == item.elementId).FirstOrDefault();
64 if (addition != null)
65 {
66 string diffItemFromTK = "【新增构建】" + addition.Frame ?? string.Empty;//图框名称
67
68 // 其他业务逻辑
69 }
70 }
71 }
72
73 if (objCompareDatabagDiffResult.Model.Modifications != null &&
74 objCompareDatabagDiffResult.Model.Modifications.Count > 0)
75 {
76 foreach (var item in diffChanges)
77 {
78 var modifications = objCompareDatabagDiffResult.Model.Modifications.Where(x => x.Id == item.elementId).FirstOrDefault();
79 if (modifications != null)
80 {
81 string diffItemFromTK = "【修改构建】" + addition.Frame ?? string.Empty;//图框名称
82
83 // 其他业务逻辑
84 }
85 }
86 }
87
88
89 if (objCompareDatabagDiffResult.Model.Deletions != null &&
90 objCompareDatabagDiffResult.Model.Deletions.Count > 0)
91 {
92 foreach (var item in diffDeletes)
93 {
94 var deletions = objCompareDatabagDiffResult.Model.Deletions.Where(x => x.Id == item.elementId).FirstOrDefault();
95 if (deletions != null)
96 {
97 string diffItemFromTK = "【删除构建】" + addition.Frame ?? string.Empty;//图框名称
98
99 // 其他业务逻辑
100 }
101 }
102 }
103 }
104 }
105 }
106 }
107 }
108 }
109 }
1 public class BIMCompareDiffDetail
2 {
3 /// <summary>
4 /// 对比差异构件所属类别名称。样例 : "framework"
5 /// </summary>
6 public string categoryName { get; set; }
7
8 /// <summary>
9 /// 对比差异构件ID。样例 : "296524"
10 /// </summary>
11 public string elementId { get; set; }
12
13 /// <summary>
14 /// 对比差异构件名称
15 /// </summary>
16 public string elementName { get; set; }
17 }
上述测试程序使用了 《BIMFace.SDK.CSharp》开源SDK。欢迎大家下载使用。
C#开发BIMFACE系列44 服务端API之计算图纸对比差异项来源自哪个图框的更多相关文章
- C#开发BIMFACE系列40 服务端API之模型集成
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 随着建筑信息化模型技术的发展,越来越多的人选择在云端浏览建筑模型.现阶段的云端模型浏览大多是基于文件级别,一次只可以浏览一 ...
- C#开发BIMFACE系列41 服务端API之模型对比
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在建筑施工图审查系统中,设计单位提交设计完成的模型/图纸,审查专家审查模型/图纸.审查过程中如果发现不符合规范的地方,则流 ...
- C#开发BIMFACE系列42 服务端API之图纸对比
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在我的前一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>中详细介绍了BIMFACE服务端接口 ...
- C#开发BIMFACE系列43 服务端API之图纸拆分
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在上一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>的最后留了一个问题,在常规业务场景下,一 ...
- C#开发BIMFACE系列46 服务端API之离线数据包下载及结构详解
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在前一篇博客<C#开发BIMFACE系列45 服务端API之创建离线数据包>中通过调用接口成功的创建一个离线数 ...
- C#开发BIMFACE系列6 服务端API之获取文件信息
在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务 ...
- C#开发BIMFACE系列4 服务端API之源上传文件
在注册成为BIMFACE的应用开发者后,要能在浏览器里浏览你的模型或者获取你模型内的BIM数据, 首先需要把你的模型文件上传到BIMFACE.根据不同场景,BIMFACE提供了丰富的文件相关的接口. ...
- C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken
系列目录 [已更新最新开发文章,点击查看详细] BIMFACE 平台为开发者提供了大量的服务器端 API 与 JavaScript API,用于二次开发 BIM 的相关应用. BIMFACE ...
- C#开发BIMFACE系列7 服务端API之获取文件信息列表
系列目录 [已更新最新开发文章,点击查看详细] 本文详细介绍如何获取BIMFACE平台中所有上传过的文件信息列表. 请求地址:GET https://file.bimface.com/file ...
随机推荐
- MZY项目笔记:session歧路
from my typora MZY项目笔记:session歧路 文章目录 MZY项目笔记:session歧路 那该怎么办? 1. 手动加上cookie的header. 2.自己模拟一个Session ...
- servlet中servletContext的五大作用(一)
获取web的上下文路径 获取全局的参数 作为域对象使用 请求转发 读取web项目的资源文件 package day10.about_servletcontext.get_path; /** * 首先区 ...
- apt-get 安装程序时报 'E: Unable to locate package xxx' 错误处理办法
提示无法定位包,要执行命令更新: sudo apt-get update
- @RequestParam注解的详细介绍
@RequestParam (org.springframework.web.bind.annotation.RequestParam)用于将指定的请求参数赋值给方法中的形参. 有三个属性: (1)v ...
- struts2的初步认识
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互. 一. Str ...
- 20210816 你相信引力吗,marshland,party?,半夜
考场 第一眼都不可做 T1 长得就像单调栈/单调队列,推了推性质发现优弧.劣弧都合法的点对很好处理,其他情况只在一种情况合法,那么开两个单调队列分别统计距离 \(\le\frac2n,>\fra ...
- 第三课:GDB 常用的调试命令概览
先给出一个常用命令的列表,后面会结合具体的例子详细介绍每个命令的用法. 命令名称 命令缩写 命令说明 run r 运行一个程序 continue c 让暂停的程序继续运行 next n 运行到下一行 ...
- NOIP模拟51
樱花满地集于我心,楪舞纷飞祈愿相随 前言 太菜了,人手切掉两个题,我竟然一道都不会.. 改 T3 的时候整个人的心态都崩掉了,一部分原因可能是语文素养不高导致我看不懂题解. 另一部分可能就是系太不太好 ...
- ARP-NAT(MAC Address Translation)的原理
本文部分图片来自: http://wiki.deliberant.com/faq/wireless-bridge-routing-arpnat/ https://wiki.openwrt.org/do ...
- Java面向对象系列(3)- 回顾方法的调用
方法的调用 静态方法 非静态方法 形参和实参 值传递和引用传递 this关键字(继承篇讲解) 静态方法 非静态方法 形参和实参 package oop.demo01; public class Dem ...