廣州大學研究生招生網37B(C#二次開發BIMFACE系列18 服務端API之獲取構件屬性)

時間:2023-07-04 11:42:58

本篇主要介紹如何獲取單文件/模型下單個構建的屬性信息。


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


說明:支持查詢模型屬性重寫后構件的屬性,需要設置請求參數includeOverrides的值為true


參數:


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


若需查詢重寫后的構件屬性,請求示例為


https://api.bimface.com/data/v2/files/1211223382064960/elements/1109329?includeOverrides=true


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


HTTP響應示例(200):


{ "code" : "success", "data" : { "boundingBox" : { "max" : { "x" : -4938.068482562385, "y" : -3201.59397858169, "z" : 0.0 }, "min" : { "x" : -4938.068482562385, "y" : -3201.59397858169, "z" : 0.0 } }, "elementId" : "313052", "familyGuid" : "000222", "guid" : "79d547c1-5dbf-4e6a-811d-951cf37b29da-0004c6dc", "name" : "norm - 150mm", "properties" : [ { "group" : "dimension", "items" : [ { "code" : "perimeter", "extension" : "object", "key" : "perimeter", "orderNumber" : 0, "unit" : "mm", "value" : 17200, "valueType" : 2 } ] } ] }, "message" : ""}

C#實現方法:


/// <summary>/// 獲取構件屬性/// </summary>/// <param name="accessToken">令牌</param>/// <param name="fileId">【必填】代表該單模型的文件ID</param>/// <param name="elementId">【必填】代表該單模型的構件ID</param>/// <param name="includeOverrides">【非必填】是否查詢修改的屬性</param>/// <returns></returns>public virtual SingleModelSingleElementProperty GetSingleModelSingleElementProperty(string accessToken, long fileId, string elementId, bool? includeOverrides = null){ // GET https://api.bimface.com/data/v2/files/{fileId}/elements/{elementId} string url = string.Format(BimfaceConstants.API_HOST "/data/v2/files/{0}/elements/{1}", fileId, elementId); if (includeOverrides != null) { url = url "?includeOverrides=" includeOverrides; } BimFaceHttpHeaders headers = new BimFaceHttpHeaders(); headers.AddOAuth2Header(accessToken); try { SingleModelSingleElementProperty response; HttpManager httpManager = new HttpManager(headers); HttpResult httpResult = httpManager.Get(url); if (httpResult.Status == HttpResult.STATUS_SUCCESS) { response = httpResult.Text.DeserializeJsonToObject<SingleModelSingleElementProperty>(); } else { response = new SingleModelSingleElementProperty { Message = httpResult.RefText }; } return response; } catch (Exception ex) { throw new Exception("[獲取構件屬性]發生異常!", ex); }}

響應結果對應的實體類 SingleModelSingleElementProperty ,封裝如下:


/// <summary>/// 獲取單個模型單個構件的屬性返回的結果類/// </summary>[Serializable]public class SingleModelSingleElementProperty : GeneralResponse<SingleModelSingleElementEntity>{}

[Serializable]public class SingleModelSingleElementEntity{ [JsonProperty("boundingBox")] public BoundingBox BoundingBox { get; set; } [JsonProperty("elementId")] public string ElementId { get; set; } [JsonProperty("familyGuid")] public string FamilyGuid { get; set; } [JsonProperty("guid")] public string Guid { get; set; } [JsonProperty("name")] public string Name { get; set; } [JsonProperty("properties")] public PropertyGroup[] Properties { get; set; } /// <summary>返回表示當前對象的字符串。</summary> /// <returns>表示當前對象的字符串。</returns> public override string ToString() { StringBuilder sb = new StringBuilder(); if (Properties != null && Properties.Length > 0) { foreach (var pro in Properties) { sb.AppendLine(pro.ToString()); } } return string.Format("SingleModelSingleElementEntity: [boundingBox={0}, elementId={1}, familyGuid={2}, Guid={3}, name={4}, Properties={5}]", BoundingBox, ElementId, FamilyGuid, Guid,Name, sb); }}

[Serializable]public class BoundingBox{ [JsonProperty("max")] public Max Max { get; set; } [JsonProperty("min")] public Min Min { get; set; } /// <summary>返回表示當前對象的字符串。</summary> /// <returns>表示當前對象的字符串。</returns> public override string ToString() { return string.Format("[max={0}, min={1}]", Max.ToString(), Min.ToString()); }}

[Serializable]2public class Max : ThreeDimensionalCoordinates { }

[Serializable]public class Min : ThreeDimensionalCoordinates{}

/// <summary>/// 三維坐標系/// </summary>public class ThreeDimensionalCoordinates{ [JsonProperty("x")] public double X { get; set; } [JsonProperty("y")] public double Y { get; set; } [JsonProperty("z")] public double Z { get; set; } /// <summary>返回表示當前對象的字符串。</summary> /// <returns>表示當前對象的字符串。</returns> public override string ToString() { return string.Format("[x={0}, y={1}, z={2}]", X, Y, Z); }}

其中 PropertyGroup 類,請參考《C#開發BIMFACE系列17 服務端API之獲取模型數據2:獲取構件材質列表》中的 響應結果類中的 PropertyGroup 類。


測試


在BIMFACE的控制臺中可以看到我們上傳的文件列表,共計2個文件。模型狀態均為轉換成功。


以“01_BIMFACE示例文件-Revit模型.rvt”為例來測試。




完整的屬性為:


successelementId:300067SingleModelSingleElementEntity: [boundingBox=[max=[x=5838.783, y=4387.716, z=6000], min=[x=5788.783, y=4237.716, z=5475] ], elementId=300067, familyGuid=2d99307a-66cd-4439-b173-5c88d252416e-00002122, Guid=89c90034-40ae-423a-8935-8f5624db86c1-00049423, name=50 x 150 mm, Properties= [group=基本屬性, items= [code=, extension=, key=specialty, orderNumber=,unit=,value=,valueType=] [code=, extension=, key=floor, orderNumber=,unit=,value=F2,valueType=] [code=, extension=, key=categoryId, orderNumber=,unit=,value=-2000171,valueType=] [code=, extension=, key=categoryName, orderNumber=,unit=,value=幕墻豎梃,valueType=] [code=, extension=, key=family, orderNumber=,unit=,value=矩形豎梃,valueType=] [code=, extension=, key=familyId, orderNumber=,unit=,value=,valueType=] [code=, extension=, key=familyType, orderNumber=,unit=,value=50 x 150 mm,valueType=] [code=, extension=, key=familyTypeId, orderNumber=,unit=,value=8486,valueType=] [code=, extension=, key=systemType, orderNumber=,unit=,value=,valueType=] [code=, extension=, key=building, orderNumber=,unit=,value=,valueType=] ] [group=尺寸標注, items=[code=, extension=, key=邊 1 上的寬度, orderNumber=,unit=mm,value=25,valueType=2] [code=, extension=, key=邊 2 上的寬度, orderNumber=,unit=mm,value=25,valueType=2] [code=, extension=, key=長度, orderNumber=,unit=mm,value=525,valueType=2] ] [group=材質和裝飾, items=[code=, extension=, key=材質, orderNumber=,unit=,value=金屬 - 鋁,valueType=4] ] [group=構造, items=[code=, extension=, key=位置, orderNumber=,unit=,value=垂直于面,valueType=4] [code=, extension=, key=厚度, orderNumber=,unit=mm,value=150,valueType=2] [code=, extension=, key=角豎梃, orderNumber=,unit=,value=False,valueType=1] [code=, extension=, key=輪廓, orderNumber=,unit=,value=默認,valueType=4] ] [group=標識數據, items=[code=, extension=, key=OmniClass 標題, orderNumber=,unit=,value=,valueType=3] [code=, extension=, key=OmniClass 編號, orderNumber=,unit=,value=,valueType=3] [code=, extension=, key=URL, 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=4] [code=, extension=, key=型號, orderNumber=,unit=,value=,valueType=3] [code=, extension=, key=成本, orderNumber=,unit=,value=,valueType=2] [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=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] ] [group=階段化, items=[code=, extension=, key=創建的階段, orderNumber=,unit=,value=新構造,valueType=4] [code=, extension=, key=拆除的階段, orderNumber=,unit=,value=無,valueType=4] ] [group=限制條件, items=[code=, extension=, key=偏移量, orderNumber=,unit=mm,value=0,valueType=2] [code=, extension=, key=角度, orderNumber=,unit=°,value=0.00,valueType=2] ]]

測試代碼如下:


// 獲取構件屬性protected void btnGetSingleModelSingleElementProperty_Click(object sender, EventArgs e){ FileConvertApi api = new FileConvertApi(); string elementId = ddlSingleModelElements.SelectedValue; SingleModelSingleElementProperty response = api.GetSingleModelSingleElementProperty(txtAccessToken.Text, txtFileID.Text.ToLong(), elementId, chkIncludeOverrides.Checked); txtResult.Text = response.Code.ToString2() Environment.NewLine "elementId:" elementId Environment.NewLine response.Message.ToString2() Environment.NewLine response.Data.ToString();}


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



#廣州兩地升高風險地區#


#官方:安切洛蒂出任皇馬主帥#


#專家:希望三孩政策率先在東北試點#


#丈夫腦出血 妻子賣房后失聯#


#為什么是三孩 而不是全面放開#


1.本站遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.本站的原創文章,請轉載時務必注明文章作者和來源,不尊重原創的行為我們將追究責任;
3.作者投稿可能會經我們編輯修改或補充。

猜你喜歡
Copyright ? 百科網 2019-2023

免責聲明:本網站部分內容由用戶自行上傳,若侵犯了您的權益,請聯系我們處理,謝謝!聯系QQ:1186685208 版權所有:長沙市雨花區佩瓏信息技術工作室 湘ICP備2023006258號-12

十九岁免费观看中文版