整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          40套BIM+GIS項目案例合集,中建中鐵企業(yè)內(nèi)部學(xué)

          40套BIM+GIS項目案例合集,中建中鐵企業(yè)內(nèi)部學(xué)習(xí)資源免費領(lǐng)取

          近有很多做工程的朋友想要學(xué)習(xí)BIM+GIS技術(shù),向我詢問相關(guān)的學(xué)習(xí)資源和資料。他們面臨的普遍問題是不知道如何入門,找到的資料很多,但是很多卻用不上。

          為了解決大家的問題,我們團(tuán)隊花了近一個月的時間,精心整理了一份實用的BIM+GIS學(xué)習(xí)資料合集,包含五個模塊,超過上千份資料。

          這份合集包含了常用的BIM+GIS軟件安裝教程、基礎(chǔ)操作指南、項目管理流程介紹等常規(guī)資料,還包括BIM+GIS結(jié)合使用、BIM+GIS在實際工程中的應(yīng)用案例、行業(yè)發(fā)展趨勢和未來展望等內(nèi)容。

          先帶大家看下這份資料清單:

          • BIM+GIS三維數(shù)字沙盤快速搭建視頻教程(12節(jié))
          • 1000+常用BIM模型庫資源(6G 1000+模型元素)
          • BIM+GIS實際應(yīng)用案例(14套)
          • 免費版BIM+GIS三維數(shù)字沙盤搭建平臺(1款)
          • BIM+GIS三維數(shù)字沙盤體驗版(4套)
          • BIM+GIS直播干貨講解(8個課時),定期直播

          40套BIM+GIS項目案例合集領(lǐng)取,圖新地球公眾號回復(fù)【BIM+GIS】


          一、BIM+GIS三維數(shù)字沙盤快速搭建視頻教程

          這份合集不僅包含了常用的BIM+GIS軟件安裝教程、基礎(chǔ)操作指南、項目管理流程介紹等常規(guī)資料,還包括BIM+GIS與其他技術(shù)的結(jié)合使用、BIM+GIS在實際工程中的應(yīng)用案例、行業(yè)發(fā)展趨勢和未來展望等內(nèi)容。

          二、BIM模型庫資源

          每次制作設(shè)計方案、匯報工程現(xiàn)場狀況,最令人頭大的就是方案素材的尋找,想要表達(dá)的信息太多,素材獲取無從下手!別急!大波工程、建筑、設(shè)計領(lǐng)域資料,空投即將到達(dá),助你成為匯報現(xiàn)場最靚的仔!

          旨在為工程、設(shè)計行業(yè)用戶提供優(yōu)質(zhì)資料,精心挑選,先到先得哦

          三、BIM+GIS實際應(yīng)用案例視頻

          聯(lián)合BIM領(lǐng)域資深工程師打造的BIM+GIS案例教程,保姆式手把手帶你搭建三維可視化BIM+GIS數(shù)字沙盤,深入學(xué)習(xí)BIM+GIS的高級技能和實際應(yīng)用案例。


          四、免費版BIM+GIS三維數(shù)字沙盤搭建平臺(1款)

          提供一款免費BIM+GIS三維數(shù)字沙盤搭建平臺,為工程師、設(shè)計師以及相關(guān)領(lǐng)域的專業(yè)人士提供直觀、精準(zhǔn)的空間數(shù)據(jù)可視化工具。

          BIM+GIS三維數(shù)字沙盤搭建平臺,免費下載:http://www.tuxingis.com/txsvip.html

          五、BIM+GIS三維數(shù)字沙盤體驗版

          14套中建、中鐵等各大公司BIM+GIS應(yīng)用案例,涵蓋公路工程、水利、消防、市政道路、管網(wǎng)管廊等多個行業(yè)重點標(biāo)桿項目案例。只要想做類似的BIM+GIS三維可視化沙盤你就可以一鍵套用模板。


          六、BIM+GIS直播干貨講解

          通過實戰(zhàn)案例學(xué)習(xí)BIM+GIS的實戰(zhàn)技巧,掌握BIM+GIS的最新技術(shù)和應(yīng)用,這里一套BIM+GIS直播干貨講解課程帶你輕松技術(shù)晉級。

          【2023年新版】100套BIM+GIS學(xué)習(xí)技術(shù)資料,中建中鐵中交企業(yè)內(nèi)部資源,免費領(lǐng)取!圖新地球公眾號回復(fù)【BIM+GIS】

           在我的博客《C#開發(fā)BIMFACE系列52 CS客戶端集成BIMFACE應(yīng)用的技術(shù)方案》中介紹了多種集成BIMFACE到客戶端程序中的方案。最后推薦大家使用 CefSharp組件與WebView2組件。本篇文章介紹使用CefSharp組件如何集成BIMFACE到客戶端程序中。

          一、CefSharp 簡介

          CefSharp是一個圍繞Chromium Embedded Framework(CEF)的輕量級.NET包裝器。它是用C++/CLI編寫的。允許開發(fā)者在.NET應(yīng)用程序中嵌入Chromium。可以在C#或VB或任何其他CLR語言中使用。CefSharp同時提供WPF和WinForms Web瀏覽器控件實現(xiàn)。

          功能特點

          • 免費、開源:https://github.com/cefsharp/CefSharp
          • 完善的文檔
          • 支持JS、C#、WinForm窗體之間相互通訊與調(diào)用
          • 兼容性較好,支持H5、CSS5、WebGL等
          • 支持獲取Cookies較全面
          • 其他

          二、CefSharp 下載

          步驟1 新建WinForm項目

          新建一個WinForm窗體應(yīng)用程序,目標(biāo)框架選擇 .NET Framework 4.5.2,因為新版本的CefSahrp組件最低支持 .NET Framework 4.5.2。

          步驟2 通過 NeGet 下載

          打開NeGet

          (1)搜索 CefSharp

          (2)選擇 CefSharp.WinForms

          (3)選擇最新版本

          (4)點擊【安裝】按鈕

          點擊【確定】開始安裝。

          安裝完成后,項目中自動添加了CefSharp.dll、CefSharp.Core.dll、CefSharp.WinForms.dll 類庫引用。

          工具箱中也增加了CefSharp控件

          步驟3 編譯項目

          編譯 BIMFace.SDK.CSharp.Sample.WinForm 項目,生成如下內(nèi)容

          與 CefSharp 相關(guān)的共計32個文件,2個目錄,文件大小總計216M。這個尺寸相對于業(yè)務(wù)系統(tǒng)本身來說已經(jīng)非常大了,最后制作的安裝包尺寸也會很大。

          其中 locales 目錄下是語言包,刪除 zh-CN.pak 之外的所有文件,總文件大小可以減少22M左右。

          三、CefSharp 集成開發(fā)

          測試功能設(shè)計如下

          功能說明

          (1)WinForm中加載的網(wǎng)頁來自于 BIMFace.SDK\BIMFace.SDK.CSharp.Sample\Pages\BIMFaceDemo7_3.html,所以Web項目要首先運行。

          (2)WinForm 窗體中輸入 BIMFACE FileId,點擊【加載模型/圖紙】按鈕,調(diào)用CefSahrp組件,加載步驟(1)中的網(wǎng)頁。代碼如下:

          // 加載模型/圖紙
          private void btnLaodBIMFaceFile_Click(object sender, EventArgs e)
          {
              string fileId=txtBIMFaceFileId.Text.Trim();
              if (string.IsNullOrEmpty(fileId))
              {
                  MessageBox.Show("請?zhí)顚?BIMFACE FileId。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                  return;
              }
              // 將 ChromiumWebBrowserBindObject 實例對象注入到 js 對象中。網(wǎng)頁中即可調(diào)用 ChromiumWebBrowserBindObject 類中定義的屬性、方法
              var objToBind=new ChromiumWebBrowserBindObject();
              chromiumWebBrowser1.JavascriptObjectRepository.Register("_chromeBrowser", objToBind, true, BindingOptions.DefaultBinder);
          
              string url="https://localhost:44389/Pages/BIMFaceDemo7_3.html?fileId=" + fileId;
              chromiumWebBrowser1.Load(url);
          }

          (3)網(wǎng)頁中點擊【JS 調(diào)用 C# 方法】按鈕。代碼如下:

          在入口函數(shù)中,獲取注入的 ChromiumWebBrowser 對象,名稱為 _chromeBrowser。

          按鈕對應(yīng)的js方法

          // js 調(diào)用 C# 方法
          function callCharpMethod() {
              // 特別提醒:C# 類中定義的方法名稱采用 Pascal 命名。網(wǎng)頁中調(diào)用的時候必須將方法名稱的第一個字母改為小寫。否則調(diào)用不成功。
              _chromeBrowser.testCalcAdd(6,8)
                  .then(function (response) {
                      alert(response);
                  });
          }

          特別提醒:C# 類中定義的方法名稱采用 Pascal 命名。網(wǎng)頁中調(diào)用的時候必須將方法名稱的第一個字母改為小寫。否則調(diào)用不成功。

          調(diào)用的C#方法。定義一個單獨的類,用于在CefSahrp組件加載網(wǎng)頁之前,將其注入到網(wǎng)頁中

          (4)WinForm窗體中點擊【 C# 調(diào)用 JS 方法】按鈕。代碼如下:

          // C# 調(diào)用 JS 方法
          private void btnCsharpCallJsMethod_Click(object sender, EventArgs e)
          {
              Task<JavascriptResponse> jsResponse=chromiumWebBrowser1.EvaluateScriptAsync("jsMethodForCSharpTestCalcSub", 25, 7);
          
              if (jsResponse.Result !=null && jsResponse.Result.Success==false)
              {
                  MessageBox.Show("C#調(diào)用JS方法發(fā)生異常。" + jsResponse.Result.Message
                      , "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
              }
          }

          網(wǎng)頁中定義的 jsMethodForCSharpTestCalcSub() 方法如下:

           // js 方法,供C#調(diào)用
           function jsMethodForCSharpTestCalcSub(num1, num2) {
               /*如果參數(shù)需要是復(fù)雜類型,則傳遞Json格式的字符串,然后反序列化為對象即可使用*/
           
               alert('傳入的參數(shù)num1:' + num1 + ", num2:" + num2 + '  減法運算 num1 - num2=' + (num1 - num2));
           }

          特別說明:

          (1)C#定義的方法供JS調(diào)用,C#方法的返回值類型、參數(shù)類型都只能是簡單數(shù)據(jù)類型,如:int、string、bool 等。

          (2)JS定義的方法供C#調(diào)用,JS方法的返回值類型、參數(shù)類型都只能是簡單數(shù)據(jù)類型,如:int、string、bool 等。

          一般來說復(fù)雜類型就是一個實體類。如果確實想使用復(fù)雜類型,建議的解決方案如下:

          將復(fù)雜類型序列化為字符串,調(diào)用方將其反序列化之后再使用。

          關(guān)于C#與JS互相通訊,請參考CefSahrp官方文檔:https://github.com/cefsharp/CefSharp/wiki/General-Usage#3-how-do-you-expose-a-net-class-to-javascript

          四、CefSharp 組件運行分析

          1、進(jìn)程分析

          (1)啟動應(yīng)用程序,CefSharp組件未加載Web網(wǎng)頁時,默認(rèn)啟動了2個 CefSharp.BrowserSubProcess 子進(jìn)程。原因是我當(dāng)前使用的CefSharp是94.4.50版本,每當(dāng)new CefSharp.WinForms.ChromiumWebBrowser() 一個時,會啟動2個子進(jìn)程。

          (2)CefSharp組件加載Web網(wǎng)頁后,又啟動了2個 CefSharp.BrowserSubProcess 子進(jìn)程,共計4個子進(jìn)程。原因是 當(dāng) chromiumWebBrowser1.Load(url) 時啟動2個子進(jìn)程。不同版本的 CefSharp 組件,啟動的子進(jìn)程數(shù)量不同。

          2、運行日志分析

          CefSahrp組件加載網(wǎng)頁瀏覽BIMFace模型/圖紙之后,程序目錄多了 GPUCache 目錄、debug.txt 文件。

          GPUCache目錄內(nèi)容如下。BIMFACE加載模型/圖紙時利用了本地電腦的GPU強大的計算功能,所以產(chǎn)生了緩存內(nèi)容。

          debug.txt 內(nèi)如如下,里面記錄了網(wǎng)頁的執(zhí)行過程

          五、總結(jié)

          • 通過NeGet安裝SDK時,運行時環(huán)境會被自動下載到當(dāng)前項目的bin\debug 或者 bin\Release目錄下。導(dǎo)致整個項目非常大,大約220M左右。
          • 以獨立進(jìn)程方式運行,消耗內(nèi)存較多。

            如下是我的一個WinForm程序中使用CefSharp組件的運行狀態(tài),其中一個子進(jìn)程消耗內(nèi)存達(dá)到1.5G,太可怕了

          • 當(dāng)控件Dock屬性設(shè)置為 Fill,客戶端電腦的縮放與布局不是100%時,窗體呈現(xiàn)黑邊(嚴(yán)重bug),并沒有完全填充父容器。

          《BIMFace.SDK.CSharp》開源SDK。歡迎大家下載使用:https://gitee.com/NAlps/BIMFace.SDK


          歡迎評論區(qū)留言互相交流、點贊、轉(zhuǎn)發(fā),每天獲取優(yōu)質(zhì)IT內(nèi)容。


          #31省增本土35例 涉北京河北等省市#

           大廈建筑模型中,基本上包含多個樓層,每個樓層包含多個房間等信息。在《C#開發(fā)BIMFACE系列21 服務(wù)端API之獲取模型數(shù)據(jù)6:獲取單模型的樓層信息》中介紹了如何獲取一個模型中包含的樓層信息、面積分區(qū)、房間等信息。本篇主要介紹如何獲取單個模型中單個房間信息。

          請求地址:GET https://api.bimface.com/data/v2/files/{fileId}/rooms/{roomId}

          說明:獲取單個模型種單個房間信息

          參數(shù):

          請求 path(示例):https://api.bimface.com/data/v2/files/1211223382064960/rooms/857279

          請求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"

          HTTP響應(yīng)示例(200):

          {
            "code" : "success",
            "data" : {
              "area" : 7.256476003661832E7,
              "bboxMax" : {
                "x" : -4938.068482562385,
                "y" : -3201.59397858169,
                "z" : 0.0
              },
              "bboxMin" : {
                "x" : -4938.068482562385,
                "y" : -3201.59397858169,
                "z" : 0.0
              },
              "boundary" : "",
              "id" : "313137",
              "levelId" : "11",
              "maxPt" : {
                "x" : -4938.068482562385,
                "y" : -3201.59397858169,
                "z" : 0.0
              },
              "minPt" : {
                "x" : -4938.068482562385,
                "y" : -3201.59397858169,
                "z" : 0.0
              },
              "name" : "dining room 4",
              "perimeter" : 40087.80000000279,
              "properties" : [ {
                "group" : "dimension",
                "items" : [ {
                  "code" : "perimeter",
                  "extension" : "object",
                  "key" : "perimeter",
                  "orderNumber" : 0,
                  "unit" : "mm",
                  "value" : 17200,
                  "valueType" : 2
                } ]
              } ]
            },
            "message" : ""
          }

          該返回結(jié)果的結(jié)構(gòu)比較復(fù)雜。在文章最后會給出對應(yīng)封裝成的C#類。

          C#實現(xiàn)方法:

          /// <summary>
          ///  獲取單個模型中單個樓層信息
          /// </summary>
          /// <param name="accessToken">【必填】令牌</param>
          /// <param name="fileId">【必填】代表該單模型的文件ID</param>
          /// <param name="roomId">【必填】房間ID</param>
          /// <returns></returns>
          public virtual SingleModelSingleRoom GetSingleModelSingleRoom(string accessToken, long fileId, string roomId)
          {
              // GET https://api.bimface.com/data/v2/files/{fileId}/rooms/{roomId}
              string url=string.Format(BimfaceConstants.API_HOST + "/data/v2/files/{0}/rooms/{1}", fileId, roomId);
          
              BimFaceHttpHeaders headers=new BimFaceHttpHeaders();
              headers.AddOAuth2Header(accessToken);
          
              try
              {
                  SingleModelSingleRoom response;
          
                  HttpManager httpManager=new HttpManager(headers);
                  HttpResult httpResult=httpManager.Get(url);
                  if (httpResult.Status==HttpResult.STATUS_SUCCESS)
                  {
                      response=httpResult.Text.DeserializeJsonToObject<SingleModelSingleRoom>();
                  }
                  else
                  {
                      response=new SingleModelSingleRoom
                      {
                          Message=httpResult.RefText
                      };
                  }
          
                  return response;
              }
              catch (Exception ex)
              {
                  throw new Exception("[獲取單個房間信息]發(fā)生異常!", ex);
              }
          }

          其中調(diào)用到的 httpManager.Get() 方法,請參考《C# HTTP系列》

          https://www.cnblogs.com/SavionZhang/p/11422481.html

          測試

          在BIMFACE的控制臺中可以看到以下文件列表。模型狀態(tài)均為轉(zhuǎn)換成功。

          以“Revit案例項目改.0001.rvt”為例測試上述的方法。

          在《C#開發(fā)BIMFACE系列21 服務(wù)端API之獲取模型數(shù)據(jù)6:獲取單模型的樓層信息》中查詢返回的結(jié)果中包含 RoomId

          以 RoomID 為 857552 為例來查詢該房間的詳細(xì)信息

          完整的房間信息如下:

          success
          
          [area=70319994.3674652, 
           bboxMax=[x=13061.9309943162, y=-3481.59383914623, z=2199.99991189159], 
           bboxMin=[x=7061.93123461209, y=-15201.5933697684, z=0], 
           boundary={"version":"2.0","loops":[[[{"z":0.0,"y":-15201.593978581839,"x":13061.931517437606},
                                                {"z":0.0,"y":-3481.5939785817081,"x":13061.931517437624}
                                               ],
                                               [{"z":0.0,"y":-3481.5939785817077,"x":13061.931517437624},
                                                {"z":0.0,"y":-3481.5939785816972,"x":10001.931517437628}
                                               ],
                                               [{"z":0.0,"y":-3481.5939785816972,"x":10001.931517437628},
                                                {"z":0.0,"y":-3481.5939785816904,"x":7726.6267896735426}
                                               ],
                                               [{"z":0.0,"y":-3481.5939785816904,"x":7726.6267896735426},
                                                {"z":0.0,"y":-3481.59397858169,"x":7558.3362452017109}
                                               ],
                                               [{"z":0.0,"y":-3481.59397858169,"x":7558.3362452017109},
                                                {"z":0.0,"y":-3481.5939785816881,"x":7061.9315174376252}
                                               ],
                                               [{"z":0.0,"y":-3481.5939785816881,"x":7061.9315174376252},
                                                {"z":0.0,"y":-15201.593978581817,"x":7061.9315174376061}
                                               ],
                                               [{"z":0.0,"y":-15201.593978581821,"x":7061.9315174376061},
                                                {"z":0.0,"y":-15201.593978581839,"x":13061.931517437606}
                                               ]
                                              ] 
                                             ]
                    },
            id=857552, 
            levelId=, 
            maxPt=[x=13061.9309943162, y=-3481.59383914623, z=0], 
            minPt=[x=7061.93123461209, y=-15201.5933697684, z=0], 
            name=Living 106, 
            perimeter=35579.9985750456,
            properties=[group=尺寸標(biāo)注, 
                        items=[code=, extension=, key=體積, orderNumber=,unit=m3,value=154.70,valueType=2]
                              [code=, extension=, key=周長, orderNumber=,unit=mm,value=35580,valueType=2]
                              [code=, extension=, key=房間標(biāo)示高度, orderNumber=,unit=mm,value=4000,valueType=2]
                              [code=, extension=, key=計算高度, orderNumber=,unit=mm,value=0,valueType=2]
                              [code=, extension=, key=面積, orderNumber=,unit=m2,value=70,valueType=2]
                       ]
                       [group=標(biāo)識數(shù)據(jù), 
                        items=[code=, extension=, key=Occupant, orderNumber=,unit=,value=,valueType=3]
                              [code=, extension=, key=占用, orderNumber=,unit=,value=,valueType=3]
                              [code=, extension=, key=名稱, orderNumber=,unit=,value=Living,valueType=3]
                              [code=, extension=, key=圖像, orderNumber=,unit=,value=,valueType=4]
                              [code=, extension=, key=基面面層, orderNumber=,unit=,value=,valueType=3]
                              [code=, extension=, key=墻面面層, orderNumber=,unit=,value=,valueType=3]
                              [code=, extension=, key=天花板面層, orderNumber=,unit=,value=,valueType=3]
                              [code=, extension=, key=樓板面層, orderNumber=,unit=,value=,valueType=3]
                              [code=, extension=, key=注釋, orderNumber=,unit=,value=,valueType=3]
                              [code=, extension=, key=編號, orderNumber=,unit=,value=106,valueType=3]
                              [code=, extension=, key=部門, orderNumber=,unit=,value=,valueType=3]
                      ]
                      [group=階段化, 
                       items=[code=, extension=, key=相位, orderNumber=,unit=,value=Working Drawings,valueType=4]
                      ] 
                      [group=限制條件, 
                       items=[code=, extension=, key=上限, orderNumber=,unit=,value=Level 1,valueType=4]
                             [code=, extension=, key=底部偏移, orderNumber=,unit=mm,value=0,valueType=2]
                             [code=, extension=, key=標(biāo)高, orderNumber=,unit=,value=Level 1,valueType=4]
                             [code=, extension=, key=高度偏移, orderNumber=,unit=mm,value=4000,valueType=2]
                      ]
          ]

          測試代碼如下:

          // 獲取單個房間信息
          protected void btnGetSingleModelSingleRoom_Click(object sender, EventArgs e)
          {
              long fileId=txtFileID.Text.Trim().ToLong();
              string roomId=txtRoomId.Text.Trim();
              FileConvertApi api=new FileConvertApi();  
              SingleModelSingleRoom response=api.GetSingleModelSingleRoom(txtAccessToken.Text, fileId, roomId);
          
              txtResult.Text=response.Code.ToString2()
                             + Environment.NewLine
                             + response.Message.ToString2()
                             + Environment.NewLine
                             + response.Data;
          }

          該接口返回的響應(yīng)信息,封裝成對應(yīng)的C# SingleModelSingleRoom 類:

          /// <summary>
          /// 獲取單個模型單個房間信息返回的結(jié)果類
          /// </summary>
          public class SingleModelSingleRoom : GeneralResponse<Room>
          {
          
          }

          Room 類如下:

          /// <summary>
          ///  模型的房間信息
          /// </summary>
          [Serializable]
          public class Room
          {
              /// <summary>
              ///  樣例 : 7.256476003661832E7
              /// </summary>
              [JsonProperty("area")]
              public double? Area { get; set; }
          
              [JsonProperty("bboxMax")]
              public Coordinate BboxMax { get; set; }
          
              [JsonProperty("bboxMin")]
              public Coordinate BboxMin { get; set; }
          
              /// <summary>
              ///  邊界
              /// </summary>
              [JsonProperty("boundary")]
              public string Boundary { get; set; }
          
              /// <summary>
              ///  編號
              /// </summary>
              [JsonProperty("id")]
              public string Id { get; set; }
          
              /// <summary>
              ///  水平線編號
              /// </summary>
              [JsonProperty("levelId")]
              public string LevelId { get; set; }
          
              [JsonProperty("maxPt")]
              public Coordinate MaxPt { get; set; }
          
              [JsonProperty("minPt")]
              public Coordinate MinPt { get; set; }
          
              /// <summary>
              ///  對象名稱。例如:"dining room 4"
              /// </summary>
              [JsonProperty("name")]
              public string Name { get; set; }
          
              /// <summary>
              ///  樣例 : 40087.80000000279
              /// </summary>
              [JsonProperty("perimeter")]
              public double? Perimeter { get; set; }
          
              [JsonProperty("properties")]
              public PropertyGroup[] Properties { get; set; }
          
              /// <summary>返回表示當(dāng)前對象的字符串。</summary>
              /// <returns>表示當(dāng)前對象的字符串。</returns>
              public override string ToString()
              {
                  StringBuilder sb=new StringBuilder();
                  if (Properties !=null && Properties.Length > 0)
                  {
                      foreach (var property in Properties)
                      {
                          sb.AppendLine(property.ToString());
                      }
                  }
          
                  return string.Format("[area={0}, bboxMax={1}, bboxMin={2}, boundary={3}, id={4}, levelId={5}, maxPt={6}, minPt={7}, name={8}, perimeter={9}, properties={10}]",
                                       Area, BboxMax, BboxMin, Boundary, Id, LevelId, MaxPt, MinPt, Name, Perimeter, sb);
              }
          }

          其中 Coordinate 、PropertyGroup 類請參考《C#開發(fā)BIMFACE系列17 服務(wù)端API之獲取模型數(shù)據(jù)2:獲取構(gòu)件材質(zhì)列表》。


          系列文章主要技術(shù):BIM、輕量化引擎、BIMFACE、BIMFACE二次開發(fā)、C#、.NET、二次開發(fā)、RESTful API、WebAPI


          歡迎關(guān)注、點贊、評論、轉(zhuǎn)發(fā),每天閱讀優(yōu)質(zhì)內(nèi)容。


          #31省份新增確診22例 本土9例在廣東#


          主站蜘蛛池模板: 国产伦一区二区三区免费| 波多野结衣的AV一区二区三区| 一本色道久久综合一区| 日本精品视频一区二区三区| 色婷婷亚洲一区二区三区| 一区二区三区在线观看免费| 精品视频一区二区三区| 综合久久一区二区三区 | 区三区激情福利综合中文字幕在线一区亚洲视频1 | 制服丝袜一区在线| 无码一区二区三区AV免费| 国产精品一区二区无线| 成人区人妻精品一区二区不卡视频| 成人国内精品久久久久一区| 色婷婷一区二区三区四区成人网 | 久久精品国产第一区二区| 无码人妻品一区二区三区精99| 亚洲熟女乱色一区二区三区| 国产高清一区二区三区四区| 久久精品午夜一区二区福利| 国产精品538一区二区在线| 亚州日本乱码一区二区三区| 日韩精品一区二区三区在线观看l| 国精品无码一区二区三区在线蜜臀| 成人免费观看一区二区| 中文字幕无线码一区| 精品无码人妻一区二区三区18| 国产精品无码不卡一区二区三区 | 亚洲一区无码精品色| 一区二区无码免费视频网站| 日韩人妻无码一区二区三区| 欧美成人aaa片一区国产精品 | 精品乱码一区内射人妻无码| 国产精品视频一区二区三区四| 国产精品成人一区无码| 伦精品一区二区三区视频| 中文字幕一区二区在线播放| 国产精品一区二区香蕉| 亚洲AV成人精品一区二区三区| 丰满少妇内射一区| 亚洲毛片不卡av在线播放一区|