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 ...
随机推荐
- Linux命令ip addr详解
熟悉Linux操作系统的同学对于ip addr命令应该不陌生,知道它是用来查看本地IP地址的,除了IP地址,其它额外的信息有必要了解一下. root@test:~# ip addr1: lo: < ...
- Python第十章-模块和包
模块和包 我们以前的代码都是写在一个文件中, 而且代码也比较短. 假设我们现在要写一个大的系统, 不可能把代码只写到一个文件中, 迫切想把代码写到不同的文件中, 并且能够在一个文件使用另一个文件中代码 ...
- spring bean的装载过程简略赏析
spring一个bean的容器,它从这个最基本的功能进而扩展出AOP,transaction,cache,schedule,data等等,将业务与框架代码解耦,让我们可以将大部分精力投入到业务代码中, ...
- qt creator源码全方面分析(3-6)
目录 qtcreatorplugin.pri 使用实例 上半部 下半部 结果 qtcreatorplugin.pri 上一节我们介绍了qtcreatorlibrary.pri,现在我们介绍qtcrea ...
- Java系列之内部类
今天温习一下 Java 中的内部类,内部类一般有如下几种:静态内部类.成员内部类.匿名内部类和方法内部类,下文中将主要介绍静态内部类和成员内部类,主要内容如下: 概述 静态内部类 成员内部类 匿名内部 ...
- Python常用模块之configparser
ConfigParser简介 ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号“[ ]”内包含的为section.section 下面为类似于key-value 的配置内容 ...
- 6.Metasploit生成apk攻击Android实例
Metasploit进阶第四讲 生成Android apk文件 01 msfvenom基本参数 msfvenom介绍 承接上回,staged/unstage payload如何利用? msfven ...
- 从一个慢查询到MySQL字符集编码
从一个慢查询到MySQL字符集编码 目录 从一个慢查询到MySQL字符集编码 1. 问题起源 2. MySQL字符集和字符集排序规则 2.1 字符集相关概念 2.2 MySQL中的字符集和字符集排序规 ...
- 个推IGt.BaseTemplate.php,不仅有bug,还有bom头,好恶心!
错误截图,提交吧,还有一个不明飞行物. 去掉utf-8 BOM:set nobomb保留utf-8 BOM:set bomb
- BadMethodCallException : Call to undefined method App\Models\Article::setContainer()
如果你执行 php artisan db:seed 发生如下错误 说是模型中不存在 静态方法 setContainer()方法,那么你应该检查下你的DatabaseSeeder.php 文件 中的 r ...