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" : "",
"levelId" : "",
"name" : "Level 1",
"outline" : [ -146.52900292249365, -215.01048476685295, 240.3331231070219, 110.78415780710446 ],
"preview" : {
"height" : ,
"path" : "path",
"width" :
},
"thumbnails" : [ "m.bimface.com/9b711803a43b92d871cde346b63e5019/resource/thumbnails/312/312.96x96.png" ],
"viewPoint" : {
"origin" : [ 0.0 ],
"rightDirection" : [ 0.0 ],
"scale" : ,
"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#实现方法:
/// <summary>
/// 获取三维视点或二维视图列表
/// </summary>
/// <param name="accessToken">【必填】令牌</param>
/// <param name="fileId">【必填】代表该单模型的文件ID</param>
/// <returns></returns>
public virtual SingleModelViews GetSingleModelViews(string accessToken, long fileId)
{
// GET https://api.bimface.com/data/v2/files/{fileId}/views
string url = string.Format(BimfaceConstants.API_HOST + "/data/v2/files/{0}/views", fileId); BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
headers.AddOAuth2Header(accessToken); try
{
SingleModelViews response; HttpManager httpManager = new HttpManager(headers);
HttpResult httpResult = httpManager.Get(url);
if (httpResult.Status == HttpResult.STATUS_SUCCESS)
{
response = httpResult.Text.DeserializeJsonToObject<SingleModelViews>();
}
else
{
response = new SingleModelViews
{
Message = httpResult.RefText
};
} return response;
}
catch (Exception ex)
{
throw new Exception("[获取楼层对应面积分区列表]发生异常!", ex);
}
}
其中调用到的 httpManager.Get() 方法,请参考《C# HTTP系列》
在BIMFACE的控制台中可以看到我们上传的文件列表,模型状态均为转换成功。
使用“bimface_2018_mdv_room.rvt”为例测试上述方法。
完整的视图列表为
success [fileId=,
portAndViews=,
viewInfo=[cropBox=-30479.998046875,-30479.998046875,-,30479.998046875,30479.998046875,-30.4799995422363,
elevation=,
width=,
Id=,
levelId=,
Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742,
preview=[height=,
path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.png,
width=
],
thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.96x96.png,
viewPoint=[origin=,,,
rightDirection=,,,
scale=,
upDirection=,,,
viewDirection=,,
],
viewType=DrawingSheet
]
] [fileId=, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-,30479.998046875,30479.998046875,-30.4799995422363, elevation=, width=, Id=, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.png, width=], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.96x96.png, viewPoint=[origin=,,, rightDirection=,,, scale=, upDirection=,,, viewDirection=,,], viewType=DrawingSheet]]
[fileId=, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-,30479.998046875,30479.998046875,-30.4799995422363, elevation=, width=, Id=, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.png, width=], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.96x96.png, viewPoint=[origin=,,, rightDirection=,,, scale=, upDirection=,,, viewDirection=,,], viewType=DrawingSheet]]
[fileId=, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-,30479.998046875,30479.998046875,-30.4799995422363, elevation=, width=, Id=, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.png, width=], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.96x96.png, viewPoint=[origin=,,, rightDirection=,,, scale=, upDirection=,,, viewDirection=,,], viewType=DrawingSheet]]
[fileId=, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-,30479.998046875,30479.998046875,-30.4799995422363, elevation=, width=, Id=, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.png, width=], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.96x96.png, viewPoint=[origin=,,, rightDirection=,,, scale=, upDirection=,,, viewDirection=,,], viewType=DrawingSheet]]
[fileId=, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-,30479.998046875,30479.998046875,-30.4799995422363, elevation=, width=, Id=, levelId=, Outline=2.49999989974552,-73.1185993073838,842.499966258321,592.999976250742, preview=[height=, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.png, width=], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.96x96.png, viewPoint=[origin=,,, rightDirection=,,, scale=, upDirection=,,, viewDirection=,,], viewType=DrawingSheet]]
[fileId=, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-,30479.998046875,30479.998046875,-30.4799995422363, elevation=, width=, Id=, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.png, width=], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.96x96.png, viewPoint=[origin=,,, rightDirection=,,, scale=, upDirection=,,, viewDirection=,,], viewType=DrawingSheet]]
[fileId=, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-,30479.998046875,30479.998046875,-30.4799995422363, elevation=, width=, Id=, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.png, width=], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.96x96.png, viewPoint=[origin=,,, rightDirection=,,, scale=, upDirection=,,, viewDirection=,,], viewType=DrawingSheet]]
[fileId=, portAndViews=, viewInfo=[cropBox=-30479.998046875,-30479.998046875,-,30479.998046875,30479.998046875,-30.4799995422363, elevation=, width=, Id=, levelId=, Outline=2.49999989974552,-0.999999959964061,842.499966258321,592.999976250742, preview=[height=, path=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.png, width=], thumbnails=m.bimface.com/6bd2057ac6d8072ad03758b0b34e205d/resource/thumbnails//.96x96.png, viewPoint=[origin=,,, rightDirection=,,, scale=, upDirection=,,, viewDirection=,,], 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();
}
C#开发BIMFACE系列28 服务端API之获取模型数据13:获取三维视点或二维视图列表的更多相关文章
- C#开发BIMFACE系列45 服务端API之创建离线数据包
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] BIMFACE的常规应用方式有公有云与私有化部署两种方式,并且浏览模型或者图纸需要使用ViewToken,ViewToke ...
- C#开发BIMFACE系列46 服务端API之离线数据包下载及结构详解
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在前一篇博客<C#开发BIMFACE系列45 服务端API之创建离线数据包>中通过调用接口成功的创建一个离线数 ...
- C#开发BIMFACE系列40 服务端API之模型集成
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 随着建筑信息化模型技术的发展,越来越多的人选择在云端浏览建筑模型.现阶段的云端模型浏览大多是基于文件级别,一次只可以浏览一 ...
- C#开发BIMFACE系列41 服务端API之模型对比
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在建筑施工图审查系统中,设计单位提交设计完成的模型/图纸,审查专家审查模型/图纸.审查过程中如果发现不符合规范的地方,则流 ...
- C#开发BIMFACE系列42 服务端API之图纸对比
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在我的前一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>中详细介绍了BIMFACE服务端接口 ...
- C#开发BIMFACE系列43 服务端API之图纸拆分
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在上一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>的最后留了一个问题,在常规业务场景下,一 ...
- C#开发BIMFACE系列44 服务端API之计算图纸对比差异项来源自哪个图框
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在前两篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>.<C#开发BIMFACE系列43 ...
- C#开发BIMFACE系列6 服务端API之获取文件信息
在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务 ...
- C#开发BIMFACE系列4 服务端API之源上传文件
在注册成为BIMFACE的应用开发者后,要能在浏览器里浏览你的模型或者获取你模型内的BIM数据, 首先需要把你的模型文件上传到BIMFACE.根据不同场景,BIMFACE提供了丰富的文件相关的接口. ...
随机推荐
- CODING 2.0 企业级持续交付解决方案
"The key to DevOps transformation is that there is no end-state-we must continuously evolve.&qu ...
- 人体分析Demo-百度API
本示例是采用Delphi 7 调用百度人体分析API:首先说明一下,怎么创建测试应用. 1. 登录百度云官网 https://cloud.baidu.com/ 当然需要一个百度账号 2. 进入管理 ...
- 监控利器-Prometheus安装与部署+实现邮箱报警
Prometheus(普罗米修斯)监控 环境准备: 三台docker主机(centos7):docker01:172.16.1.30部署服务:Prometheus server,Grafana,Nod ...
- Python语法速查: 7. 函数基础
返回目录 (1)函数基本 ● 函数是第一类对象 Python中万物皆对象,所有对象都是第一类的(first class),函数也不例外,也是第一类对象.既然是对象,那就可以当作普通的对象数据处理,比如 ...
- 基于django的个人博客网站建立(五)
基于django的个人博客网站建立(五) 前言 网站效果可点击这里访问 之前鸽了两天,今天继续再写点 主要内容 今天加了个展示照片的功能,就叫他生活记录吧 先建表 class Record(model ...
- 十一、Powell算法(鲍威尔算法)原理以及实现
一.介绍 Powell算法是图像配准里面的常用的加速算法,可以加快搜索速度,而且对于低维函数的效果很好,所以本篇博客主要是为了介绍Powell算法的原理以及实现. 由于网上已经有了对于Powell算法 ...
- 【GUI】基于V7开发板的裸机和各种RTOS版本的emWin程序模板,支持硬件JPEG,已发布(2019-05-26)
说明: 1.MDK请使用5.26及其以上版本,IAR请使用8.30及其以上版本. 2.修正了ST提供的部分驱动设计不合理的地方. 3.原创实现硬件JPEG添加到emWin中,实现简单,全程使用SDRA ...
- 使用IntelliJ IDEA创建第一个Mawen项目
咳咳...首先各位在学习SSM框架的时候,单个单个学完之后,老夫掐指一算(其实,我是个小鲜肉),各位必定会去整合SSM,这个时候,老夫又掐指一算,各位必定会碰到个mawen的东西,在这里,我可以告诉各 ...
- VUE Base64编码图片展示与转换图片
图片的 base64 编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址,使用 base64 传输图片文件可以节省一个 http 请求,图片的 base64 编码可以算是前端优化的一 ...
- 使用Redis实现延时任务(二)
前提 前一篇文章通过Redis的有序集合Sorted Set和调度框架Quartz实例一版简单的延时任务,但是有两个相对重要的问题没有解决: 分片. 监控. 这篇文章的内容就是要完善这两个方面的功能. ...