C#开发BIMFACE系列25 服务端API之获取模型数据10:获取楼层对应面积分区列表
在《C#开发BIMFACE系列22 服务端API之获取模型数据7:获取多个模型的楼层信息》中,返回的楼层信息结果中包含了楼层的具体信息,其中包含楼层ID。

一个楼层中可能包含多个面积分区,本文介绍如何获取楼层对应面积分区列表。
请求地址:GET https://api.bimface.com/data/v2/files/{fileId}/areas
说明:获取单个模型中单个楼层对应的分区列表。
参数:

请求 path(示例):https://api.bimface.com/data/v2/files/1211223382064960/areas?floorId=311
请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"
HTTP响应示例(200):
{
"code" : "success",
"data" : [ {
"area" : 5.168684733047761E7,
"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" : 28802.013920728663,
"properties" : [ {
"group" : "dimension",
"items" : [ {
"code" : "perimeter",
"extension" : "object",
"key" : "perimeter",
"orderNumber" : ,
"unit" : "mm",
"value" : ,
"valueType" :
} ]
} ],
"viewName" : "1 1"
} ],
"message" : ""
}
封装成对应的C#类:
/// <summary>
/// 获取单个模型种单个楼层对应面积分区列表的返回结果类
/// </summary>
public class SingleModelSingleFloorAreas : GeneralResponse<List<Area>>
{ }
其中 Area 类定义为
/// <summary>
/// 楼层区域信息
/// </summary>
[Serializable]
public class Area
{
/// <summary>
/// 样例 : 7.256476003661832E7
/// </summary>
[JsonProperty("area")]
public double? AreaValue { 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>
/// 样例 : "1 1"
/// </summary>
[JsonProperty("viewName")]
public string ViewName { 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}, boundary={1}, id={2}, levelId={3}, maxPt={4}, minPt={5}, name={6}, perimeter={7}, properties={8}, viewName={9}]",
AreaValue, Boundary, Id, LevelId, MaxPt, MinPt, Name, Perimeter, sb, ViewName);
}
}
其中 Coordinate 、PropertyGroup 类请参考《C#开发BIMFACE系列17 服务端API之获取模型数据2:获取构件材质列表》。
C#实现方法:
/// <summary>
/// 获取单个模型中单个楼层对应面积分区列表
/// </summary>
/// <param name="accessToken">【必填】令牌</param>
/// <param name="fileId">【必填】代表该单模型的文件ID</param>
/// <param name="floorId">【必填】代表该单模型的楼层ID</param>
/// <returns></returns>
public virtual SingleModelSingleFloorAreas GetSingleModelSingleFloorAreas(string accessToken, long fileId, string floorId)
{
// GET https://api.bimface.com/data/v2/files/{fileId}/areas
string url = string.Format(BimfaceConstants.API_HOST + "/data/v2/files/{0}/areas?floorId={1}", fileId, floorId); BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
headers.AddOAuth2Header(accessToken); try
{
SingleModelSingleFloorAreas response; HttpManager httpManager = new HttpManager(headers);
HttpResult httpResult = httpManager.Get(url);
if (httpResult.Status == HttpResult.STATUS_SUCCESS)
{
response = httpResult.Text.DeserializeJsonToObject<SingleModelSingleFloorAreas>();
}
else
{
response = new SingleModelSingleFloorAreas
{
Message = httpResult.RefText
};
} return response;
}
catch (Exception ex)
{
throw new Exception("[获取楼层对应面积分区列表]发生异常!", ex);
}
}
其中调用到的 httpManager.Get() 方法,请参考《C# HTTP系列》
在BIMFACE的控制台中可以看到我们上传的文件列表,模型状态均为转换成功。

使用“bimface_2018_mdv_room.rvt”为例测试上述方法。
在《C#开发BIMFACE系列22 服务端API之获取模型数据7:获取多个模型的楼层信息》中可以查询到该文件的楼层信息

下面查询 FloorID 等于 245423 的面积分区列表

查询到的完整的面积分区列表为
success [area=4480840.0410909,
boundary={"version":"2.0",
"loops":[[[{"z":2999.9998798520546,"y":650.40599536995444,"x":6616.83125243813},
{"z":2999.9998798520546,"y":650.40599536996251,"x":4121.9313523570981}
],
[{"z":2999.9998798520546,"y":650.40599536996251,"x":4121.9313523570981},
{"z":2999.9998798520546,"y":-1145.5939327014466,"x":4121.9313523570954}
],
[{"z":2999.9998798520546,"y":-1145.5939327014466,"x":4121.9313523570945},
{"z":2999.9998798520546,"y":-1145.5939327014546,"x":6616.8312524381263}
],
[{"z":2999.9998798520546,"y":-1145.5939327014546,"x":6616.8312524381263},
{"z":2999.9998798520546,"y":650.40599536995444,"x":6616.83125243813}
]
]
]
},
id=,
levelId=,
maxPt=[x=6616.83125243813, y=650.405995369963, z=2999.99987985205],
minPt=[x=4121.93135235709, y=-1145.59393270145, z=2999.99987985205],
name=面积 , perimeter=8101.79967552855, properties=, viewName=
]
[area=4333552.00744229,
boundary={"version":"2.0",
"loops":[[[{"z":2999.9998798520546,"y":-3201.5938503598827,"x":4505.6454184675295},
{"z":2999.9998798520546,"y":-3201.5938503598904,"x":7001.9312370150637}
],
[{"z":2999.9998798520546,"y":-3302.5938463149096,"x":7001.9312370150637},
{"z":2999.9998798520546,"y":-1465.5939198856749,"x":7001.9312370150674}
],
[{"z":2999.9998798520546,"y":-1465.5939198856749,"x":7001.9312370150665},
{"z":2999.9998798520546,"y":-1465.5939198856668,"x":4505.6454184675331}
],
[{"z":2999.9998798520546,"y":-1465.5939198856677,"x":4505.6454184675331},
{"z":2999.9998798520546,"y":-3302.5938463149018,"x":4505.64541846753}
]
]
]
},
id=,
levelId=,
maxPt=[x=7001.93123701507, y=-1465.59391988567, z=2999.99987985205],
minPt=[x=4505.64541846753, y=-3302.59384631491, z=2999.99987985205],
name=面积 ,
perimeter=8104.57151246125,
properties=,
viewName=
]
测试代码如下:
// 获取楼层对应面积分区列表
protected void btnGetSingleModelSingleFloorAreas_Click(object sender, EventArgs e)
{
long fileId = txtFileID.Text.Trim().ToLong();
string floorId = txtFloorId.Text.Trim();
FileConvertApi api = new FileConvertApi();
SingleModelSingleFloorAreas response = api.GetSingleModelSingleFloorAreas(txtAccessToken.Text, fileId, floorId); txtResult.Text = response.Code.ToString2()
+ Environment.NewLine
+ response.Message.ToString2()
+ Environment.NewLine
+ response.Data.ToStringLine();
}
C#开发BIMFACE系列25 服务端API之获取模型数据10:获取楼层对应面积分区列表的更多相关文章
- C#开发BIMFACE系列45 服务端API之创建离线数据包
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] BIMFACE的常规应用方式有公有云与私有化部署两种方式,并且浏览模型或者图纸需要使用ViewToken,ViewToke ...
- C#开发BIMFACE系列26 服务端API之获取模型数据11:获取单个面积分区信息
系列目录 [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列25 服务端API之获取模型数据9:获取楼层对应面积分区列表>一文中介绍了如何获取单个模型中单个楼层包 ...
- C#开发BIMFACE系列46 服务端API之离线数据包下载及结构详解
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在前一篇博客<C#开发BIMFACE系列45 服务端API之创建离线数据包>中通过调用接口成功的创建一个离线数 ...
- C#开发BIMFACE系列6 服务端API之获取文件信息
在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务 ...
- C#开发BIMFACE系列4 服务端API之源上传文件
在注册成为BIMFACE的应用开发者后,要能在浏览器里浏览你的模型或者获取你模型内的BIM数据, 首先需要把你的模型文件上传到BIMFACE.根据不同场景,BIMFACE提供了丰富的文件相关的接口. ...
- C#开发BIMFACE系列7 服务端API之获取文件信息列表
系列目录 [已更新最新开发文章,点击查看详细] 本文详细介绍如何获取BIMFACE平台中所有上传过的文件信息列表. 请求地址:GET https://file.bimface.com/file ...
- C#开发BIMFACE系列40 服务端API之模型集成
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 随着建筑信息化模型技术的发展,越来越多的人选择在云端浏览建筑模型.现阶段的云端模型浏览大多是基于文件级别,一次只可以浏览一 ...
- C#开发BIMFACE系列41 服务端API之模型对比
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在建筑施工图审查系统中,设计单位提交设计完成的模型/图纸,审查专家审查模型/图纸.审查过程中如果发现不符合规范的地方,则流 ...
- C#开发BIMFACE系列42 服务端API之图纸对比
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在我的前一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>中详细介绍了BIMFACE服务端接口 ...
随机推荐
- Spring aop 影响本地事务的回滚总结
1 @Before 不会,因为还没执行到service的业务逻辑 2 @ After 默认情况下,报错会影响事务回滚., 当设置@Order属性并设置值优先级大小, 即使报错也不会回滚了 ...
- java-极光推送教程
一.准备工作: 1.访问极光推送官网:https://www.jiguang.cn/accounts/login/form 2.注册登陆,拿到appKey和masterSecret 3.创建一个应用, ...
- MyEclipse下安装FreeMark插件
现在大多人人喜欢用FreeMark模板.但是这个模板在myeclipse或者是eclipse下却是不能只能提示,一大堆只是没有颜色区分的显示在哪里.万能天国总是有办法. 点我去官网下载(比较慢) 我的 ...
- 重读《学习JavaScript数据结构与算法-第三版》- 第3章 数组(一)
定场诗 大将生来胆气豪,腰横秋水雁翎刀. 风吹鼍鼓山河动,电闪旌旗日月高. 天上麒麟原有种,穴中蝼蚁岂能逃. 太平待诏归来日,朕与先生解战袍. 此处应该有掌声... 前言 读<学习JavaScr ...
- JS扫雷小游戏
HTML代码 <title> 扫雷 </title> <!-- ondragstart:防拖拽生成新页面 oncontextmenu:屏蔽右键菜单--> <b ...
- Git简易使用教程
1.Git 安装 2.设置git登录信息 3.git操作命令 4.提交代码的过程中几个命令的顺序 5.git 学习资料. 1.Git 安装 Git 下载地址:https://git-scm.com/d ...
- spring boot 打 war包
spring boot .spring cloud打 war包,并发布到tomcat中运行 1.pom文件修改 <packaging>war</packaging> 2.< ...
- thinkPhP 引入Smarty模板引擎及配置
做配置: TMPL_ENGINE_TYPE = “Smarty” 给smarty做配置: TMPL_ENGINE_CONFIG = array( 左标记, 右标记, )
- 从0到1发布一个npm包
从0到1发布一个npm包 author: @TiffanysBear 最近在项目业务中有遇到一些问题,一些通用的方法或者封装的模块在PC.WAP甚至是APP中都需要使用,但是对于业务的PC.WAP.A ...
- Mybatis mapper动态代理的原理详解
在开始动态代理的原理讲解以前,我们先看一下集成mybatis以后dao层不使用动态代理以及使用动态代理的两种实现方式,通过对比我们自己实现dao层接口以及mybatis动态代理可以更加直观的展现出my ...