• C#开发BIMFACE系列28 服务端API之获取模型数据13:获取三维视点或二维视图列表


    本篇主要介绍如何获取一个模型中包含的三维视点或二维视图列表。

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

    说明:获取单模型中包含的三维视点或二维视图列表。

    参数:

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

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

    HTTP响应示例(200):

    {
      "code" : "success",
      "data" : [ {
        "cropBox" : [ -12147.804809235151, -19279.554054815613, -30480.0, 22637.545576143948, 6805.089759789783, 30480.0 ],
        "elevation" : 0.0,
        "id" : "312",
        "levelId" : "312",
        "name" : "Level 1",
        "outline" : [ -146.52900292249365, -215.01048476685295, 240.3331231070219, 110.78415780710446 ],
        "preview" : {
          "height" : 0,
          "path" : "path",
          "width" : 0
        },
        "thumbnails" : [ "m.bimface.com/9b711803a43b92d871cde346b63e5019/resource/thumbnails/312/312.96x96.png" ],
        "viewPoint" : {
          "origin" : [ 0.0 ],
          "rightDirection" : [ 0.0 ],
          "scale" : 0,
          "upDirection" : [ 0.0 ],
          "viewDirection" : [ 0.0 ]
        },
        "viewType" : "FloorPlain"
      } ],
      "message" : ""
    }

    该返回结果的结构比较复杂,封装成如下的C#类

    /// <summary>
    ///  获取三维视点或二维视图列表的返回结果类
    /// </summary>
    [Serializable]
    public class SingleModelViews : GeneralResponse<List<ViewInfo>>
    {
    
    }

    引用的 ViewInfo 类

        /// <summary>
        /// 三维视点或二维视图
        /// </summary>
        [Serializable]
        public class ViewInfo
        {
            /// <summary>
            /// 样例:[ -12147.804809235151, -19279.554054815613, -30480.0, 22637.545576143948, 6805.089759789783, 30480.0 ]
            /// </summary>
            [JsonProperty("cropBox")]
            public double?[] CropBox { get; set; }
    
            /// <summary>
            /// 样例:0.0
            /// </summary>
            [JsonProperty("elevation")]
            public double? Elevation { get; set; }
    
            /// <summary>
            /// 样例:"312"
            /// </summary>
            [JsonProperty("id")]
            public string Id { get; set; }
    
            /// <summary>
            /// 样例:"312"
            /// </summary>
            [JsonProperty("levelId")]
            public string LevelId { get; set; }
    
            /// <summary>
            /// 样例:[ -146.52900292249365, -215.01048476685295, 240.3331231070219, 110.78415780710446 ]
            /// </summary>
            [JsonProperty("outline")]
            public double?[] Outline { get; set; }
    
            [JsonProperty("preview")]
            public Preview Preview { get; set; }
    
            /// <summary>
            /// 缩略图数组。样例:[ "m.bimface.com/9b711803a43b92d871cde346b63e5019/resource/thumbnails/312/312.96x96.png" ]
            /// </summary>
            [JsonProperty("thumbnails")]
            public string[] Thumbnails { get; set; }
    
            [JsonProperty("viewPoint")]
            public ViewPoint ViewPoint { get; set; }
    
            [JsonProperty("viewType")]
            public string ViewType { get; set; }
    
            /// <summary>返回表示当前对象的字符串。</summary>
            /// <returns>表示当前对象的字符串。</returns>
            public override string ToString()
            {
                return string.Format("[cropBox={0}, elevation={1}, width={2}, Id={2}, levelId={3}, Outline={4}, preview={5}, thumbnails={6}, viewPoint={7}, viewType={8}]",
                                     CropBox.ToStringWith(","), Elevation, Id, LevelId, Outline.ToStringWith(","), Preview, Thumbnails.ToStringWith(","), ViewPoint, ViewType);
            }
        }

    其中引用的 Preview 类

        [Serializable]
        public class Preview
        {
            /// <summary>
            /// 样例:0
            /// </summary>
            [JsonProperty("height")]
            public int? Height { get; set; }
    
            [JsonProperty("path")]
            public string Path { get; set; }
    
            /// <summary>
            /// 样例:0
            /// </summary>
            [JsonProperty("width")]
            public int? Width { get; set; }
    
            /// <summary>返回表示当前对象的字符串。</summary>
            /// <returns>表示当前对象的字符串。</returns>
            public override string ToString()
            {
                return string.Format("[height={0}, path={1}, width={2}]",
                                     Height, Path, Width);
            }
        }

    ViewPoint 类

        [Serializable]
        public class ViewPoint
        {
            /// <summary>
            ///  样例 : [ 0.0 ]
            /// </summary>
            [JsonProperty("origin")]
            public double?[] Origin { get; set; }
    
            /// <summary>
            ///  样例 : [ 0.0 ]
            /// </summary>
            [JsonProperty("rightDirection")]
            public double?[] RightDirection { get; set; }
    
            /// <summary>
            ///  样例 : [ 0.0 ]
            /// </summary>
            [JsonProperty("scale")]
            public int? Scale { get; set; }
    
            /// <summary>
            ///  样例 : [ 0.0 ]
            /// </summary>
            [JsonProperty("upDirection")]
            public double?[] UpDirection { get; set; }
    
            /// <summary>
            ///  样例 : [ 0.0 ]
            /// </summary>
            [JsonProperty("viewDirection")]
            public double?[] ViewDirection { get; set; }
    
            /// <summary>返回表示当前对象的字符串。</summary>
            /// <returns>表示当前对象的字符串。</returns>
            public override string ToString()
            {
                return String.Format("[origin={0}, rightDirection={1}, scale={2}, upDirection={3}, viewDirection={4}]",
                                     Origin.ToStringWith(","), RightDirection.ToStringWith(","), Scale, UpDirection.ToStringWith(","),
                                     ViewDirection.ToStringWith(","));
            }
        }

    C#实现方法:

     1 /// <summary>
     2 ///  获取三维视点或二维视图列表
     3 /// </summary>
     4 /// <param name="accessToken">【必填】令牌</param>
     5 /// <param name="fileId">【必填】代表该单模型的文件ID</param>
     6 /// <returns></returns>
     7 public virtual SingleModelViews GetSingleModelViews(string accessToken, long fileId)
     8 {
     9     // GET https://api.bimface.com/data/v2/files/{fileId}/views
    10     string url = string.Format(BimfaceConstants.API_HOST + "/data/v2/files/{0}/views", fileId);
    11 
    12     BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
    13     headers.AddOAuth2Header(accessToken);
    14 
    15     try
    16     {
    17         SingleModelViews 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<SingleModelViews>();
    24         }
    25         else
    26         {
    27             response = new SingleModelViews
    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的控制台中可以看到我们上传的文件列表,模型状态均为转换成功。

    使用“bimface_2018_mdv_room.rvt”为例测试上述方法。

     完整的视图列表为

    success
    
    [fileId=, 
     portAndViews=, 
     viewInfo=[cropBox=-30479.998046875,-30479.998046875,-304800,30479.998046875,30479.998046875,-30.4799995422363, 
               elevation=0, 
               width=382617, 
               Id=382617, 
               levelId=, 
               Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, 
               preview=[height=724, 
                        path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/382617/382617.png, 
                        width=1024
                       ], 
               thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/382617/382617.96x96.png, 
               viewPoint=[origin=0,0,0, 
                          rightDirection=1,0,0, 
                          scale=1, 
                          upDirection=0,1,0, 
                          viewDirection=0,0,1
                         ], 
               viewType=DrawingSheet
              ]
    ]
    
    [fileId=, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-304800,30479.998046875,30479.998046875,-30.4799995422363, elevation=0, width=503701, Id=503701, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=724, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/503701/503701.png, width=1024], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/503701/503701.96x96.png, viewPoint=[origin=0,0,0, rightDirection=1,0,0, scale=1, upDirection=0,1,0, viewDirection=0,0,1], viewType=DrawingSheet]]
    
    [fileId
    =, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-304800,30479.998046875,30479.998046875,-30.4799995422363, elevation=0, width=958184, Id=958184, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=724, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/958184/958184.png, width=1024], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/958184/958184.96x96.png, viewPoint=[origin=0,0,0, rightDirection=1,0,0, scale=1, upDirection=0,1,0, viewDirection=0,0,1], viewType=DrawingSheet]]
    [fileId
    =, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-304800,30479.998046875,30479.998046875,-30.4799995422363, elevation=0, width=958251, Id=958251, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=724, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/958251/958251.png, width=1024], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/958251/958251.96x96.png, viewPoint=[origin=0,0,0, rightDirection=1,0,0, scale=1, upDirection=0,1,0, viewDirection=0,0,1], viewType=DrawingSheet]]
    [fileId
    =, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-304800,30479.998046875,30479.998046875,-30.4799995422363, elevation=0, width=959135, Id=959135, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=724, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/959135/959135.png, width=1024], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/959135/959135.96x96.png, viewPoint=[origin=0,0,0, rightDirection=1,0,0, scale=1, upDirection=0,1,0, viewDirection=0,0,1], viewType=DrawingSheet]]
    [fileId
    =, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-304800,30479.998046875,30479.998046875,-30.4799995422363, elevation=0, width=959510, Id=959510, levelId=, Outline=2.49999989974552,-73.1185993073838,842.499966258321,592.999976250742, preview=[height=812, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/959510/959510.png, width=1024], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/959510/959510.96x96.png, viewPoint=[origin=0,0,0, rightDirection=1,0,0, scale=1, upDirection=0,1,0, viewDirection=0,0,1], viewType=DrawingSheet]]
    [fileId
    =, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-304800,30479.998046875,30479.998046875,-30.4799995422363, elevation=0, width=1080884, Id=1080884, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=724, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/1080884/1080884.png, width=1024], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/1080884/1080884.96x96.png, viewPoint=[origin=0,0,0, rightDirection=1,0,0, scale=1, upDirection=0,1,0, viewDirection=0,0,1], viewType=DrawingSheet]]
    [fileId
    =, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-304800,30479.998046875,30479.998046875,-30.4799995422363, elevation=0, width=1081048, Id=1081048, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=724, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/1081048/1081048.png, width=1024], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/1081048/1081048.96x96.png, viewPoint=[origin=0,0,0, rightDirection=1,0,0, scale=1, upDirection=0,1,0, viewDirection=0,0,1], viewType=DrawingSheet]]
    [fileId
    =, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-304800,30479.998046875,30479.998046875,-30.4799995422363, elevation=0, width=1081066, Id=1081066, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=724, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/1081066/1081066.png, width=1024], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails/1081066/1081066.96x96.png, viewPoint=[origin=0,0,0, rightDirection=1,0,0, scale=1, upDirection=0,1,0, viewDirection=0,0,1], viewType=DrawingSheet]]

    测试代码如下:

    // 获取三维视点或二维视图列表
    protected void btnGetSingleModelViews_Click(object sender, EventArgs e)
    {
        long fileId = txtFileID.Text.Trim().ToLong();
        FileConvertApi api = new FileConvertApi();
        SingleModelViews response = api.GetSingleModelViews(txtAccessToken.Text, fileId);
    
        txtResult.Text = response.Code.ToString2()
                       + Environment.NewLine
                       + response.Message.ToString2()
                       + Environment.NewLine
                       + response.Data.ToStringLine();
    }
     
  • 相关阅读:
    NVIDIA Jetson TX2刷机
    安装python2和3在centos7里面的问题
    js和DOM结合实现评论功能 (可以添加,删除)
    js实现计时
    js获取星期日期
    js登录界面演示
    下拉列表演示
    html表单练习
    一个底层w32汇编的小例子,演示 原创
    invoke和call的区别
  • 原文地址:https://www.cnblogs.com/SavionZhang/p/11493866.html
Copyright © 2020-2023  润新知