C#开发BIMFACE系列16 服务端API之获取模型数据1:查询满足条件的构件ID列表
源文件/模型转换完成之后,可以获取模型的具体数据。本篇介绍根据文件ID查询满足条件的构件ID列表。
请求地址:GET https://api.bimface.com/data/v2/files/{fileId}/elementIds
说明:根据六个维度(专业,系统类型,楼层,构件类型,族,族类型)获取对应的构件ID列表,任何维度都是可选的。
构件ID分页查询相关请参考这里
同时,也支持根据空间关系从房间计算出房间内的构件ID列表
构件与房间空间关系计算相关请参考这里
参数:
请求 path(示例):https://api.bimface.com/data/v2/files/1211223382064960/elementIds
请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"
HTTP响应示例(200):
{
"code": "success",
"message": null,
"data": [
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
""
]
}
C#实现方法:
/// <summary>
/// 查询满足条件的构件ID列表
/// </summary>
/// <param name="accessToken">令牌</param>
/// <param name="fileId">文件ID</param>
/// <param name="request">请求参数对象</param>
/// <returns></returns>
public virtual FileElementsGetResponse GetFileElements(string accessToken, string fileId, FileElementsGetRequest request = null)
{
// GET https://api.bimface.com/data/v2/files/{fileId}/elementIds
string url = string.Format(BimfaceConstants.API_HOST + "/data/v2/files/{0}/elementIds", fileId); BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
headers.AddOAuth2Header(accessToken); string data = string.Empty;
if (request != null)
{
data = request.SerializeToJson();
} try
{
FileElementsGetResponse response; HttpManager httpManager = new HttpManager(headers);
HttpResult httpResult = httpManager.Get(url, data);
if (httpResult.Status == HttpResult.STATUS_SUCCESS)
{
response = httpResult.Text.DeserializeJsonToObject<FileElementsGetResponse>();
}
else
{
response = new FileElementsGetResponse
{
Message = httpResult.RefText
};
} return response;
}
catch (Exception ex)
{
throw new Exception("[查询满足条件的构件ID列表]发生异常!", ex);
}
}
其中调用到的 httpManager.Get() 方法,请参考《C# HTTP系列》
封装的其他请求参数类 FileElementsGetRequest
/// <summary>
/// 查询满足条件的构件ID列表请求参数类
/// </summary>
[Serializable]
public class FileElementsGetRequest
{
public FileElementsGetRequest()
{
CategoryId = null;
Family = null;
FamilyType = null;
Floor = null;
PaginationContextId = null;
PaginationNo = null;
PaginationSize = null;
RoomId = null;
RoomToleranceXY = null;
RoomToleranceZ = null;
Specialty = null;
SystemType = null;
} ///// <summary>
///// 【必填】代表该单模型的文件ID
///// </summary>
//[JsonProperty("fileId")]
//public long FileId { get; set; } /// <summary>
/// 【非必填】筛选条件构件类型id
/// </summary>
[JsonProperty("categoryId",NullValueHandling = NullValueHandling.Ignore)]
public string CategoryId { get; set; } /// <summary>
/// 【非必填】筛选条件族
/// </summary>
[JsonProperty("family", NullValueHandling = NullValueHandling.Ignore)]
public string Family { get; set; } /// <summary>
/// 【非必填】筛选条件族类型
/// </summary>
[JsonProperty("familyType", NullValueHandling = NullValueHandling.Ignore)]
public string FamilyType { get; set; } /// <summary>
/// 【非必填】筛选条件楼层
/// </summary>
[JsonProperty("floor", NullValueHandling = NullValueHandling.Ignore)]
public string Floor { get; set; } /// <summary>
/// 【非必填】根据paginationContextId返回构件ID列表
/// </summary>
[JsonProperty("paginationContextId", NullValueHandling = NullValueHandling.Ignore)]
public string PaginationContextId { get; set; } /// <summary>
/// 【非必填】返回结果中paginationNo对应的页码构件ID项
/// </summary>
[JsonProperty("paginationNo", NullValueHandling = NullValueHandling.Ignore)]
public int? PaginationNo { get; set; } /// <summary>
/// 【非必填】返回结果按照paginationSize分页
/// </summary>
[JsonProperty("paginationSize", NullValueHandling = NullValueHandling.Ignore)]
public int? PaginationSize { get; set; } /// <summary>
/// 【非必填】筛选条件房间id
/// </summary>
[JsonProperty("roomId", NullValueHandling = NullValueHandling.Ignore)]
public string RoomId { get; set; } /// <summary>
/// 【非必填】XY坐标轴方向对构件的筛选容忍度
/// </summary>
[JsonProperty("roomToleranceXY", NullValueHandling = NullValueHandling.Ignore)]
public RoomTolerance? RoomToleranceXY { get; set; } /// <summary>
/// 【非必填】Z坐标轴方向对构件的筛选容忍度
/// </summary>
[JsonProperty("roomToleranceZ", NullValueHandling = NullValueHandling.Ignore)]
public RoomTolerance? RoomToleranceZ { get; set; } /// <summary>
/// 【非必填】筛选条件专业
/// </summary>
[JsonProperty("specialty", NullValueHandling = NullValueHandling.Ignore)]
public string Specialty { get; set; } /// <summary>
/// 【非必填】筛选条件系统类型
/// </summary>
[JsonProperty("systemType", NullValueHandling = NullValueHandling.Ignore)]
public string SystemType { get; set; }
}
/// <summary>
/// 坐标轴方向对构件的筛选容忍度
/// </summary>
public enum RoomTolerance
{
STRICT, ORDINARY, LENIENT
}
参数都是可选的,如果不设置,则默认不添加到请求中。
在BIMFACE的控制台中可以看到我们上传的文件列表,共计2个文件。模型状态均为转换成功。
以“01_BIMFACE示例文件-Revit模型.rvt”为例查询其构建ID列表

查看结果中返回了构建ID列表。
如果使用 .dwg 二维文件进行测试则返回一下信息:unsupported operation:[please upgrade this databag to support specialty tree]
查询满足条件的构件ID列表 ,只对三维模型适用。二维图纸没有目录树。
测试代码如下:
// 查询满足条件的构件ID列表
protected void btnGetFileElements_Click(object sender, EventArgs e)
{
FileConvertApi api = new FileConvertApi();
FileElementsGetResponse response = api.GetFileElements(txtAccessToken.Text, txtFileID.Text); txtResult.Text = response.Code.ToString2()
+ Environment.NewLine
+ response.Message.ToString2()
+ Environment.NewLine
+ response.Data.ToStringWith(",");
}
查询构建ID列表返回类 FileElementsGetResponse
/// <summary>
/// 查询满足条件的构件ID列表返回的结果类
/// </summary>
public class FileElementsGetResponse : GeneralResponse<List<string>>
{
}
C#开发BIMFACE系列16 服务端API之获取模型数据1:查询满足条件的构件ID列表的更多相关文章
- C#开发BIMFACE系列17 服务端API之获取模型数据2:获取构件材质列表
系列目录 [已更新最新开发文章,点击查看详细] 在上一篇<C#开发BIMFACE系列16 服务端API之获取模型数据1:查询满足条件的构件ID列表>中介绍了获取单文件(模型)的所有 ...
- C#开发BIMFACE系列18 服务端API之获取模型数据3:获取构件属性
系列目录 [已更新最新开发文章,点击查看详细] 本篇主要介绍如何获取单文件/模型下单个构建的属性信息. 请求地址:GET https://api.bimface.com/data/v2/fil ...
- C#开发BIMFACE系列19 服务端API之获取模型数据4:获取多个构件的共同属性
系列目录 [已更新最新开发文章,点击查看详细] 在前几篇博客中介绍了一个三维文件/模型包含多个构建,每个构建又是由多种材质组成,每个构建都有很多属性.不同的构建也有可能包含相同的属性. 上图中 ...
- C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模型的楼层信息
系列目录 [已更新最新开发文章,点击查看详细] 一个文件/模型中可能包含多个楼层信息,获取楼层信息对于前端页面的动态展示非常有帮助.本篇介绍获取一个文件/模型中可能包含多个楼层信息的详细方法. ...
- C#开发BIMFACE系列24 服务端API之获取模型数据9:获取单个房间信息
系列目录 [已更新最新开发文章,点击查看详细] 大厦建筑模型中,基本上包含多个楼层,每个楼层包含多个房间等信息.在<C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模 ...
- C#开发BIMFACE系列25 服务端API之获取模型数据10:获取楼层对应面积分区列表
系列目录 [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列22 服务端API之获取模型数据7:获取多个模型的楼层信息>中,返回的楼层信息结果中包含了楼层的具体信 ...
- C#开发BIMFACE系列22 服务端API之获取模型数据7:获取多个模型的楼层信息
系列目录 [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模型的楼层信息>中介绍获取单个模型的所有楼层信息.某些场景下 ...
- C#开发BIMFACE系列26 服务端API之获取模型数据11:获取单个面积分区信息
系列目录 [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列25 服务端API之获取模型数据9:获取楼层对应面积分区列表>一文中介绍了如何获取单个模型中单个楼层包 ...
- C#开发BIMFACE系列20 服务端API之获取模型数据5:批量获取构件属性
系列目录 [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列18 服务端API之获取模型数据3:获取构件属性>中介绍了获取单个文件/模型的单个构建的属性,本篇介绍 ...
随机推荐
- Ubuntu16.04配置Django服务器环境
本环境是使用Ubuntu16.04+Django2.1.0+python3.6+uwsgi+nginx进行配置 1. 安装python3.6 Ubuntu16.04中原本安装的是python3.5,但 ...
- rabbitMQ_rpc(六)
远程过程调用(RPC) 在前面我们已经学习了如何使用工作队列在多个消费者之间分配耗时的任务. 但是如果我们需要在远程计算机上运行功能并等待结果怎么办?那将会是一个不同的故事.此模式通常称为远程过程调用 ...
- 2019最新idea注册码
2019最新注册码到2020年1月7号 N757JE0KCT-eyJsaWNlbnNlSWQiOiJONzU3SkUwS0NUIiwibGljZW5zZWVOYW1lIjoid3UgYW5qdW4iL ...
- 一份关于.NET Core云原生采用情况调查
调查背景 Kubernetes 越来越多地在生产环境中使用,围绕 Kubernetes 的整个生态系统在不断演进,新的工具和解决方案也在持续发布.云原生计算的发展驱动着各个企业转向遵循云原生原则(启动 ...
- 【iOS】NSNotification 常用方法
NSNotification 常用的几个方法,代码如下: // 发送通知 [[NSNotificationCenter defaultCenter] postNotificationName:@&qu ...
- 安装使用xen虚拟化工具
换了一家新公司,需要拿出一套虚拟化方案,就把业界的主流虚拟化技术划拉了一遍,给领导交了一份报告,具体的技术部分已经在之前的随笔里了,本篇文章主要介绍的是xen虚拟化工具的安装: Xen官方部署文档:h ...
- 一个项目中:只能存在一个 WebMvcConfigurationSupport (静态文件失效之坑)
一个项目中:只能存在一个 WebMvcConfigurationSupport 在一个项目中WebMvcConfigurationSupport只能存在一个,多个的时候,只有一个会生效. 静态文件访问 ...
- 基于Docker的GitLab搭建
今天写一些Docker搭建GitLab,好久没有写博客园了,今天又回来了,为了学习技术? 建议使用Linux内核系统,或者虚拟机,首先安装docker环境(菜鸟教程) 一.下载镜像文件 如果慢的话,可 ...
- 【有容云】PPT | 容器落地之二三事儿
编者注: 本文为10月29日有容云联合创始人兼研发副总裁江松在 Docker Live时代线下系列-广州站中演讲的PPT,本次线下沙龙为有容云倾力打造Docker Live时代系列主题线下沙龙,每月一 ...
- 深入了解String和intern
引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String.这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念.常量池就类似一个JAVA系统级别提供的缓存. 8 ...