C#开发BIMFACE系列24 服务端API之获取模型数据9:获取单个房间信息
大厦建筑模型中,基本上包含多个楼层,每个楼层包含多个房间等信息。在《C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模型的楼层信息》中介绍了如何获取一个模型中包含的楼层信息、面积分区、房间等信息。本篇主要介绍如何获取单个模型中单个房间信息。
请求地址:GET https://api.bimface.com/data/v2/files/{fileId}/rooms/{roomId}
说明:获取单个模型种单个房间信息
参数:
请求 path(示例):https://api.bimface.com/data/v2/files/1211223382064960/rooms/857279
请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"
HTTP响应示例(200):
{
"code" : "success",
"data" : {
"area" : 7.256476003661832E7,
"bboxMax" : {
"x" : -4938.068482562385,
"y" : -3201.59397858169,
"z" : 0.0
},
"bboxMin" : {
"x" : -4938.068482562385,
"y" : -3201.59397858169,
"z" : 0.0
},
"boundary" : "",
"id" : "",
"levelId" : "",
"maxPt" : {
"x" : -4938.068482562385,
"y" : -3201.59397858169,
"z" : 0.0
},
"minPt" : {
"x" : -4938.068482562385,
"y" : -3201.59397858169,
"z" : 0.0
},
"name" : "dining room 4",
"perimeter" : 40087.80000000279,
"properties" : [ {
"group" : "dimension",
"items" : [ {
"code" : "perimeter",
"extension" : "object",
"key" : "perimeter",
"orderNumber" : ,
"unit" : "mm",
"value" : ,
"valueType" :
} ]
} ]
},
"message" : ""
}
该返回结果的结构比较复杂。在文章最后会给出对应封装成的C#类。
C#实现方法:
/// <summary>
/// 获取单个模型中单个楼层信息
/// </summary>
/// <param name="accessToken">【必填】令牌</param>
/// <param name="fileId">【必填】代表该单模型的文件ID</param>
/// <param name="roomId">【必填】房间ID</param>
/// <returns></returns>
public virtual SingleModelSingleRoom GetSingleModelSingleRoom(string accessToken, long fileId, string roomId)
{
// GET https://api.bimface.com/data/v2/files/{fileId}/rooms/{roomId}
string url = string.Format(BimfaceConstants.API_HOST + "/data/v2/files/{0}/rooms/{1}", fileId, roomId); BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
headers.AddOAuth2Header(accessToken); try
{
SingleModelSingleRoom response; HttpManager httpManager = new HttpManager(headers);
HttpResult httpResult = httpManager.Get(url);
if (httpResult.Status == HttpResult.STATUS_SUCCESS)
{
response = httpResult.Text.DeserializeJsonToObject<SingleModelSingleRoom>();
}
else
{
response = new SingleModelSingleRoom
{
Message = httpResult.RefText
};
} return response;
}
catch (Exception ex)
{
throw new Exception("[获取单个房间信息]发生异常!", ex);
}
}
其中调用到的 httpManager.Get() 方法,请参考《C# HTTP系列》
在BIMFACE的控制台中可以看到以下文件列表。模型状态均为转换成功。
以“Revit案例项目改.0001.rvt”为例测试上述的方法。
在《C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模型的楼层信息》中查询返回的结果中包含 RoomId
以 RoomID 为 857552 为例来查询该房间的详细信息
完整的房间信息如下:
success [area=70319994.3674652,
bboxMax=[x=13061.9309943162, y=-3481.59383914623, z=2199.99991189159],
bboxMin=[x=7061.93123461209, y=-15201.5933697684, z=],
boundary={"version":"2.0","loops":[[[{"z":0.0,"y":-15201.593978581839,"x":13061.931517437606},
{"z":0.0,"y":-3481.5939785817081,"x":13061.931517437624}
],
[{"z":0.0,"y":-3481.5939785817077,"x":13061.931517437624},
{"z":0.0,"y":-3481.5939785816972,"x":10001.931517437628}
],
[{"z":0.0,"y":-3481.5939785816972,"x":10001.931517437628},
{"z":0.0,"y":-3481.5939785816904,"x":7726.6267896735426}
],
[{"z":0.0,"y":-3481.5939785816904,"x":7726.6267896735426},
{"z":0.0,"y":-3481.59397858169,"x":7558.3362452017109}
],
[{"z":0.0,"y":-3481.59397858169,"x":7558.3362452017109},
{"z":0.0,"y":-3481.5939785816881,"x":7061.9315174376252}
],
[{"z":0.0,"y":-3481.5939785816881,"x":7061.9315174376252},
{"z":0.0,"y":-15201.593978581817,"x":7061.9315174376061}
],
[{"z":0.0,"y":-15201.593978581821,"x":7061.9315174376061},
{"z":0.0,"y":-15201.593978581839,"x":13061.931517437606}
]
]
]
},
id=,
levelId=,
maxPt=[x=13061.9309943162, y=-3481.59383914623, z=],
minPt=[x=7061.93123461209, y=-15201.5933697684, z=],
name=Living ,
perimeter=35579.9985750456,
properties=[group=尺寸标注,
items=[code=, extension=, key=体积, orderNumber=,unit=m³,value=154.70,valueType=]
[code=, extension=, key=周长, orderNumber=,unit=mm,value=,valueType=]
[code=, extension=, key=房间标示高度, orderNumber=,unit=mm,value=,valueType=]
[code=, extension=, key=计算高度, orderNumber=,unit=mm,value=,valueType=]
[code=, extension=, key=面积, orderNumber=,unit=m²,value=,valueType=]
]
[group=标识数据,
items=[code=, extension=, key=Occupant, orderNumber=,unit=,value=,valueType=]
[code=, extension=, key=占用, orderNumber=,unit=,value=,valueType=]
[code=, extension=, key=名称, orderNumber=,unit=,value=Living,valueType=]
[code=, extension=, key=图像, orderNumber=,unit=,value=,valueType=]
[code=, extension=, key=基面面层, orderNumber=,unit=,value=,valueType=]
[code=, extension=, key=墙面面层, orderNumber=,unit=,value=,valueType=]
[code=, extension=, key=天花板面层, orderNumber=,unit=,value=,valueType=]
[code=, extension=, key=楼板面层, orderNumber=,unit=,value=,valueType=]
[code=, extension=, key=注释, orderNumber=,unit=,value=,valueType=]
[code=, extension=, key=编号, orderNumber=,unit=,value=,valueType=]
[code=, extension=, key=部门, orderNumber=,unit=,value=,valueType=]
]
[group=阶段化,
items=[code=, extension=, key=相位, orderNumber=,unit=,value=Working Drawings,valueType=]
]
[group=限制条件,
items=[code=, extension=, key=上限, orderNumber=,unit=,value=Level ,valueType=]
[code=, extension=, key=底部偏移, orderNumber=,unit=mm,value=,valueType=]
[code=, extension=, key=标高, orderNumber=,unit=,value=Level ,valueType=]
[code=, extension=, key=高度偏移, orderNumber=,unit=mm,value=,valueType=]
]
]
测试代码如下:
// 获取单个房间信息
protected void btnGetSingleModelSingleRoom_Click(object sender, EventArgs e)
{
long fileId = txtFileID.Text.Trim().ToLong();
string roomId = txtRoomId.Text.Trim();
FileConvertApi api = new FileConvertApi();
SingleModelSingleRoom response = api.GetSingleModelSingleRoom(txtAccessToken.Text, fileId, roomId); txtResult.Text = response.Code.ToString2()
+ Environment.NewLine
+ response.Message.ToString2()
+ Environment.NewLine
+ response.Data;
}
该接口返回的响应信息,封装成对应的C# SingleModelSingleRoom 类:
/// <summary>
/// 获取单个模型单个房间信息返回的结果类
/// </summary>
public class SingleModelSingleRoom : GeneralResponse<Room>
{ }
Room 类如下:
/// <summary>
/// 模型的房间信息
/// </summary>
[Serializable]
public class Room
{
/// <summary>
/// 样例 : 7.256476003661832E7
/// </summary>
[JsonProperty("area")]
public double? Area { get; set; } [JsonProperty("bboxMax")]
public Coordinate BboxMax { get; set; } [JsonProperty("bboxMin")]
public Coordinate BboxMin { get; set; } /// <summary>
/// 边界
/// </summary>
[JsonProperty("boundary")]
public string Boundary { get; set; } /// <summary>
/// 编号
/// </summary>
[JsonProperty("id")]
public string Id { get; set; } /// <summary>
/// 水平线编号
/// </summary>
[JsonProperty("levelId")]
public string LevelId { get; set; } [JsonProperty("maxPt")]
public Coordinate MaxPt { get; set; } [JsonProperty("minPt")]
public Coordinate MinPt { get; set; } /// <summary>
/// 对象名称。例如:"dining room 4"
/// </summary>
[JsonProperty("name")]
public string Name { get; set; } /// <summary>
/// 样例 : 40087.80000000279
/// </summary>
[JsonProperty("perimeter")]
public double? Perimeter { get; set; } [JsonProperty("properties")]
public PropertyGroup[] Properties { get; set; } /// <summary>返回表示当前对象的字符串。</summary>
/// <returns>表示当前对象的字符串。</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
if (Properties != null && Properties.Length > )
{
foreach (var property in Properties)
{
sb.AppendLine(property.ToString());
}
} return string.Format("[area={0}, bboxMax={1}, bboxMin={2}, boundary={3}, id={4}, levelId={5}, maxPt={6}, minPt={7}, name={8}, perimeter={9}, properties={10}]",
Area, BboxMax, BboxMin, Boundary, Id, LevelId, MaxPt, MinPt, Name, Perimeter, sb);
}
}
其中 Coordinate 、PropertyGroup 类请参考《C#开发BIMFACE系列17 服务端API之获取模型数据2:获取构件材质列表》。
C#开发BIMFACE系列24 服务端API之获取模型数据9:获取单个房间信息的更多相关文章
- 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提供了丰富的文件相关的接口. ...
随机推荐
- PythonDay04
## 第四章 ### 今日内容 - 列表- 元组- range ### 列表 列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,是一种可变的数据类型 64位python的限制是 11 ...
- ASP.NET Core Web API 跨域(CORS) Cookie问题
身为一个Web API,处理来自跨域不同源的请求,是一件十分合理的事情. 先上已有的文章,快速复制粘贴,启用CORS: Microsoft:启用 ASP.NET Core 中的跨域请求 (CORS) ...
- ibatis 核心原理解析
最近查找一个生产问题的原因,需要深入研究 ibatis 框架的源码.虽然最后证明问题的原因与 ibatis 无关,但是这个过程加深了对 ibatis 框架原理的理解. 这篇文章主要就来讲讲 ibati ...
- 原 CNN--卷积神经网络从R-CNN到Faster R-CNN的理解(CIFAR10分类代码)
1. 什么是CNN 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Netwo ...
- Vue系列:.sync 修饰符的作用及使用范例
作用:对传递给子组件的 prop 数据进行“双向绑定”.(正常情况下,prop 的数据都是单向数据流) 代码参考如下: 父组件部分 子组件部分
- Jersey用户指南学习笔记1
Jersey用户指南是Jersey的官方文档, 英文原版在这:https://jersey.github.io/documentation/latest/index.html 中文翻译版在这:http ...
- python 列表的增删改查
列表 有序可变的,索引 作用:存储数据的,支持很多种数据类型 定义方式: lst = [1,"alex",True,('a','b')]增 append() # 追加 extend ...
- MapReduce on Yarn运行原理
一.概念综述 MapReduce是一种可用于数据处理的编程模型(或计算模型),该模型可以比较简单,但想写出有用的程序却不太容易.MapReduce能将大型数据处理任务分解成很多单个的.可以在服务器集群 ...
- ASP.NET Core MVC 之依赖注入 Controller
ASP.NET Core MVC 控制器应通过构造函数明确地请求它们地依赖关系,在某些情况下,单个控制器地操作可能需要一个服务,在控制器级别上的请求可能没有意义.在这种情况下,也可以将服务作为 Ac ...
- 面试java后端面经_1
1 自我介绍(建议提前准备:没准备的可以这样说:来自某学校 姓名 专业 学的啥 为啥学 自己陆陆续续开发的项目 毕业将近 找工作 在哪看到贵公司的招聘 准备了啥 大概这样) 例子:您好!我是来自XXX ...