namespace Yw
{
///
/// 文件转换
///
public sealed partial class BIMFaceClient
{
private const string _translateUrl = @"https://api.bimface.com/v2/translate";//文件转换URL
private const string _translateStatusUrl = @"https://api.bimface.com/translate";//文件转换状态URL
///
/// 转换
///
public async Task TranslateRvtFile(string bimfaceId, eRvtTranslateStyle translateStyle)
{
await GetAccessToken();
if (translateStyle == eRvtTranslateStyle.Real)
{
return await TranslateRvtFileToRealStyleAsync(bimfaceId);
}
else
{
return await TranslateRvtFileToRenderStyleAsync(bimfaceId);
}
}
///
/// 转换
///
public async Task 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 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 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 TranslateFileAsync(string data)
{
var url = _translateUrl;
var request = new FlurlRequest(url);
var header = HeaderHelper.GetHeader(_accessToken);
request.WithHeader(header.Key, header.Value);
var content = new StringContent(data, Encoding.UTF8, "application/json");
var response = await request.PutAsync(content);
var jsonString = await response.GetStringAsync();
var result = JsonHelper.Json2Object(jsonString);
result.TryThrowException();
return result.Data;
}
///
/// 获取文件转换状态
///
public async Task GetFileTranslateStatus(string bimfaceId)
{
await GetAccessToken();
return await GetFileTranslateStatusAsync(bimfaceId);
}
///
/// 获取文件转换状态
///
public async Task 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 GetFileTranslateStatusAsync(string bimfaceId)
{
var url = $"{_translateStatusUrl}?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(jsonString);
result.TryThrowException();
return result.Data;
}
}
}