using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Net;
|
using System.Text;
|
using IStation.Bimface;
|
|
namespace IStation
|
{
|
/// <summary>
|
/// 文件转换
|
/// </summary>
|
public sealed partial class BimfaceClient
|
{
|
private const string _translateUrl = @"https://api.bimface.com/translate";//文件转换URL
|
|
/// <summary>
|
/// 转换Dwg
|
/// </summary>
|
/// <param name="fileid"></param>
|
/// <param name="translateStyle"></param>
|
/// <returns></returns>
|
public TranslateFileResponse TranslateDwg(long fileid, eDwgTranslateStyle translateStyle)
|
{
|
GetAccessToken();
|
if (translateStyle == eDwgTranslateStyle.Vector)
|
{
|
return TranslateDwgToVectorDrawings(_accesstoken, fileid);
|
}
|
else
|
{
|
return TranslateDwgToPicture(_accesstoken, fileid);
|
}
|
}
|
|
/// <summary>
|
/// 转换Dwg
|
/// </summary>
|
/// <returns></returns>
|
public eTranslateStatus TranslateDwgEx(long fileid, eDwgTranslateStyle translateStyle)
|
{
|
var response = TranslateDwg(fileid, translateStyle);
|
if (response.status == Constants.Success)
|
return eTranslateStatus.Success;
|
if (response.status == Constants.ProcessingStatus)
|
return eTranslateStatus.ProcessingStatus;
|
return eTranslateStatus.Success;
|
}
|
|
/// <summary>
|
/// RVT文件转换
|
/// </summary>
|
/// <param name="fileid"></param>
|
/// <param name="translateStyle"></param>
|
/// <returns></returns>
|
public TranslateFileResponse TranslateRvt(long fileid, eRvtTranslateStyle translateStyle)
|
{
|
GetAccessToken();
|
|
if (translateStyle == eRvtTranslateStyle.Real)
|
{
|
return TranslateRvtToRealStyle(_accesstoken, fileid);
|
}
|
else
|
{
|
return TranslateRvtToRenderStyle(_accesstoken, fileid);
|
}
|
}
|
|
/// <summary>
|
/// 转换Rvt
|
/// </summary>
|
/// <param name="fileid"></param>
|
/// <param name="translateStyle"></param>
|
/// <returns></returns>
|
public eTranslateStatus TranslateRvtEx(long fileid, eRvtTranslateStyle translateStyle)
|
{
|
var response = TranslateRvt(fileid, translateStyle);
|
if (response.status == Constants.Success)
|
return eTranslateStatus.Success;
|
if (response.status == Constants.ProcessingStatus)
|
return eTranslateStatus.ProcessingStatus;
|
return eTranslateStatus.Success;
|
}
|
|
/// <summary>
|
/// 转换其他3D模型
|
/// </summary>
|
/// <param name="fileid"></param>
|
/// <returns></returns>
|
public TranslateFileResponse TranslateOther3D(long fileid)
|
{
|
GetAccessToken();
|
var request = new Other3DModelFileTranslateRequest();
|
request.source = new TranslateSource() { fileId = fileid };
|
var data = JsonHelper.Object2Json(request.GetJsonDict());
|
return TranslateFile(_accesstoken, data);
|
}
|
|
/// <summary>
|
/// 转换其他3D模型
|
/// </summary>
|
/// <param name="fileid"></param>
|
/// <returns></returns>
|
public eTranslateStatus TranslateOther3DEx(long fileid)
|
{
|
var response = TranslateOther3D(fileid);
|
if (response.status == Constants.Success)
|
return eTranslateStatus.Success;
|
if (response.status == Constants.ProcessingStatus)
|
return eTranslateStatus.ProcessingStatus;
|
return eTranslateStatus.Success;
|
}
|
|
/// <summary>
|
/// 获取文件转换状态
|
/// </summary>
|
/// <param name="fileid"></param>
|
/// <returns></returns>
|
public TranslateFileResponse GetTranslateStatus(long fileid)
|
{
|
GetAccessToken();
|
var url = string.Format("{0}?fileId={1}", _translateUrl, fileid);
|
using (var httpClient = new HttpClient())
|
using (var request = new HttpRequestMessage(HttpMethod.Get, url))
|
{
|
var autoHeader = new HttpHeaders().GetBasicAuthorHeader(_accesstoken);
|
request.Headers.Add(autoHeader.Key, autoHeader.Value);
|
var response = httpClient.SendAsync(request).Result;
|
response.EnsureSuccessStatusCode();
|
var responsetext = response.Content.ReadAsStringAsync().Result;
|
var result = JsonHelper.Json2Object<Result<TranslateFileResponse>>(responsetext);
|
if (result.code != Constants.Success)
|
{
|
throw new BimfaceException(result.code);
|
}
|
return result.data;
|
}
|
}
|
|
/// <summary>
|
/// 获取文件转换状态
|
/// </summary>
|
/// <param name="fileid"></param>
|
/// <returns></returns>
|
public eTranslateStatus GetTranslateStatusEx(long fileid)
|
{
|
var response = GetTranslateStatus(fileid);
|
if (response.status == Constants.Success)
|
return eTranslateStatus.Success;
|
if (response.status == Constants.ProcessingStatus)
|
return eTranslateStatus.ProcessingStatus;
|
return eTranslateStatus.Success;
|
}
|
|
//将Dwg转换为矢量图形
|
private TranslateFileResponse TranslateDwgToVectorDrawings(string accessToken, long fieldid)
|
{
|
var request = new DwgFileTranslateRequest();
|
request.source = new TranslateSource() { fileId = fieldid };
|
var data = JsonHelper.Object2Json(request.GetJsonDict());
|
return TranslateFile(accessToken, data);
|
}
|
|
//将Dwg转换为图片
|
private TranslateFileResponse TranslateDwgToPicture(string accessToken, long fieldid)
|
{
|
var request = new DwgFileTranslateRequest();
|
request.source = new TranslateSource() { fileId = fieldid };
|
request.config = new DwgModelConfig() { exportDrawing = false };
|
var data = JsonHelper.Object2Json(request.GetJsonDict());
|
return TranslateFile(accessToken, data);
|
}
|
|
//发起转换。将RVT文件转换成真实模式的效果。
|
private TranslateFileResponse TranslateRvtToRealStyle(string accessToken, long fieldid)
|
{
|
var request = new RvtFileTranslateRequest();
|
request.config = new RvtModelConfig() { texture = true };
|
request.source = new TranslateSource() { fileId = fieldid };
|
var data = JsonHelper.Object2Json(request.GetJsonDict());
|
return TranslateFile(accessToken, data);
|
}
|
|
//发起转换。将RVT文件转换成着色模式的效果。
|
private TranslateFileResponse TranslateRvtToRenderStyle(string accessToken, long fieldid)
|
{
|
var request = new RvtFileTranslateRequest();
|
request.source = new TranslateSource() { fileId = fieldid };
|
var data = JsonHelper.Object2Json(request.GetJsonDict());
|
return TranslateFile(accessToken, data);
|
}
|
|
//文件转换
|
private TranslateFileResponse TranslateFile(string accesstoken, string data)
|
{
|
using (var httpClient = new HttpClient())
|
using (var request = new HttpRequestMessage(HttpMethod.Put, _translateUrl))
|
{
|
var autoHeader = new HttpHeaders().GetBasicAuthorHeader(accesstoken);
|
request.Headers.Add(autoHeader.Key, autoHeader.Value);
|
request.Content= new StringContent(data,Encoding.UTF8,"application/json");
|
var response = httpClient.SendAsync(request).Result;
|
response.EnsureSuccessStatusCode();
|
var responsetext=response.Content.ReadAsStringAsync().Result;
|
var result = JsonHelper.Json2Object<Result<TranslateFileResponse>>(responsetext);
|
if (result.code != Constants.Success)
|
{
|
throw new BimfaceException(result.code);
|
}
|
return result.data;
|
}
|
}
|
|
|
|
|
|
}
|
}
|