在《C#开发BIMFACE系列25 服务端API之获取模型数据9:获取楼层对应面积分区列表》一文中介绍了如何获取单个模型中单个楼层包含的面积分区列表。有了面积分区列表之后,即可查询单个面积分区的具体信息。

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

说明:获取单个模型中单个面积分区包含的信息

参数:

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

请求 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>
[Serializable]
public class SingleModelSingleArea : GeneralResponse<Area>
{ }

其中 Area 类,请参考《C#开发BIMFACE系列25 服务端API之获取模型数据10:获取楼层对应面积分区列表》。

C#实现方法:

 /// <summary>
/// 获取单个模型中单个面积分区信息
/// </summary>
/// <param name="accessToken">【必填】令牌</param>
/// <param name="fileId">【必填】代表该单模型的文件ID</param>
/// <param name="areaId">【必填】面积分区ID</param>
/// <returns></returns>
public virtual SingleModelSingleArea GetSingleModelSingleArea(string accessToken, long fileId, string areaId)
{
// GET https://api.bimface.com/data/v2/files/{fileId}/areas/{areaId}
string url = string.Format(BimfaceConstants.API_HOST + "/data/v2/files/{0}/areas/{1}", fileId, areaId); BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
headers.AddOAuth2Header(accessToken); try
{
SingleModelSingleArea response; HttpManager httpManager = new HttpManager(headers);
HttpResult httpResult = httpManager.Get(url);
if (httpResult.Status == HttpResult.STATUS_SUCCESS)
{
response = httpResult.Text.DeserializeJsonToObject<SingleModelSingleArea>();
}
else
{
response = new SingleModelSingleArea
{
Message = httpResult.RefText
};
} return response;
}
catch (Exception ex)
{
throw new Exception("[获取单个面积分区信息]发生异常!", ex);
}
}

其中调用到的 httpManager.Get() 方法,请参考《C# HTTP系列》

测试

在BIMFACE的控制台中可以看到我们上传的文件列表,模型状态均为转换成功。

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

在《C#开发BIMFACE系列25 服务端API之获取模型数据10:获取楼层对应面积分区列表》中返回了2个面积分区ID,分别是1092832与1092841。

1092841完整的面积分区信息如下:

success

[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=[group=其他,
items=[code=, extension=, key=面积类型, orderNumber=,unit=,value=建筑公共面积,valueType=]
]
[group=尺寸标注,
items=[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=名称, 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=Level ,valueType=]
],
viewName=
]

测试代码如下:

// 获取单个面积分区信息
protected void btnGetSingleModelSingleArea_Click(object sender, EventArgs e)
{
long fileId = txtFileID.Text.Trim().ToLong();
string areaId = txtAreaId.Text.Trim();
FileConvertApi api = new FileConvertApi();
SingleModelSingleArea response = api.GetSingleModelSingleArea(txtAccessToken.Text, fileId, areaId); txtResult.Text = response.Code.ToString2()
+ Environment.NewLine
+ response.Message.ToString2()
+ Environment.NewLine
+ response.Data;
}
 

C#开发BIMFACE系列26 服务端API之获取模型数据11:获取单个面积分区信息的更多相关文章

  1. C#开发BIMFACE系列45 服务端API之创建离线数据包

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] BIMFACE的常规应用方式有公有云与私有化部署两种方式,并且浏览模型或者图纸需要使用ViewToken,ViewToke ...

  2. C#开发BIMFACE系列46 服务端API之离线数据包下载及结构详解

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在前一篇博客<C#开发BIMFACE系列45 服务端API之创建离线数据包>中通过调用接口成功的创建一个离线数 ...

  3. C#开发BIMFACE系列40 服务端API之模型集成

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 随着建筑信息化模型技术的发展,越来越多的人选择在云端浏览建筑模型.现阶段的云端模型浏览大多是基于文件级别,一次只可以浏览一 ...

  4. C#开发BIMFACE系列41 服务端API之模型对比

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在建筑施工图审查系统中,设计单位提交设计完成的模型/图纸,审查专家审查模型/图纸.审查过程中如果发现不符合规范的地方,则流 ...

  5. C#开发BIMFACE系列42 服务端API之图纸对比

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在我的前一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>中详细介绍了BIMFACE服务端接口 ...

  6. C#开发BIMFACE系列43 服务端API之图纸拆分

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在上一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>的最后留了一个问题,在常规业务场景下,一 ...

  7. C#开发BIMFACE系列44 服务端API之计算图纸对比差异项来源自哪个图框

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在前两篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>.<C#开发BIMFACE系列43 ...

  8. C#开发BIMFACE系列6 服务端API之获取文件信息

    在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务 ...

  9. C#开发BIMFACE系列4 服务端API之源上传文件

    在注册成为BIMFACE的应用开发者后,要能在浏览器里浏览你的模型或者获取你模型内的BIM数据, 首先需要把你的模型文件上传到BIMFACE.根据不同场景,BIMFACE提供了丰富的文件相关的接口. ...

随机推荐

  1. zhy2_rehat6_mysql04 - MHA_故障演示与切换.txt

    export LANG=en_US 环境:------------------------------------------ 机器 VPN ip linux 账号/密码manager1 172.28 ...

  2. java 报错 System.out.printIn 错误: 找不到符号

    java 运行 System.out.printIn() 报错 ,java System.out.println 这是错误示范 !!! System.out.printIn("仔细看看pri ...

  3. Appium 1.15.1版本的appium-doctor不是内部或者外部命令的问题

    先讲一下整个app自动化环境的部署过程: 1.安装appium 2.安装nodejs 3.查看appium的环境是否完成 问题:安装appium和nodejs都没啥问题,直接到对应的官网下载然后安装即 ...

  4. 加权无向图 最小生成树 Prim算法 延迟版和即时版 村里修路该先修哪

    本次要解决的问题是:你们村里那些坑坑洼洼的路,到底哪些路才是主干道? 小明:肯定是哪里都能到得了,并且去哪里都相对比较近,并且被大家共用程度高的路是啊! 具体是哪几条路呢?今天就可以给出准确答案 最小 ...

  5. JS-for循环练习题

    1.大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配? //驮100石粮食,大马需要50匹 for(var a=0;a<=50;a++){ //驮1 ...

  6. [译]Vulkan教程(22)创建顶点buffer

    [译]Vulkan教程(22)创建顶点buffer Vertex buffer creation 创建顶点buffer Introduction 入门 Buffers in Vulkan are re ...

  7. 【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔,更新至63章(2019-07-21)

    说明: 1.本教程重在BSP驱动包设计方法和HAL库的框架学习,并将HAL库里面的各种弯弯绕捋顺,从而方便我们的程序设计. 2.由于是基于HAL库的文档,所以不限制H7系列,其它F1,F2,F3,F4 ...

  8. C语言程序设计100例之(18):火柴棒等式

    例18   火柴棒等式 用n根火柴棍,可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棒拼出的整数(若该数非零,则最高位不能是0).用火柴棒拼数字0~9的拼法如图1所示. 图1  用 ...

  9. java超市购物管理系统

    一.概述 1.鹏哥前面有写过java项目超市管理系统项目,传送门 2.收到很多朋友私信给我,也很感谢老铁们的反馈和交流,前面这个项目只是对java基础知识和面向对象的思想练习,但是没有涉及到java如 ...

  10. ubuntu18.04 安装 搜狗输入法

    一.安装fcitx sudo apt-get install fcitx-bin 因为搜狗拼音依赖fcitx,相关的依赖库和框架都会自动安装上. sudo apt-get install fcitx- ...