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

  • 2019 年 10 月 5 日
  • 筆記

系列目录 【已更新最新开发文章,点击查看详细】

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

请求地址: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();  }

系列目录 【已更新最新开发文章,点击查看详细】