zoukankan      html  css  js  c++  java
  • C#开发BIMFACE系列23 服务端API之获取模型数据8:获取模型链接信息

    在Revit等BIM设计工具中可以给模型的某个部位添加链接信息。即类似于在Office Word、Excel 中给一段文字添加本地文件链接或者网址链接等类似功能。例如下面的一个RVT模型种包含了2个链接。

    下面详细介绍如何获取单个模型包含的所有链接信息。

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

    说明:获取一个模型种包含的所有链接信息

    参数:

    请求 path(示例):https://api.bimface.com/data/v2/files/1211223382064960/links

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

    HTTP响应示例(200):

    {
      "code" : "success",
      "data" : [ {
        "guid" : "ffb665b7-067f-4cd6-b080-214e96db0f73-00058185",
        "id" : 0,
        "name" : "file_link.rvt : 12 : loc <not shared>",
        "transform" : ""
      } ],
      "message" : ""
    }

    返回的结果封装成 SingleModelLink 类

    /// <summary>
    ///  获取单个模型的链接信息返回的结果类
    /// </summary>
    [Serializable]
    public class SingleModelLink : GeneralResponse<List<Link>>
    {
    
    }
    [Serializable]
    public class Link
    {
        [JsonProperty("guid")]
        public string Guid { get; set; }
    
        [JsonProperty("id")]
        public long? Id { get; set; }
    
        /// <summary>
        ///  样例 : "file_link.rvt : 12 
        /// </summary>
        [JsonProperty("name")]
        public string Name { get; set; }
    
        [JsonProperty("transform")]
        public string Transform { get; set; }
    
        /// <summary>返回表示当前对象的字符串。</summary>
        /// <returns>表示当前对象的字符串。</returns>
        public override string ToString()
        {
            return String.Format("[Link guid={0}, id={1}, name={2},transform={3}]",
                                 Guid, Id, Name, Transform);
        }
    }

    C#实现方法:

     1 /// <summary>
     2 ///  获取单个模型的楼层信息
     3 /// </summary>
     4 /// <param name="accessToken">【必填】令牌</param>
     5 /// <param name="fileId">【必填】代表该单模型的文件ID</param>
     6 /// <returns></returns>
     7 public virtual SingleModelLink GetSingleModelLink(string accessToken, long fileId)
     8 {
     9     // GET https://api.bimface.com/data/v2/files/{fileId}/links
    10     string url = string.Format(BimfaceConstants.API_HOST + "/data/v2/files/{0}/links", fileId);
    11 
    12     BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
    13     headers.AddOAuth2Header(accessToken);
    14 
    15     try
    16     {
    17         SingleModelLink 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<SingleModelLink>();
    24         }
    25         else
    26         {
    27             response = new SingleModelLink
    28             {
    29                 Message = httpResult.RefText
    30             };
    31         }
    32 
    33         return response;
    34     }
    35     catch (Exception ex)
    36     {
    37         throw new Exception("[获取模型链接信息]发生异常!", ex);
    38     }
    39 }

    其中调用到的 httpManager.Get() 方法,请参考《C# HTTP系列》

    测试

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

     

     以模型 “A4.rvt” 为例测试上述的方法

     

    查询到了2条链接信息,与文章开始处的源文件中的链接信息对应。

    并不是所有的模型中都包含链接信息,如果不包含,则返回 null

    测试代码如下:
     1 // 获取单模型链接信息
     2 protected void btnGetSingleModelLink_Click(object sender, EventArgs e)
     3 {
     4     long fileId = txtFileID.Text.Trim().ToLong();
     5     FileConvertApi api = new FileConvertApi();
     6     SingleModelLink response = api.GetSingleModelLink(txtAccessToken.Text, fileId);
     7 
     8     StringBuilder sb = new StringBuilder();
     9     if (response.Data != null)
    10     {
    11         List<Link> lstLink = response.Data;
    12         foreach (var link in lstLink)
    13         {
    14             sb.AppendLine(link.ToString());
    15         }
    16     }
    17 
    18     txtResult.Text = response.Code.ToString2()
    19                    + Environment.NewLine
    20                    + response.Message.ToString2()
    21                    + Environment.NewLine
    22                    + sb;
    23 }
     
     
  • 相关阅读:
    POJ
    CodeForces
    51Nod 1256 扩展欧几里得求乘法逆元
    SDUT 3917
    SDUT 3918
    从零开始实现asp.net MVC4框架网站的用户登录以及权限验证模块 详细教程
    bootstrap资料索引
    理解Login函数
    细说@Html.ActionLink()的用法
    RGB颜色对照表
  • 原文地址:https://www.cnblogs.com/SavionZhang/p/11492515.html
Copyright © 2011-2022 走看看