系列目录 【已更新最新开发文章,点击查看详细】
在《C#开发BIMFACE系列31 服务端API之模型对比2:获取模型对比状态》中介绍了根据对比ID,获取一笔记录的对比状态。由于模型对比是在BIMFACE云端进行的,通常需要5~10分钟,在等待对比的过程中还可以发起更多的模型对比,最后通过接口一次性批量获取模型对比状态 。
该功能与BIMFACE控制台中“图模对比”功能相同
请求地址:POST https://api.bimface.com/compares
说明:应用发起对比以后,可以根据筛选条件,通过该接口批量查询对比状态
参数:
其中 ModelCompareQueryRequest 类如下
1 /// <summary>
2 /// 批量获取模型对比状态的请求参数类
3 /// </summary>
4 public class ModelCompareQueryRequest
5 {
6 /// <summary>
7 /// 【必填项】应用的 appKey
8 /// </summary>
9 [JsonProperty("appKey")]
10 public string AppKey { get; set; }
11
12 /// <summary>
13 /// 【非必填项】对比后返回的ID,用于获取对比状态或者结果等信息
14 /// </summary>
15 [JsonProperty("compareId", NullValueHandling = NullValueHandling.Ignore)]
16 public long? CompareId { get; set; }
17
18 /// <summary>
19 /// 【非必填项】模型对比的类型 rvt(或者igms…)
20 /// </summary>
21 [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
22 public string Type { get; set; }
23
24 /// <summary>
25 /// 【非必填项】文件名称
26 /// </summary>
27 [JsonProperty("fileName", NullValueHandling = NullValueHandling.Ignore)]
28 public string FileName { get; set; }
29
30 /// <summary>
31 /// 【非必填项】模型对应的sourceId。例如:389c28de59ee62e66a7d87ec12692a76
32 /// </summary>
33 [JsonProperty("sourceId", NullValueHandling = NullValueHandling.Ignore)]
34 public string SourceId { get; set; }
35
36 /// <summary>
37 /// 【非必填项】(分页)当前页码
38 /// </summary>
39 [JsonProperty("pageNo", NullValueHandling = NullValueHandling.Ignore)]
40 public int? PageNo { get; set; }
41
42 /// <summary>
43 /// 【非必填项】(分页)每页记录数
44 /// </summary>
45 [JsonProperty("pageSize", NullValueHandling = NullValueHandling.Ignore)]
46 public int? PageSize { get; set; }
47
48 /// <summary>
49 /// 【非必填项】模型状态码。0(所有) 1(处理中) 99(成功) -1(失败)
50 /// </summary>
51 [JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
52 public short? Status { get; set; }
53
54 /// <summary>
55 /// 【非必填项】筛选类型。例如:create_time desc
56 /// </summary>
57 [JsonProperty("sortType", NullValueHandling = NullValueHandling.Ignore)]
58 public string SortType { get; set; }
59
60 /// <summary>
61 /// 【非必填项】对比开始时间,格式:yyyy-MM-dd hh:mm:ss
62 /// </summary>
63 [JsonProperty("startDate", NullValueHandling = NullValueHandling.Ignore)]
64 public string StartDate { get; set; }
65
66 /// <summary>
67 /// 【非必填项】对比结束时间,格式:yyyy-MM-dd hh:mm:ss
68 /// </summary>
69 [JsonProperty("endDate", NullValueHandling = NullValueHandling.Ignore)]
70 public string EndDate { get; set; }
71 }
请求 path(示例):https://api.bimface.com/compares
请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"
请求 body(示例):
1 {
2 "appKey" : "appKey",
3 "compareId" : 0,
4 "endDate" : "string",
5 "fileName" : "fileName",
6 "pageNo" : 0,
7 "pageSize" : 0,
8 "sortType" : "sortType",
9 "sourceId" : "23be51b7e1eb4228bd896ac1a4640c62",
10 "startDate" : "string",
11 "status" : 0,
12 "type" : "type"
13 }
HTTP响应示例(200):
1 {
2 "code" : "success",
3 "data" : {
4 "list" : [ {
5 "compareId" : 1248756572307264,
6 "cost" : 0,
7 "createTime" : "2017-12-25 16:17:27",
8 "name" : "compare0001",
9 "offlineDatabagStatus" : "offlineDatabagStatus",
10 "priority" : 2,
11 "reason" : "reason",
12 "sourceId" : "123223223212",
13 "status" : "succcess",
14 "thumbnail" : [ "https://m.bimface.com/9b711803a43b92d871cde346b63e5019/thumbnail/96.png" ],
15 "type" : "type",
16 "workerType" : "workerType"
17 } ],
18 "page" : {
19 "htmlDisplay" : "string",
20 "nextPage" : 0,
21 "pageNo" : 0,
22 "pageSize" : 0,
23 "prePage" : 0,
24 "startIndex" : 0,
25 "totalCount" : 0,
26 "totalPages" : 0
27 }
28 },
29 "message" : ""
30 }
返回体参数说明请参考 ModelCompareBean 类
1 public class ModelCompareBean
2 {
3 /// <summary>
4 /// 对比后返回的ID,用于获取对比状态或者结果等信息
5 /// </summary>
6 [JsonProperty("compareId", NullValueHandling = NullValueHandling.Ignore)]
7 public long? CompareId { get; set; }
8
9 /// <summary>
10 /// 对比完成的消耗时间,单位是秒
11 /// </summary>
12 [JsonProperty("cost", NullValueHandling = NullValueHandling.Ignore)]
13 public int? Cost { get; set; }
14
15 /// <summary>
16 /// 对比开始时间,格式:yyyy-MM-dd hh:mm:ss
17 /// </summary>
18 [JsonProperty("createTime", NullValueHandling = NullValueHandling.Ignore)]
19 public string CreateTime { get; set; }
20
21 /// <summary>
22 /// 用户指定对比后的模型的名字
23 /// </summary>
24 [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
25 public string Name { get; set; }
26
27 /// <summary>
28 /// 离线数据包生成状态。prepare(未生成); processing(生成中); success(生成成功); failed(生成失败)
29 /// </summary>
30 [JsonProperty("offlineDatabagStatus", NullValueHandling = NullValueHandling.Ignore)]
31 public string OfflineDatabagStatus { get; set; }
32
33 /// <summary>
34 /// 对比优先级。取值 1、2、3。数字越大,优先级越低。默认为2
35 /// </summary>
36 [JsonProperty("priority", NullValueHandling = NullValueHandling.Ignore)]
37 public int? Priority { get; set; }
38
39 /// <summary>
40 /// 若对比失败,返回失败原因
41 /// </summary>
42 [JsonProperty("reason", NullValueHandling = NullValueHandling.Ignore)]
43 public string Reason { get; set; }
44
45 /// <summary>
46 /// 第三方应用自己的ID
47 /// </summary>
48 [JsonProperty("sourceId", NullValueHandling = NullValueHandling.Ignore)]
49 public string SourceId { get; set; }
50
51 /// <summary>
52 /// 对比状态:prepare(待对比)、processing(对比中)、success(对比成功)、failed(对比失败)
53 /// </summary>
54 [JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
55 public string Status { get; set; }
56
57 /// <summary>
58 /// 对比几个缩略图
59 /// </summary>
60 [JsonProperty("thumbnail", NullValueHandling = NullValueHandling.Ignore)]
61 public string[] Thumbnails { get; set; }
62
63 /// <summary>
64 /// 模型对比的类型 rvt(或者igms…)
65 /// </summary>
66 [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
67 public string Type { get; set; }
68
69 /// <summary>
70 /// 处理对比任务的worker类型。model-compare(或者drawing-compare…)
71 /// </summary>
72 [JsonProperty("workerType", NullValueHandling = NullValueHandling.Ignore)]
73 public string WorkerType { get; set; }
74
75 /// <summary>返回表示当前对象的字符串。</summary>
76 /// <returns>表示当前对象的字符串。</returns>
77 public override string ToString()
78 {
79 return this.SerializeToJson();
80 }
C#实现方法:
1 /// <summary>
2 /// 批量获取模型对比状态
3 /// </summary>
4 /// <param name="accessToken">【必填】令牌</param>
5 /// <param name="request">【必填】批量获取模型对比状态的请求参数</param>
6 /// <returns></returns>
7 public virtual ModelCompareQueryResponse GetCompareStatusList(string accessToken, ModelCompareQueryRequest request)
8 {
9 //POST https://api.bimface.com/compares
10 string url = BimfaceConstants.API_HOST + "/compares";
11 string data = request.SerializeToJson();
12 BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
13 headers.AddOAuth2Header(accessToken);
14
15 try
16 {
17 ModelCompareQueryResponse response;
18
19 HttpManager httpManager = new HttpManager(headers);
20 HttpResult httpResult = httpManager.Post(url, data);
21 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
22 {
23 response = httpResult.Text.DeserializeJsonToObject<ModelCompareQueryResponse>();
24 }
25 else
26 {
27 response = new ModelCompareQueryResponse
28 {
29 Message = httpResult.RefText
30 };
31 }
32
33 return response;
34 }
35 catch (Exception ex)
36 {
37 throw new Exception("[批量获取模型对比状态]发生异常!", ex);
38 }
39 }
系列目录 【已更新最新开发文章,点击查看详细】