namespace Yw
|
{
|
/// <summary>
|
/// 文件转换
|
/// </summary>
|
public sealed partial class BIMFaceClient
|
{
|
private const string _translateUrl = @"https://api.bimface.com/translate";//文件转换URL
|
|
|
/// <summary>
|
/// 转换
|
/// </summary>
|
public async Task<TranslateFileResponseModel> TranslateRvtFile(string bimfaceId, eRvtTranslateStyle translateStyle)
|
{
|
await GetAccessToken();
|
|
if (translateStyle == eRvtTranslateStyle.Real)
|
{
|
return await TranslateRvtFileToRealStyleAsync(bimfaceId);
|
}
|
else
|
{
|
return await TranslateRvtFileToRenderStyleAsync(bimfaceId);
|
}
|
}
|
|
/// <summary>
|
/// 转换
|
/// </summary>
|
public async Task<eTranslateStatus> TranslateRvtFileReturnStatus(string bimfaceId, eRvtTranslateStyle translateStyle)
|
{
|
var response = await TranslateRvtFile(bimfaceId, translateStyle);
|
if (response.Status == Constants.Success)
|
{
|
return eTranslateStatus.Success;
|
}
|
if (response.Status == Constants.ProcessingStatus)
|
{
|
return eTranslateStatus.Processing;
|
}
|
return eTranslateStatus.Success;
|
}
|
|
//发起转换。将RVT文件转换成真实模式的效果
|
private async Task<TranslateFileResponseModel> TranslateRvtFileToRealStyleAsync(string bimfaceId)
|
{
|
var request = new TranslateRvtFileRequest();
|
request.Source.FileId = long.Parse(bimfaceId);
|
request.Config.Texture = true;
|
var data = JsonHelper.Object2Json(request);
|
return await TranslateFileAsync(data);
|
}
|
|
//发起转换 , 将RVT文件转换成着色模式的效果
|
private async Task<TranslateFileResponseModel> TranslateRvtFileToRenderStyleAsync(string bimfaceId)
|
{
|
var request = new TranslateRvtFileRequest();
|
request.Source.FileId = long.Parse(bimfaceId);
|
var data = JsonHelper.Object2Json(request);
|
return await TranslateFileAsync(data);
|
}
|
|
//文件转换
|
private async Task<TranslateFileResponseModel> TranslateFileAsync(string data)
|
{
|
var url = _translateUrl;
|
var request = new FlurlRequest(url);
|
var header = HeaderHelper.GetHeader(_accessToken);
|
request.WithHeader(header.Key, header.Value);
|
request.Content = new StringContent(data, Encoding.UTF8, "application/json");
|
var response = await request.PutAsync();
|
var jsonString = await response.GetStringAsync();
|
var result = JsonHelper.Json2Object<TranslateFileResponse>(jsonString);
|
result.TryThrowException();
|
return result.Data;
|
}
|
|
|
/// <summary>
|
/// 获取文件转换状态
|
/// </summary>
|
public async Task<TranslateFileResponseModel> GetFileTranslateStatus(string bimfaceId)
|
{
|
await GetAccessToken();
|
return await GetFileTranslateStatusAsync(bimfaceId);
|
}
|
|
/// <summary>
|
/// 获取文件转换状态
|
/// </summary>
|
public async Task<eTranslateStatus> GetFileTranslateStatusReturnStatus(string bimfaceId)
|
{
|
var response = await GetFileTranslateStatus(bimfaceId);
|
if (response.Status == Constants.Success)
|
{
|
return eTranslateStatus.Success;
|
}
|
if (response.Status == Constants.ProcessingStatus)
|
{
|
return eTranslateStatus.Processing;
|
}
|
return eTranslateStatus.Success;
|
}
|
|
//获取文件转换状态
|
private async Task<TranslateFileResponseModel> GetFileTranslateStatusAsync(string bimfaceId)
|
{
|
var url = $"{_translateUrl}?fileId={bimfaceId}";
|
var request = new FlurlRequest(url);
|
var header = HeaderHelper.GetHeader(_accessToken);
|
request.WithHeader(header.Key, header.Value);
|
var response = await request.GetAsync();
|
var jsonString = await response.GetStringAsync();
|
var result = JsonHelper.Json2Object<TranslateFileResponse>(jsonString);
|
result.TryThrowException();
|
return result.Data;
|
}
|
|
|
|
|
|
|
}
|
}
|