快捷搜索:  汽车  科技

服务端二次开发方法(C二次开发BIMFACE系列19服务端API之获取多个构件的共同属性)

服务端二次开发方法(C二次开发BIMFACE系列19服务端API之获取多个构件的共同属性)若需查询重写后的构件的共同属性,请求示例为 https://api.bimface.com/data/v2/files/1211223382064960/commonElementProperties?elementIds=string&includeOverrides=true 请求 path(示例):https://api.bimface.com/data/v2/files/1211223382064960/commonElementProperties?elementIds=string说明:若传入的elementId不止一个,则返回这些elementId共同的属性,共同的定义为:属性key与value都相等。 支持查询模型属性重写后多个构件的共同属性,需要设置请求参数includeOverrides的值为true。参数:

服务端二次开发方法(C二次开发BIMFACE系列19服务端API之获取多个构件的共同属性)(1)

在前几篇博客中介绍了一个三维文件/模型包含多个构建,每个构建又是由多种材质组成,每个构建都有很多属性。不同的构建也有可能包含相同的属性。

服务端二次开发方法(C二次开发BIMFACE系列19服务端API之获取多个构件的共同属性)(2)

上图中可以看到构建1与构建2拥有相同的属性2,构建2与构建n拥有相同的属性1。

本文主要介绍如何获取多个构建的共同属性。

请求地址:GET https://api.bimface.com/data/v2/files/{fileId}/commonElementProperties

说明:若传入的elementId不止一个,则返回这些elementId共同的属性,共同的定义为:属性key与value都相等。

支持查询模型属性重写后多个构件的共同属性,需要设置请求参数includeOverrides的值为true。

参数:

服务端二次开发方法(C二次开发BIMFACE系列19服务端API之获取多个构件的共同属性)(3)

请求 path(示例):https://api.bimface.com/data/v2/files/1211223382064960/commonElementProperties?elementIds=string

若需查询重写后的构件的共同属性,请求示例为
https://api.bimface.com/data/v2/files/1211223382064960/commonElementProperties?elementIds=string&includeOverrides=true

elementIds 后面的 string 是多个构建Id,多个elementId之间用英文状态下的半角逗号分隔。

例如:elementId1 elementId2 elementId3 elementId4

请求 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="elementIds">【必填】代表该单模型的构件ID列表</param> /// <param name="includeOverrides">【非必填】是否查询修改的属性</param> /// <returns></returns> public virtual SingleModelMultipleElementsCommonProperties GetSingleModelMultipleElementsCommonProperties(string accessToken long fileId string[] elementIds bool? includeOverrides = null) { if (elementIds == null && elementIds.Length == 0) { throw new ArgumentException("参数 elementIds 不能为null 且必须包含元素!"); } // GET https://api.bimface.com/data/v2/files/{fileId}/commonElementProperties?elementIds={string} string url = string.Format(BimfaceConstants.API_HOST "/data/v2/files/{0}/commonElementProperties?elementIds={1}" fileId elementIds.ToStringWith(" ")); if (includeOverrides != null) { url = url "&includeOverrides=" includeOverrides; } BimFaceHttpHeaders headers = new BimFaceHttpHeaders(); headers.AddOAuth2Header(accessToken); try { SingleModelMultipleElementsCommonProperties response; HttpManager httpManager = new HttpManager(headers); HttpResult httpResult = httpManager.Get(url); if (httpResult.Status == HttpResult.STATUS_SUCCESS) { response = httpResult.Text.DeserializeJsonToObject<SingleModelMultipleElementsCommonProperties>(); } else { response = new SingleModelMultipleElementsCommonProperties { Message = httpResult.RefText }; } return response; } catch (Exception ex) { throw new Exception("[获取多个构件的共同属性]发生异常!" ex); } }

响应结果对应的实体类 SingleModelMultipleElementsCommonProperties ,封装如下:

/// <summary> /// 获取多个构件的共同属性返回的结果类 /// </summary> public class SingleModelMultipleElementsCommonProperties : SingleModelSingleElementProperty { }

SingleModelMultipleElementsCommonProperties 类与 《C#开发BIMFACE系列18 服务端API之获取模型数据3:获取构件属性》 返回的结构类 SingleModelSingleElementProperty 完全相同。

衍生出的一个重载方法:

/// <summary> /// 获取单个模型的多个构件的共同属性 /// </summary> /// <param name="accessToken">令牌</param> /// <param name="fileId">【必填】代表该单模型的文件ID</param> /// <param name="elementIds">【必填】代表该单模型的构件ID列表</param> /// <param name="includeOverrides">【非必填】是否查询修改的属性</param> /// <returns></returns> public virtual SingleModelMultipleElementsCommonProperties GetSingleModelMultipleElementsCommonProperties(string accessToken long fileId List<string> elementIds bool? includeOverrides = null) { return GetSingleModelMultipleElementsCommonProperties(accessToken fileId elementIds.ToArray() includeOverrides); }

测试

在BIMFACE的控制台中可以看到我们上传的文件列表,共计2个文件。模型状态均为转换成功。

服务端二次开发方法(C二次开发BIMFACE系列19服务端API之获取多个构件的共同属性)(4)

以“01_BIMFACE示例文件-Revit模型.rvt”为例来测试。

服务端二次开发方法(C二次开发BIMFACE系列19服务端API之获取多个构件的共同属性)(5)

测试中查询了 300067 282979 283330 这3个构建的共同属性。完整的属性列表如下:

success elementId:300067 282979 283330 SingleModelSingleElementEntity: [boundingBox= elementId= familyGuid= Guid=, name= Properties=[group=基本属性 items=[code= extension= key=specialty orderNumber= unit= value= valueType=] [code= extension= key=familyId orderNumber= unit= value= valueType=] [code= extension= key=systemType orderNumber= unit= value= valueType=] [code= extension= key=building orderNumber= unit= value= valueType=] ] [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] ] ]

测试代码如下:

// 获取多个构件的共同属性 protected void btnGetSingleModelMultipleElementsCommonProperties_Click(object sender EventArgs e) { FileConvertApi api = new FileConvertApi(); string[] elementIds = txtMultipleElementIds.Text.Split(" "); var response = api.GetSingleModelMultipleElementsCommonProperties(txtAccessToken.Text txtFileID.Text.ToLong() elementIds chkIncludeOverrides.Checked); txtResult.Text = response.Code.ToString2() Environment.NewLine "elementId:" txtMultipleElementIds.Text Environment.NewLine response.Message.ToString2() Environment.NewLine response.Data.ToString(); }


系列文章主要技术:BIM、轻量化引擎、BIMFACE、BIMFACE二次开发、C#、.NET、二次开发、RESTful API、WebAPI


#中国足协回应承担A组球队差旅费#

#体育总局:暂停新兴高危体育赛事#

#陕西版孙小果案:离奇出狱成老板#

#丈夫脑出血 妻子卖房后失联#

#为何允许野象进昆明#

猜您喜欢: