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

在上一篇博客《C#开发BIMFACE系列42 服务端API之图纸对比》的最后留了一个问题,在常规业务场景下,一个.dwg文件中包含多个图框,如下图
那么当前版本与历史版本对比完成后,在Web网页中点击差异项可以自动定位到图元变化所在位置。是否可以知道差异项来自哪个图框呢?
这篇博客针对该问题进行详细的讲解。
1、应用场景
一个.dwg文件中包含多个图框,在BIMFACE中浏览时,可以根据图框编号与名称定位到具体的图框,使用更加便捷。
2、效果
(1)未拆分
(2)已拆分
拆分后的图纸,工具条上多了一个“图纸”按钮,点击后弹出图纸列表层,每一项里面包含“图纸名称”与“图号”,点击图纸项,自动定位到对应的图纸。
1、图框识别,按照以下条件综合判断
(1)图框符合国标的标准尺寸,如A0,A0(1+1/4)等。标准的尺寸识别准确率更高,但也考虑了一定的容差,若图幅与规范有一定的出入仍可被识别。
(2)图框中包含图签信息,如图纸名称、图纸编号等信息。
2、图签识别,可以识别以下字段
(1)图纸名称(图名、标题、图纸内容)
(2)图纸序号(图号、图纸编号、张次、竣工图号、页码)
(3)图纸专业(专业、图别、设计专业、专业名称、图纸类别)
(4)工程名称(工程项目、项目、设计项目、工程总称)
(5)图纸日期(日期、升版日期、出图日期、修改日期、编制日期)
3、注意事项
(1)相邻的图框不要相连,不要重叠。
(2)图框外不要有额外的矩形框。
(3)图框需要有明确的图签字段。
1、发起拆分
调用接口
1 /// <summary>
2 /// 通过图纸文件ID,按图框拆分图纸。
3 /// (提示:图纸拆分必须在【图纸转换】接口完成且转换状态为 success 之后才能发起,拆分是在转换成功的基础之上进行的)
4 /// </summary>
5 /// <param name="accessToken">【必填】令牌</param>
6 /// <param name="fileId">【必填】代表该单图纸的文件ID</param>
7 /// <param name="callbak">【选填】回调url。图纸拆分是一个耗时的操作,并不能立刻完成。可以通过回调地址通知拆分结果</param>
8 /// <returns></returns>
9 public SplitDrawingResponse SplitDrawing(string accessToken, long fileId, string callbak = "")
10 {
11 // PUT https://api.bimface.com/files/{fileId}/split
12 string url = string.Format(BIMFaceConstants.API_HOST + "/files/{0}/split", fileId);
13 if (callbak.IsNotNullAndWhiteSpace())
14 {
15 url += "?callback=" + callbak.UriEscapeDataString();
16 }
17 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders();
18 headers.AddOAuth2Header(accessToken);
19
20 try
21 {
22 SplitDrawingResponse response;
23
24 HttpManager httpManager = new HttpManager(headers);
25 HttpResult httpResult = httpManager.Put(url);
26 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
27 {
28 response = httpResult.Text.DeserializeJsonToObject<SplitDrawingResponse>();
29 }
30 else
31 {
32 response = new SplitDrawingResponse
33 {
34 Message = httpResult.RefText
35 };
36 }
37
38 return response;
39 }
40 catch (Exception ex)
41 {
42 throw new BIMFaceException("[通过图纸文件ID,按图框拆分图纸]发生异常!", ex);
43 }
44 }
2、获取图纸拆分状态
图纸拆分不能立刻完成,需要等待一段时间。可以通过 callback 方式获取拆分的信息(不推荐),也可以通过 BIMFACE 提供的接口进行查询。
调用接口
1 /// <summary>
2 /// 获取图纸拆分状态
3 /// </summary>
4 /// <param name="accessToken">【必填】令牌</param>
5 /// <param name="fileId">【必填】代表该单图纸的文件ID</param>
6 /// <returns></returns>
7 public SplitDrawingResponse GetSplitDrawingStatus(string accessToken, long fileId)
8 {
9 // GET https://api.bimface.com/files/{fileId}/split
10 string url = string.Format(BIMFaceConstants.API_HOST + "/files/{0}/split", fileId);
11
12 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders();
13 headers.AddOAuth2Header(accessToken);
14
15 try
16 {
17 SplitDrawingResponse response;
18
19 HttpManager httpManager = new HttpManager(headers);
20 HttpResult httpResult = httpManager.Get(url);
21 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
22 {
23 response = httpResult.Text.DeserializeJsonToObject<SplitDrawingResponse>();
24 }
25 else
26 {
27 response = new SplitDrawingResponse
28 {
29 Message = httpResult.RefText
30 };
31 }
32
33 return response;
34 }
35 catch (Exception ex)
36 {
37 throw new BIMFaceException("[获取图纸拆分状态]发生异常!", ex);
38 }
39 }
3、获取图纸拆分结果
完整的拆分结果如下
{
"code": "success",
"message": null,
"data": [
{
"frames": [
{
"boundingBox": {
"min": {
"x": 686680.0,
"y": 1066999.0
},
"max": {
"x": 770782.0,
"y": 1126401.0
}
},
"id": 1,
"name": "unknown-name",
"number": "unknown-no-1"
},
{
"boundingBox": {
"min": {
"x": 752146.0,
"y": 1010435.0
},
"max": {
"x": 836248.0,
"y": 1069837.0
}
},
"id": 2,
"name": "电气抗震设计专篇",
"number": "电施01"
},
{
"boundingBox": {
"min": {
"x": 875778.0,
"y": 1006559.0
},
"max": {
"x": 1054130.0,
"y": 1132711.0
}
},
"id": 3,
"name": "一层电气平面(一)",
"number": "电施02"
},
{
"boundingBox": {
"min": {
"x": 1070846.0,
"y": 1006559.0
},
"max": {
"x": 1249198.0,
"y": 1132711.0
}
},
"id": 4,
"name": "一层电气平面(二)",
"number": "电施03"
},
{
"boundingBox": {
"min": {
"x": 1261883.0,
"y": 1006559.0
},
"max": {
"x": 1440235.0,
"y": 1132711.0
}
},
"id": 5,
"name": "屋顶防雷平面",
"number": "电施04"
},
{
"boundingBox": {
"min": {
"x": 1460840.0,
"y": 1006559.0
},
"max": {
"x": 1639192.0,
"y": 1132711.0
}
},
"id": 6,
"name": "基础接地平面",
"number": "电施05"
}
],
"id": 0,
"name": "Model"
}
]
}
说明:
(1)frames:一个dwg文件中的图框对象集合
(2)boundingBox:图框外的矩形框对象
(3)min、max:矩形框的左上角、右下角在图纸中的XY坐标
(4)id:图纸序号
(5)name:图纸名称
(6)number:图号
调用接口
1 /// <summary>
2 /// 获取图纸拆分结果
3 /// </summary>
4 /// <param name="accessToken"></param>
5 /// <param name="fileId"></param>
6 /// <returns></returns>
7 public SplitDrawingResultResponse GetSplitDrawingResult(string accessToken, long fileId)
8 {
9 // GET https://api.bimface.com/data/v2/files/{fileId}/frames
10 string url = string.Format(BIMFaceConstants.API_HOST + "/data/v2/files/{0}/frames", fileId);
11
12 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders();
13 headers.AddOAuth2Header(accessToken);
14
15 try
16 {
17 SplitDrawingResultResponse response;
18
19 HttpManager httpManager = new HttpManager(headers);
20 HttpResult httpResult = httpManager.Get(url);
21 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
22 {
23 response = httpResult.Text.DeserializeJsonToObject<SplitDrawingResultResponse>();
24 }
25 else
26 {
27 response = new SplitDrawingResultResponse
28 {
29 Message = httpResult.RefText
30 };
31 }
32
33 return response;
34 }
35 catch (Exception ex)
36 {
37 throw new BIMFaceException("[获取图纸拆分结果]发生异常!", ex);
38 }
39 }
上述测试程序使用了 《BIMFace.SDK.CSharp》开源SDK。欢迎大家下载使用。
C#开发BIMFACE系列43 服务端API之图纸拆分的更多相关文章
- C#开发BIMFACE系列42 服务端API之图纸对比
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在我的前一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>中详细介绍了BIMFACE服务端接口 ...
- C#开发BIMFACE系列44 服务端API之计算图纸对比差异项来源自哪个图框
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在前两篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>.<C#开发BIMFACE系列43 ...
- C#开发BIMFACE系列40 服务端API之模型集成
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 随着建筑信息化模型技术的发展,越来越多的人选择在云端浏览建筑模型.现阶段的云端模型浏览大多是基于文件级别,一次只可以浏览一 ...
- C#开发BIMFACE系列41 服务端API之模型对比
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在建筑施工图审查系统中,设计单位提交设计完成的模型/图纸,审查专家审查模型/图纸.审查过程中如果发现不符合规范的地方,则流 ...
- 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系列3 服务端API之获取应用访问凭证AccessToken
系列目录 [已更新最新开发文章,点击查看详细] BIMFACE 平台为开发者提供了大量的服务器端 API 与 JavaScript API,用于二次开发 BIM 的相关应用. BIMFACE ...
- C#开发BIMFACE系列7 服务端API之获取文件信息列表
系列目录 [已更新最新开发文章,点击查看详细] 本文详细介绍如何获取BIMFACE平台中所有上传过的文件信息列表. 请求地址:GET https://file.bimface.com/file ...
随机推荐
- Java通过网络图片之地址,下载到服务器
@RequestMapping("/downloadTableQrcode") public String downloadTableQrcode(HttpServletReque ...
- Learning to Compare: Relation Network for Few-Shot Learning 论文笔记
主要原理: 和Siamese Neural Networks一样,将分类问题转换成两个输入的相似性问题. 和Siamese Neural Networks不同的是: Relation Network中 ...
- Seq2Seq sequence-to-sequence模型 简介
Sequence-to-sequence (seq2seq) 模型. 突破了传统的固定大小输入问题框架 开创了将DNN运用于翻译.聊天(问答)这类序列型任务的先河 并且在各主流语言之间的相互翻译,和语 ...
- 超详细kafka教程来啦
Kafka的概念和入门 Kafka是一个消息系统.由LinkedIn于2011年设计开发. Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度O(1)的方式提供消息持 ...
- leetcode 括号
1. 括号(0809) 设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合. 说明:解集不能包含重复的子集. 例如,给出 n = 3,生成结果为: [ "((()))" ...
- spring整合jdbc方法一
用了一段时间的spring这,闲来没事做一下spring整合jdbc 目录文件 导入jar包 由于spring的jar包是在myeclipse中自动导入的有些暂时用不到的也没有处理. Emp类 pac ...
- 【Azure 应用服务】Python flask 应用部署在Aure App Service中作为一个子项目时,解决遇见的404 Not Found问题
问题描述 在成功的部署Python flask应用到App Service (Windows)后,如果需要把当前项目(如:hiflask)作为一个子项目(子站点),把web.config文件从wwwr ...
- java 线程状态 详解
线程被创建后,有一个生命周期,下图是线程的生命周期详解. java api java.lang.Thread.State 这个枚举中给出了六种线程状态,分别是: 线程状态 导致状态发生条件 NEW(新 ...
- Excel表格中单击一个单元格如何将整行整列变色
视图->阅读模式 开启阅读模式后 就会显示如下情景,是的你点击任意单元格后,显示整行/整列
- 第七章:网络优化与正则化(Part2)
文章相关 1 第七章:网络优化与正则化(Part1) 2 第七章:网络优化与正则化(Part2) 7.3 参数初始化 神经网络的参数学习是一个非凸优化问题.当使用梯度下降法来进行优化网络参数时,参数初 ...