• C#开发BIMFACE系列34 服务端API之模型对比5:获取模型构件对比差异


      BIMFACE平台提供了服务端“获取修改构件属性差异”API,其返回的结果也是一个列表,仅针对修改的构件(不包含新增、删除的构件),是指对于一个修改过的构件ID,其修改前后分别新增、删除了哪些属性,或是属性值发生了变化。

    请求地址:GET https://api.bimface.com/data/v2/comparisons/{comparisonId}/elementChange

    参数:

    请求 path(示例):https://api.bimface.com/data/v2/comparisons/1136906400211168/elementChange?followingElementId=296524&followingFileId=1136893002033344&previousElementId=296524&previousFileId=1136239003943104

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

    HTTP响应示例(200):

     1 {
     2   "code" : "success",
     3   "data" : {
     4     "_A" : "string",
     5     "_B" : "string",
     6     "changeAttributes" : [ {
     7       "_A" : {
     8         "key" : "key",
     9         "unit" : "unit",
    10         "value" : "value"
    11       },
    12       "_B" : {
    13         "key" : "key",
    14         "unit" : "unit",
    15         "value" : "value"
    16       }
    17     } ],
    18     "changeQuantities" : [ {
    19       "_A" : {
    20         "code" : "code",
    21         "desc" : "desc",
    22         "name" : "name",
    23         "qty" : 0,
    24         "unit" : "unit"
    25       },
    26       "_B" : {
    27         "code" : "code",
    28         "desc" : "desc",
    29         "name" : "name",
    30         "qty" : 0,
    31         "unit" : "unit"
    32       }
    33     } ],
    34     "deleteAttributes" : [ {
    35       "key" : "key",
    36       "unit" : "unit",
    37       "value" : "value"
    38     } ],
    39     "deleteQuantities" : [ {
    40       "code" : "code",
    41       "desc" : "desc",
    42       "name" : "name",
    43       "qty" : 0,
    44       "unit" : "unit"
    45     } ],
    46     "newAttributes" : [ {
    47       "key" : "key",
    48       "unit" : "unit",
    49       "value" : "value"
    50     } ],
    51     "newQuantities" : [ {
    52       "code" : "code",
    53       "desc" : "desc",
    54       "name" : "name",
    55       "qty" : 0,
    56       "unit" : "unit"
    57     } ]
    58   },
    59   "message" : ""
    60 }

    C#实现方法:

     1 /// <summary>
     2 /// 获取模型构件对比差异
     3 /// </summary>
     4 /// <param name="accessToken">【必填】令牌</param>
     5 /// <param name="compareId">【必填】对比ID</param>
     6 /// <param name="followingFileId">【必填】变更后的文件ID</param>
     7 /// <param name="followingElementId">【必填】变更后的文件的构件ID</param>
     8 /// <param name="previousFileId">【必填】变更前的文件ID</param>
     9 /// <param name="previousElementId">【必填】变更前的文件的构件ID</param>
    10 /// <returns></returns>
    11 public virtual ModelCompareChangeResponse GetModelCompareChange(string accessToken, long compareId,
    12        long followingFileId, string followingElementId, long previousFileId, string previousElementId)
    13 {
    14     // GET https: //api.bimface.com/data/v2/comparisons/{comparisonId}/elementChange
    15     string url = string.Format(BimfaceConstants.API_HOST + "/data/v2/comparisons/{0}/elementChange", compareId);
    16     url += "?followingFileId=" + followingFileId;
    17     url += "&followingElementId=" + followingElementId;
    18     url += "&previousFileId=" + previousFileId;
    19     url += "&previousElementId=" + previousElementId;
    20 
    21     BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
    22     headers.AddOAuth2Header(accessToken);
    23 
    24     try
    25     {
    26         ModelCompareChangeResponse response;
    27 
    28         HttpManager httpManager = new HttpManager(headers);
    29         HttpResult httpResult = httpManager.Get(url);
    30         if (httpResult.Status == HttpResult.STATUS_SUCCESS)
    31         {
    32             response = httpResult.Text.DeserializeJsonToObject<ModelCompareChangeResponse>();
    33         }
    34         else
    35         {
    36             response = new ModelCompareChangeResponse
    37             {
    38                 Message = httpResult.RefText
    39             };
    40         }
    41 
    42         return response;
    43     }
    44     catch (Exception ex)
    45     {
    46         throw new Exception("[获取模型构件对比差异]发生异常!", ex);
    47     }
    48 }

    代码中使用的 HttpManager 类请参考我的博客文章《C# HTTP系列 HttpWebRequest 与 HttpWebResponse》。

    返回类型  ModelCompareChangeResponse 类如下:

      1 /// <summary>
      2 /// 获取模型构件对比差异的响应类
      3 /// </summary>
      4 public class ModelCompareChangeResponse : GeneralResponse<ModelCompareChange>
      5 {
      6 
      7 }
      8 
      9 /// <summary>
     10 /// 模型构件对比差异类
     11 /// </summary>
     12 public class ModelCompareChange
     13 {
     14     /// <summary>
     15     /// 变化图元前一个版本的ID
     16     /// </summary>
     17     [JsonProperty("_A", NullValueHandling = NullValueHandling.Ignore)]
     18     public string A { get; set; }
     19 
     20     /// <summary>
     21     /// 变化图元后一个版本的ID
     22     /// </summary>
     23     [JsonProperty("_B", NullValueHandling = NullValueHandling.Ignore)]
     24     public string B { get; set; }
     25 
     26     /// <summary>
     27     ///  变更的构建属性集合
     28     /// </summary>
     29 
     30     [JsonProperty("changeAttributes", NullValueHandling = NullValueHandling.Ignore)]
     31     public ChangeAttributes[] ChangeAttributes { get; set; }
     32 
     33     /// <summary>
     34     ///  变更的工程量集合
     35     /// </summary>
     36 
     37     [JsonProperty("changeQuantities", NullValueHandling = NullValueHandling.Ignore)]
     38     public ChangeQuantities[] ChangeQuantities { get; set; }
     39 
     40     /// <summary>
     41     ///  删除的构建属性集合
     42     /// </summary>
     43 
     44     [JsonProperty("deleteAttributes", NullValueHandling = NullValueHandling.Ignore)]
     45     public Attribute[] DeleteAttributes { get; set; }
     46 
     47     /// <summary>
     48     ///  删除的工程量集合
     49     /// </summary>
     50 
     51     [JsonProperty("deleteQuantities", NullValueHandling = NullValueHandling.Ignore)]
     52     public Quantity[] DeleteQuantities { get; set; }
     53 
     54     /// <summary>
     55     ///  新增的构建属性集合
     56     /// </summary>
     57 
     58     [JsonProperty("newAttributes", NullValueHandling = NullValueHandling.Ignore)]
     59     public Attribute[] NewAttributes { get; set; }
     60 
     61     /// <summary>
     62     ///  新增的工程量集合
     63     /// </summary>
     64 
     65     [JsonProperty("newQuantities", NullValueHandling = NullValueHandling.Ignore)]
     66     public Quantity[] NewQuantities { get; set; }
     67 }
     68 
     69 /// <summary>
     70 ///  变更的构建属性
     71 /// </summary>
     72 public class ChangeAttributes
     73 {
     74     /// <summary>
     75     /// 前一个版本
     76     /// </summary>
     77     [JsonProperty("_A", NullValueHandling = NullValueHandling.Ignore)]
     78     public Attribute A { get; set; }
     79 
     80     /// <summary>
     81     /// 后一个版本
     82     /// </summary>
     83     [JsonProperty("_B", NullValueHandling = NullValueHandling.Ignore)]
     84     public Attribute B { get; set; }
     85 }
     86 
     87 /// <summary>
     88 ///  变更的工程量
     89 /// </summary>
     90 public class ChangeQuantities
     91 {
     92     /// <summary>
     93     /// 前一个版本
     94     /// </summary>
     95     [JsonProperty("_A", NullValueHandling = NullValueHandling.Ignore)]
     96     public Quantity A { get; set; }
     97 
     98     /// <summary>
     99     /// 后一个版本
    100     /// </summary>
    101     [JsonProperty("_B", NullValueHandling = NullValueHandling.Ignore)]
    102     public Quantity B { get; set; }
    103 }
    104 
    105 /// <summary>
    106 ///  构建属性
    107 /// </summary>
    108 public class Attribute
    109 {
    110     [JsonProperty("key", NullValueHandling = NullValueHandling.Ignore)]
    111     public string Key { get; set; }
    112 
    113     [JsonProperty("value", NullValueHandling = NullValueHandling.Ignore)]
    114     public string Value { get; set; }
    115 
    116     [JsonProperty("unit", NullValueHandling = NullValueHandling.Ignore)]
    117     public string Unit { get; set; }
    118 }
    119 
    120 /// <summary>
    121 /// 工程量
    122 /// </summary>
    123 public class Quantity
    124 {
    125     [JsonProperty("code", NullValueHandling = NullValueHandling.Ignore)]
    126     public string Code { get; set; }
    127 
    128     [JsonProperty("desc", NullValueHandling = NullValueHandling.Ignore)]
    129     public string Desc { get; set; }
    130 
    131     [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
    132     public string Name { get; set; }
    133 
    134     [JsonProperty("qty", NullValueHandling = NullValueHandling.Ignore)]
    135     public string Qty { get; set; }
    136 
    137     [JsonProperty("unit", NullValueHandling = NullValueHandling.Ignore)]
    138     public string Unit { get; set; }
    139 }
  • 相关阅读:
    $().each和$("input[name='XXX']")
    常规JS操作
    日期大小比较JS方法
    集合迭代
    技术点1
    GItHub pages 的使用方法
    node.js是做什么的?
    jQuery基础:下(事件及动画效果)
    jQuery基础:上(样式及DOM操作)
    页码demo制作
  • 原文地址:https://www.cnblogs.com/SavionZhang/p/12396011.html
Copyright © 2020-2023  润新知