BIMFACE二次开发系列目录     【已更新最新开发文章,点击查看详细】

在前两篇博客《C#开发BIMFACE系列42 服务端API之图纸对比》《C#开发BIMFACE系列43 服务端API之图纸拆分》中介绍了单文件多图框的拆分与对比

本文将详细讲解如何计算图纸对比差异项来源自哪个图框。

以控制台中的2张图纸【建筑图纸1-已拆分.dwg】 与 【建筑图纸2-已拆分-已变更.dwg】为例

对比结果参考上面第2个动态图。

获取图纸对比结果API

调用BIMFACE服务端接口

  1. 1 /// <summary>
  2. 2 /// 分页获取二维图纸对比结果。结果中包含 Type 为 Model 与 Layer 的两种结果对比,所以可能有重复的构建ID,需要手动过滤。
  3. 3 /// </summary>
  4. 4 /// <param name="accessToken">【必填】令牌</param>
  5. 5 /// <param name="compareId">【必填】对比ID</param>
  6. 6 /// <param name="page">页码(提示:私有云部署不支持分页查询)。如果不传参数,则默认为1</param>
  7. 7 /// <param name="pageSize">每页记录数(提示:私有云部署不支持分页查询)。如果不传参数,则默认为50</param>
  8. 8 /// <returns></returns>
  9. 9 public virtual DrawingCompareDiffResponse GetDrawingCompareDiff(string accessToken, long compareId, int? page = null, int? pageSize = null)
  10. 10 {
  11. 11 // GET https://api.bimface.com/data/v2/comparisons/{comparisonId}/diff
  12. 12 string url = string.Format(BIMFaceConstants.API_HOST + "/data/v2/comparisons/{0}/drawingdiff?v=1", compareId);
  13. 13 if (page.HasValue)
  14. 14 {
  15. 15 if (page.Value <= 1)
  16. 16 {
  17. 17 page = 1;
  18. 18 }
  19. 19
  20. 20 url += "&page=" + page;
  21. 21 }
  22. 22
  23. 23 if (pageSize.HasValue)
  24. 24 {
  25. 25 if (pageSize.Value <= 0)
  26. 26 {
  27. 27 pageSize = 50;
  28. 28 }
  29. 29
  30. 30 url += "&pageSize=" + pageSize;
  31. 31 }
  32. 32
  33. 33 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders();
  34. 34 headers.AddOAuth2Header(accessToken);
  35. 35
  36. 36 try
  37. 37 {
  38. 38 DrawingCompareDiffResponse response;
  39. 39
  40. 40 HttpManager httpManager = new HttpManager(headers);
  41. 41 HttpResult httpResult = httpManager.Get(url);
  42. 42 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
  43. 43 {
  44. 44 response = httpResult.Text.DeserializeJsonToObject<DrawingCompareDiffResponse>();
  45. 45 }
  46. 46 else
  47. 47 {
  48. 48 response = new DrawingCompareDiffResponse
  49. 49 {
  50. 50 Message = httpResult.RefText
  51. 51 };
  52. 52 }
  53. 53
  54. 54 return response;
  55. 55 }
  56. 56 catch (Exception ex)
  57. 57 {
  58. 58 throw new BIMFaceException("[分页获取图纸对比结果]发生异常!", ex);
  59. 59 }
  60. 60 }

完整的对比差异项纪录信息如下:

  1. 1 {
  2. 2 "code": "success",
  3. 3 "message": null,
  4. 4 "data": {
  5. 5 "data": [
  6. 6 {
  7. 7 "diffType": "NEW",
  8. 8 "id": "1946877",
  9. 9 "layer": "D1",
  10. 10 "sheetId": "0",
  11. 11 "sheetName": "Model",
  12. 12 "type": "Model"
  13. 13 },
  14. 14 {
  15. 15 "diffType": "NEW",
  16. 16 "id": "1946878",
  17. 17 "layer": "D1",
  18. 18 "sheetId": "0",
  19. 19 "sheetName": "Model",
  20. 20 "type": "Model"
  21. 21 },
  22. 22 {
  23. 23 "diffType": "DELETE",
  24. 24 "id": "122566",
  25. 25 "layer": "D1",
  26. 26 "sheetId": "0",
  27. 27 "sheetName": "Model",
  28. 28 "type": "Model"
  29. 29 },
  30. 30 {
  31. 31 "diffType": "CHANGE",
  32. 32 "id": "104778",
  33. 33 "layer": "0",
  34. 34 "sheetId": "0",
  35. 35 "sheetName": "Model",
  36. 36 "type": "Model"
  37. 37 },
  38. 38 {
  39. 39 "diffType": "CHANGE",
  40. 40 "id": "104779",
  41. 41 "layer": "0",
  42. 42 "sheetId": "0",
  43. 43 "sheetName": "Model",
  44. 44 "type": "Model"
  45. 45 },
  46. 46 {
  47. 47 "diffType": "CHANGE",
  48. 48 "id": "104780",
  49. 49 "layer": "0",
  50. 50 "sheetId": "0",
  51. 51 "sheetName": "Model",
  52. 52 "type": "Model"
  53. 53 },
  54. 54 {
  55. 55 "diffType": "CHANGE",
  56. 56 "id": "104781",
  57. 57 "layer": "0",
  58. 58 "sheetId": "0",
  59. 59 "sheetName": "Model",
  60. 60 "type": "Model"
  61. 61 },
  62. 62 {
  63. 63 "diffType": "CHANGE",
  64. 64 "id": "104782",
  65. 65 "layer": "0",
  66. 66 "sheetId": "0",
  67. 67 "sheetName": "Model",
  68. 68 "type": "Model"
  69. 69 },
  70. 70 {
  71. 71 "diffType": "CHANGE",
  72. 72 "id": "104783",
  73. 73 "layer": "0",
  74. 74 "sheetId": "0",
  75. 75 "sheetName": "Model",
  76. 76 "type": "Model"
  77. 77 },
  78. 78 {
  79. 79 "diffType": "CHANGE",
  80. 80 "id": "104784",
  81. 81 "layer": "0",
  82. 82 "sheetId": "0",
  83. 83 "sheetName": "Model",
  84. 84 "type": "Model"
  85. 85 },
  86. 86 {
  87. 87 "diffType": "CHANGE",
  88. 88 "id": "104785",
  89. 89 "layer": "0",
  90. 90 "sheetId": "0",
  91. 91 "sheetName": "Model",
  92. 92 "type": "Model"
  93. 93 },
  94. 94 {
  95. 95 "diffType": "CHANGE",
  96. 96 "id": "104786",
  97. 97 "layer": "0",
  98. 98 "sheetId": "0",
  99. 99 "sheetName": "Model",
  100. 100 "type": "Model"
  101. 101 },
  102. 102 {
  103. 103 "diffType": "CHANGE",
  104. 104 "id": "104787",
  105. 105 "layer": "0",
  106. 106 "sheetId": "0",
  107. 107 "sheetName": "Model",
  108. 108 "type": "Model"
  109. 109 },
  110. 110 {
  111. 111 "diffType": "CHANGE",
  112. 112 "id": "96095",
  113. 113 "layer": "0",
  114. 114 "sheetId": "0",
  115. 115 "sheetName": "Model",
  116. 116 "type": "Model"
  117. 117 },
  118. 118 {
  119. 119 "diffType": "CHANGE",
  120. 120 "id": "96096",
  121. 121 "layer": "0",
  122. 122 "sheetId": "0",
  123. 123 "sheetName": "Model",
  124. 124 "type": "Model"
  125. 125 },
  126. 126 {
  127. 127 "diffType": "CHANGE",
  128. 128 "id": "96097",
  129. 129 "layer": "0",
  130. 130 "sheetId": "0",
  131. 131 "sheetName": "Model",
  132. 132 "type": "Model"
  133. 133 },
  134. 134 {
  135. 135 "diffType": "CHANGE",
  136. 136 "id": "96098",
  137. 137 "layer": "0",
  138. 138 "sheetId": "0",
  139. 139 "sheetName": "Model",
  140. 140 "type": "Model"
  141. 141 },
  142. 142 {
  143. 143 "diffType": "CHANGE",
  144. 144 "id": "96099",
  145. 145 "layer": "0",
  146. 146 "sheetId": "0",
  147. 147 "sheetName": "Model",
  148. 148 "type": "Model"
  149. 149 },
  150. 150 {
  151. 151 "diffType": "CHANGE",
  152. 152 "id": "96100",
  153. 153 "layer": "0",
  154. 154 "sheetId": "0",
  155. 155 "sheetName": "Model",
  156. 156 "type": "Model"
  157. 157 },
  158. 158 {
  159. 159 "diffType": "CHANGE",
  160. 160 "id": "96101",
  161. 161 "layer": "0",
  162. 162 "sheetId": "0",
  163. 163 "sheetName": "Model",
  164. 164 "type": "Model"
  165. 165 },
  166. 166 {
  167. 167 "diffType": "CHANGE",
  168. 168 "id": "96102",
  169. 169 "layer": "0",
  170. 170 "sheetId": "0",
  171. 171 "sheetName": "Model",
  172. 172 "type": "Model"
  173. 173 },
  174. 174 {
  175. 175 "diffType": "CHANGE",
  176. 176 "id": "96103",
  177. 177 "layer": "0",
  178. 178 "sheetId": "0",
  179. 179 "sheetName": "Model",
  180. 180 "type": "Model"
  181. 181 },
  182. 182 {
  183. 183 "diffType": "CHANGE",
  184. 184 "id": "96104",
  185. 185 "layer": "0",
  186. 186 "sheetId": "0",
  187. 187 "sheetName": "Model",
  188. 188 "type": "Model"
  189. 189 },
  190. 190 {
  191. 191 "diffType": "CHANGE",
  192. 192 "id": "22307",
  193. 193 "layer": "AXIS",
  194. 194 "sheetId": "0",
  195. 195 "sheetName": "Model",
  196. 196 "type": "Model"
  197. 197 },
  198. 198 {
  199. 199 "diffType": "CHANGE",
  200. 200 "id": "22314",
  201. 201 "layer": "AXIS",
  202. 202 "sheetId": "0",
  203. 203 "sheetName": "Model",
  204. 204 "type": "Model"
  205. 205 },
  206. 206 {
  207. 207 "diffType": "CHANGE",
  208. 208 "id": "22315",
  209. 209 "layer": "AXIS",
  210. 210 "sheetId": "0",
  211. 211 "sheetName": "Model",
  212. 212 "type": "Model"
  213. 213 },
  214. 214 {
  215. 215 "diffType": "CHANGE",
  216. 216 "id": "53351",
  217. 217 "layer": "D1",
  218. 218 "sheetId": "0",
  219. 219 "sheetName": "Model",
  220. 220 "type": "Model"
  221. 221 },
  222. 222 {
  223. 223 "diffType": "CHANGE",
  224. 224 "id": "53352",
  225. 225 "layer": "D1",
  226. 226 "sheetId": "0",
  227. 227 "sheetName": "Model",
  228. 228 "type": "Model"
  229. 229 },
  230. 230 {
  231. 231 "diffType": "CHANGE",
  232. 232 "id": "53355",
  233. 233 "layer": "D1",
  234. 234 "sheetId": "0",
  235. 235 "sheetName": "Model",
  236. 236 "type": "Model"
  237. 237 },
  238. 238 {
  239. 239 "diffType": "CHANGE",
  240. 240 "id": "53356",
  241. 241 "layer": "D1",
  242. 242 "sheetId": "0",
  243. 243 "sheetName": "Model",
  244. 244 "type": "Model"
  245. 245 },
  246. 246 {
  247. 247 "diffType": "CHANGE",
  248. 248 "id": "53357",
  249. 249 "layer": "D1",
  250. 250 "sheetId": "0",
  251. 251 "sheetName": "Model",
  252. 252 "type": "Model"
  253. 253 },
  254. 254 {
  255. 255 "diffType": "CHANGE",
  256. 256 "id": "53358",
  257. 257 "layer": "D1",
  258. 258 "sheetId": "0",
  259. 259 "sheetName": "Model",
  260. 260 "type": "Model"
  261. 261 },
  262. 262 {
  263. 263 "diffType": "CHANGE",
  264. 264 "id": "53359",
  265. 265 "layer": "D1",
  266. 266 "sheetId": "0",
  267. 267 "sheetName": "Model",
  268. 268 "type": "Model"
  269. 269 },
  270. 270 {
  271. 271 "diffType": "CHANGE",
  272. 272 "id": "53361",
  273. 273 "layer": "D1",
  274. 274 "sheetId": "0",
  275. 275 "sheetName": "Model",
  276. 276 "type": "Model"
  277. 277 },
  278. 278 {
  279. 279 "diffType": "CHANGE",
  280. 280 "id": "53362",
  281. 281 "layer": "D1",
  282. 282 "sheetId": "0",
  283. 283 "sheetName": "Model",
  284. 284 "type": "Model"
  285. 285 },
  286. 286 {
  287. 287 "diffType": "CHANGE",
  288. 288 "id": "53363",
  289. 289 "layer": "D1",
  290. 290 "sheetId": "0",
  291. 291 "sheetName": "Model",
  292. 292 "type": "Model"
  293. 293 },
  294. 294 {
  295. 295 "diffType": "CHANGE",
  296. 296 "id": "53364",
  297. 297 "layer": "D1",
  298. 298 "sheetId": "0",
  299. 299 "sheetName": "Model",
  300. 300 "type": "Model"
  301. 301 },
  302. 302 {
  303. 303 "diffType": "CHANGE",
  304. 304 "id": "53365",
  305. 305 "layer": "D1",
  306. 306 "sheetId": "0",
  307. 307 "sheetName": "Model",
  308. 308 "type": "Model"
  309. 309 },
  310. 310 {
  311. 311 "diffType": "CHANGE",
  312. 312 "id": "53366",
  313. 313 "layer": "D1",
  314. 314 "sheetId": "0",
  315. 315 "sheetName": "Model",
  316. 316 "type": "Model"
  317. 317 },
  318. 318 {
  319. 319 "diffType": "CHANGE",
  320. 320 "id": "53367",
  321. 321 "layer": "D1",
  322. 322 "sheetId": "0",
  323. 323 "sheetName": "Model",
  324. 324 "type": "Model"
  325. 325 },
  326. 326 {
  327. 327 "diffType": "CHANGE",
  328. 328 "id": "53368",
  329. 329 "layer": "D1",
  330. 330 "sheetId": "0",
  331. 331 "sheetName": "Model",
  332. 332 "type": "Model"
  333. 333 },
  334. 334 {
  335. 335 "diffType": "CHANGE",
  336. 336 "id": "53369",
  337. 337 "layer": "D1",
  338. 338 "sheetId": "0",
  339. 339 "sheetName": "Model",
  340. 340 "type": "Model"
  341. 341 },
  342. 342 {
  343. 343 "diffType": "CHANGE",
  344. 344 "id": "53370",
  345. 345 "layer": "D1",
  346. 346 "sheetId": "0",
  347. 347 "sheetName": "Model",
  348. 348 "type": "Model"
  349. 349 },
  350. 350 {
  351. 351 "diffType": "CHANGE",
  352. 352 "id": "53371",
  353. 353 "layer": "D1",
  354. 354 "sheetId": "0",
  355. 355 "sheetName": "Model",
  356. 356 "type": "Model"
  357. 357 },
  358. 358 {
  359. 359 "diffType": "CHANGE",
  360. 360 "id": "53372",
  361. 361 "layer": "D1",
  362. 362 "sheetId": "0",
  363. 363 "sheetName": "Model",
  364. 364 "type": "Model"
  365. 365 },
  366. 366 {
  367. 367 "diffType": "CHANGE",
  368. 368 "id": "53373",
  369. 369 "layer": "D1",
  370. 370 "sheetId": "0",
  371. 371 "sheetName": "Model",
  372. 372 "type": "Model"
  373. 373 },
  374. 374 {
  375. 375 "diffType": "CHANGE",
  376. 376 "id": "53374",
  377. 377 "layer": "D1",
  378. 378 "sheetId": "0",
  379. 379 "sheetName": "Model",
  380. 380 "type": "Model"
  381. 381 },
  382. 382 {
  383. 383 "diffType": "CHANGE",
  384. 384 "id": "53375",
  385. 385 "layer": "D1",
  386. 386 "sheetId": "0",
  387. 387 "sheetName": "Model",
  388. 388 "type": "Model"
  389. 389 },
  390. 390 {
  391. 391 "diffType": "CHANGE",
  392. 392 "id": "53376",
  393. 393 "layer": "D1",
  394. 394 "sheetId": "0",
  395. 395 "sheetName": "Model",
  396. 396 "type": "Model"
  397. 397 },
  398. 398 {
  399. 399 "diffType": "CHANGE",
  400. 400 "id": "53377",
  401. 401 "layer": "D1",
  402. 402 "sheetId": "0",
  403. 403 "sheetName": "Model",
  404. 404 "type": "Model"
  405. 405 },
  406. 406 {
  407. 407 "diffType": "CHANGE",
  408. 408 "id": "53378",
  409. 409 "layer": "D1",
  410. 410 "sheetId": "0",
  411. 411 "sheetName": "Model",
  412. 412 "type": "Model"
  413. 413 },
  414. 414 {
  415. 415 "diffType": "CHANGE",
  416. 416 "id": "53381",
  417. 417 "layer": "D1",
  418. 418 "sheetId": "0",
  419. 419 "sheetName": "Model",
  420. 420 "type": "Model"
  421. 421 },
  422. 422 {
  423. 423 "diffType": "CHANGE",
  424. 424 "id": "53383",
  425. 425 "layer": "D1",
  426. 426 "sheetId": "0",
  427. 427 "sheetName": "Model",
  428. 428 "type": "Model"
  429. 429 },
  430. 430 {
  431. 431 "diffType": "CHANGE",
  432. 432 "id": "53384",
  433. 433 "layer": "D1",
  434. 434 "sheetId": "0",
  435. 435 "sheetName": "Model",
  436. 436 "type": "Model"
  437. 437 },
  438. 438 {
  439. 439 "diffType": "CHANGE",
  440. 440 "id": "53385",
  441. 441 "layer": "D1",
  442. 442 "sheetId": "0",
  443. 443 "sheetName": "Model",
  444. 444 "type": "Model"
  445. 445 },
  446. 446 {
  447. 447 "diffType": "CHANGE",
  448. 448 "id": "53386",
  449. 449 "layer": "D1",
  450. 450 "sheetId": "0",
  451. 451 "sheetName": "Model",
  452. 452 "type": "Model"
  453. 453 },
  454. 454 {
  455. 455 "diffType": "CHANGE",
  456. 456 "id": "53387",
  457. 457 "layer": "D1",
  458. 458 "sheetId": "0",
  459. 459 "sheetName": "Model",
  460. 460 "type": "Model"
  461. 461 },
  462. 462 {
  463. 463 "diffType": "CHANGE",
  464. 464 "id": "53389",
  465. 465 "layer": "D1",
  466. 466 "sheetId": "0",
  467. 467 "sheetName": "Model",
  468. 468 "type": "Model"
  469. 469 },
  470. 470 {
  471. 471 "diffType": "CHANGE",
  472. 472 "id": "53390",
  473. 473 "layer": "D1",
  474. 474 "sheetId": "0",
  475. 475 "sheetName": "Model",
  476. 476 "type": "Model"
  477. 477 },
  478. 478 {
  479. 479 "diffType": "CHANGE",
  480. 480 "id": "53391",
  481. 481 "layer": "D1",
  482. 482 "sheetId": "0",
  483. 483 "sheetName": "Model",
  484. 484 "type": "Model"
  485. 485 },
  486. 486 {
  487. 487 "diffType": "CHANGE",
  488. 488 "id": "53392",
  489. 489 "layer": "D1",
  490. 490 "sheetId": "0",
  491. 491 "sheetName": "Model",
  492. 492 "type": "Model"
  493. 493 },
  494. 494 {
  495. 495 "diffType": "CHANGE",
  496. 496 "id": "53395",
  497. 497 "layer": "D1",
  498. 498 "sheetId": "0",
  499. 499 "sheetName": "Model",
  500. 500 "type": "Model"
  501. 501 },
  502. 502 {
  503. 503 "diffType": "CHANGE",
  504. 504 "id": "53396",
  505. 505 "layer": "D1",
  506. 506 "sheetId": "0",
  507. 507 "sheetName": "Model",
  508. 508 "type": "Model"
  509. 509 },
  510. 510 {
  511. 511 "diffType": "CHANGE",
  512. 512 "id": "53397",
  513. 513 "layer": "D1",
  514. 514 "sheetId": "0",
  515. 515 "sheetName": "Model",
  516. 516 "type": "Model"
  517. 517 },
  518. 518 {
  519. 519 "diffType": "CHANGE",
  520. 520 "id": "53400",
  521. 521 "layer": "D1",
  522. 522 "sheetId": "0",
  523. 523 "sheetName": "Model",
  524. 524 "type": "Model"
  525. 525 },
  526. 526 {
  527. 527 "diffType": "CHANGE",
  528. 528 "id": "53401",
  529. 529 "layer": "D1",
  530. 530 "sheetId": "0",
  531. 531 "sheetName": "Model",
  532. 532 "type": "Model"
  533. 533 },
  534. 534 {
  535. 535 "diffType": "CHANGE",
  536. 536 "id": "53403",
  537. 537 "layer": "D1",
  538. 538 "sheetId": "0",
  539. 539 "sheetName": "Model",
  540. 540 "type": "Model"
  541. 541 },
  542. 542 {
  543. 543 "diffType": "CHANGE",
  544. 544 "id": "53404",
  545. 545 "layer": "D1",
  546. 546 "sheetId": "0",
  547. 547 "sheetName": "Model",
  548. 548 "type": "Model"
  549. 549 },
  550. 550 {
  551. 551 "diffType": "CHANGE",
  552. 552 "id": "53405",
  553. 553 "layer": "D1",
  554. 554 "sheetId": "0",
  555. 555 "sheetName": "Model",
  556. 556 "type": "Model"
  557. 557 },
  558. 558 {
  559. 559 "diffType": "CHANGE",
  560. 560 "id": "53406",
  561. 561 "layer": "D1",
  562. 562 "sheetId": "0",
  563. 563 "sheetName": "Model",
  564. 564 "type": "Model"
  565. 565 },
  566. 566 {
  567. 567 "diffType": "CHANGE",
  568. 568 "id": "53407",
  569. 569 "layer": "D1",
  570. 570 "sheetId": "0",
  571. 571 "sheetName": "Model",
  572. 572 "type": "Model"
  573. 573 },
  574. 574 {
  575. 575 "diffType": "CHANGE",
  576. 576 "id": "53408",
  577. 577 "layer": "D1",
  578. 578 "sheetId": "0",
  579. 579 "sheetName": "Model",
  580. 580 "type": "Model"
  581. 581 },
  582. 582 {
  583. 583 "diffType": "CHANGE",
  584. 584 "id": "53409",
  585. 585 "layer": "D1",
  586. 586 "sheetId": "0",
  587. 587 "sheetName": "Model",
  588. 588 "type": "Model"
  589. 589 },
  590. 590 {
  591. 591 "diffType": "CHANGE",
  592. 592 "id": "53410",
  593. 593 "layer": "D1",
  594. 594 "sheetId": "0",
  595. 595 "sheetName": "Model",
  596. 596 "type": "Model"
  597. 597 },
  598. 598 {
  599. 599 "diffType": "CHANGE",
  600. 600 "id": "53411",
  601. 601 "layer": "D1",
  602. 602 "sheetId": "0",
  603. 603 "sheetName": "Model",
  604. 604 "type": "Model"
  605. 605 }
  606. 606 ],
  607. 607 "page": 1,
  608. 608 "total": 75
  609. 609 }
  610. 610 }

参数说明

(1)diffType:图元变更类型。NEW 表示新增的图元、DELETE 表示删除的图元、CHANGE 表示修改的图元。

(2)id:变更的图元的唯一编号。

(3)layer:变更的图元所在的图层名称。

(4)sheetId:未知

(5)sheetName:未知

(6)type:变更的图元所在的图纸展示类型(Model 与Layer )

从上述Json结果中只能看出图元的变更类型与编号,并不知道其所属的图框,需要通过解析图纸对比的数据包信息才能计算出来。

获取图纸对比数据包信息API
测试程序如下:

调用BIMFACE服务端接口如下:

  1. 1 /// <summary>
  2. 2 /// 【官方非正式接口】根据 CompareId 获取图纸对比的数据包信息
  3. 3 /// </summary>
  4. 4 /// <param name="compareId">对比记录的ID</param>
  5. 5 /// <returns></returns>
  6. 6 public DrawingCompareDatabagResponse GetDrawingCompareDatabage(string accessToken, long compareId)
  7. 7 {
  8. 8 IBasicApi api = new BasicApi();
  9. 9
  10. 10 ViewTokenResponse viewTokenResponse = api.GetViewTokenByCompareId(accessToken, compareId);
  11. 11 if (viewTokenResponse != null && viewTokenResponse.Code == "success" && viewTokenResponse.Data != null)
  12. 12 {
  13. 13 return GetDrawingCompareDatabageByCompareViewToken(viewTokenResponse.Data);
  14. 14 }
  15. 15
  16. 16 return null;
  17. 17 }
  18. 18
  19. 19
  20. 20 /// <summary>
  21. 21 /// 【官方非正式接口】根据对比记录的 ViewToken 获取图纸对比的数据包信息
  22. 22 /// </summary>
  23. 23 /// <param name="compareViewToken">对比记录的ViewToken</param>
  24. 24 /// <returns></returns>
  25. 25 public DrawingCompareDatabagResponse GetDrawingCompareDatabageByCompareViewToken(string compareViewToken)
  26. 26 {
  27. 27 //GET https://api.bimface.com/inside/databag?viewToken=b80412dcba2a47b0860eeff8f2c578a9
  28. 28
  29. 29 string url = string.Format(BIMFaceConstants.API_HOST + "/inside/databag?viewToken={0}", compareViewToken);
  30. 30 try
  31. 31 {
  32. 32 DrawingCompareDatabagResponse response;
  33. 33
  34. 34 HttpManager httpManager = new HttpManager();
  35. 35 HttpResult httpResult = httpManager.Get(url);
  36. 36 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
  37. 37 {
  38. 38 response = httpResult.Text.DeserializeJsonToObject<DrawingCompareDatabagResponse>();
  39. 39 }
  40. 40 else
  41. 41 {
  42. 42 response = new DrawingCompareDatabagResponse
  43. 43 {
  44. 44 Message = httpResult.RefText
  45. 45 };
  46. 46 }
  47. 47
  48. 48 return response;
  49. 49 }
  50. 50 catch (Exception ex)
  51. 51 {
  52. 52 throw new BIMFaceException("[获取图纸对比的数据包信息]发生异常!", ex);
  53. 53 }
  54. 54 }
  55. 55

接口返回的完整信息如下:

  1. 1 {
  2. 2 "code": "success",
  3. 3 "message": null,
  4. 4 "data": {
  5. 5 "databagId": "76d256b09416830a8079914ab7d40fdf",
  6. 6 "isSupportComponentProperty": false,
  7. 7 "isSupportDrawing": false,
  8. 8 "isSupportFamilyTypeList": false,
  9. 9 "isSupportMaterialProperty": false,
  10. 10 "isSupportMiniMap": false,
  11. 11 "isSupportModelTree": false,
  12. 12 "isSupportRoomArea": false,
  13. 13 "isSupportWalk": true,
  14. 14 "jsSDKVersion": "3.6.159",
  15. 15 "modelId": 2230429779838240,
  16. 16 "modelType": "compareModel",
  17. 17 "name": "202110121516-对比",
  18. 18 "renderType": "drawingView",
  19. 19 "renderVersion": "3.0",
  20. 20 "subRenders": [
  21. 21 {
  22. 22 "isSupportComponentProperty": false,
  23. 23 "isSupportFamilyTypeList": false,
  24. 24 "isSupportMiniMap": false,
  25. 25 "isSupportModelTree": false,
  26. 26 "jsSDKVersion": "3.6.159",
  27. 27 "renderType": "bimView",
  28. 28 "renderVersion": "3.0"
  29. 29 },
  30. 30 {
  31. 31 "isSupportComponentProperty": false,
  32. 32 "isSupportFamilyTypeList": false,
  33. 33 "isSupportMiniMap": false,
  34. 34 "isSupportModelTree": false,
  35. 35 "jsSDKVersion": "Drawing@1.6.95",
  36. 36 "renderType": "drawingView",
  37. 37 "renderVersion": "1.0"
  38. 38 }
  39. 39 ],
  40. 40 "type": 3,
  41. 41 "workerType": "drawing-compare"
  42. 42 }
  43. 43 }

该接口主要获取 databagId,供下面的接口使用。

获取图纸对比数据包差异结果API

测试程序如下:

调用BIMFACE服务端接口如下:

  1. 1 /// <summary>
  2. 2 /// 【官方非正式接口】根据图纸对比的数据包Id,获取图纸对比差异数据包结果
  3. 3 /// </summary>
  4. 4 /// <param name="databagId">图纸对比的数据包Id,</param>
  5. 5 /// <returns></returns>
  6. 6 public DrawingCompareDatabagDiffResult GetDrawingCompareDatabageDiffResult(string databagId)
  7. 7 {
  8. 8 //GET https://m.bimface.com/{databagId}/result.json
  9. 9
  10. 10 string url = string.Format("https://m.bimface.com/{0}/result.json", databagId);
  11. 11 try
  12. 12 {
  13. 13 DrawingCompareDatabagDiffResult response = null;
  14. 14
  15. 15 HttpManager httpManager = new HttpManager();
  16. 16 HttpResult httpResult = httpManager.Get(url);
  17. 17 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
  18. 18 {
  19. 19 response = httpResult.Text.DeserializeJsonToObject<DrawingCompareDatabagDiffResult>();
  20. 20 }
  21. 21
  22. 22 return response;
  23. 23 }
  24. 24 catch (Exception ex)
  25. 25 {
  26. 26 throw new BIMFaceException("[获取图纸对比的数据包信息]发生异常!", ex);
  27. 27 }
  28. 28 }

接口返回的完整信息如下:

  1. 1 {
  2. 2 "ver": "4.0",
  3. 3 "model": {
  4. 4 "id": "0",
  5. 5 "name": "Model",
  6. 6 "additions": [
  7. 7 {
  8. 8 "layer": "D1",
  9. 9 "id": "1946878",
  10. 10 "frame": {
  11. 11 "id": "6",
  12. 12 "name": "基础接地平面",
  13. 13 "number": "电施05"
  14. 14 }
  15. 15 },
  16. 16 {
  17. 17 "layer": "D1",
  18. 18 "id": "1946877",
  19. 19 "frame": {
  20. 20 "id": "5",
  21. 21 "name": "屋顶防雷平面",
  22. 22 "number": "电施04"
  23. 23 }
  24. 24 }
  25. 25 ],
  26. 26 "deletions": [
  27. 27 {
  28. 28 "layer": "D1",
  29. 29 "id": "122566",
  30. 30 "frame": {
  31. 31 "id": "3",
  32. 32 "name": "一层电气平面(一)",
  33. 33 "number": "电施02"
  34. 34 }
  35. 35 }
  36. 36 ],
  37. 37 "modifications": [
  38. 38 {
  39. 39 "previousLayer": "0",
  40. 40 "currentLayer": "0",
  41. 41 "id": "96103",
  42. 42 "previousFrame": {
  43. 43 "id": "2",
  44. 44 "name": "电气抗震设计专篇",
  45. 45 "number": "电施01"
  46. 46 },
  47. 47 "currentFrame": {
  48. 48 "id": "2",
  49. 49 "name": "电气抗震设计专篇",
  50. 50 "number": "电施01"
  51. 51 }
  52. 52 },
  53. 53 {
  54. 54 "previousLayer": "D1",
  55. 55 "currentLayer": "D1",
  56. 56 "id": "53383",
  57. 57 "previousFrame": {
  58. 58 "id": "3",
  59. 59 "name": "一层电气平面(一)",
  60. 60 "number": "电施02"
  61. 61 },
  62. 62 "currentFrame": {
  63. 63 "id": "3",
  64. 64 "name": "一层电气平面(一)",
  65. 65 "number": "电施02"
  66. 66 }
  67. 67 },
  68. 68 {
  69. 69 "previousLayer": "D1",
  70. 70 "currentLayer": "D1",
  71. 71 "id": "53351",
  72. 72 "previousFrame": {
  73. 73 "id": "3",
  74. 74 "name": "一层电气平面(一)",
  75. 75 "number": "电施02"
  76. 76 },
  77. 77 "currentFrame": {
  78. 78 "id": "3",
  79. 79 "name": "一层电气平面(一)",
  80. 80 "number": "电施02"
  81. 81 }
  82. 82 },
  83. 83 {
  84. 84 "previousLayer": "0",
  85. 85 "currentLayer": "0",
  86. 86 "id": "96099",
  87. 87 "previousFrame": {
  88. 88 "id": "2",
  89. 89 "name": "电气抗震设计专篇",
  90. 90 "number": "电施01"
  91. 91 },
  92. 92 "currentFrame": {
  93. 93 "id": "2",
  94. 94 "name": "电气抗震设计专篇",
  95. 95 "number": "电施01"
  96. 96 }
  97. 97 },
  98. 98 {
  99. 99 "previousLayer": "0",
  100. 100 "currentLayer": "0",
  101. 101 "id": "104785",
  102. 102 "previousFrame": {
  103. 103 "id": "2",
  104. 104 "name": "电气抗震设计专篇",
  105. 105 "number": "电施01"
  106. 106 },
  107. 107 "currentFrame": {
  108. 108 "id": "2",
  109. 109 "name": "电气抗震设计专篇",
  110. 110 "number": "电施01"
  111. 111 }
  112. 112 },
  113. 113 {
  114. 114 "previousLayer": "D1",
  115. 115 "currentLayer": "D1",
  116. 116 "id": "53403",
  117. 117 "previousFrame": {
  118. 118 "id": "3",
  119. 119 "name": "一层电气平面(一)",
  120. 120 "number": "电施02"
  121. 121 },
  122. 122 "currentFrame": {
  123. 123 "id": "3",
  124. 124 "name": "一层电气平面(一)",
  125. 125 "number": "电施02"
  126. 126 }
  127. 127 },
  128. 128 {
  129. 129 "previousLayer": "D1",
  130. 130 "currentLayer": "D1",
  131. 131 "id": "53395",
  132. 132 "previousFrame": {
  133. 133 "id": "3",
  134. 134 "name": "一层电气平面(一)",
  135. 135 "number": "电施02"
  136. 136 },
  137. 137 "currentFrame": {
  138. 138 "id": "3",
  139. 139 "name": "一层电气平面(一)",
  140. 140 "number": "电施02"
  141. 141 }
  142. 142 },
  143. 143 {
  144. 144 "previousLayer": "AXIS",
  145. 145 "currentLayer": "AXIS",
  146. 146 "id": "22315",
  147. 147 "previousFrame": {
  148. 148 "id": "5",
  149. 149 "name": "屋顶防雷平面",
  150. 150 "number": "电施04"
  151. 151 },
  152. 152 "currentFrame": {
  153. 153 "id": "5",
  154. 154 "name": "屋顶防雷平面",
  155. 155 "number": "电施04"
  156. 156 }
  157. 157 },
  158. 158 {
  159. 159 "previousLayer": "0",
  160. 160 "currentLayer": "0",
  161. 161 "id": "104786",
  162. 162 "previousFrame": {
  163. 163 "id": "2",
  164. 164 "name": "电气抗震设计专篇",
  165. 165 "number": "电施01"
  166. 166 },
  167. 167 "currentFrame": {
  168. 168 "id": "2",
  169. 169 "name": "电气抗震设计专篇",
  170. 170 "number": "电施01"
  171. 171 }
  172. 172 },
  173. 173 {
  174. 174 "previousLayer": "D1",
  175. 175 "currentLayer": "D1",
  176. 176 "id": "53384",
  177. 177 "previousFrame": {
  178. 178 "id": "3",
  179. 179 "name": "一层电气平面(一)",
  180. 180 "number": "电施02"
  181. 181 },
  182. 182 "currentFrame": {
  183. 183 "id": "3",
  184. 184 "name": "一层电气平面(一)",
  185. 185 "number": "电施02"
  186. 186 }
  187. 187 },
  188. 188 {
  189. 189 "previousLayer": "D1",
  190. 190 "currentLayer": "D1",
  191. 191 "id": "53352",
  192. 192 "previousFrame": {
  193. 193 "id": "3",
  194. 194 "name": "一层电气平面(一)",
  195. 195 "number": "电施02"
  196. 196 },
  197. 197 "currentFrame": {
  198. 198 "id": "3",
  199. 199 "name": "一层电气平面(一)",
  200. 200 "number": "电施02"
  201. 201 }
  202. 202 },
  203. 203 {
  204. 204 "previousLayer": "D1",
  205. 205 "currentLayer": "D1",
  206. 206 "id": "53400",
  207. 207 "previousFrame": {
  208. 208 "id": "3",
  209. 209 "name": "一层电气平面(一)",
  210. 210 "number": "电施02"
  211. 211 },
  212. 212 "currentFrame": {
  213. 213 "id": "3",
  214. 214 "name": "一层电气平面(一)",
  215. 215 "number": "电施02"
  216. 216 }
  217. 217 },
  218. 218 {
  219. 219 "previousLayer": "D1",
  220. 220 "currentLayer": "D1",
  221. 221 "id": "53368",
  222. 222 "previousFrame": {
  223. 223 "id": "3",
  224. 224 "name": "一层电气平面(一)",
  225. 225 "number": "电施02"
  226. 226 },
  227. 227 "currentFrame": {
  228. 228 "id": "3",
  229. 229 "name": "一层电气平面(一)",
  230. 230 "number": "电施02"
  231. 231 }
  232. 232 },
  233. 233 {
  234. 234 "previousLayer": "AXIS",
  235. 235 "currentLayer": "AXIS",
  236. 236 "id": "22307",
  237. 237 "previousFrame": {
  238. 238 "id": "5",
  239. 239 "name": "屋顶防雷平面",
  240. 240 "number": "电施04"
  241. 241 },
  242. 242 "currentFrame": {
  243. 243 "id": "5",
  244. 244 "name": "屋顶防雷平面",
  245. 245 "number": "电施04"
  246. 246 }
  247. 247 },
  248. 248 {
  249. 249 "previousLayer": "D1",
  250. 250 "currentLayer": "D1",
  251. 251 "id": "53371",
  252. 252 "previousFrame": {
  253. 253 "id": "3",
  254. 254 "name": "一层电气平面(一)",
  255. 255 "number": "电施02"
  256. 256 },
  257. 257 "currentFrame": {
  258. 258 "id": "3",
  259. 259 "name": "一层电气平面(一)",
  260. 260 "number": "电施02"
  261. 261 }
  262. 262 },
  263. 263 {
  264. 264 "previousLayer": "AXIS",
  265. 265 "currentLayer": "AXIS",
  266. 266 "id": "22314",
  267. 267 "previousFrame": {
  268. 268 "id": "5",
  269. 269 "name": "屋顶防雷平面",
  270. 270 "number": "电施04"
  271. 271 },
  272. 272 "currentFrame": {
  273. 273 "id": "5",
  274. 274 "name": "屋顶防雷平面",
  275. 275 "number": "电施04"
  276. 276 }
  277. 277 },
  278. 278 {
  279. 279 "previousLayer": "0",
  280. 280 "currentLayer": "0",
  281. 281 "id": "96098",
  282. 282 "previousFrame": {
  283. 283 "id": "2",
  284. 284 "name": "电气抗震设计专篇",
  285. 285 "number": "电施01"
  286. 286 },
  287. 287 "currentFrame": {
  288. 288 "id": "2",
  289. 289 "name": "电气抗震设计专篇",
  290. 290 "number": "电施01"
  291. 291 }
  292. 292 },
  293. 293 {
  294. 294 "previousLayer": "D1",
  295. 295 "currentLayer": "D1",
  296. 296 "id": "53386",
  297. 297 "previousFrame": {
  298. 298 "id": "3",
  299. 299 "name": "一层电气平面(一)",
  300. 300 "number": "电施02"
  301. 301 },
  302. 302 "currentFrame": {
  303. 303 "id": "3",
  304. 304 "name": "一层电气平面(一)",
  305. 305 "number": "电施02"
  306. 306 }
  307. 307 },
  308. 308 {
  309. 309 "previousLayer": "0",
  310. 310 "currentLayer": "0",
  311. 311 "id": "96097",
  312. 312 "previousFrame": {
  313. 313 "id": "2",
  314. 314 "name": "电气抗震设计专篇",
  315. 315 "number": "电施01"
  316. 316 },
  317. 317 "currentFrame": {
  318. 318 "id": "2",
  319. 319 "name": "电气抗震设计专篇",
  320. 320 "number": "电施01"
  321. 321 }
  322. 322 },
  323. 323 {
  324. 324 "previousLayer": "D1",
  325. 325 "currentLayer": "D1",
  326. 326 "id": "53397",
  327. 327 "previousFrame": {
  328. 328 "id": "3",
  329. 329 "name": "一层电气平面(一)",
  330. 330 "number": "电施02"
  331. 331 },
  332. 332 "currentFrame": {
  333. 333 "id": "3",
  334. 334 "name": "一层电气平面(一)",
  335. 335 "number": "电施02"
  336. 336 }
  337. 337 },
  338. 338 {
  339. 339 "previousLayer": "0",
  340. 340 "currentLayer": "0",
  341. 341 "id": "104783",
  342. 342 "previousFrame": {
  343. 343 "id": "2",
  344. 344 "name": "电气抗震设计专篇",
  345. 345 "number": "电施01"
  346. 346 },
  347. 347 "currentFrame": {
  348. 348 "id": "2",
  349. 349 "name": "电气抗震设计专篇",
  350. 350 "number": "电施01"
  351. 351 }
  352. 352 },
  353. 353 {
  354. 354 "previousLayer": "D1",
  355. 355 "currentLayer": "D1",
  356. 356 "id": "53405",
  357. 357 "previousFrame": {
  358. 358 "id": "3",
  359. 359 "name": "一层电气平面(一)",
  360. 360 "number": "电施02"
  361. 361 },
  362. 362 "currentFrame": {
  363. 363 "id": "3",
  364. 364 "name": "一层电气平面(一)",
  365. 365 "number": "电施02"
  366. 366 }
  367. 367 },
  368. 368 {
  369. 369 "previousLayer": "0",
  370. 370 "currentLayer": "0",
  371. 371 "id": "104779",
  372. 372 "previousFrame": {
  373. 373 "id": "2",
  374. 374 "name": "电气抗震设计专篇",
  375. 375 "number": "电施01"
  376. 376 },
  377. 377 "currentFrame": {
  378. 378 "id": "2",
  379. 379 "name": "电气抗震设计专篇",
  380. 380 "number": "电施01"
  381. 381 }
  382. 382 },
  383. 383 {
  384. 384 "previousLayer": "0",
  385. 385 "currentLayer": "0",
  386. 386 "id": "96095",
  387. 387 "previousFrame": {
  388. 388 "id": "2",
  389. 389 "name": "电气抗震设计专篇",
  390. 390 "number": "电施01"
  391. 391 },
  392. 392 "currentFrame": {
  393. 393 "id": "2",
  394. 394 "name": "电气抗震设计专篇",
  395. 395 "number": "电施01"
  396. 396 }
  397. 397 },
  398. 398 {
  399. 399 "previousLayer": "D1",
  400. 400 "currentLayer": "D1",
  401. 401 "id": "53375",
  402. 402 "previousFrame": {
  403. 403 "id": "3",
  404. 404 "name": "一层电气平面(一)",
  405. 405 "number": "电施02"
  406. 406 },
  407. 407 "currentFrame": {
  408. 408 "id": "3",
  409. 409 "name": "一层电气平面(一)",
  410. 410 "number": "电施02"
  411. 411 }
  412. 412 },
  413. 413 {
  414. 414 "previousLayer": "D1",
  415. 415 "currentLayer": "D1",
  416. 416 "id": "53355",
  417. 417 "previousFrame": {
  418. 418 "id": "3",
  419. 419 "name": "一层电气平面(一)",
  420. 420 "number": "电施02"
  421. 421 },
  422. 422 "currentFrame": {
  423. 423 "id": "3",
  424. 424 "name": "一层电气平面(一)",
  425. 425 "number": "电施02"
  426. 426 }
  427. 427 },
  428. 428 {
  429. 429 "previousLayer": "0",
  430. 430 "currentLayer": "0",
  431. 431 "id": "96104",
  432. 432 "previousFrame": {
  433. 433 "id": "2",
  434. 434 "name": "电气抗震设计专篇",
  435. 435 "number": "电施01"
  436. 436 },
  437. 437 "currentFrame": {
  438. 438 "id": "2",
  439. 439 "name": "电气抗震设计专篇",
  440. 440 "number": "电施01"
  441. 441 }
  442. 442 },
  443. 443 {
  444. 444 "previousLayer": "D1",
  445. 445 "currentLayer": "D1",
  446. 446 "id": "53356",
  447. 447 "previousFrame": {
  448. 448 "id": "3",
  449. 449 "name": "一层电气平面(一)",
  450. 450 "number": "电施02"
  451. 451 },
  452. 452 "currentFrame": {
  453. 453 "id": "3",
  454. 454 "name": "一层电气平面(一)",
  455. 455 "number": "电施02"
  456. 456 }
  457. 457 },
  458. 458 {
  459. 459 "previousLayer": "D1",
  460. 460 "currentLayer": "D1",
  461. 461 "id": "53357",
  462. 462 "previousFrame": {
  463. 463 "id": "3",
  464. 464 "name": "一层电气平面(一)",
  465. 465 "number": "电施02"
  466. 466 },
  467. 467 "currentFrame": {
  468. 468 "id": "3",
  469. 469 "name": "一层电气平面(一)",
  470. 470 "number": "电施02"
  471. 471 }
  472. 472 },
  473. 473 {
  474. 474 "previousLayer": "D1",
  475. 475 "currentLayer": "D1",
  476. 476 "id": "53358",
  477. 477 "previousFrame": {
  478. 478 "id": "3",
  479. 479 "name": "一层电气平面(一)",
  480. 480 "number": "电施02"
  481. 481 },
  482. 482 "currentFrame": {
  483. 483 "id": "3",
  484. 484 "name": "一层电气平面(一)",
  485. 485 "number": "电施02"
  486. 486 }
  487. 487 },
  488. 488 {
  489. 489 "previousLayer": "D1",
  490. 490 "currentLayer": "D1",
  491. 491 "id": "53359",
  492. 492 "previousFrame": {
  493. 493 "id": "3",
  494. 494 "name": "一层电气平面(一)",
  495. 495 "number": "电施02"
  496. 496 },
  497. 497 "currentFrame": {
  498. 498 "id": "3",
  499. 499 "name": "一层电气平面(一)",
  500. 500 "number": "电施02"
  501. 501 }
  502. 502 },
  503. 503 {
  504. 504 "previousLayer": "D1",
  505. 505 "currentLayer": "D1",
  506. 506 "id": "53361",
  507. 507 "previousFrame": {
  508. 508 "id": "3",
  509. 509 "name": "一层电气平面(一)",
  510. 510 "number": "电施02"
  511. 511 },
  512. 512 "currentFrame": {
  513. 513 "id": "3",
  514. 514 "name": "一层电气平面(一)",
  515. 515 "number": "电施02"
  516. 516 }
  517. 517 },
  518. 518 {
  519. 519 "previousLayer": "D1",
  520. 520 "currentLayer": "D1",
  521. 521 "id": "53362",
  522. 522 "previousFrame": {
  523. 523 "id": "3",
  524. 524 "name": "一层电气平面(一)",
  525. 525 "number": "电施02"
  526. 526 },
  527. 527 "currentFrame": {
  528. 528 "id": "3",
  529. 529 "name": "一层电气平面(一)",
  530. 530 "number": "电施02"
  531. 531 }
  532. 532 },
  533. 533 {
  534. 534 "previousLayer": "D1",
  535. 535 "currentLayer": "D1",
  536. 536 "id": "53363",
  537. 537 "previousFrame": {
  538. 538 "id": "3",
  539. 539 "name": "一层电气平面(一)",
  540. 540 "number": "电施02"
  541. 541 },
  542. 542 "currentFrame": {
  543. 543 "id": "3",
  544. 544 "name": "一层电气平面(一)",
  545. 545 "number": "电施02"
  546. 546 }
  547. 547 },
  548. 548 {
  549. 549 "previousLayer": "D1",
  550. 550 "currentLayer": "D1",
  551. 551 "id": "53364",
  552. 552 "previousFrame": {
  553. 553 "id": "3",
  554. 554 "name": "一层电气平面(一)",
  555. 555 "number": "电施02"
  556. 556 },
  557. 557 "currentFrame": {
  558. 558 "id": "3",
  559. 559 "name": "一层电气平面(一)",
  560. 560 "number": "电施02"
  561. 561 }
  562. 562 },
  563. 563 {
  564. 564 "previousLayer": "D1",
  565. 565 "currentLayer": "D1",
  566. 566 "id": "53365",
  567. 567 "previousFrame": {
  568. 568 "id": "3",
  569. 569 "name": "一层电气平面(一)",
  570. 570 "number": "电施02"
  571. 571 },
  572. 572 "currentFrame": {
  573. 573 "id": "3",
  574. 574 "name": "一层电气平面(一)",
  575. 575 "number": "电施02"
  576. 576 }
  577. 577 },
  578. 578 {
  579. 579 "previousLayer": "D1",
  580. 580 "currentLayer": "D1",
  581. 581 "id": "53366",
  582. 582 "previousFrame": {
  583. 583 "id": "3",
  584. 584 "name": "一层电气平面(一)",
  585. 585 "number": "电施02"
  586. 586 },
  587. 587 "currentFrame": {
  588. 588 "id": "3",
  589. 589 "name": "一层电气平面(一)",
  590. 590 "number": "电施02"
  591. 591 }
  592. 592 },
  593. 593 {
  594. 594 "previousLayer": "D1",
  595. 595 "currentLayer": "D1",
  596. 596 "id": "53367",
  597. 597 "previousFrame": {
  598. 598 "id": "3",
  599. 599 "name": "一层电气平面(一)",
  600. 600 "number": "电施02"
  601. 601 },
  602. 602 "currentFrame": {
  603. 603 "id": "3",
  604. 604 "name": "一层电气平面(一)",
  605. 605 "number": "电施02"
  606. 606 }
  607. 607 },
  608. 608 {
  609. 609 "previousLayer": "D1",
  610. 610 "currentLayer": "D1",
  611. 611 "id": "53369",
  612. 612 "previousFrame": {
  613. 613 "id": "3",
  614. 614 "name": "一层电气平面(一)",
  615. 615 "number": "电施02"
  616. 616 },
  617. 617 "currentFrame": {
  618. 618 "id": "3",
  619. 619 "name": "一层电气平面(一)",
  620. 620 "number": "电施02"
  621. 621 }
  622. 622 },
  623. 623 {
  624. 624 "previousLayer": "D1",
  625. 625 "currentLayer": "D1",
  626. 626 "id": "53370",
  627. 627 "previousFrame": {
  628. 628 "id": "3",
  629. 629 "name": "一层电气平面(一)",
  630. 630 "number": "电施02"
  631. 631 },
  632. 632 "currentFrame": {
  633. 633 "id": "3",
  634. 634 "name": "一层电气平面(一)",
  635. 635 "number": "电施02"
  636. 636 }
  637. 637 },
  638. 638 {
  639. 639 "previousLayer": "D1",
  640. 640 "currentLayer": "D1",
  641. 641 "id": "53372",
  642. 642 "previousFrame": {
  643. 643 "id": "3",
  644. 644 "name": "一层电气平面(一)",
  645. 645 "number": "电施02"
  646. 646 },
  647. 647 "currentFrame": {
  648. 648 "id": "3",
  649. 649 "name": "一层电气平面(一)",
  650. 650 "number": "电施02"
  651. 651 }
  652. 652 },
  653. 653 {
  654. 654 "previousLayer": "D1",
  655. 655 "currentLayer": "D1",
  656. 656 "id": "53373",
  657. 657 "previousFrame": {
  658. 658 "id": "3",
  659. 659 "name": "一层电气平面(一)",
  660. 660 "number": "电施02"
  661. 661 },
  662. 662 "currentFrame": {
  663. 663 "id": "3",
  664. 664 "name": "一层电气平面(一)",
  665. 665 "number": "电施02"
  666. 666 }
  667. 667 },
  668. 668 {
  669. 669 "previousLayer": "D1",
  670. 670 "currentLayer": "D1",
  671. 671 "id": "53374",
  672. 672 "previousFrame": {
  673. 673 "id": "3",
  674. 674 "name": "一层电气平面(一)",
  675. 675 "number": "电施02"
  676. 676 },
  677. 677 "currentFrame": {
  678. 678 "id": "3",
  679. 679 "name": "一层电气平面(一)",
  680. 680 "number": "电施02"
  681. 681 }
  682. 682 },
  683. 683 {
  684. 684 "previousLayer": "D1",
  685. 685 "currentLayer": "D1",
  686. 686 "id": "53376",
  687. 687 "previousFrame": {
  688. 688 "id": "3",
  689. 689 "name": "一层电气平面(一)",
  690. 690 "number": "电施02"
  691. 691 },
  692. 692 "currentFrame": {
  693. 693 "id": "3",
  694. 694 "name": "一层电气平面(一)",
  695. 695 "number": "电施02"
  696. 696 }
  697. 697 },
  698. 698 {
  699. 699 "previousLayer": "0",
  700. 700 "currentLayer": "0",
  701. 701 "id": "96101",
  702. 702 "previousFrame": {
  703. 703 "id": "2",
  704. 704 "name": "电气抗震设计专篇",
  705. 705 "number": "电施01"
  706. 706 },
  707. 707 "currentFrame": {
  708. 708 "id": "2",
  709. 709 "name": "电气抗震设计专篇",
  710. 710 "number": "电施01"
  711. 711 }
  712. 712 },
  713. 713 {
  714. 714 "previousLayer": "D1",
  715. 715 "currentLayer": "D1",
  716. 716 "id": "53377",
  717. 717 "previousFrame": {
  718. 718 "id": "3",
  719. 719 "name": "一层电气平面(一)",
  720. 720 "number": "电施02"
  721. 721 },
  722. 722 "currentFrame": {
  723. 723 "id": "3",
  724. 724 "name": "一层电气平面(一)",
  725. 725 "number": "电施02"
  726. 726 }
  727. 727 },
  728. 728 {
  729. 729 "previousLayer": "D1",
  730. 730 "currentLayer": "D1",
  731. 731 "id": "53378",
  732. 732 "previousFrame": {
  733. 733 "id": "3",
  734. 734 "name": "一层电气平面(一)",
  735. 735 "number": "电施02"
  736. 736 },
  737. 737 "currentFrame": {
  738. 738 "id": "3",
  739. 739 "name": "一层电气平面(一)",
  740. 740 "number": "电施02"
  741. 741 }
  742. 742 },
  743. 743 {
  744. 744 "previousLayer": "D1",
  745. 745 "currentLayer": "D1",
  746. 746 "id": "53381",
  747. 747 "previousFrame": {
  748. 748 "id": "3",
  749. 749 "name": "一层电气平面(一)",
  750. 750 "number": "电施02"
  751. 751 },
  752. 752 "currentFrame": {
  753. 753 "id": "3",
  754. 754 "name": "一层电气平面(一)",
  755. 755 "number": "电施02"
  756. 756 }
  757. 757 },
  758. 758 {
  759. 759 "previousLayer": "D1",
  760. 760 "currentLayer": "D1",
  761. 761 "id": "53385",
  762. 762 "previousFrame": {
  763. 763 "id": "3",
  764. 764 "name": "一层电气平面(一)",
  765. 765 "number": "电施02"
  766. 766 },
  767. 767 "currentFrame": {
  768. 768 "id": "3",
  769. 769 "name": "一层电气平面(一)",
  770. 770 "number": "电施02"
  771. 771 }
  772. 772 },
  773. 773 {
  774. 774 "previousLayer": "D1",
  775. 775 "currentLayer": "D1",
  776. 776 "id": "53387",
  777. 777 "previousFrame": {
  778. 778 "id": "3",
  779. 779 "name": "一层电气平面(一)",
  780. 780 "number": "电施02"
  781. 781 },
  782. 782 "currentFrame": {
  783. 783 "id": "3",
  784. 784 "name": "一层电气平面(一)",
  785. 785 "number": "电施02"
  786. 786 }
  787. 787 },
  788. 788 {
  789. 789 "previousLayer": "D1",
  790. 790 "currentLayer": "D1",
  791. 791 "id": "53389",
  792. 792 "previousFrame": {
  793. 793 "id": "3",
  794. 794 "name": "一层电气平面(一)",
  795. 795 "number": "电施02"
  796. 796 },
  797. 797 "currentFrame": {
  798. 798 "id": "3",
  799. 799 "name": "一层电气平面(一)",
  800. 800 "number": "电施02"
  801. 801 }
  802. 802 },
  803. 803 {
  804. 804 "previousLayer": "D1",
  805. 805 "currentLayer": "D1",
  806. 806 "id": "53390",
  807. 807 "previousFrame": {
  808. 808 "id": "3",
  809. 809 "name": "一层电气平面(一)",
  810. 810 "number": "电施02"
  811. 811 },
  812. 812 "currentFrame": {
  813. 813 "id": "3",
  814. 814 "name": "一层电气平面(一)",
  815. 815 "number": "电施02"
  816. 816 }
  817. 817 },
  818. 818 {
  819. 819 "previousLayer": "D1",
  820. 820 "currentLayer": "D1",
  821. 821 "id": "53392",
  822. 822 "previousFrame": {
  823. 823 "id": "3",
  824. 824 "name": "一层电气平面(一)",
  825. 825 "number": "电施02"
  826. 826 },
  827. 827 "currentFrame": {
  828. 828 "id": "3",
  829. 829 "name": "一层电气平面(一)",
  830. 830 "number": "电施02"
  831. 831 }
  832. 832 },
  833. 833 {
  834. 834 "previousLayer": "D1",
  835. 835 "currentLayer": "D1",
  836. 836 "id": "53391",
  837. 837 "previousFrame": {
  838. 838 "id": "3",
  839. 839 "name": "一层电气平面(一)",
  840. 840 "number": "电施02"
  841. 841 },
  842. 842 "currentFrame": {
  843. 843 "id": "3",
  844. 844 "name": "一层电气平面(一)",
  845. 845 "number": "电施02"
  846. 846 }
  847. 847 },
  848. 848 {
  849. 849 "previousLayer": "D1",
  850. 850 "currentLayer": "D1",
  851. 851 "id": "53396",
  852. 852 "previousFrame": {
  853. 853 "id": "3",
  854. 854 "name": "一层电气平面(一)",
  855. 855 "number": "电施02"
  856. 856 },
  857. 857 "currentFrame": {
  858. 858 "id": "3",
  859. 859 "name": "一层电气平面(一)",
  860. 860 "number": "电施02"
  861. 861 }
  862. 862 },
  863. 863 {
  864. 864 "previousLayer": "D1",
  865. 865 "currentLayer": "D1",
  866. 866 "id": "53401",
  867. 867 "previousFrame": {
  868. 868 "id": "3",
  869. 869 "name": "一层电气平面(一)",
  870. 870 "number": "电施02"
  871. 871 },
  872. 872 "currentFrame": {
  873. 873 "id": "3",
  874. 874 "name": "一层电气平面(一)",
  875. 875 "number": "电施02"
  876. 876 }
  877. 877 },
  878. 878 {
  879. 879 "previousLayer": "D1",
  880. 880 "currentLayer": "D1",
  881. 881 "id": "53404",
  882. 882 "previousFrame": {
  883. 883 "id": "3",
  884. 884 "name": "一层电气平面(一)",
  885. 885 "number": "电施02"
  886. 886 },
  887. 887 "currentFrame": {
  888. 888 "id": "3",
  889. 889 "name": "一层电气平面(一)",
  890. 890 "number": "电施02"
  891. 891 }
  892. 892 },
  893. 893 {
  894. 894 "previousLayer": "D1",
  895. 895 "currentLayer": "D1",
  896. 896 "id": "53406",
  897. 897 "previousFrame": {
  898. 898 "id": "3",
  899. 899 "name": "一层电气平面(一)",
  900. 900 "number": "电施02"
  901. 901 },
  902. 902 "currentFrame": {
  903. 903 "id": "3",
  904. 904 "name": "一层电气平面(一)",
  905. 905 "number": "电施02"
  906. 906 }
  907. 907 },
  908. 908 {
  909. 909 "previousLayer": "D1",
  910. 910 "currentLayer": "D1",
  911. 911 "id": "53407",
  912. 912 "previousFrame": {
  913. 913 "id": "3",
  914. 914 "name": "一层电气平面(一)",
  915. 915 "number": "电施02"
  916. 916 },
  917. 917 "currentFrame": {
  918. 918 "id": "3",
  919. 919 "name": "一层电气平面(一)",
  920. 920 "number": "电施02"
  921. 921 }
  922. 922 },
  923. 923 {
  924. 924 "previousLayer": "D1",
  925. 925 "currentLayer": "D1",
  926. 926 "id": "53408",
  927. 927 "previousFrame": {
  928. 928 "id": "3",
  929. 929 "name": "一层电气平面(一)",
  930. 930 "number": "电施02"
  931. 931 },
  932. 932 "currentFrame": {
  933. 933 "id": "3",
  934. 934 "name": "一层电气平面(一)",
  935. 935 "number": "电施02"
  936. 936 }
  937. 937 },
  938. 938 {
  939. 939 "previousLayer": "D1",
  940. 940 "currentLayer": "D1",
  941. 941 "id": "53409",
  942. 942 "previousFrame": {
  943. 943 "id": "3",
  944. 944 "name": "一层电气平面(一)",
  945. 945 "number": "电施02"
  946. 946 },
  947. 947 "currentFrame": {
  948. 948 "id": "3",
  949. 949 "name": "一层电气平面(一)",
  950. 950 "number": "电施02"
  951. 951 }
  952. 952 },
  953. 953 {
  954. 954 "previousLayer": "D1",
  955. 955 "currentLayer": "D1",
  956. 956 "id": "53410",
  957. 957 "previousFrame": {
  958. 958 "id": "3",
  959. 959 "name": "一层电气平面(一)",
  960. 960 "number": "电施02"
  961. 961 },
  962. 962 "currentFrame": {
  963. 963 "id": "3",
  964. 964 "name": "一层电气平面(一)",
  965. 965 "number": "电施02"
  966. 966 }
  967. 967 },
  968. 968 {
  969. 969 "previousLayer": "D1",
  970. 970 "currentLayer": "D1",
  971. 971 "id": "53411",
  972. 972 "previousFrame": {
  973. 973 "id": "3",
  974. 974 "name": "一层电气平面(一)",
  975. 975 "number": "电施02"
  976. 976 },
  977. 977 "currentFrame": {
  978. 978 "id": "3",
  979. 979 "name": "一层电气平面(一)",
  980. 980 "number": "电施02"
  981. 981 }
  982. 982 },
  983. 983 {
  984. 984 "previousLayer": "0",
  985. 985 "currentLayer": "0",
  986. 986 "id": "104782",
  987. 987 "previousFrame": {
  988. 988 "id": "2",
  989. 989 "name": "电气抗震设计专篇",
  990. 990 "number": "电施01"
  991. 991 },
  992. 992 "currentFrame": {
  993. 993 "id": "2",
  994. 994 "name": "电气抗震设计专篇",
  995. 995 "number": "电施01"
  996. 996 }
  997. 997 },
  998. 998 {
  999. 999 "previousLayer": "0",
  1000. 1000 "currentLayer": "0",
  1001. 1001 "id": "96096",
  1002. 1002 "previousFrame": {
  1003. 1003 "id": "2",
  1004. 1004 "name": "电气抗震设计专篇",
  1005. 1005 "number": "电施01"
  1006. 1006 },
  1007. 1007 "currentFrame": {
  1008. 1008 "id": "2",
  1009. 1009 "name": "电气抗震设计专篇",
  1010. 1010 "number": "电施01"
  1011. 1011 }
  1012. 1012 },
  1013. 1013 {
  1014. 1014 "previousLayer": "0",
  1015. 1015 "currentLayer": "0",
  1016. 1016 "id": "104778",
  1017. 1017 "previousFrame": {
  1018. 1018 "id": "2",
  1019. 1019 "name": "电气抗震设计专篇",
  1020. 1020 "number": "电施01"
  1021. 1021 },
  1022. 1022 "currentFrame": {
  1023. 1023 "id": "2",
  1024. 1024 "name": "电气抗震设计专篇",
  1025. 1025 "number": "电施01"
  1026. 1026 }
  1027. 1027 },
  1028. 1028 {
  1029. 1029 "previousLayer": "0",
  1030. 1030 "currentLayer": "0",
  1031. 1031 "id": "96100",
  1032. 1032 "previousFrame": {
  1033. 1033 "id": "2",
  1034. 1034 "name": "电气抗震设计专篇",
  1035. 1035 "number": "电施01"
  1036. 1036 },
  1037. 1037 "currentFrame": {
  1038. 1038 "id": "2",
  1039. 1039 "name": "电气抗震设计专篇",
  1040. 1040 "number": "电施01"
  1041. 1041 }
  1042. 1042 },
  1043. 1043 {
  1044. 1044 "previousLayer": "0",
  1045. 1045 "currentLayer": "0",
  1046. 1046 "id": "96102",
  1047. 1047 "previousFrame": {
  1048. 1048 "id": "2",
  1049. 1049 "name": "电气抗震设计专篇",
  1050. 1050 "number": "电施01"
  1051. 1051 },
  1052. 1052 "currentFrame": {
  1053. 1053 "id": "2",
  1054. 1054 "name": "电气抗震设计专篇",
  1055. 1055 "number": "电施01"
  1056. 1056 }
  1057. 1057 },
  1058. 1058 {
  1059. 1059 "previousLayer": "0",
  1060. 1060 "currentLayer": "0",
  1061. 1061 "id": "104780",
  1062. 1062 "previousFrame": {
  1063. 1063 "id": "2",
  1064. 1064 "name": "电气抗震设计专篇",
  1065. 1065 "number": "电施01"
  1066. 1066 },
  1067. 1067 "currentFrame": {
  1068. 1068 "id": "2",
  1069. 1069 "name": "电气抗震设计专篇",
  1070. 1070 "number": "电施01"
  1071. 1071 }
  1072. 1072 },
  1073. 1073 {
  1074. 1074 "previousLayer": "0",
  1075. 1075 "currentLayer": "0",
  1076. 1076 "id": "104781",
  1077. 1077 "previousFrame": {
  1078. 1078 "id": "2",
  1079. 1079 "name": "电气抗震设计专篇",
  1080. 1080 "number": "电施01"
  1081. 1081 },
  1082. 1082 "currentFrame": {
  1083. 1083 "id": "2",
  1084. 1084 "name": "电气抗震设计专篇",
  1085. 1085 "number": "电施01"
  1086. 1086 }
  1087. 1087 },
  1088. 1088 {
  1089. 1089 "previousLayer": "0",
  1090. 1090 "currentLayer": "0",
  1091. 1091 "id": "104784",
  1092. 1092 "previousFrame": {
  1093. 1093 "id": "2",
  1094. 1094 "name": "电气抗震设计专篇",
  1095. 1095 "number": "电施01"
  1096. 1096 },
  1097. 1097 "currentFrame": {
  1098. 1098 "id": "2",
  1099. 1099 "name": "电气抗震设计专篇",
  1100. 1100 "number": "电施01"
  1101. 1101 }
  1102. 1102 },
  1103. 1103 {
  1104. 1104 "previousLayer": "0",
  1105. 1105 "currentLayer": "0",
  1106. 1106 "id": "104787",
  1107. 1107 "previousFrame": {
  1108. 1108 "id": "2",
  1109. 1109 "name": "电气抗震设计专篇",
  1110. 1110 "number": "电施01"
  1111. 1111 },
  1112. 1112 "currentFrame": {
  1113. 1113 "id": "2",
  1114. 1114 "name": "电气抗震设计专篇",
  1115. 1115 "number": "电施01"
  1116. 1116 }
  1117. 1117 }
  1118. 1118 ]
  1119. 1119 }
  1120. 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。欢迎大家下载使用。

BIMFACE二次开发系列目录     【已更新最新开发文章,点击查看详细】

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

  1. C#开发BIMFACE系列40 服务端API之模型集成

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 随着建筑信息化模型技术的发展,越来越多的人选择在云端浏览建筑模型.现阶段的云端模型浏览大多是基于文件级别,一次只可以浏览一 ...

  2. C#开发BIMFACE系列41 服务端API之模型对比

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在建筑施工图审查系统中,设计单位提交设计完成的模型/图纸,审查专家审查模型/图纸.审查过程中如果发现不符合规范的地方,则流 ...

  3. C#开发BIMFACE系列42 服务端API之图纸对比

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在我的前一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>中详细介绍了BIMFACE服务端接口 ...

  4. C#开发BIMFACE系列43 服务端API之图纸拆分

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在上一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>的最后留了一个问题,在常规业务场景下,一 ...

  5. C#开发BIMFACE系列46 服务端API之离线数据包下载及结构详解

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在前一篇博客<C#开发BIMFACE系列45 服务端API之创建离线数据包>中通过调用接口成功的创建一个离线数 ...

  6. C#开发BIMFACE系列6 服务端API之获取文件信息

    在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务 ...

  7. C#开发BIMFACE系列4 服务端API之源上传文件

    在注册成为BIMFACE的应用开发者后,要能在浏览器里浏览你的模型或者获取你模型内的BIM数据, 首先需要把你的模型文件上传到BIMFACE.根据不同场景,BIMFACE提供了丰富的文件相关的接口. ...

  8. C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken

    系列目录     [已更新最新开发文章,点击查看详细] BIMFACE 平台为开发者提供了大量的服务器端 API 与 JavaScript API,用于二次开发 BIM 的相关应用. BIMFACE ...

  9. C#开发BIMFACE系列7 服务端API之获取文件信息列表

    系列目录     [已更新最新开发文章,点击查看详细] 本文详细介绍如何获取BIMFACE平台中所有上传过的文件信息列表. 请求地址:GET https://file.bimface.com/file ...

随机推荐

  1. MZY项目笔记:session歧路

    from my typora MZY项目笔记:session歧路 文章目录 MZY项目笔记:session歧路 那该怎么办? 1. 手动加上cookie的header. 2.自己模拟一个Session ...

  2. servlet中servletContext的五大作用(一)

    获取web的上下文路径 获取全局的参数 作为域对象使用 请求转发 读取web项目的资源文件 package day10.about_servletcontext.get_path; /** * 首先区 ...

  3. apt-get 安装程序时报 'E: Unable to locate package xxx' 错误处理办法

    提示无法定位包,要执行命令更新: sudo apt-get update

  4. @RequestParam注解的详细介绍

    @RequestParam (org.springframework.web.bind.annotation.RequestParam)用于将指定的请求参数赋值给方法中的形参. 有三个属性: (1)v ...

  5. struts2的初步认识

    Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互. 一. Str ...

  6. 20210816 你相信引力吗,marshland,party?,半夜

    考场 第一眼都不可做 T1 长得就像单调栈/单调队列,推了推性质发现优弧.劣弧都合法的点对很好处理,其他情况只在一种情况合法,那么开两个单调队列分别统计距离 \(\le\frac2n,>\fra ...

  7. 第三课:GDB 常用的调试命令概览

    先给出一个常用命令的列表,后面会结合具体的例子详细介绍每个命令的用法. 命令名称 命令缩写 命令说明 run r 运行一个程序 continue c 让暂停的程序继续运行 next n 运行到下一行 ...

  8. NOIP模拟51

    樱花满地集于我心,楪舞纷飞祈愿相随 前言 太菜了,人手切掉两个题,我竟然一道都不会.. 改 T3 的时候整个人的心态都崩掉了,一部分原因可能是语文素养不高导致我看不懂题解. 另一部分可能就是系太不太好 ...

  9. ARP-NAT(MAC Address Translation)的原理

    本文部分图片来自: http://wiki.deliberant.com/faq/wireless-bridge-routing-arpnat/ https://wiki.openwrt.org/do ...

  10. Java面向对象系列(3)- 回顾方法的调用

    方法的调用 静态方法 非静态方法 形参和实参 值传递和引用传递 this关键字(继承篇讲解) 静态方法 非静态方法 形参和实参 package oop.demo01; public class Dem ...