亚洲精品亚洲人成在线观看麻豆,在线欧美视频一区,亚洲国产精品一区二区动图,色综合久久丁香婷婷

              當(dāng)前位置:首頁 > IT技術(shù) > Windows編程 > 正文

              C#開發(fā)BIMFACE系列45 服務(wù)端API之創(chuàng)建離線數(shù)據(jù)包
              2021-10-18 17:48:31


              BIMFACE二次開發(fā)系列目錄???? ??【已更新最新開發(fā)文章,點擊查看詳細(xì)】??


              ?


              BIMFACE的常規(guī)應(yīng)用方式有公有云與私有化部署兩種方式,并且瀏覽模型或者圖紙需要使用ViewToken,ViewToken 有效期為12小時,過期后需要調(diào)用接口重新生成。該過程稍微有點麻煩且性能可能受到網(wǎng)絡(luò)等環(huán)境的影響。本文介紹第三種更加便捷高效的方式。

              由于用戶所在環(huán)境以及應(yīng)用開發(fā)自身的需求,BIMFACE的用戶可能想在如下兩個場景下還能瀏覽上傳的BIMFACE的模型:


              • 由于內(nèi)容保護等原因,有些BIMFACE的用戶所在的網(wǎng)絡(luò)環(huán)境不一定允許訪問公網(wǎng)的BIMFACE服務(wù)。
              • 用戶自己的應(yīng)用服務(wù)不想依賴于BIMFACE的服務(wù)來瀏覽已經(jīng)在BIMFACE轉(zhuǎn)換過的模型。尤其適用于運維場景,模型數(shù)量不多,且內(nèi)容不會變更。

              離線數(shù)據(jù)包功能就是為這種需求量身設(shè)計的,每一個用戶上傳的模型在轉(zhuǎn)換后都可以生成對應(yīng)的離線數(shù)據(jù)包, 該離線數(shù)據(jù)包可以下載到本地,獨立部署到用戶的環(huán)境內(nèi),具體操作流程以及部署細(xì)節(jié)可以參考服務(wù)器端部署離線數(shù)據(jù)包、JS端調(diào)用離線數(shù)據(jù)包。


              生成方式


              BIMFACE提供了兩種方式生成離線數(shù)據(jù)包:


              • 在控制臺中手動生成

              C#開發(fā)BIMFACE系列45 服務(wù)端API之創(chuàng)建離線數(shù)據(jù)包_sql


              • 調(diào)用API自動生成

              企業(yè)級集成應(yīng)用開發(fā)一般都使用第二種方式,靈活方便。

              BIMFACE支持三種類型的文件生成離線數(shù)據(jù)包,文件轉(zhuǎn)換、模型集成、圖對比成功后,即可創(chuàng)建該文件的離線數(shù)據(jù)包。 在創(chuàng)建離線數(shù)據(jù)包完成以后,通過Callback機制通知調(diào)用方(請參考這里);另外,調(diào)用方也可以通過接口查詢離線數(shù)據(jù)包狀態(tài)。?


              通過文件ID創(chuàng)建離線數(shù)據(jù)包


              請求地址:PUT https://api.bimface.com/files/{fileId}/offlineDatabag

              參數(shù):

              C#開發(fā)BIMFACE系列45 服務(wù)端API之創(chuàng)建離線數(shù)據(jù)包_BIM  BIMFACE_02

              其中DatabagDerivativeRequest.cs 類如下



              1 namespace BIMFace.SDK.CSharp.Entity.Request
              2 {
              3 /// <summary>
              4 /// 為文件創(chuàng)建bake數(shù)據(jù)包或者離線數(shù)據(jù)包的請求類
              5 /// </summary>
              6 [Serializable]
              7 public class DatabagDerivativeRequest
              8 {
              9 /// <summary>
              10 /// 設(shè)置參數(shù),請參考官方具體API需要配置的相關(guān)參數(shù)
              11 /// </summary>
              12 [JsonProperty("config", NullValueHandling = NullValueHandling.Ignore)]
              13 public Config Config { get; set; }
              14 }
              15
              16 [Serializable]
              17 public class Config
              18 {
              19 public Config()
              20 {
              21 KeepModel = true;
              22 KeepDB = true;
              23 }
              24
              25 /// <summary>
              26 /// 默認(rèn)值為 true
              27 /// </summary>
              28 [JsonProperty("keepModel", NullValueHandling = NullValueHandling.Ignore)]
              29 public bool KeepModel { get; set; }
              30
              31 /// <summary>
              32 /// 默認(rèn)值為 true
              33 /// </summary>
              34 [JsonProperty("keepDB", NullValueHandling = NullValueHandling.Ignore)]
              35 public bool KeepDB { get; set; }
              36 }
              37
              38 }


              請求 path(示例):https://api.bimface.com/files/1199714943746080/offlineDatabag

              請求 header(示例):"Authorization: Bearer dc671840-bacc-4dc5-a134-97c1918d664b"

              請求 body(示例):



              {
              "config": {
              "keepModel": true,
              "keepDB": true
              }
              }


              添加上述參數(shù)后,生成的數(shù)據(jù)包中包含一個名為 modeldrive.db 的 SQLite 文件,數(shù)據(jù)庫文件中包含了模型轉(zhuǎn)換后的所有屬性數(shù)據(jù),方便保存到業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫中并使用。

              C#開發(fā)BIMFACE系列45 服務(wù)端API之創(chuàng)建離線數(shù)據(jù)包_sql_03


              測試程序


              (1)創(chuàng)建文件離線數(shù)據(jù)包

              C#開發(fā)BIMFACE系列45 服務(wù)端API之創(chuàng)建離線數(shù)據(jù)包_BIM  BIMFACE_04

              調(diào)用接口的實現(xiàn)代碼:



              1 private DatabagDerivativeCreateResponse CreateDatabag(string accessToken, long objectId, ModelType modelType, string callback = null, DatabagDerivativeRequest request = null)
              2 {
              3 /* 通過傳入相應(yīng)的ID創(chuàng)建對應(yīng)離線數(shù)據(jù)包:
              4 文件轉(zhuǎn)換ID:PUT https://api.bimface.com/files/{fileId}/offlineDatabag
              5 集成模型ID:PUT https://api.bimface.com/integrations/{integrateId}/offlineDatabag
              6 模型對比ID:PUT https://api.bimface.com/comparisions/{compareId}/offlineDatabag
              7 */
              8
              9 string actionType = string.Empty;
              10 if (modelType == ModelType.fileId)
              11 {
              12 actionType = "files";
              13 }
              14 else if (modelType == ModelType.integrateId)
              15 {
              16 actionType = "integrations";
              17 }
              18 else if (modelType == ModelType.compareId)
              19 {
              20 actionType = "comparisions";
              21 }
              22
              23 string url = BIMFaceConstants.API_HOST + string.Format("/{0}/{1}/offlineDatabag", actionType, objectId);
              24 if (callback.IsNotNullAndWhiteSpace())
              25 {
              26 url += "?callback=" + callback;
              27 }
              28
              29 if (request == null)
              30 {
              31 request = new DatabagDerivativeRequest();
              32 request.Config = new Config();
              33 }
              34
              35 string data = request.SerializeToJson();
              36
              37 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders();
              38 headers.AddOAuth2Header(accessToken);
              39
              40 try
              41 {
              42 DatabagDerivativeCreateResponse response;
              43 HttpManager httpManager = new HttpManager(headers);
              44 HttpResult httpResult = httpManager.Put(url, data);
              45 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
              46 {
              47 response = httpResult.Text.DeserializeJsonToObject<DatabagDerivativeCreateResponse>();
              48 }
              49 else
              50 {
              51 response = new DatabagDerivativeCreateResponse
              52 {
              53 Message = httpResult.RefText
              54 };
              55 }
              56
              57 return response;
              58 }
              59 catch (Exception ex)
              60 {
              61 throw new BIMFaceException("[創(chuàng)建離線數(shù)據(jù)包]發(fā)生異常!", ex);
              62 }
              63 }


              (2)查詢文件離線數(shù)據(jù)包狀態(tài)

              C#開發(fā)BIMFACE系列45 服務(wù)端API之創(chuàng)建離線數(shù)據(jù)包_.net_05

              調(diào)用接口的實現(xiàn)代碼



              1 private DatabagDerivativeQueryResponse QueryDatabag(string accessToken, long objectId, ModelType modelType)
              2 {
              3 /* 通過傳入相應(yīng)的ID創(chuàng)建對應(yīng)離線數(shù)據(jù)包:
              4 文件轉(zhuǎn)換ID:GET https://api.bimface.com/files/{fileId}/offlineDatabag
              5 集成模型ID:GET https://api.bimface.com/comparisions/{compareId}/offlineDatabag
              6 模型對比ID:GET https://api.bimface.com/integrations/{integrateId}/offlineDatabag
              7 */
              8
              9 string actionType = string.Empty;
              10 if (modelType == ModelType.fileId)
              11 {
              12 actionType = "files";
              13 }
              14 else if (modelType == ModelType.integrateId)
              15 {
              16 actionType = "integrations";
              17 }
              18 else if (modelType == ModelType.compareId)
              19 {
              20 actionType = "comparisions";
              21 }
              22
              23 string url = BIMFaceConstants.API_HOST + string.Format("/{0}/{1}/offlineDatabag", actionType, objectId);
              24
              25 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders();
              26 headers.AddOAuth2Header(accessToken);
              27
              28 try
              29 {
              30 DatabagDerivativeQueryResponse response;
              31 HttpManager httpManager = new HttpManager(headers);
              32 HttpResult httpResult = httpManager.Get(url);
              33 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
              34 {
              35 response = httpResult.Text.DeserializeJsonToObject<DatabagDerivativeQueryResponse>();
              36 }
              37 else
              38 {
              39 response = new DatabagDerivativeQueryResponse
              40 {
              41 Message = httpResult.RefText
              42 };
              43 }
              44
              45 return response;
              46 }
              47 catch (Exception ex)
              48 {
              49 throw new BIMFaceException("[查詢離線數(shù)據(jù)包]發(fā)生異常!", ex);
              50 }
              51 }


              查看控制臺

              C#開發(fā)BIMFACE系列45 服務(wù)端API之創(chuàng)建離線數(shù)據(jù)包_離線_06

              (3)獲取數(shù)據(jù)包下載地址

              C#開發(fā)BIMFACE系列45 服務(wù)端API之創(chuàng)建離線數(shù)據(jù)包_json_07

              調(diào)用接口的實現(xiàn)代碼



              1 /// <summary>
              2 /// 獲取數(shù)據(jù)包下載地址
              3 /// </summary>
              4 /// <param name="accessToken">【必填】令牌</param>
              5 /// <param name="objectId">【必填】模型Id 或 模型集成Id 或 模型對比Id</param>
              6 /// <param name="modelType">【必填】模型類別</param>
              7 /// <param name="databagVersion">數(shù)據(jù)包版本;對于offline、vr數(shù)據(jù)包,如果只有一個,則下載唯一的數(shù)據(jù)包,如果多個,則必須指定數(shù)據(jù)包版本</param>
              8 /// <param name="type">數(shù)據(jù)包類型,如offline、vr、igms</param>
              9 /// <returns></returns>
              10 private GetUrlSwaggerDisplay GetDatabagDownloadUrl(string accessToken, long objectId, ModelType modelType, string databagVersion = "", string type = "offline")
              11 {
              12 //GET https://api.bimface.com/data/databag/downloadUrl
              13 string url = BIMFaceConstants.API_HOST + "/data/databag/downloadUrl?" + modelType.ToString() + "=" + objectId;
              14 if (databagVersion.IsNotNullAndWhiteSpace())
              15 {
              16 url += "&databagVersion=" + databagVersion;
              17 }
              18 if (type.IsNotNullAndWhiteSpace())
              19 {
              20 url += "&type=" + type;
              21 }
              22
              23 BIMFaceHttpHeaders headers = new BIMFaceHttpHeaders();
              24 headers.AddOAuth2Header(accessToken);
              25
              26 try
              27 {
              28 GetUrlSwaggerDisplay response;
              29 HttpManager httpManager = new HttpManager(headers);
              30 HttpResult httpResult = httpManager.Get(url);
              31 if (httpResult.Status == HttpResult.STATUS_SUCCESS)
              32 {
              33 response = httpResult.Text.DeserializeJsonToObject<GetUrlSwaggerDisplay>();
              34 }
              35 else
              36 {
              37 response = new GetUrlSwaggerDisplay
              38 {
              39 Message = httpResult.RefText
              40 };
              41 }
              42
              43 return response;
              44 }
              45 catch (Exception ex)
              46 {
              47 throw new BIMFaceException("[獲取數(shù)據(jù)包下載地址]發(fā)生異常!", ex);
              48 }
              49 }


              通過文件集成ID創(chuàng)建離線數(shù)據(jù)包


              請求地址:PUT https://api.bimface.com/integrations/{integrateId}/offlineDatabag。

              其他操作與【通過文件ID創(chuàng)建離線數(shù)據(jù)包】的操作方式完全相同。


              通過模型對比ID創(chuàng)建離線數(shù)據(jù)包


              請求地址:PUT https://api.bimface.com/comparisions/{compareId}/offlineDatabag。

              其他操作與【通過文件ID創(chuàng)建離線數(shù)據(jù)包】的操作方式完全相同。

              ?


              上述測試程序使用了 《BIMFace.SDK.CSharp》開源SDK。歡迎大家下載使用。


              ?


              BIMFACE二次開發(fā)系列目錄???? ??【已更新最新開發(fā)文章,點擊查看詳細(xì)】??



              成在管理,敗在經(jīng)驗;嬴在選擇,輸在不學(xué)!? 貴在堅持!

              ?


              ?C#開發(fā)BIMFACE系列45 服務(wù)端API之創(chuàng)建離線數(shù)據(jù)包_.net_08技術(shù)棧

              ? ?

              ?1、Visual Studio、.C#/.NET、.NET Core、MVC、Web API、RESTful API、gRPC、SignalR、Python

              ?2、jQuery、Vue.js、Bootstrap

              ?3、數(shù)據(jù)庫:SQLServer、MySQL、PostgreSQL、Oracle、SQLite、Redis、MongoDB、ElasticSearch、TiDB、達夢DM、人大金倉、 神通、南大通用 GBase、華為 GaussDB 、騰訊 TDSQL 、阿里 PolarDB、螞蟻金服 OceanBase、東軟 OpenBASE、浪潮云溪數(shù)據(jù)庫 ZNBase

              ?4、ORM:Dapper、Entity Framework、FreeSql、SqlSugar、分庫分表、讀寫分離

              ?5、架構(gòu):領(lǐng)域驅(qū)動設(shè)計 DDD、ABP

              ?6、環(huán)境:跨平臺、Windows、Linux(CentOS、麒麟、統(tǒng)信UOS、深度Linux)、maxOS、IIS、Nginx、Apach

              ?7、移動App:Android、IOS、HarmonyOS、微信、小程序、快應(yīng)用、Xamarin、uni-app、MUI、Flutter、Framework7、Cordova、Ionic、React Native、Taro、NutUI、Smobiler

              ? ?

              ?云原生、微服務(wù)、Docker、CI/CD、DevOps、K8S;

              ?Dapr、RabbitMQ、Kafka、分布式、大數(shù)據(jù)、高并發(fā)、負(fù)載均衡、中間件、RPC、ELK;

              ?.NET + Docker + jenkins + Github + Harbor + K8S;


              ?

              作者:張傳寧 ??微軟MCP、系統(tǒng)架構(gòu)設(shè)計師、系統(tǒng)集成項目管理工程師、科技部創(chuàng)新工程師。

              ??????????專注于微軟.NET技術(shù)(.NET Core、Web、MVC、WinForm、WPF)、通用權(quán)限管理系統(tǒng)、工作流引擎、自動化項目(代碼)生成器、SOA 、DDD、 云原生(Docker、微服務(wù)、DevOps、CI/CD);PDF、CAD、BIM 審圖等研究與應(yīng)用。

              ??????????多次參與電子政務(wù)、圖書教育、生產(chǎn)制造等企業(yè)級大型項目研發(fā)與管理工作。

              ??????????熟悉中小企業(yè)軟件開發(fā)過程:需求分析、架構(gòu)設(shè)計、編碼測試、實施部署、項目管理。通過技術(shù)與管理幫助中小企業(yè)快速化實現(xiàn)互聯(lián)網(wǎng)技術(shù)全流程解決方案。

              ?????????



              ?????????

              ?

              本文摘自 :https://blog.51cto.com/u

              開通會員,享受整站包年服務(wù)立即開通 >