亚洲精品亚洲人成在线观看麻豆,在线欧美视频一区,亚洲国产精品一区二区动图,色综合久久丁香婷婷

              當前位置:首頁 > IT技術(shù) > Windows編程 > 正文

              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分
              2021-10-18 17:52:20


              BIMFACE二次開發(fā)系列目錄???? ?【已更新最新開發(fā)文章,點擊查看詳細】


              ?C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_BIM  BIMFACE


              在上一篇博客《C#開發(fā)BIMFACE系列42 服務(wù)端API之圖紙對比》的最后留了一個問題,在常規(guī)業(yè)務(wù)場景下,一個.dwg文件中包含多個圖框,如下圖

              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_sql_02

              那么當前版本與歷史版本對比完成后,在Web網(wǎng)頁中點擊差異項可以自動定位到圖元變化所在位置。是否可以知道差異項來自哪個圖框呢?

              這篇博客針對該問題進行詳細的講解。


              圖紙拆分應(yīng)用場景與效果


              1、應(yīng)用場景

              ? ? ?一個.dwg文件中包含多個圖框,在BIMFACE中瀏覽時,可以根據(jù)圖框編號與名稱定位到具體的圖框,使用更加便捷。

              2、效果

              (1)未拆分

              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_.net_03

              ?(2)已拆分

              ? ? ? ? ? 拆分后的圖紙,工具條上多了一個“圖紙”按鈕,點擊后彈出圖紙列表層,每一項里面包含“圖紙名稱”與“圖號”,點擊圖紙項,自動定位到對應(yīng)的圖紙。

              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_.net_04


              圖紙拆分規(guī)則說明


              1、圖框識別,按照以下條件綜合判斷

              (1)圖框符合國標的標準尺寸,如A0,A0(1+1/4)等。標準的尺寸識別準確率更高,但也考慮了一定的容差,若圖幅與規(guī)范有一定的出入仍可被識別。

              (2)圖框中包含圖簽信息,如圖紙名稱、圖紙編號等信息。

              2、圖簽識別,可以識別以下字段

              (1)圖紙名稱(圖名、標題、圖紙內(nèi)容)

              (2)圖紙序號(圖號、圖紙編號、張次、竣工圖號、頁碼)

              (3)圖紙專業(yè)(專業(yè)、圖別、設(shè)計專業(yè)、專業(yè)名稱、圖紙類別)

              (4)工程名稱(工程項目、項目、設(shè)計項目、工程總稱)

              (5)圖紙日期(日期、升版日期、出圖日期、修改日期、編制日期)

              3、注意事項

              (1)相鄰的圖框不要相連,不要重疊。

              (2)圖框外不要有額外的矩形框。

              (3)圖框需要有明確的圖簽字段。

              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_sql_05

              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_json_06

              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_sql_07

              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_json_08

              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_BIM  BIMFACE_09


              圖紙拆分API


              1、發(fā)起拆分

              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_json_10

              調(diào)用接口



              1     /// <summary>
              2 /// 通過圖紙文件ID,按圖框拆分圖紙。
              3 /// (提示:圖紙拆分必須在【圖紙轉(zhuǎn)換】接口完成且轉(zhuǎn)換狀態(tài)為 success 之后才能發(fā)起,拆分是在轉(zhuǎn)換成功的基礎(chǔ)之上進行的)
              4 /// </summary>
              5 /// <param name="accessToken">【必填】令牌</param>
              6 /// <param name="fileId">【必填】代表該單圖紙的文件ID</param>
              7 /// <param name="callbak">【選填】回調(diào)url。圖紙拆分是一個耗時的操作,并不能立刻完成??梢酝ㄟ^回調(diào)地址通知拆分結(jié)果</param>
              8 /// <returns></returns>
              9 public SplitDrawingResponse SplitDrawing(string accessToken, long fileId, string callbak = "")
              10 {
              11 // PUT https://api.bimface.com/files/{fileId}/split
              12 string url = string.Format(BIMFaceConstants.API_HOST + "/files/{0}/split", fileId);
              13 if (callbak.IsNotNullAndWhiteSpace())
              14 {
              15 url += "?callback=" + callbak.UriEscapeDataString();
              16 }
              17 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders();
              18 headers.AddOAuth2Header(accessToken);
              19
              20 try
              21 {
              22 SplitDrawingResponse response;
              23
              24 HttpManager httpManager = new HttpManager(headers);
              25 HttpResult httpResult = httpManager.Put(url);
              26 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
              27 {
              28 response = httpResult.Text.DeserializeJsonToObject<SplitDrawingResponse>();
              29 }
              30 else
              31 {
              32 response = new SplitDrawingResponse
              33 {
              34 Message = httpResult.RefText
              35 };
              36 }
              37
              38 return response;
              39 }
              40 catch (Exception ex)
              41 {
              42 throw new BIMFaceException("[通過圖紙文件ID,按圖框拆分圖紙]發(fā)生異常!", ex);
              43 }
              44 }


              2、獲取圖紙拆分狀態(tài)

              圖紙拆分不能立刻完成,需要等待一段時間??梢酝ㄟ^ callback 方式獲取拆分的信息(不推薦),也可以通過 BIMFACE 提供的接口進行查詢。

              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_BIM  BIMFACE_11

              調(diào)用接口



              1     /// <summary>
              2 /// 獲取圖紙拆分狀態(tài)
              3 /// </summary>
              4 /// <param name="accessToken">【必填】令牌</param>
              5 /// <param name="fileId">【必填】代表該單圖紙的文件ID</param>
              6 /// <returns></returns>
              7 public SplitDrawingResponse GetSplitDrawingStatus(string accessToken, long fileId)
              8 {
              9 // GET https://api.bimface.com/files/{fileId}/split
              10 string url = string.Format(BIMFaceConstants.API_HOST + "/files/{0}/split", fileId);
              11
              12 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders();
              13 headers.AddOAuth2Header(accessToken);
              14
              15 try
              16 {
              17 SplitDrawingResponse response;
              18
              19 HttpManager httpManager = new HttpManager(headers);
              20 HttpResult httpResult = httpManager.Get(url);
              21 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
              22 {
              23 response = httpResult.Text.DeserializeJsonToObject<SplitDrawingResponse>();
              24 }
              25 else
              26 {
              27 response = new SplitDrawingResponse
              28 {
              29 Message = httpResult.RefText
              30 };
              31 }
              32
              33 return response;
              34 }
              35 catch (Exception ex)
              36 {
              37 throw new BIMFaceException("[獲取圖紙拆分狀態(tài)]發(fā)生異常!", ex);
              38 }
              39 }


              3、獲取圖紙拆分結(jié)果

              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_json_12

              完整的拆分結(jié)果如下



              {
              "code": "success",
              "message": null,
              "data": [
              {
              "frames": [
              {
              "boundingBox": {
              "min": {
              "x": 686680.0,
              "y": 1066999.0
              },
              "max": {
              "x": 770782.0,
              "y": 1126401.0
              }
              },
              "id": 1,
              "name": "unknown-name",
              "number": "unknown-no-1"
              },
              {
              "boundingBox": {
              "min": {
              "x": 752146.0,
              "y": 1010435.0
              },
              "max": {
              "x": 836248.0,
              "y": 1069837.0
              }
              },
              "id": 2,
              "name": "電氣抗震設(shè)計專篇",
              "number": "電施01"
              },
              {
              "boundingBox": {
              "min": {
              "x": 875778.0,
              "y": 1006559.0
              },
              "max": {
              "x": 1054130.0,
              "y": 1132711.0
              }
              },
              "id": 3,
              "name": "一層電氣平面(一)",
              "number": "電施02"
              },
              {
              "boundingBox": {
              "min": {
              "x": 1070846.0,
              "y": 1006559.0
              },
              "max": {
              "x": 1249198.0,
              "y": 1132711.0
              }
              },
              "id": 4,
              "name": "一層電氣平面(二)",
              "number": "電施03"
              },
              {
              "boundingBox": {
              "min": {
              "x": 1261883.0,
              "y": 1006559.0
              },
              "max": {
              "x": 1440235.0,
              "y": 1132711.0
              }
              },
              "id": 5,
              "name": "屋頂防雷平面",
              "number": "電施04"
              },
              {
              "boundingBox": {
              "min": {
              "x": 1460840.0,
              "y": 1006559.0
              },
              "max": {
              "x": 1639192.0,
              "y": 1132711.0
              }
              },
              "id": 6,
              "name": "基礎(chǔ)接地平面",
              "number": "電施05"
              }
              ],
              "id": 0,
              "name": "Model"
              }
              ]
              }


              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_docker_13

              說明:

              (1)frames:一個dwg文件中的圖框?qū)ο蠹?/p>

              (2)boundingBox:圖框外的矩形框?qū)ο?/p>

              (3)min、max:矩形框的左上角、右下角在圖紙中的XY坐標

              (4)id:圖紙序號

              (5)name:圖紙名稱

              (6)number:圖號

              調(diào)用接口



              1     /// <summary>
              2 /// 獲取圖紙拆分結(jié)果
              3 /// </summary>
              4 /// <param name="accessToken"></param>
              5 /// <param name="fileId"></param>
              6 /// <returns></returns>
              7 public SplitDrawingResultResponse GetSplitDrawingResult(string accessToken, long fileId)
              8 {
              9 // GET https://api.bimface.com/data/v2/files/{fileId}/frames
              10 string url = string.Format(BIMFaceConstants.API_HOST + "/data/v2/files/{0}/frames", fileId);
              11
              12 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders();
              13 headers.AddOAuth2Header(accessToken);
              14
              15 try
              16 {
              17 SplitDrawingResultResponse response;
              18
              19 HttpManager httpManager = new HttpManager(headers);
              20 HttpResult httpResult = httpManager.Get(url);
              21 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
              22 {
              23 response = httpResult.Text.DeserializeJsonToObject<SplitDrawingResultResponse>();
              24 }
              25 else
              26 {
              27 response = new SplitDrawingResultResponse
              28 {
              29 Message = httpResult.RefText
              30 };
              31 }
              32
              33 return response;
              34 }
              35 catch (Exception ex)
              36 {
              37 throw new BIMFaceException("[獲取圖紙拆分結(jié)果]發(fā)生異常!", ex);
              38 }
              39 }


              上述測試程序使用了 《BIMFace.SDK.CSharp》開源SDK。歡迎大家下載使用。

              C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_.net_14


              BIMFACE二次開發(fā)系列目錄???? ?【已更新最新開發(fā)文章,點擊查看詳細】



              ?

              ??



              ?C#開發(fā)BIMFACE系列43 服務(wù)端API之圖紙拆分_docker_15技術(shù)棧

              ? ?

              ?1、Visual Studio、.C#/.NET、.NET Core、MVC、Web API、RESTful API、gRPC、SignalR、Python

              ?2、jQuery、Vue.js、Bootstrap

              ?3、數(shù)據(jù)庫:SQLServer、MySQL、PostgreSQL、Oracle、SQLite、Redis、MongoDB、ElasticSearch、TiDB、達夢DM、人大金倉、 神通、南大通用 GBase、華為 GaussDB 、騰訊 TDSQL 、阿里 PolarDB、螞蟻金服 OceanBase、東軟 OpenBASE、浪潮云溪數(shù)據(jù)庫 ZNBase

              ?4、ORM:Dapper、Entity Framework、FreeSql、SqlSugar、分庫分表、讀寫分離

              ?5、架構(gòu):領(lǐng)域驅(qū)動設(shè)計 DDD、ABP

              ?6、環(huán)境:跨平臺、Windows、Linux(CentOS、麒麟、統(tǒng)信UOS、深度Linux)、maxOS、IIS、Nginx、Apach

              ?7、移動App:Android、IOS、HarmonyOS、微信、小程序、快應(yīng)用、Xamarin、uni-app、MUI、Flutter、Framework7、Cordova、Ionic、React Native、Taro、NutUI、Smobiler

              ? ?

              ?云原生、微服務(wù)、Docker、CI/CD、DevOps、K8S;

              ?Dapr、RabbitMQ、Kafka、分布式、大數(shù)據(jù)、高并發(fā)、負載均衡、中間件、RPC、ELK;

              ?.NET + Docker + jenkins + Github + Harbor + K8S;


              ?

              作者:張傳寧 ??微軟MCP、系統(tǒng)架構(gòu)設(shè)計師、系統(tǒng)集成項目管理工程師、科技部創(chuàng)新工程師。

              ??????????專注于微軟.NET技術(shù)(.NET Core、Web、MVC、WinForm、WPF)、通用權(quán)限管理系統(tǒng)、工作流引擎、自動化項目(代碼)生成器、SOA 、DDD、 云原生(Docker、微服務(wù)、DevOps、CI/CD);PDF、CAD、BIM 審圖等研究與應(yīng)用。

              ??????????多次參與電子政務(wù)、圖書教育、生產(chǎn)制造等企業(yè)級大型項目研發(fā)與管理工作。

              ??????????熟悉中小企業(yè)軟件開發(fā)過程:需求分析、架構(gòu)設(shè)計、編碼測試、實施部署、項目管理。通過技術(shù)與管理幫助中小企業(yè)快速化實現(xiàn)互聯(lián)網(wǎng)技術(shù)全流程解決方案。

              ?????????



              ?

              本文摘自 :https://blog.51cto.com/u

              開通會員,享受整站包年服務(wù)立即開通 >