系列目录 【已更新最新开发文章,点击查看详细】
在Revit等BIM设计工具中可以给模型的某个部位添加链接信息。即类似于在Office Word、Excel 中给一段文字添加本地文件链接或者网址链接等类似功能。例如下面的一个RVT模型种包含了2个链接。
下面详细介绍如何获取单个模型包含的所有链接信息。
请求地址:GET https://api.bimface.com/data/v2/files/{fileId}/links
说明:获取一个模型种包含的所有链接信息
参数:
请求 path(示例):https://api.bimface.com/data/v2/files/1211223382064960/links
请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"
HTTP响应示例(200):
{
"code" : "success",
"data" : [ {
"guid" : "ffb665b7-067f-4cd6-b080-214e96db0f73-00058185",
"id" : 0,
"name" : "file_link.rvt : 12 : loc <not shared>",
"transform" : ""
} ],
"message" : ""
}
返回的结果封装成 SingleModelLink 类
/// <summary>
/// 获取单个模型的链接信息返回的结果类
/// </summary>
[Serializable]
public class SingleModelLink : GeneralResponse<List<Link>>
{
}
[Serializable]
public class Link
{
[JsonProperty("guid")]
public string Guid { get; set; }
[JsonProperty("id")]
public long? Id { get; set; }
/// <summary>
/// 样例 : "file_link.rvt : 12
/// </summary>
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("transform")]
public string Transform { get; set; }
/// <summary>返回表示当前对象的字符串。</summary>
/// <returns>表示当前对象的字符串。</returns>
public override string ToString()
{
return String.Format("[Link guid={0}, id={1}, name={2},transform={3}]",
Guid, Id, Name, Transform);
}
}
C#实现方法:
1 /// <summary>
2 /// 获取单个模型的楼层信息
3 /// </summary>
4 /// <param name="accessToken">【必填】令牌</param>
5 /// <param name="fileId">【必填】代表该单模型的文件ID</param>
6 /// <returns></returns>
7 public virtual SingleModelLink GetSingleModelLink(string accessToken, long fileId)
8 {
9 // GET https://api.bimface.com/data/v2/files/{fileId}/links
10 string url = string.Format(BimfaceConstants.API_HOST + "/data/v2/files/{0}/links", fileId);
11
12 BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
13 headers.AddOAuth2Header(accessToken);
14
15 try
16 {
17 SingleModelLink 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<SingleModelLink>();
24 }
25 else
26 {
27 response = new SingleModelLink
28 {
29 Message = httpResult.RefText
30 };
31 }
32
33 return response;
34 }
35 catch (Exception ex)
36 {
37 throw new Exception("[获取模型链接信息]发生异常!", ex);
38 }
39 }
其中调用到的 httpManager.Get() 方法,请参考《C# HTTP系列》
测试
在BIMFACE的控制台中可以看到我们上传的文件列表,模型状态均为转换成功。
以模型 “A4.rvt” 为例测试上述的方法
查询到了2条链接信息,与文章开始处的源文件中的链接信息对应。
并不是所有的模型中都包含链接信息,如果不包含,则返回 null
测试代码如下:
1 // 获取单模型链接信息
2 protected void btnGetSingleModelLink_Click(object sender, EventArgs e)
3 {
4 long fileId = txtFileID.Text.Trim().ToLong();
5 FileConvertApi api = new FileConvertApi();
6 SingleModelLink response = api.GetSingleModelLink(txtAccessToken.Text, fileId);
7
8 StringBuilder sb = new StringBuilder();
9 if (response.Data != null)
10 {
11 List<Link> lstLink = response.Data;
12 foreach (var link in lstLink)
13 {
14 sb.AppendLine(link.ToString());
15 }
16 }
17
18 txtResult.Text = response.Code.ToString2()
19 + Environment.NewLine
20 + response.Message.ToString2()
21 + Environment.NewLine
22 + sb;
23 }
系列目录 【已更新最新开发文章,点击查看详细】