《C#开发BIMFACE系列12 服务端API之文件转换》中详细介绍了7种文件转换的方法。发起源文件/模型转换后,转换过程可能成功也可能失败。那么在这种情况下就需要查询源文件/模型的转换状态。一共有三种方式可以知道转换是否成功。

第一种:调用文件转换接口 https://api.bimface.com/translate,该接口的返回结果中包含转换结果信息。

第二种:调用文件转换接口 https://api.bimface.com/translate,由于转换不能立即完成,BIMFace支持在文件转换完成以后,通过Callback机制通知应用,在Callbak返回结果中包含了转换结果信息。

第三种就是本篇要介绍通过接口查询转换状态。

请求地址:GET https://api.bimface.com/translate

说明:应用发起转换以后,可以通过该接口查询转换状态

参数:

请求 path(示例):https://api.bimface.com/translate?fileId=857482189666208

请求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"

HTTP响应示例(200):

{
"code" : "success",
"data" : {
"createTime" : "2017-12-25 17:23:46",
"databagId" : "9b711803a43b92d871cde346b63e5019",
"fileId" : ,
"name" : "bimface_2018.rvt",
"priority" : ,
"reason" : "reason",
"status" : "success",
"thumbnail" : [ "https://m.bimface.com/9b711803a43b92d871cde346b63e5019/thumbnail/96.png", "https://m.bimface.com/9b711803a43b92d871cde346b63e5019/thumbnail/256.png" ]
},
"message" : ""
}

C#实现方法:

 /// <summary>
/// 获取转换状态(应用发起转换以后,可以通过该接口查询转换状态)
/// </summary>
/// <param name="accessToken">令牌</param>
/// <param name="fileId"></param>
/// <returns></returns>
public virtual FileTranslateResponse GetFileTranslateStatus(string accessToken, long fileId)
{
//GET https://api.bimface.com/translate
string url = string.Format(BimfaceConstants.API_HOST + "/translate?fileId={0}", fileId); BimFaceHttpHeaders headers = new BimFaceHttpHeaders();
headers.AddOAuth2Header(accessToken); try
{
FileTranslateResponse response; HttpManager httpManager = new HttpManager(headers);
HttpResult httpResult = httpManager.Get(url);
if (httpResult.Status == HttpResult.STATUS_SUCCESS)
{
response = httpResult.Text.DeserializeJsonToObject<FileTranslateResponse>();
}
else
{
response = new FileTranslateResponse
{
Message = httpResult.RefText
};
} return response;
}
catch (Exception ex)
{
throw new Exception("[获取转换状态]发生异常!", ex);
}
}

其中调用到的 httpManager.Get() 方法,请参考《C# HTTP系列》

测试
在BIMFACE的控制台中可以看到我们上传的文件列表,共计2个文件。模型状态均为转换成功。
 

以“rac_advanced_sample_project-三维视图 - From Parking Area.dwg”为例,查询其转换的状态信息

测试代码如下:
 // 获取转换状态
protected void btnGetFileTranslateStatus_Click(object sender, EventArgs e)
{
long fileId = txtFileID.Text.Trim().ToLong();
FileConvertApi api = new FileConvertApi();
FileTranslateResponse response = api.GetFileTranslateStatus(txtAccessToken.Text, fileId); txtResult.Text = response.Code.ToString2()
+ Environment.NewLine
+ response.Message.ToString2()
+ Environment.NewLine
+ response.Data.ToString2();
}

返回的转换结果类FileTranslateResponse如下:

 /// <summary>
/// 文件转换返回的结果类
/// </summary>
[Serializable]
public class FileTranslateResponse : GeneralResponse<FileTranslateEntity>
{ } [Serializable]
public class FileTranslateEntity
{
/// <summary>
/// 文件转换完成的时间
/// </summary>
[JsonProperty("createTime")]
public DateTime? CreateTime { get; set; } [JsonProperty("databagId")]
public string DatabagId { get; set; } [JsonProperty("fileId")]
public long? FileId { get; set; } /// <summary>
/// 文件的名称,包括后缀
/// </summary>
[JsonProperty("name")]
public string Name { get; set; } /// <summary>
/// 优先级,数字越大,优先级越低。1, 2, 3
/// </summary>
[JsonProperty("priority")]
public int? Priority { get; set; } /// <summary>
/// 若转换失败,则返回失败原因
/// </summary>
[JsonProperty("reason")]
public string Reason { get; set; } /// <summary>
/// 转换的状态
/// </summary>
[JsonProperty("status")]
public string Status { get; set; } /// <summary>
/// 缩略图
/// </summary>
[JsonProperty("thumbnail")]
public string[] Thumbnails { get; set; } /// <summary>返回表示当前对象的字符串。</summary>
/// <returns>表示当前对象的字符串。</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
if(Thumbnails != null && Thumbnails.Length > )
{
foreach(string thumbnail in Thumbnails)
{
sb.AppendLine(thumbnail);
}
} return string.Format("FileTranslateEntity [createTime={0}, fileId={1}, name={2}, priority={3},reason={4},status={5},thumbnail={6}]",
CreateTime, FileId, Name, Priority, Reason, Status, sb.ToString());
}
}
 

C#开发BIMFACE系列13 服务端API之获取转换状态的更多相关文章

  1. C#开发BIMFACE系列7 服务端API之获取文件信息列表

    系列目录     [已更新最新开发文章,点击查看详细] 本文详细介绍如何获取BIMFACE平台中所有上传过的文件信息列表. 请求地址:GET https://file.bimface.com/file ...

  2. C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken

    系列目录     [已更新最新开发文章,点击查看详细] BIMFACE 平台为开发者提供了大量的服务器端 API 与 JavaScript API,用于二次开发 BIM 的相关应用. BIMFACE ...

  3. C#开发BIMFACE系列8 服务端API之获取文件上传状态信息

    系列目录     [已更新最新开发文章,点击查看详细] 在BIMFACE控制台上传文件,上传过程及结束后它会自动告诉你文件的上传状态,目前有三种状态:uploading,success,failure ...

  4. C#开发BIMFACE系列9 服务端API之获取应用支持的文件类型

    系列目录     [已更新最新开发文章,点击查看详细] BIMFACE最核心能力之一是工程文件格式转换.无需安装插件,支持数十种工程文件格式在云端转换,完整保留原始文件信息.开发者将告别原始文件解析烦 ...

  5. C#开发BIMFACE系列10 服务端API之获取文件下载链接

    系列目录     [已更新最新开发文章,点击查看详细] 通过BIMFACE控制台或者调用服务接口上传文件成功后,默认场景下需要下载该源文件,下载文件一般需要知道文件的下载链接即可.BIMACE平台提供 ...

  6. C#开发BIMFACE系列17 服务端API之获取模型数据2:获取构件材质列表

    系列目录     [已更新最新开发文章,点击查看详细] 在上一篇<C#开发BIMFACE系列16 服务端API之获取模型数据1:查询满足条件的构件ID列表>中介绍了获取单文件(模型)的所有 ...

  7. C#开发BIMFACE系列18 服务端API之获取模型数据3:获取构件属性

    系列目录     [已更新最新开发文章,点击查看详细] 本篇主要介绍如何获取单文件/模型下单个构建的属性信息. 请求地址:GET https://api.bimface.com/data/v2/fil ...

  8. C#开发BIMFACE系列19 服务端API之获取模型数据4:获取多个构件的共同属性

    系列目录     [已更新最新开发文章,点击查看详细] 在前几篇博客中介绍了一个三维文件/模型包含多个构建,每个构建又是由多种材质组成,每个构建都有很多属性.不同的构建也有可能包含相同的属性. 上图中 ...

  9. C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模型的楼层信息

    系列目录     [已更新最新开发文章,点击查看详细] 一个文件/模型中可能包含多个楼层信息,获取楼层信息对于前端页面的动态展示非常有帮助.本篇介绍获取一个文件/模型中可能包含多个楼层信息的详细方法. ...

随机推荐

  1. SpringBoot(18)---通过Lua脚本批量插入数据到Redis布隆过滤器

    通过Lua脚本批量插入数据到布隆过滤器 有关布隆过滤器的原理之前写过一篇博客: 算法(3)---布隆过滤器原理 在实际开发过程中经常会做的一步操作,就是判断当前的key是否存在. 那这篇博客主要分为三 ...

  2. 实战SpringCloud响应式微服务系列教程(第一章)

    前言 在当今互联网飞速发展的时代,业务需求不断的更新和产品的迭代给系统开发过程和编程模式也带来巨大挑战,Spring Cloud微服务也随之应用而生,从springboot1.x到springboot ...

  3. jsp对数据库的使用

    JDBC由Sun公司制定,全称JavaDataBase Connectivity,是一种可以执行SQL语句并可返回结果的javaAPI,支持多种关系型数据库,封装在Java.sql.* 它的具体位置在 ...

  4. 01-k8s 架构

    原文地址:https://github.com/kubernetes/kubernetes/blob/release-1.3/docs/design/architecture.md Kubernete ...

  5. Hack The Box Web Pentest 2019

    [20 Points] Emdee five for life [by L4mpje] 问题描述: Can you encrypt fast enough? 初始页面,不管怎么样点击Submit都会显 ...

  6. 游戏开发3D基础知识

    概念学习: 向量 向量简介 我们将所有彼此平行的向量进行平移,使其起点与坐标原点重合,当某一向量的起始端与坐标原点重合,我们成该向量处于标准位置.这样,我们就可用向量的终点坐标来描述一个处于标准位置的 ...

  7. 【iOS】获取应用程序本地路径

    Xcode 会为每一个应用程序生成一个私有目录,并随机生成一个数字和字母串作为目录名,在每一次应用程序启动时,这个字母数字串都是不同于上一次. 所以通常使用 Documents 目录进行数据持久化的保 ...

  8. 【iOS】iOS 调试快速定位程序在哪崩溃

    iOS 开发过程中经常遇到程序崩溃.快速定位程序在哪崩溃的步骤如下: 1. 2. 3. 这样设置后,程序崩溃时会定位到崩溃的语句,如下: 原文链接:iOS开发何如在调试的时候轻松找到程序在哪里崩溃

  9. sentos中bonding(网卡绑定技术)1

    一.GRUB添加kernel参数 1.# vim /etc/sysconfig/grubGRUB_CMDLINE_LINUX="......      net.ifnames=0" ...

  10. Guitar Pro如何更改五线谱的符杆方向

    可能有的小伙伴不知道Guitar Pro是什么软件,我先稍微给大家介绍一下~ Guitar Pro是专为帮助所有吉他爱好者学习.绘谱.创作的多功能软件.它包含所有吉他的现有指法和音色,可以帮助我们了解 ...