lixiaojun
2024-07-23 ec9bc16c81d897549568d826047da0189b8e85a3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
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;
        }
 
 
 
 
 
 
    }
}