C#开发BIMFACE系列34 服务端API之模型对比5:获取模型构件对比差异
BIMFACE平台提供了服务端“获取修改构件属性差异”API,其返回的结果也是一个列表,仅针对修改的构件(不包含新增、删除的构件),是指对于一个修改过的构件ID,其修改前后分别新增、删除了哪些属性,或是属性值发生了变化。
请求地址:GET https://api.bimface.com/data/v2/comparisons/{comparisonId}/elementChange
参数:
请求 path(示例):https://api.bimface.com/data/v2/comparisons/1136906400211168/elementChange?followingElementId=296524&followingFileId=1136893002033344&previousElementId=296524&previousFileId=1136239003943104
请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"
HTTP响应示例(200):
{
"code" : "success",
"data" : {
"_A" : "string",
"_B" : "string",
"changeAttributes" : [ {
"_A" : {
"key" : "key",
"unit" : "unit",
"value" : "value"
},
"_B" : {
"key" : "key",
"unit" : "unit",
"value" : "value"
}
} ],
"changeQuantities" : [ {
"_A" : {
"code" : "code",
"desc" : "desc",
"name" : "name",
"qty" : ,
"unit" : "unit"
},
"_B" : {
"code" : "code",
"desc" : "desc",
"name" : "name",
"qty" : ,
"unit" : "unit"
}
} ],
"deleteAttributes" : [ {
"key" : "key",
"unit" : "unit",
"value" : "value"
} ],
"deleteQuantities" : [ {
"code" : "code",
"desc" : "desc",
"name" : "name",
"qty" : ,
"unit" : "unit"
} ],
"newAttributes" : [ {
"key" : "key",
"unit" : "unit",
"value" : "value"
} ],
"newQuantities" : [ {
"code" : "code",
"desc" : "desc",
"name" : "name",
"qty" : ,
"unit" : "unit"
} ]
},
"message" : ""
}
C#实现方法:
/// <summary>
/// 获取模型构件对比差异
/// </summary>
/// <param name="accessToken">【必填】令牌</param>
/// <param name="compareId">【必填】对比ID</param>
/// <param name="followingFileId">【必填】变更后的文件ID</param>
/// <param name="followingElementId">【必填】变更后的文件的构件ID</param>
/// <param name="previousFileId">【必填】变更前的文件ID</param>
/// <param name="previousElementId">【必填】变更前的文件的构件ID</param>
/// <returns></returns>
public virtual ModelCompareChangeResponse GetModelCompareChange(string accessToken, long compareId,
long followingFileId, string followingElementId, long previousFileId, string previousElementId)
{
// GET https: //api.bimface.com/data/v2/comparisons/{comparisonId}/elementChange
string url = string.Format(BimfaceConstants.API_HOST + "/data/v2/comparisons/{0}/elementChange", compareId);
url += "?followingFileId=" + followingFileId;
url += "&followingElementId=" + followingElementId;
url += "&previousFileId=" + previousFileId;
url += "&previousElementId=" + previousElementId; BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
headers.AddOAuth2Header(accessToken); try
{
ModelCompareChangeResponse response; HttpManager httpManager = new HttpManager(headers);
HttpResult httpResult = httpManager.Get(url);
if (httpResult.Status == HttpResult.STATUS_SUCCESS)
{
response = httpResult.Text.DeserializeJsonToObject<ModelCompareChangeResponse>();
}
else
{
response = new ModelCompareChangeResponse
{
Message = httpResult.RefText
};
} return response;
}
catch (Exception ex)
{
throw new Exception("[获取模型构件对比差异]发生异常!", ex);
}
}
代码中使用的 HttpManager 类请参考我的博客文章《C# HTTP系列 HttpWebRequest 与 HttpWebResponse》。
返回类型 ModelCompareChangeResponse 类如下:
/// <summary>
/// 获取模型构件对比差异的响应类
/// </summary>
public class ModelCompareChangeResponse : GeneralResponse<ModelCompareChange>
{ } /// <summary>
/// 模型构件对比差异类
/// </summary>
public class ModelCompareChange
{
/// <summary>
/// 变化图元前一个版本的ID
/// </summary>
[JsonProperty("_A", NullValueHandling = NullValueHandling.Ignore)]
public string A { get; set; } /// <summary>
/// 变化图元后一个版本的ID
/// </summary>
[JsonProperty("_B", NullValueHandling = NullValueHandling.Ignore)]
public string B { get; set; } /// <summary>
/// 变更的构建属性集合
/// </summary> [JsonProperty("changeAttributes", NullValueHandling = NullValueHandling.Ignore)]
public ChangeAttributes[] ChangeAttributes { get; set; } /// <summary>
/// 变更的工程量集合
/// </summary> [JsonProperty("changeQuantities", NullValueHandling = NullValueHandling.Ignore)]
public ChangeQuantities[] ChangeQuantities { get; set; } /// <summary>
/// 删除的构建属性集合
/// </summary> [JsonProperty("deleteAttributes", NullValueHandling = NullValueHandling.Ignore)]
public Attribute[] DeleteAttributes { get; set; } /// <summary>
/// 删除的工程量集合
/// </summary> [JsonProperty("deleteQuantities", NullValueHandling = NullValueHandling.Ignore)]
public Quantity[] DeleteQuantities { get; set; } /// <summary>
/// 新增的构建属性集合
/// </summary> [JsonProperty("newAttributes", NullValueHandling = NullValueHandling.Ignore)]
public Attribute[] NewAttributes { get; set; } /// <summary>
/// 新增的工程量集合
/// </summary> [JsonProperty("newQuantities", NullValueHandling = NullValueHandling.Ignore)]
public Quantity[] NewQuantities { get; set; }
} /// <summary>
/// 变更的构建属性
/// </summary>
public class ChangeAttributes
{
/// <summary>
/// 前一个版本
/// </summary>
[JsonProperty("_A", NullValueHandling = NullValueHandling.Ignore)]
public Attribute A { get; set; } /// <summary>
/// 后一个版本
/// </summary>
[JsonProperty("_B", NullValueHandling = NullValueHandling.Ignore)]
public Attribute B { get; set; }
} /// <summary>
/// 变更的工程量
/// </summary>
public class ChangeQuantities
{
/// <summary>
/// 前一个版本
/// </summary>
[JsonProperty("_A", NullValueHandling = NullValueHandling.Ignore)]
public Quantity A { get; set; } /// <summary>
/// 后一个版本
/// </summary>
[JsonProperty("_B", NullValueHandling = NullValueHandling.Ignore)]
public Quantity B { get; set; }
} /// <summary>
/// 构建属性
/// </summary>
public class Attribute
{
[JsonProperty("key", NullValueHandling = NullValueHandling.Ignore)]
public string Key { get; set; } [JsonProperty("value", NullValueHandling = NullValueHandling.Ignore)]
public string Value { get; set; } [JsonProperty("unit", NullValueHandling = NullValueHandling.Ignore)]
public string Unit { get; set; }
} /// <summary>
/// 工程量
/// </summary>
public class Quantity
{
[JsonProperty("code", NullValueHandling = NullValueHandling.Ignore)]
public string Code { get; set; } [JsonProperty("desc", NullValueHandling = NullValueHandling.Ignore)]
public string Desc { get; set; } [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
public string Name { get; set; } [JsonProperty("qty", NullValueHandling = NullValueHandling.Ignore)]
public string Qty { get; set; } [JsonProperty("unit", NullValueHandling = NullValueHandling.Ignore)]
public string Unit { get; set; }
}
C#开发BIMFACE系列34 服务端API之模型对比5:获取模型构件对比差异的更多相关文章
- C#开发BIMFACE系列41 服务端API之模型对比
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在建筑施工图审查系统中,设计单位提交设计完成的模型/图纸,审查专家审查模型/图纸.审查过程中如果发现不符合规范的地方,则流 ...
- C#开发BIMFACE系列42 服务端API之图纸对比
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在我的前一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>中详细介绍了BIMFACE服务端接口 ...
- C#开发BIMFACE系列40 服务端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系列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 ...
随机推荐
- Transformers 词汇表 | 二
作者|huggingface 编译|VK 来源|Github 词汇表每种模型都不同,但与其他模型相似.因此,大多数模型使用相同的输入,此处将在用法示例中进行详细说明. 输入ID 输入id通常是传递给模 ...
- 使用PyTorch建立图像分类模型
概述 在PyTorch中构建自己的卷积神经网络(CNN)的实践教程 我们将研究一个图像分类问题--CNN的一个经典和广泛使用的应用 我们将以实用的格式介绍深度学习概念 介绍 我被神经网络的力量和能力所 ...
- ArcGIS Server的安装
1.双击ArcGIS Server安装目录下的Setup.exe. 2.点击“Next”. 3.选择“I accept the license agreement”,点击“Next”. 4.点击“Ch ...
- [问题]java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized...
java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized... 这个问题一般是因为升级MSYQL ...
- coding++:maven根据不同的运行环境,打包不同的配置文件
1.使用maven管理项目中的依赖,非常的方便.同时利用maven内置的各种插件,在命令行模式下完成打包.部署等操作,可方便后期的持续集成使用. 2.但是每一个maven工程(比如web项目),开发人 ...
- 一分钟 Get 时序数据库 InfluxDB 的技能
1. 通过上期分享<实践指路明灯,源码剖析flink-metrics>,对当下较火的流式处理框架 flink 的指标监控体系有了全局的认识,并结合 flink-metrics-xxxx 模 ...
- 拿万元月薪必备的书单,学JAVA的程序员必看的5本书!
点击蓝色"程序员黄小斜"关注我哟 加个"星标",每天带你读好书! 文/黄小斜 转载请注明出处 每一年的年初都是买书学习热情高涨的时候,虽然不知道你们是让这些书吃 ...
- vue+springboot后台实现页面按钮权限
思路 1.用户跟角色关联 2.角色跟菜单关联 3.菜单跟菜单下的按钮关联 4.后端返回每个菜单下的按钮,前端通过自定义事件,在每个按钮上加上相应的事件 打字麻烦,还是看图吧! 建立btn.js 然后在 ...
- 【摸鱼向】UE4的AI模块探索手记(1)
前言 之前实现了自主创作的角色导入进UE4并成功控制其进行一系列动作,但目前的样子距离基本的游戏架构还差了一个很大的模块:NPC,而这部分是由电脑来进行自动控制,所以,我有一句话不知当讲不当讲(对,我 ...
- 路由与交换,cisco路由器配置,基础知识点(二)
1.进退用户/特权/全局模式 (1)从用户模式进入特权模式 enable (2)从特权模式进入全局配置模式 configure terminal (3)从其他模式回到特权模式 end (4)从特权模式 ...