using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using IStation.Bimface; namespace IStation { /// /// 文件转换 /// public sealed partial class BimfaceClient { private const string _translateUrl = @"https://api.bimface.com/translate";//文件转换URL /// /// 转换Dwg /// /// /// /// public TranslateFileResponse TranslateDwg(long fileid, eDwgTranslateStyle translateStyle) { GetAccessToken(); if (translateStyle == eDwgTranslateStyle.Vector) { return TranslateDwgToVectorDrawings(_accesstoken, fileid); } else { return TranslateDwgToPicture(_accesstoken, fileid); } } /// /// 转换Dwg /// /// 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; } /// /// RVT文件转换 /// /// /// /// public TranslateFileResponse TranslateRvt(long fileid, eRvtTranslateStyle translateStyle) { GetAccessToken(); if (translateStyle == eRvtTranslateStyle.Real) { return TranslateRvtToRealStyle(_accesstoken, fileid); } else { return TranslateRvtToRenderStyle(_accesstoken, fileid); } } /// /// 转换Rvt /// /// /// /// 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; } /// /// 转换其他3D模型 /// /// /// 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); } /// /// 转换其他3D模型 /// /// /// 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; } /// /// 获取文件转换状态 /// /// /// 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>(responsetext); if (result.code != Constants.Success) { throw new BimfaceException(result.code); } return result.data; } } /// /// 获取文件转换状态 /// /// /// 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>(responsetext); if (result.code != Constants.Success) { throw new BimfaceException(result.code); } return result.data; } } } }