From ec9bc16c81d897549568d826047da0189b8e85a3 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期二, 23 七月 2024 12:01:55 +0800 Subject: [PATCH] 新增bimface sdk,方便调试 --- Component/Yw.BIMFace.SDK.Core/02-response/06-delete/DeleteIntegrateResponse.cs | 10 Component/Yw.BIMFace.SDK.Core/04-helper/ViewTokenExpireHelper.cs | 44 + Component/Yw.BIMFace.SDK.Core/05-client/04-upload/BimfaceClient_Upload.cs | 175 ++++ Component/Yw.BIMFace.SDK.Core/02-response/01-access-token/AccessTokenResponse.cs | 26 Component/Yw.BIMFace.SDK.Core/02-response/03-translate/TranslateFileResponseModel.cs | 78 + Component/Yw.BIMFace.SDK.Core/Properties/PublishProfiles/FolderProfile.pubxml.user | 10 Component/Yw.BIMFace.SDK.Core/04-helper/ExceptionHelper.cs | 26 Component/Yw.BIMFace.SDK.Core/04-helper/HeaderHelper.cs | 32 Hydro/HStation.Hydro.Core/HStation.Hydro.Core.csproj | 2 Component/Yw.BIMFace.SDK.Core/05-client/02-access-token/BIMFaceClient_AccessToken.cs | 53 + Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFileResponse.cs | 11 Component/Yw.BIMFace.SDK.Core/03-extensions/Base64Extension.cs | 33 Component/Yw.BIMFace.SDK.Core/Yw.BIMFace.SDK.Core.csproj | 16 WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/02-ProjectInfo/InputXhsProjectInfoWizardPage.cs | 2 Component/Yw.BIMFace.SDK.Core/00-core/eModelIdType.cs | 27 Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs | 21 Component/Yw.BIMFace.SDK.Core/00-core/eRvtTranslateStyle.cs | 18 Component/Yw.BIMFace.SDK.Core/02-response/01-access-token/AccessTokenResponseModel.cs | 30 WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/GenerateXhsProjectWizardPage.Designer.cs | 83 + Component/Yw.BIMFace.SDK.Core/04-helper/ResponseHelper.cs | 63 + Component/Yw.BIMFace.SDK.Core/05-client/01-instance/BIMFaceClient_Instance.cs | 54 + Component/Yw.BIMFace.SDK.Core/02-response/00-core/GeneralResponse.cs | 53 + Component/Yw.BIMFace.SDK.Core/02-response/02-view-token/ViewTokenResponse.cs | 11 WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.Designer.cs | 100 ++ Desktop/HStation.Desktop.Xhs.Core/DbFirstHelper.cs | 2 Component/Yw.BIMFace.SDK.Core/00-core/BIMFaceException.cs | 27 Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFileResponseModel.cs | 53 + Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFilePolicyResponse.cs | 11 Component/Yw.BIMFace.SDK.Core/02-response/06-delete/DeleteCompareResponse.cs | 10 Component/Yw.BIMFace.SDK.Core/00-core/Constants.cs | 36 WinFrmUI/Yw.WinFrmUI.Bimface.Core/Yw.WinFrmUI.Bimface.Core.csproj | 2 Component/Yw.BIMFace.SDK.Core/05-client/03-view-token/BIMFaceClient_ViewToken.cs | 50 + WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectViewModel.cs | 44 + WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/GenerateXhsProjectWizardPage.cs | 118 ++ Component/Yw.BIMFace.SDK.Core/Properties/PublishProfiles/FolderProfile.pubxml | 13 Component/Yw.BIMFace.SDK.Core/00-core/eTranslateStatus.cs | 18 Component/Yw.BIMFace.SDK.Core/05-client/05-translate/BIMFaceClient_Translate.cs | 126 +++ Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFilePolicyResponseModel.cs | 38 Component/Yw.BIMFace.SDK.Core/01-request/TranslateRvtFileRequest.cs | 25 WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.resx | 18 WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/ImportXhsProjectHelper.cs | 203 +++- Component/Yw.BIMFace.SDK.Core/05-client/06-delete/BIMFaceClient_Delete.cs | 75 + Service/HStation.Service.Xhs.Core/00-core/DataType.cs | 2 Component/Yw.BIMFace.SDK.Core/02-response/06-delete/DeleteFileResponse.cs | 11 Component/Yw.BIMFace.SDK.Core/00-core/eResponseCode.cs | 81 + Component/Yw.BIMFace.SDK.Core/02-response/03-translate/TranslateFileResponse.cs | 11 Component/Yw.BIMFace.SDK.Core/GlobalUsings.cs | 7 HStation.Xhs.Core.sln | 13 Desktop/HStation.Desktop.Xhs.Core/Program.cs | 3 Hydro/HStation.Hydro.Core/ParseHelper.cs | 200 ++++ Component/Yw.BIMFace.SDK.Core/04-helper/AccessTokenExpireHelper.cs | 38 Component/Yw.BIMFace.SDK.Core/01-request/TranslateFileRequest.cs | 38 Service/HStation.Service.Revit.Core/02-parter/00-core/RevitBoundingBox.cs | 11 Component/Yw.BIMFace.SDK.Core/01-request/TranslateSource.cs | 38 Service/HStation.Service.Revit.Core/02-parter/00-core/RevitPosition.cs | 31 Component/Yw.BIMFace.SDK.Core/01-request/RvtModelConfig.cs | 149 +++ 56 files changed, 2,321 insertions(+), 159 deletions(-) diff --git a/Component/Yw.BIMFace.SDK.Core/00-core/BIMFaceException.cs b/Component/Yw.BIMFace.SDK.Core/00-core/BIMFaceException.cs new file mode 100644 index 0000000..0df0287 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/00-core/BIMFaceException.cs @@ -0,0 +1,27 @@ +锘縩amespace Yw +{ + /// <summary> + /// 鑷畾涔夊紓甯� + /// </summary> + public class BIMFaceException : Exception + { + /// <summary> + /// + /// </summary> + public BIMFaceException(string code) + { + this.Code = ResponseHelper.GetResponseCode(code); + this.Message = ResponseHelper.GetResponseMessage(code); + } + /// <summary> + /// 缂栫爜 + /// </summary> + public eResponseCode Code { get; private set; } + + /// <summary> + /// 淇℃伅 + /// </summary> + public new string Message { get; private set; } + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/00-core/Constants.cs b/Component/Yw.BIMFace.SDK.Core/00-core/Constants.cs new file mode 100644 index 0000000..9a62c14 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/00-core/Constants.cs @@ -0,0 +1,36 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 甯搁噺 + /// </summary> + public class Constants + { + /// <summary> + /// 鎴愬姛鏍囪瘑 + /// </summary> + public const string Success = "success"; + + /// <summary> + /// 澶勭悊涓爣璇� + /// </summary> + public const string ProcessingStatus = "processing"; + + /// <summary> + /// AccessToken鐨勬椂闂翠綑閲忥紙鍒嗛挓锛� + /// </summary> + public const int AccessTokenAllowance = 60; + + /// <summary> + /// ViewToken鐨勬椂闂翠綑閲忥紙鍒嗛挓锛� + /// </summary> + public const int ViewTokenAllowance = 10; + + /// <summary> + /// ViewToken鐢熷懡鍛ㄦ湡锛堝皬鏃讹級 + /// </summary> + public const int ViewTokenLife = 12; + + } + + +} diff --git a/Component/Yw.BIMFace.SDK.Core/00-core/eModelIdType.cs b/Component/Yw.BIMFace.SDK.Core/00-core/eModelIdType.cs new file mode 100644 index 0000000..cdc0ee3 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/00-core/eModelIdType.cs @@ -0,0 +1,27 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 妯″瀷绫诲瀷鏋氫妇 + /// </summary> + public enum eModelIdType + { + /// <summary> + /// 鏂囦欢杞崲Id + /// </summary> + fileId = 0, + + /// <summary> + /// 妯″瀷瀵规瘮Id + /// </summary> + compareId = 1, + + /// <summary> + /// 闆嗘垚妯″瀷Id + /// </summary> + integrateId = 2 + + } + + + +} diff --git a/Component/Yw.BIMFace.SDK.Core/00-core/eResponseCode.cs b/Component/Yw.BIMFace.SDK.Core/00-core/eResponseCode.cs new file mode 100644 index 0000000..0615c9a --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/00-core/eResponseCode.cs @@ -0,0 +1,81 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 杩斿洖缁撴灉Code鏋氫妇 + /// </summary> + public enum eResponseCode + { + /// <summary> + /// 鏈煡 + /// </summary> + UnKnown = 0, + + /// <summary> + /// 鎴愬姛 + /// </summary> + Success = 1, + + /// <summary> + /// BIMFACE绯荤粺寮傚父 + /// </summary> + SystemError = 2, + + /// <summary> + /// API璁块棶鍚堟硶鎬ф牎楠屽け璐� + /// </summary> + AuthenticationFailed = 3, + + /// <summary> + /// 鏂囦欢鏈浆鎹紝涓嶈兘鑾峰彇viewToken + /// </summary> + FileHasNotTranslated = 4, + + /// <summary> + /// 鏂囦欢杞崲澶辫触锛屼笉鑳借幏鍙杤iewToken + /// </summary> + FileTranslateFailed = 5, + + /// <summary> + /// 鏂囦欢杞崲涓紝涓嶈兘鑾峰彇viewToken + /// </summary> + FileIsTranslating = 6, + + /// <summary> + /// //闆嗘垚妯″瀷涓嶅瓨鍦紝涓嶈兘鑾峰彇viewToken + /// </summary> + IntegrationNotFound = 7, + + /// <summary> + /// 闆嗘垚涓紝涓嶈兘鑾峰彇viewToken + /// </summary> + FileIsIntegrating = 8, + + /// <summary> + /// 闆嗘垚澶辫触锛屼笉鑳借幏鍙杤iewToken + /// </summary> + FilesIntegrateFailed = 9, + + /// <summary> + /// 瀵规瘮妯″瀷涓嶅瓨鍦紝涓嶈兘鑾峰彇viewToken + /// </summary> + ModelCompareNotFound = 10, + + /// <summary> + /// 瀵规瘮鏈畬鎴愶紝涓嶈兘鑾峰彇viewToken + /// </summary> + ModelCompareNotFinished = 11, + + /// <summary> + /// 瀵规瘮澶辫触锛屼笉鑳借幏鍙杤iewToken + /// </summary> + ModelCompareFailed = 12, + + /// <summary> + /// 鏂囦欢涓嶅瓨鍦� + /// </summary> + FileNotFound = 13, + } + + + +} diff --git a/Component/Yw.BIMFace.SDK.Core/00-core/eRvtTranslateStyle.cs b/Component/Yw.BIMFace.SDK.Core/00-core/eRvtTranslateStyle.cs new file mode 100644 index 0000000..a491ee8 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/00-core/eRvtTranslateStyle.cs @@ -0,0 +1,18 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// Rvt杞崲鏍峰紡鏋氫妇 + /// </summary> + public enum eRvtTranslateStyle + { + /// <summary> + /// 鐫�鑹� + /// </summary> + Render = 0, + + /// <summary> + /// 鐪熷疄 + /// </summary> + Real = 1, + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/00-core/eTranslateStatus.cs b/Component/Yw.BIMFace.SDK.Core/00-core/eTranslateStatus.cs new file mode 100644 index 0000000..be173ce --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/00-core/eTranslateStatus.cs @@ -0,0 +1,18 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 杞崲鐘舵�� + /// </summary> + public enum eTranslateStatus + { + /// <summary> + /// 鎴愬姛 + /// </summary> + Success = 0, + + /// <summary> + /// 姝e湪杞崲涓� + /// </summary> + Processing = 1, + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/01-request/RvtModelConfig.cs b/Component/Yw.BIMFace.SDK.Core/01-request/RvtModelConfig.cs new file mode 100644 index 0000000..7569ce4 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/01-request/RvtModelConfig.cs @@ -0,0 +1,149 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// rvt 妯″瀷閰嶇疆椤� + /// </summary> + [Serializable] + public class RvtModelConfig + { + public RvtModelConfig() + { + //璁剧疆 null锛屽湪搴忓垪鍖栫殑鏃跺�欏拷鐣ヨ瀛楁锛屼笉鍑虹幇鍦ㄥ簭鍒楀寲鍚庣殑瀛楃涓蹭腑 + Texture = false; + ViewName = "3D"; + DisplayLevel = "fine"; + ExportHiddenObjects = false; + ExportSchedule = false; + ExportViewImage = false; + ViewImageDPI = "150"; + Language = "zh-CN"; + + ExportDwg = true; + ExportDrawing = true; + ExportPdf = null; + + ExportDwgInstance = null; + ExportSystemType = null; + ExportProperties = null; + Unit = null; + ToBimtiles = null; + } + + /// <summary> + /// 杞崲鏃舵槸鍚︽坊鍔犳潗璐ㄣ�傞粯璁や负 false + /// </summary> + [JsonProperty("texture", NullValueHandling = NullValueHandling.Ignore)] + public bool? Texture { get; set; } + + /// <summary> + /// 杞崲浣跨敤鐨�3D瑙嗗浘銆傞粯璁や负 {3D} + /// </summary> + [JsonProperty("viewName", NullValueHandling = NullValueHandling.Ignore)] + public string ViewName { get; set; } + + /// <summary> + /// 璁剧疆杞崲鐨勭簿缁嗗害锛宖ine锛堢簿缁嗭級锛宮edium锛堜腑绛夛級锛宑oarse锛堢矖鐣ワ級銆傞粯璁や负 fine + /// </summary> + [JsonProperty("displaylevel", NullValueHandling = NullValueHandling.Ignore)] + public string DisplayLevel { get; set; } + + /// <summary> + /// 鏄惁瀵煎嚭涓夌淮瑙嗗浘涓殣钘忕殑鏋勪欢銆傞粯璁や负 false + /// </summary> + [JsonProperty("exportHiddenObjects", NullValueHandling = NullValueHandling.Ignore)] + public bool? ExportHiddenObjects { get; set; } + + /// <summary> + /// 鏄惁浣跨敤鏄庣粏琛ㄥ唴瀹广�傞粯璁や负 false + /// </summary> + [JsonProperty("exportSchedule", NullValueHandling = NullValueHandling.Ignore)] + public bool? ExportSchedule { get; set; } + + /// <summary> + /// 鏄惁瀵煎嚭瑙嗗浘鍥剧墖銆傞粯璁や负 false + /// </summary> + [JsonProperty("exportViewImage", NullValueHandling = NullValueHandling.Ignore)] + public bool? ExportViewImage { get; set; } + + /// <summary> + /// 璁剧疆瀵煎嚭瑙嗗浘鍥剧墖绮惧害锛�72,150,300锛夈�傞粯璁や负 150 + /// </summary> + [JsonProperty("viewImageDPI", NullValueHandling = NullValueHandling.Ignore)] + public string ViewImageDPI { get; set; } + + /// <summary> + /// 瀵煎嚭涓夌淮瑙嗗浘鍒楄〃("all"浠h〃鎵�鏈夎鍥�)銆傞粯璁ゅ�间负[] + /// </summary> + [JsonProperty("export3DViews", NullValueHandling = NullValueHandling.Ignore)] + public string[] Export3DViews { get; set; } + + /// <summary> + /// 瀵煎嚭鎸囧畾鍒嗙粍涓殑鍥剧焊(澶氫釜灞傜骇鐢�"\\"鍒掑垎锛屽锛歿"drawingGroups": ["03.PUBLISHED\\DETAILS", "02.SHARED"]})銆傞粯璁ゅ�间负[] + /// </summary> + [JsonProperty("drawingGroups", NullValueHandling = NullValueHandling.Ignore)] + public string[] DrawingGroups { get; set; } + + /// <summary> + /// 璇█鐗堟湰锛坺h_CN锛堜腑鏂囩増锛夛紝en_GB锛堣嫳鏂囩増锛夛級銆傞粯璁わ細zh_CN + /// </summary> + [JsonProperty("language", NullValueHandling = NullValueHandling.Ignore)] + public string Language { get; set; } + + /// <summary> + /// 鎸囧畾鏋勪欢灞炴�т綔涓簅bjectData锛屽苟鏍规嵁objectData缁勭粐鏋勪欢鏍戙�傛寚瀹氱殑鏋勪欢灞炴�т綔涓烘瀯浠舵爲鐨勫悇绾ц妭鐐癸紝灞傜骇椤哄簭涓庤緭鍏ョ殑灞炴�ч『搴忎竴鑷达紝鍓嶉潰鐨勫瓧娈典綔涓哄悗闈㈠瓧娈电殑鐖惰妭鐐广�� + /// 榛樿涓虹┖ + /// </summary> + [JsonProperty("customizedObjectData", NullValueHandling = NullValueHandling.Ignore)] + public string CustomizedObjectData { get; set; } + + /// <summary> + /// 涓夌淮妯″瀷涓鏋滃寘鍚簩缁村浘绾革紝鍒欒缃负true鏃讹紝杞崲鍚庡湪鐩綍鏍戜腑鑳界湅鍒板浘绾稿垪琛ㄣ�傞粯璁や负 false + /// </summary> + [JsonProperty("exportDrawing", NullValueHandling = NullValueHandling.Ignore)] + public bool? ExportDrawing { get; set; } + + + /// <summary> + /// rvt2md鏄惁瀵煎嚭dwg鏂囦欢銆傞粯璁や负 false + /// </summary> + [JsonProperty("exportDwg", NullValueHandling = NullValueHandling.Ignore)] + public bool? ExportDwg { get; set; } + + /// <summary> + /// dwg2md鏄惁瀵煎嚭pdf鏂囦欢銆傞粯璁や负 false + /// </summary> + [JsonProperty("exportPdf", NullValueHandling = NullValueHandling.Ignore)] + public bool? ExportPdf { get; set; } + + /// <summary> + /// 鏄惁瀵煎嚭dwg瀹炰緥銆傞粯璁や负 false + /// </summary> + [JsonProperty("exportDwgInstance", NullValueHandling = NullValueHandling.Ignore)] + public bool? ExportDwgInstance { get; set; } + + /// <summary> + /// 鏄惁鍦╱serData涓姞鍏epSystemType銆傞粯璁や负 false + /// </summary> + [JsonProperty("exportSystemType", NullValueHandling = NullValueHandling.Ignore)] + public bool? ExportSystemType { get; set; } + + /// <summary> + /// 鏄惁鍦ㄥ鍑篘WD鐨勫睘鎬b鏂囦欢銆傞粯璁や负 false + /// </summary> + [JsonProperty("exportProperties", NullValueHandling = NullValueHandling.Ignore)] + public bool? ExportProperties { get; set; } + + /// <summary> + /// 璁剧疆杞崲浣跨敤鐨勫崟浣嶏紝鍙栧��"ft"\"feet"\"鑻卞昂"閲囩敤revit榛樿鐨勮嫳灏轰负鍗曚綅锛岄粯璁や互姣背涓哄崟浣嶃�傞粯璁や负绌� + /// </summary> + [JsonProperty("unit", NullValueHandling = NullValueHandling.Ignore)] + public string Unit { get; set; } + + /// <summary> + /// RVT鏂囦欢杞崲涓烘祦寮忓姞杞芥ā寮忋�倀rue锛氭祦寮忓姞杞� false锛氶潪娴佸紡鍔犺浇锛屽嵆鍏ㄩ噺鍔犺浇銆� + /// 寤鸿澶фā鍨嬶紝涓夎鐗囬潰鏁伴噺澶т簬2000涓囦互涓婄殑妯″瀷浣跨敤娴佸紡鍔犺浇銆� + /// </summary> + [JsonProperty("toBimtiles", NullValueHandling = NullValueHandling.Ignore)] + public bool? ToBimtiles { get; set; } + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/01-request/TranslateFileRequest.cs b/Component/Yw.BIMFace.SDK.Core/01-request/TranslateFileRequest.cs new file mode 100644 index 0000000..ee2e49a --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/01-request/TranslateFileRequest.cs @@ -0,0 +1,38 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 鍙戣捣鏂囦欢杞寲鐨勮姹傛暟鎹被 + /// </summary> + [Serializable] + public class TranslateFileRequest + { + /// <summary> + /// + /// </summary> + public TranslateFileRequest() + { + this.CallBack = null; + this.Priority = 2; + this.Source = new TranslateSource(); + } + + /// <summary> + /// Callback鍦板潃锛屽緟杞崲瀹屾瘯浠ュ悗锛孊IMFace浼氬洖璋冭鍦板潃 + /// </summary> + [JsonProperty("callback")] + public string CallBack { get; set; } + + /// <summary> + /// 浼樺厛绾э紝鏁板瓧瓒婂ぇ锛屼紭鍏堢骇瓒婁綆銆傚彧鑳芥槸1, 2, 3銆傞粯璁や负2 + /// </summary> + [JsonProperty("priority")] + public int Priority { get; set; } + + /// <summary> + /// + /// </summary> + [JsonProperty("source")] + public TranslateSource Source { get; set; } + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/01-request/TranslateRvtFileRequest.cs b/Component/Yw.BIMFace.SDK.Core/01-request/TranslateRvtFileRequest.cs new file mode 100644 index 0000000..63988df --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/01-request/TranslateRvtFileRequest.cs @@ -0,0 +1,25 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 鍙戣捣Rvt鏂囦欢杞寲鐨勮姹傛暟鎹� + /// </summary> + [Serializable] + public class TranslateRvtFileRequest : TranslateFileRequest + { + /// <summary> + /// + /// </summary> + public TranslateRvtFileRequest() : base() + { + this.Config = new RvtModelConfig(); + } + + /// <summary> + /// Rvt妯″瀷杞崲寮曟搸鑷畾涔夊弬鏁帮紝config鍙傛暟璺熻浆鎹㈠紩鎿庣浉鍏筹紝涓嶅悓鐨勮浆鎹㈠紩鎿庢敮鎸佷笉鍚岀殑config鏍煎紡銆� + /// 渚嬪杞崲鏃舵坊鍔犲唴缃潗璐紝鍒欐坊鍔犲弬鏁板�納"texture":true}锛屾坊鍔犲閮ㄦ潗璐ㄦ椂鍙傝�冣�滀娇鐢ㄦā鍨嬪缃潗璐ㄥ満鏅�濊姹傛姤鏂囥�� + /// 濡傛灉涓嶉渶瑕佽缃鍙傛暟锛屽垯璁剧疆涓簄ull + /// </summary> + [JsonProperty("config", NullValueHandling = NullValueHandling.Ignore)] + public RvtModelConfig Config { get; set; } + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/01-request/TranslateSource.cs b/Component/Yw.BIMFace.SDK.Core/01-request/TranslateSource.cs new file mode 100644 index 0000000..aac1218 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/01-request/TranslateSource.cs @@ -0,0 +1,38 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 杞崲璧勬簮 + /// </summary> + [Serializable] + public class TranslateSource + { + /// <summary> + /// + /// </summary> + public TranslateSource() + { + Compressed = false; + RootName = null; + } + + /// <summary> + /// 鏂囦欢Id锛屽嵆璋冪敤涓婁紶鏂囦欢API杩斿洖鐨刦ileId + /// </summary> + [JsonProperty("fileId")] + public long FileId { get; set; } + + /// <summary> + /// 鏄惁涓哄帇缂╂枃浠讹紝榛樿涓篺alse + /// </summary> + [JsonProperty("compressed")] + public bool Compressed { get; set; } + + /// <summary> + /// 濡傛灉鏄帇缂╂枃浠讹紝蹇呴』鎸囧畾鍘嬬缉鍖呬腑鍝竴涓槸涓绘枃浠躲�傦紙渚嬪锛歳oot.rvt锛夈�� + /// 濡傛灉涓嶆槸鍘嬬缉锛屽垯璁剧疆涓� null + /// </summary> + [JsonProperty("rootName", NullValueHandling = NullValueHandling.Ignore)] + public string RootName { get; set; } + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/02-response/00-core/GeneralResponse.cs b/Component/Yw.BIMFace.SDK.Core/02-response/00-core/GeneralResponse.cs new file mode 100644 index 0000000..9498c84 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/02-response/00-core/GeneralResponse.cs @@ -0,0 +1,53 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 璇锋眰 BIMFACE 鏈嶅姟绔� API鐨勫搷搴旂粨鏋滅粺涓�鐨勮繑鍥炵被 + /// </summary> + [Serializable] + public class GeneralResponse<T> + { + /// <summary> + /// + /// </summary> + public GeneralResponse() { } + + /// <summary> + /// + /// </summary> + public GeneralResponse(T data) + { + this.Data = data; + } + + /// <summary> + /// 璇锋眰杩斿洖浠g爜锛宻uccess 鎴栬�� xxxx.failed銆� + /// </summary> + [JsonProperty("code")] + public virtual string Code { get; set; } + + /// <summary> + /// 澶辫触鐨勯敊璇師鍥犮�� + /// 濡傛灉 Code 涓� success 鍒� Message 涓虹┖銆� + /// 濡傛灉 Code 涓� xxxx.failed 鍒� Message 涓哄叿浣撶殑澶辫触淇℃伅銆� + /// </summary> + [JsonProperty("message")] + public virtual string Message { get; set; } + + /// <summary> + /// 鎵ц鎴愬姛鍚庣殑杩斿洖缁撴灉 + /// </summary> + [JsonProperty("data")] + public virtual T Data { get; set; } + + + /// <summary> + /// + /// </summary> + public override string ToString() + { + return $"GeneralResponse [code={this.Code}, Message={this.Message}, data={this.Data}]"; + } + + + } +} \ No newline at end of file diff --git a/Component/Yw.BIMFace.SDK.Core/02-response/01-access-token/AccessTokenResponse.cs b/Component/Yw.BIMFace.SDK.Core/02-response/01-access-token/AccessTokenResponse.cs new file mode 100644 index 0000000..fd3a764 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/02-response/01-access-token/AccessTokenResponse.cs @@ -0,0 +1,26 @@ +锘�// /* --------------------------------------------------------------------------------------- +// 鏂囦欢鍚嶏細AccessTokenResponse.cs +// 鏂囦欢鍔熻兘鎻忚堪锛� +// +// 鍒涘缓鏍囪瘑锛�20200308 +// 浣� 鑰咃細寮犱紶瀹� 锛圦Q锛�905442693 寰俊锛歴avionzhang锛� +// 浣滆�呭崥瀹細https://www.cnblogs.com/SavionZhang/ +// BIMFace涓撴爮鍦板潃锛歨ttps://www.cnblogs.com/SavionZhang/p/11424431.html +// +// 淇敼鏍囪瘑锛� +// 淇敼鎻忚堪锛� +// ------------------------------------------------------------------------------------------*/ + +namespace Yw.BIMFace +{ + /// <summary> + /// 鑾峰彇 AccessToken 鐨勮姹傝繑鍥炵粨鏋滅被 + /// </summary> + [Serializable] + public class AccessTokenResponse : GeneralResponse<AccessTokenResponseModel> + { + + } + + +} \ No newline at end of file diff --git a/Component/Yw.BIMFace.SDK.Core/02-response/01-access-token/AccessTokenResponseModel.cs b/Component/Yw.BIMFace.SDK.Core/02-response/01-access-token/AccessTokenResponseModel.cs new file mode 100644 index 0000000..dbeae36 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/02-response/01-access-token/AccessTokenResponseModel.cs @@ -0,0 +1,30 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// AccessToken 鍝嶅簲Model + /// </summary> + [Serializable] + public class AccessTokenResponseModel + { + /// <summary> + /// token 鐨勮繃鏈熸椂闂� + /// </summary> + [JsonProperty("expireTime", NullValueHandling = NullValueHandling.Ignore)] + public DateTime ExpireTime { get; set; } + + /// <summary> + /// token 鍐呭鍊� + /// </summary> + [JsonProperty("token", NullValueHandling = NullValueHandling.Ignore)] + public string Token { get; set; } + + /// <summary> + /// + /// </summary> + public override string ToString() + { + return $"AccessTokenResponseModel [token={this.Token}, expireTime={this.ExpireTime}]"; + } + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/02-response/02-view-token/ViewTokenResponse.cs b/Component/Yw.BIMFace.SDK.Core/02-response/02-view-token/ViewTokenResponse.cs new file mode 100644 index 0000000..ded51cd --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/02-response/02-view-token/ViewTokenResponse.cs @@ -0,0 +1,11 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 鑾峰彇 ViewToken 鐨勮姹傝繑鍥炵粨鏋滅被 + /// </summary> + [Serializable] + public class ViewTokenResponse : GeneralResponse<string> + { + + } +} \ No newline at end of file diff --git a/Component/Yw.BIMFace.SDK.Core/02-response/03-translate/TranslateFileResponse.cs b/Component/Yw.BIMFace.SDK.Core/02-response/03-translate/TranslateFileResponse.cs new file mode 100644 index 0000000..c6f681c --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/02-response/03-translate/TranslateFileResponse.cs @@ -0,0 +1,11 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 鏂囦欢杞寲鍝嶅簲绫� + /// </summary> + public class TranslateFileResponse : GeneralResponse<TranslateFileResponseModel> + { + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/02-response/03-translate/TranslateFileResponseModel.cs b/Component/Yw.BIMFace.SDK.Core/02-response/03-translate/TranslateFileResponseModel.cs new file mode 100644 index 0000000..8f0e223 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/02-response/03-translate/TranslateFileResponseModel.cs @@ -0,0 +1,78 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 鏂囦欢杞崲鍝嶅簲 Model + /// </summary> + [Serializable] + public class TranslateFileResponseModel + { + /// <summary> + /// 鏂囦欢杞崲寮�濮嬬殑鏃堕棿 + /// </summary> + [JsonProperty("createTime", NullValueHandling = NullValueHandling.Ignore)] + public DateTime? CreateTime { get; set; } + + /// <summary> + /// 鏁版嵁鍖匢D + /// </summary> + [JsonProperty("databagId", NullValueHandling = NullValueHandling.Ignore)] + public string DatabagId { get; set; } + + /// <summary> + /// 鏂囦欢ID + /// </summary> + [JsonProperty("fileId", NullValueHandling = NullValueHandling.Ignore)] + public long? FileId { get; set; } + + /// <summary> + /// 鏂囦欢鐨勫悕绉帮紝鍖呮嫭鍚庣紑 + /// </summary> + [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)] + public string Name { get; set; } + + /// <summary> + /// 浼樺厛绾э紝鏁板瓧瓒婂ぇ锛屼紭鍏堢骇瓒婁綆銆�1, 2, 3 + /// </summary> + [JsonProperty("priority", NullValueHandling = NullValueHandling.Ignore)] + public int? Priority { get; set; } + + /// <summary> + /// 鑻ヨ浆鎹㈠け璐ワ紝鍒欒繑鍥炲け璐ュ師鍥� + /// </summary> + [JsonProperty("reason", NullValueHandling = NullValueHandling.Ignore)] + public string Reason { get; set; } + + /// <summary> + /// 杞崲鐨勭姸鎬� + /// </summary> + [JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)] + public string Status { get; set; } + + /// <summary> + /// 缂╃暐鍥� + /// </summary> + [JsonProperty("thumbnail", NullValueHandling = NullValueHandling.Ignore)] + public string[] Thumbnails { get; set; } + + /// <summary> + /// + /// </summary> + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + if (Thumbnails != null && Thumbnails.Length > 0) + { + foreach (string thumbnail in Thumbnails) + { + sb.AppendLine(thumbnail); + } + } + + return string.Format("TranslateFileResponseModel [createTime={0}, fileId={1}, name={2}, priority={3},reason={4},status={5},thumbnail={6}]", + CreateTime, FileId, Name, Priority, Reason, Status, sb.ToString()); + } + + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFilePolicyResponse.cs b/Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFilePolicyResponse.cs new file mode 100644 index 0000000..68481e3 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFilePolicyResponse.cs @@ -0,0 +1,11 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 鑾峰彇鏂囦欢鐩翠紶Policy鍝嶅簲绫� + /// </summary> + public class UploadFilePolicyResponse : GeneralResponse<UploadFilePolicyResponseModel> + { + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFilePolicyResponseModel.cs b/Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFilePolicyResponseModel.cs new file mode 100644 index 0000000..8a3e884 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFilePolicyResponseModel.cs @@ -0,0 +1,38 @@ +锘縩amespace Yw.BIMFace +{ + [Serializable] + public class UploadFilePolicyResponseModel + { + [JsonProperty("accessId", NullValueHandling = NullValueHandling.Ignore)] + public string AccessId { get; set; } + + [JsonProperty("callbackBody", NullValueHandling = NullValueHandling.Ignore)] + public string CallbackBody { get; set; } + + [JsonProperty("expire", NullValueHandling = NullValueHandling.Ignore)] + public long? Expire { get; set; } + + [JsonProperty("host", NullValueHandling = NullValueHandling.Ignore)] + public string Host { get; set; } + + [JsonProperty("objectKey", NullValueHandling = NullValueHandling.Ignore)] + public string ObjectKey { get; set; } + + [JsonProperty("policy", NullValueHandling = NullValueHandling.Ignore)] + public string Policy { get; set; } + + [JsonProperty("signature", NullValueHandling = NullValueHandling.Ignore)] + public string Signature { get; set; } + + [JsonProperty("sourceId", NullValueHandling = NullValueHandling.Ignore)] + public string SourceId { get; set; } + + /// <summary>杩斿洖琛ㄧず褰撳墠瀵硅薄鐨勫瓧绗︿覆銆�</summary> + /// <returns>琛ㄧず褰撳墠瀵硅薄鐨勫瓧绗︿覆銆�</returns> + public override string ToString() + { + return string.Format("UploadPolicyEntity [accessId={0}, callbackBody={1}, expire={2}, host={3}, objectKey={4},policy={5},signature={6},sourceId={7}]", + AccessId, CallbackBody, Expire, Host, ObjectKey, Policy, Signature, SourceId); + } + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFileResponse.cs b/Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFileResponse.cs new file mode 100644 index 0000000..d927c5b --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFileResponse.cs @@ -0,0 +1,11 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 涓婁紶鏂囦欢鍝嶅簲绫� + /// </summary> + public class UploadFileResponse : GeneralResponse<UploadFileResponseModel> + { + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFileResponseModel.cs b/Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFileResponseModel.cs new file mode 100644 index 0000000..5140887 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/02-response/04-upload/UploadFileResponseModel.cs @@ -0,0 +1,53 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 鏂囦欢淇℃伅瀹炰綋 + /// </summary> + [Serializable] + public class UploadFileResponseModel + { + /// <summary> + /// 涓婁紶鏃堕棿锛屾牸寮忥細yyyy-MM-dd hh:mm:ss + /// </summary> + [JsonProperty("createTime", NullValueHandling = NullValueHandling.Ignore)] + public DateTime? CreateTime { get; set; } + + [JsonProperty("etag", NullValueHandling = NullValueHandling.Ignore)] + public string ETag { get; set; } + + [JsonProperty("fileId", NullValueHandling = NullValueHandling.Ignore)] + public long? FileId { get; set; } + + /// <summary> + /// 鏂囦欢娴佺殑闀垮害锛堝崟浣嶏細byte锛� + /// </summary> + [JsonProperty("length", NullValueHandling = NullValueHandling.Ignore)] + public long? Length { get; set; } + + /// <summary> + /// 鏂囦欢鐨勫悕绉帮紝鍖呮嫭鍚庣紑 + /// </summary> + [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)] + public string Name { get; set; } + + /// <summary> + /// 涓婁紶鏂囦欢鐨勮繑鍥炵粨鏋滅姸鎬侊細success 鎴栧叾浠� + /// </summary> + [JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)] + public string Status { get; set; } + + /// <summary> + /// 鏂囦欢鍚嶇殑鍚庣紑 + /// </summary> + [JsonProperty("suffix", NullValueHandling = NullValueHandling.Ignore)] + public string Suffix { get; set; } + + /// <summary>杩斿洖琛ㄧず褰撳墠瀵硅薄鐨勫瓧绗︿覆銆�</summary> + /// <returns>琛ㄧず褰撳墠瀵硅薄鐨勫瓧绗︿覆銆�</returns> + public override string ToString() + { + return string.Format("FileEntity [fileId={0}, name={1}, suffix={2}, length={3}, createTime={4},etag={5},status={6}]", + FileId, Name, Suffix, Length, CreateTime, ETag, Status); + } + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/02-response/06-delete/DeleteCompareResponse.cs b/Component/Yw.BIMFace.SDK.Core/02-response/06-delete/DeleteCompareResponse.cs new file mode 100644 index 0000000..e5d263f --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/02-response/06-delete/DeleteCompareResponse.cs @@ -0,0 +1,10 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 鍒犻櫎妯″瀷瀵规瘮鐨勫搷搴旂粨鏋滅被 + /// </summary> + public class DeleteCompareResponse : GeneralResponse<string> + { + + } +} \ No newline at end of file diff --git a/Component/Yw.BIMFace.SDK.Core/02-response/06-delete/DeleteFileResponse.cs b/Component/Yw.BIMFace.SDK.Core/02-response/06-delete/DeleteFileResponse.cs new file mode 100644 index 0000000..408c0c7 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/02-response/06-delete/DeleteFileResponse.cs @@ -0,0 +1,11 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 鍒犻櫎鏂囦欢杩斿洖鐨勭粨鏋滅被 + /// </summary> + [Serializable] + public class DeleteFileResponse : GeneralResponse<object> + { + + } +} \ No newline at end of file diff --git a/Component/Yw.BIMFace.SDK.Core/02-response/06-delete/DeleteIntegrateResponse.cs b/Component/Yw.BIMFace.SDK.Core/02-response/06-delete/DeleteIntegrateResponse.cs new file mode 100644 index 0000000..cf3e0bf --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/02-response/06-delete/DeleteIntegrateResponse.cs @@ -0,0 +1,10 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 鍒犻櫎妯″瀷闆嗘垚鍝嶅簲绫� + /// </summary> + public class DeleteIntegrateResponse : GeneralResponse<string> + { + + } +} \ No newline at end of file diff --git a/Component/Yw.BIMFace.SDK.Core/03-extensions/Base64Extension.cs b/Component/Yw.BIMFace.SDK.Core/03-extensions/Base64Extension.cs new file mode 100644 index 0000000..03c9a86 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/03-extensions/Base64Extension.cs @@ -0,0 +1,33 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// base64鏍煎紡杞崲鍣� + /// </summary> + public static class Base64Extension + { + /// <summary> + /// 浣跨敤 UTF8 缂栫爜鏍煎紡锛屽瀛楃涓茶繘琛岃繘琛� Base64 鏂瑰紡缂栫爜锛堝姞瀵嗭級 + /// </summary> + /// <param name="this">鎵╁睍瀵硅薄</param> + /// <returns>缂栫爜鍚庣殑瀛楃涓�</returns> + public static string EncryptByBase64(this string @this) + { + byte[] bytes = Encoding.Default.GetBytes(@this); + return Convert.ToBase64String(bytes); + } + + /// <summary> + /// 浣跨敤 UTF8 缂栫爜鏍煎紡锛屽瀛楃涓茶繘琛岃繘琛� Base64 鏂瑰紡瑙g爜锛堣В瀵嗭級 + /// </summary> + /// <param name="this">鎵╁睍瀵硅薄</param> + /// <returns>瑙g爜鍚庣殑瀛楃涓�</returns> + public static string DecryptByBase64(this string @this) + { + byte[] bytes = Convert.FromBase64String(@this); + return Encoding.Default.GetString(bytes); + } + + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/04-helper/AccessTokenExpireHelper.cs b/Component/Yw.BIMFace.SDK.Core/04-helper/AccessTokenExpireHelper.cs new file mode 100644 index 0000000..72b65ea --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/04-helper/AccessTokenExpireHelper.cs @@ -0,0 +1,38 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// AccessToken杩囨湡杈呭姪绫� + /// </summary> + internal class AccessTokenExpireHelper + { + //杩囨湡鏃堕棿 + private DateTime _expireTime = DateTime.Now; + + /// <summary> + /// 璁剧疆杩囨湡鏃堕棿 + /// </summary> + internal void SetExpireTime(DateTime dateTime) + { + _expireTime = dateTime; + } + + /// <summary> + /// 鏄惁杩囨湡 + /// </summary> + internal bool IsExpire() + { + if (DateTime.Now.AddMinutes(Constants.AccessTokenAllowance) > _expireTime) + { + return true; + } + return false; + } + + + + + + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/04-helper/ExceptionHelper.cs b/Component/Yw.BIMFace.SDK.Core/04-helper/ExceptionHelper.cs new file mode 100644 index 0000000..770acb4 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/04-helper/ExceptionHelper.cs @@ -0,0 +1,26 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// + /// </summary> + internal static class ExceptionHelper + { + /// <summary> + /// 灏濊瘯鎶涘紓甯� + /// </summary> + public static void TryThrowException<T>(this GeneralResponse<T> response) + { + if (response == null) + { + return; + } + if (response.Code == Constants.Success) + { + return; + } + throw new BIMFaceException(response.Code); + } + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/04-helper/HeaderHelper.cs b/Component/Yw.BIMFace.SDK.Core/04-helper/HeaderHelper.cs new file mode 100644 index 0000000..5f5e371 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/04-helper/HeaderHelper.cs @@ -0,0 +1,32 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// http澶撮儴 + /// </summary> + internal class HeaderHelper + { + /// <summary> + /// AccessToken鐨勮姹俬earder + /// </summary> + internal static KeyValuePair<string, string> GetHeader(string AppKey, string AppSecret) + { + var contract = string.Format("{0}:{1}", AppKey, AppSecret); + var base64Contract = contract.EncryptByBase64(); + var authorHeader = string.Format("Basic {0}", base64Contract); + var keyValuePair = new KeyValuePair<string, string>("Authorization", authorHeader); + return keyValuePair; + } + + /// <summary> + /// 鍏朵粬鐨勮姹俬earder + /// </summary> + internal static KeyValuePair<string, string> GetHeader(string accesstoken) + { + var contract = string.Format("bearer {0}", accesstoken); + var keyValuePair = new KeyValuePair<string, string>("Authorization", contract); + return keyValuePair; + } + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/04-helper/ResponseHelper.cs b/Component/Yw.BIMFace.SDK.Core/04-helper/ResponseHelper.cs new file mode 100644 index 0000000..db2f67e --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/04-helper/ResponseHelper.cs @@ -0,0 +1,63 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// 杩斿洖缁撴灉杈呭姪绫� + /// </summary> + internal class ResponseHelper + { + //缁撴灉涓庢弿杩扮殑瀵瑰簲鍏崇郴瀛楀吀 + private static readonly Dictionary<string, string> _dic = new Dictionary<string, string>() { + {"system.error","BIMFACE绯荤粺寮傚父"}, + {"authentication.failed","API璁块棶鍚堟硶鎬ф牎楠屽け璐�"}, + {"file.has.not.translated","鏂囦欢鏈浆鎹紝涓嶈兘鑾峰彇viewToken"}, + {"file.translate.failed","鏂囦欢杞崲澶辫触锛屼笉鑳借幏鍙杤iewToken"}, + {"file.is.translating","鏂囦欢杞崲涓紝涓嶈兘鑾峰彇viewToken"}, + {"integration.not.found","闆嗘垚妯″瀷涓嶅瓨鍦紝涓嶈兘鑾峰彇viewToken"}, + {"files.is.integrating","闆嗘垚涓紝涓嶈兘鑾峰彇viewToken"}, + {"files.integrate.failed","闆嗘垚澶辫触锛屼笉鑳借幏鍙杤iewToken"}, + {"model.compare.not.found","瀵规瘮妯″瀷涓嶅瓨鍦紝涓嶈兘鑾峰彇viewToken"}, + {"model.compare.not.finished","瀵规瘮鏈畬鎴愶紝涓嶈兘鑾峰彇viewToken"}, + {"model.compare.failed","瀵规瘮澶辫触锛屼笉鑳借幏鍙杤iewToken"}, + {"file.not.found","鏂囦欢涓嶅瓨鍦�"}, + {"success","鎴愬姛"} + }; + + /// <summary> + /// 鑾峰彇鍝嶅簲缂栫爜 + /// </summary> + internal static eResponseCode GetResponseCode(string code) + { + switch (code) + { + case "system.error": return eResponseCode.SystemError; + case "authentication.failed": return eResponseCode.AuthenticationFailed; + case "file.has.not.translated": return eResponseCode.FileHasNotTranslated; + case "file.translate.failed": return eResponseCode.FileTranslateFailed; + case "file.is.translating": return eResponseCode.FileIsTranslating; + case "integration.not.found": return eResponseCode.IntegrationNotFound; + case "files.is.integrating": return eResponseCode.FileIsIntegrating; + case "files.integrate.failed": return eResponseCode.FilesIntegrateFailed; + case "model.compare.not.found": return eResponseCode.ModelCompareNotFound; + case "model.compare.not.finished": return eResponseCode.ModelCompareNotFinished; + case "model.compare.failed": return eResponseCode.ModelCompareFailed; + case "file.not.found": return eResponseCode.FileNotFound; + case "success": return eResponseCode.Success; + default: return eResponseCode.UnKnown; + } + } + + /// <summary> + /// 鑾峰彇鍝嶅簲淇℃伅 + /// </summary> + internal static string GetResponseMessage(string code) + { + if (_dic.ContainsKey(code)) + { + return _dic[code]; + } + return null; + } + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/04-helper/ViewTokenExpireHelper.cs b/Component/Yw.BIMFace.SDK.Core/04-helper/ViewTokenExpireHelper.cs new file mode 100644 index 0000000..3a3703a --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/04-helper/ViewTokenExpireHelper.cs @@ -0,0 +1,44 @@ +锘縩amespace Yw.BIMFace +{ + /// <summary> + /// ViewToken杩囨湡杈呭姪绫� + /// </summary> + internal class ViewTokenExpireHelper + { + //杩囨湡瀛楀吀 + private readonly Dictionary<string, DateTime> _expire = new(); + + /// <summary> + /// 璁剧疆杩囨湡鏃堕棿 + /// </summary> + internal void SetExpireTime(string bimfaceId) + { + var dt = DateTime.Now.AddHours(Constants.ViewTokenLife); + if (_expire.ContainsKey(bimfaceId)) + { + _expire[bimfaceId] = dt; + return; + } + _expire.Add(bimfaceId, dt); + } + + /// <summary> + /// 鏄惁杩囨湡 + /// </summary> + internal bool IsExpire(string bimfaceId) + { + if (!_expire.ContainsKey(bimfaceId)) + { + return true; + } + if (DateTime.Now.AddMinutes(Constants.ViewTokenAllowance) > _expire[bimfaceId]) + { + return true; + } + return false; + } + + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/05-client/01-instance/BIMFaceClient_Instance.cs b/Component/Yw.BIMFace.SDK.Core/05-client/01-instance/BIMFaceClient_Instance.cs new file mode 100644 index 0000000..fa3f799 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/05-client/01-instance/BIMFaceClient_Instance.cs @@ -0,0 +1,54 @@ +锘縩amespace Yw +{ + /// <summary> + /// 璋冪敤鍏ュ彛 + /// </summary> + public sealed partial class BIMFaceClient + { + /// <summary> + /// 鑾峰彇BimfaceClient瀵硅薄 + /// </summary> + public static BIMFaceClient Instance(string appKey, string appSecret) + { + var client = _clients.Find(x => x.AppKey == appKey && x.AppSecret == appSecret); + if (client == null) + { + lock (_locker) + { + client = _clients.Find(x => x.AppKey == appKey && x.AppSecret == appSecret); + if (client == null) + { + client = new BIMFaceClient(appKey, appSecret); + _clients.Add(client); + } + } + } + return client; + } + + //绉佹湁鏋勯�犲嚱鏁� + private BIMFaceClient(string AppKey, string AppSecret) + { + _appKey = AppKey; + _appSecret = AppSecret; + } + + /// <summary> + /// AppKey + /// </summary> + public string AppKey { get => _appKey; } + private string _appKey; + + /// <summary> + /// AppSecret + /// </summary> + public string AppSecret { get => _appSecret; } + private string _appSecret; + + private static object _locker = new();//閿佸璞� + private static List<BIMFaceClient> _clients = new();//client 鍒楄〃 + + + } + +} diff --git a/Component/Yw.BIMFace.SDK.Core/05-client/02-access-token/BIMFaceClient_AccessToken.cs b/Component/Yw.BIMFace.SDK.Core/05-client/02-access-token/BIMFaceClient_AccessToken.cs new file mode 100644 index 0000000..6fe0c17 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/05-client/02-access-token/BIMFaceClient_AccessToken.cs @@ -0,0 +1,53 @@ +锘縩amespace Yw +{ + /// <summary> + /// AccessToken + /// </summary> + public sealed partial class BIMFaceClient + { + private string _accessToken;//浠ょ墝 + private const string _accessTokenUrl = @"https://api.bimface.com/oauth2/token";//浠ょ墝璇锋眰鍦板潃 + private readonly AccessTokenExpireHelper _accessTokenExpireHelper = new(); //access token 杩囨湡杈呭姪绫� + + + /// <summary> + /// 鑾峰彇AccessToken + /// </summary> + public async Task<string> GetAccessToken() + { + if (string.IsNullOrEmpty(_accessToken) || _accessTokenExpireHelper.IsExpire()) + { + await GetAccessTokenAsync(); + } + return _accessToken; + } + + //鑾峰彇AccessToken锛屽唴閮ㄨ皟鐢� + private async Task GetAccessTokenAsync() + { + var request = new FlurlRequest(_accessTokenUrl); + var header = HeaderHelper.GetHeader(_appKey, _appSecret); + request.WithHeader(header.Key, header.Value); + var response = await request.PostAsync(); + var jsonString = await response.GetStringAsync(); + var result = JsonHelper.Json2Object<AccessTokenResponse>(jsonString); + result.TryThrowException(); + _accessToken = result.Data.Token; + _accessTokenExpireHelper.SetExpireTime(result.Data.ExpireTime); + } + + + + + + + + + + + + + + } + +} diff --git a/Component/Yw.BIMFace.SDK.Core/05-client/03-view-token/BIMFaceClient_ViewToken.cs b/Component/Yw.BIMFace.SDK.Core/05-client/03-view-token/BIMFaceClient_ViewToken.cs new file mode 100644 index 0000000..4ccf2a7 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/05-client/03-view-token/BIMFaceClient_ViewToken.cs @@ -0,0 +1,50 @@ +锘縩amespace Yw +{ + /// <summary> + /// ViewToken + /// </summary> + public sealed partial class BIMFaceClient + { + private readonly Dictionary<string, string> _viewToken = new();//view token + private const string _viewTokenUrl = @"https://api.bimface.com/view/token";//瑙嗗浘浠ょ墝璇锋眰鍦板潃 + private readonly ViewTokenExpireHelper _viewTokenExpireHelper = new();//view token 杩囨湡杈呭姪绫� + + /// <summary> + /// 鑾峰彇ViewToken + /// </summary> + public async Task<string> GetViewToken(string bimfaceId, eModelIdType modelIdType = eModelIdType.fileId) + { + await GetAccessToken(); + if (!_viewToken.ContainsKey(bimfaceId) || _viewTokenExpireHelper.IsExpire(bimfaceId)) + { + await GetViewTokenAsync(bimfaceId, modelIdType); + } + return _viewToken[bimfaceId]; + } + + //鑾峰彇AccessToken锛屽唴閮ㄨ皟鐢� + private async Task GetViewTokenAsync(string bimfaceId, eModelIdType modelIdType = eModelIdType.fileId) + { + var url = $"{_viewTokenUrl}?{modelIdType}={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<ViewTokenResponse>(jsonString); + result.TryThrowException(); + if (_viewToken.ContainsKey(bimfaceId)) + { + _viewToken[bimfaceId] = result.Data; + } + else + { + _viewToken.Add(bimfaceId, result.Data); + } + _viewTokenExpireHelper.SetExpireTime(bimfaceId); + } + + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/05-client/04-upload/BimfaceClient_Upload.cs b/Component/Yw.BIMFace.SDK.Core/05-client/04-upload/BimfaceClient_Upload.cs new file mode 100644 index 0000000..edfd637 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/05-client/04-upload/BimfaceClient_Upload.cs @@ -0,0 +1,175 @@ +锘縩amespace Yw +{ + /// <summary> + /// 鏂囦欢涓婁紶 + /// </summary> + public sealed partial class BIMFaceClient + { + private const string _normalUploadUrl = @"https://file.bimface.com/upload";//鏅�氭枃浠舵祦涓婁紶URL + private const string _policyUploadUrl = @"https://file.bimface.com/upload/policy";//鏂囦欢鐩翠紶URL + + /// <summary> + /// 鏅�氭枃浠朵笂浼狅紙涓嶆帹鑽愶級 + /// </summary> + /// <param name="filePath">鏂囦欢鍏ㄨ矾寰�</param> + /// <param name="fileName">鏂囦欢鍚嶇О锛堝繀椤诲甫鍚庣紑锛�</param> + public async Task<UploadFileResponseModel> UploadFileByDirect(string filePath, string fileName = null) + { + await GetAccessToken(); + if (string.IsNullOrEmpty(fileName)) + { + var fileInfo = new FileInfo(filePath); + fileName = fileInfo.Name; + } + var fileNameString = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(fileName)); + var url = $"{_normalUploadUrl}?name={fileNameString}"; + var request = (HttpWebRequest)WebRequest.Create(url); + request.Method = WebRequestMethods.Http.Put; + var header = HeaderHelper.GetHeader(_accessToken); + request.Headers.Add(header.Key, header.Value); + byte[] bytes; + using (FileStream steam = new FileStream(filePath, FileMode.Open, FileAccess.Read)) + { + bytes = new byte[(int)steam.Length]; + steam.Read(bytes, 0, bytes.Length); + } + request.ContentLength = bytes.Length; + request.AllowWriteStreamBuffering = true; + using (Stream stream = request.GetRequestStream()) + { + stream.Write(bytes, 0, bytes.Length); + stream.Flush(); + } + var response = request.GetResponse(); + string responsetext = string.Empty; + using (Stream stream = response.GetResponseStream()) + using (StreamReader reader = new StreamReader(stream)) + { + responsetext = reader.ReadToEnd(); + } + var result = JsonHelper.Json2Object<UploadFileResponse>(responsetext); + result.TryThrowException(); + return result.Data; + } + + /// <summary> + /// 鏂囦欢鐩翠紶(鎺ㄨ崘) + /// </summary> + /// <param name="filePath">鏂囦欢鍏ㄨ矾寰�</param> + /// <param name="fileName">鏂囦欢鍚嶇О锛堝繀椤诲甫鍚庣紑锛�</param> + public async Task<UploadFileResponseModel> UploadFileByPolicy(string filePath, string fileName = null) + { + await GetAccessToken(); + if (string.IsNullOrEmpty(fileName)) + { + var fileInfo = new FileInfo(filePath); + fileName = fileInfo.Name; + } + var policyResult = await GetUploadFilePolicyAsync(fileName); + string boundary = "----" + DateTime.Now.Ticks.ToString("x");// 杈圭晫绗� + byte[] beginBoundaryBytes = Encoding.UTF8.GetBytes("--" + boundary + "\r\n"); // 杈圭晫绗﹀紑濮嬨�傘�愨槅銆戝彸渚у繀椤昏鏈� \r\n 銆� + byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"); // 杈圭晫绗︾粨鏉熴�傘�愨槅銆戜袱渚у繀椤昏鏈� --\r\n 銆� + var textFormTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n" + "{1}\r\n";//鏂囨湰妯℃澘 + var fileFormTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" + "Content-Type: application/octet-stream\r\n\r\n";//鏂囦欢妯℃澘 + + var dic = new Dictionary<string, string>(); + dic.Add("name", fileName); + dic.Add("key", policyResult.ObjectKey); + dic.Add("policy", policyResult.Policy); + dic.Add("OSSAccessKeyId", policyResult.AccessId); + dic.Add("success_action_status", "200"); + dic.Add("callback", policyResult.CallbackBody); + dic.Add("signature", policyResult.Signature); + + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(policyResult.Host); + request.ContentType = string.Format("multipart/form-data; boundary={0}", boundary); + request.Method = WebRequestMethods.Http.Post; + request.AllowWriteStreamBuffering = false; + //request.KeepAlive = true; + request.Timeout = -1; + + long contentLength = 0; + var textBytesList = dic.Select(x => + { + var textFormItem = string.Format(textFormTemplate, x.Key, x.Value); + byte[] textFormItemBytes = Encoding.UTF8.GetBytes(textFormItem); + contentLength += beginBoundaryBytes.Length; + contentLength += textFormItemBytes.Length; + return textFormItemBytes; + }).ToList(); + + var fileFormItem = string.Format(fileFormTemplate, "file", fileName); + byte[] fileFormItemBytes = Encoding.UTF8.GetBytes(fileFormItem); + contentLength += beginBoundaryBytes.Length; + contentLength += fileFormItemBytes.Length; + + var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); + contentLength += fileStream.Length; + contentLength += endBoundaryBytes.Length; + request.ContentLength = contentLength; + var requestStream = request.GetRequestStream(); + textBytesList.ForEach(x => + { + requestStream.Write(beginBoundaryBytes, 0, beginBoundaryBytes.Length); + requestStream.Write(x, 0, x.Length); + }); + requestStream.Write(beginBoundaryBytes, 0, beginBoundaryBytes.Length); + requestStream.Write(fileFormItemBytes, 0, fileFormItemBytes.Length); + + //姣忔涓婁紶4M + byte[] buffer = new Byte[checked((uint)Math.Min(4096, (int)fileStream.Length))]; + int bytesRead = 0; + while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) + { + requestStream.Write(buffer, 0, bytesRead); + } + requestStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length); + + fileStream.Close(); + requestStream.Close(); + + var response = request.GetResponse(); + string responsetext = string.Empty; + using (Stream stream = response.GetResponseStream()) + using (StreamReader reader = new StreamReader(stream)) + { + responsetext = reader.ReadToEnd(); + } + + var result = JsonHelper.Json2Object<UploadFileResponse>(responsetext); + result.TryThrowException(); + return result.Data; + } + + /// <summary> + /// 鏂囦欢鐩翠紶 Ex(鎺ㄨ崘) + /// </summary> + public async Task<long> UploadFileExByPolicy(string filePath, string fileName = null) + { + var response = await UploadFileByPolicy(filePath, fileName); + if (response.Status != Constants.Success) + { + return 0; + } + return response.FileId.Value; + } + + + //鑾峰彇鏂囦欢鐩翠紶Policy + private async Task<UploadFilePolicyResponseModel> GetUploadFilePolicyAsync(string fileName) + { + var fileNameString = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(fileName)); + var url = $"{_policyUploadUrl}?name={fileNameString}"; + 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<UploadFilePolicyResponse>(jsonString); + result.TryThrowException(); + return result.Data; + } + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/05-client/05-translate/BIMFaceClient_Translate.cs b/Component/Yw.BIMFace.SDK.Core/05-client/05-translate/BIMFaceClient_Translate.cs new file mode 100644 index 0000000..eb82a23 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/05-client/05-translate/BIMFaceClient_Translate.cs @@ -0,0 +1,126 @@ +锘縩amespace 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); + } + + //鍙戣捣杞崲 , 灏哛VT鏂囦欢杞崲鎴愮潃鑹叉ā寮忕殑鏁堟灉 + 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; + } + + + + + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/05-client/06-delete/BIMFaceClient_Delete.cs b/Component/Yw.BIMFace.SDK.Core/05-client/06-delete/BIMFaceClient_Delete.cs new file mode 100644 index 0000000..5b80262 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/05-client/06-delete/BIMFaceClient_Delete.cs @@ -0,0 +1,75 @@ +锘縩amespace Yw +{ + public sealed partial class BIMFaceClient + { + private const string _fileDeleteUrl = @"https://file.bimface.com/file";//鏂囦欢鍒犻櫎URL + private const string _integrateDeleteUrl = @"https://api.bimface.com/integrate";//闆嗘垚妯″瀷鍒犻櫎URL + private const string _compareDeleteUrl = @"https://api.bimface.com/v2/compare";//妯″瀷瀵规瘮鍒犻櫎URL + + /// <summary> + /// 鍒犻櫎 + /// </summary> + public async Task<bool> Delete(string bimfaceId, eModelIdType modelIdType = eModelIdType.fileId) + { + await GetAccessToken(); + bool result = false; + switch (modelIdType) + { + case eModelIdType.fileId: result = await DeleteFileAsync(bimfaceId); break; + case eModelIdType.integrateId: result = await DeleteIntegrateAsync(bimfaceId); break; + case eModelIdType.compareId: result = await DeleteCompareAsync(bimfaceId); break; + default: break; + } + return result; + } + + //鍒犻櫎鏂囦欢 + private async Task<bool> DeleteFileAsync(string bimfaceId) + { + var url = $"{_fileDeleteUrl}?fileId={bimfaceId}"; + var request = new FlurlRequest(url); + var header = HeaderHelper.GetHeader(_accessToken); + request.WithHeader(header.Key, header.Value); + var response = await request.DeleteAsync(); + var jsonString = await response.GetStringAsync(); + var result = JsonHelper.Json2Object<DeleteFileResponse>(jsonString); + result.TryThrowException(); + return true; + } + + //鍒犻櫎妯″瀷闆嗘垚 + private async Task<bool> DeleteIntegrateAsync(string bimfaceId) + { + var url = $"{_integrateDeleteUrl}?integrateId={bimfaceId}"; + var request = new FlurlRequest(url); + var header = HeaderHelper.GetHeader(_accessToken); + request.WithHeader(header.Key, header.Value); + var response = await request.DeleteAsync(); + var jsonString = await response.GetStringAsync(); + var result = JsonHelper.Json2Object<DeleteIntegrateResponse>(jsonString); + result.TryThrowException(); + return true; + } + + //鍒犻櫎妯″瀷瀵规瘮 + private async Task<bool> DeleteCompareAsync(string bimfaceId) + { + var url = $"{_compareDeleteUrl}?compareId={bimfaceId}"; + var request = new FlurlRequest(url); + var header = HeaderHelper.GetHeader(_accessToken); + request.WithHeader(header.Key, header.Value); + var response = await request.DeleteAsync(); + var jsonString = await response.GetStringAsync(); + var result = JsonHelper.Json2Object<DeleteCompareResponse>(jsonString); + result.TryThrowException(); + return true; + } + + + + + + + + } +} diff --git a/Component/Yw.BIMFace.SDK.Core/GlobalUsings.cs b/Component/Yw.BIMFace.SDK.Core/GlobalUsings.cs new file mode 100644 index 0000000..ca4e777 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/GlobalUsings.cs @@ -0,0 +1,7 @@ +锘縢lobal using Yw; +global using Yw.BIMFace; +global using System.Net; +global using System.Text; +global using System.Collections.Specialized; +global using Newtonsoft.Json; +global using Flurl.Http; \ No newline at end of file diff --git a/Component/Yw.BIMFace.SDK.Core/Properties/PublishProfiles/FolderProfile.pubxml b/Component/Yw.BIMFace.SDK.Core/Properties/PublishProfiles/FolderProfile.pubxml new file mode 100644 index 0000000..154e035 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/Properties/PublishProfiles/FolderProfile.pubxml @@ -0,0 +1,13 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<!-- +https://go.microsoft.com/fwlink/?LinkID=208121. +--> +<Project> + <PropertyGroup> + <Configuration>Release</Configuration> + <Platform>Any CPU</Platform> + <PublishDir>bin\Release\net6.0\publish\</PublishDir> + <PublishProtocol>FileSystem</PublishProtocol> + <_TargetId>Folder</_TargetId> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/Component/Yw.BIMFace.SDK.Core/Properties/PublishProfiles/FolderProfile.pubxml.user b/Component/Yw.BIMFace.SDK.Core/Properties/PublishProfiles/FolderProfile.pubxml.user new file mode 100644 index 0000000..1be8e9a --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -0,0 +1,10 @@ +锘�<?xml version="1.0" encoding="utf-8"?> +<!-- +https://go.microsoft.com/fwlink/?LinkID=208121. +--> +<Project> + <PropertyGroup> + <History>True|2024-07-16T06:59:37.6680219Z;True|2024-07-02T17:41:10.8366044+08:00;</History> + <LastFailureDetails /> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/Component/Yw.BIMFace.SDK.Core/Yw.BIMFace.SDK.Core.csproj b/Component/Yw.BIMFace.SDK.Core/Yw.BIMFace.SDK.Core.csproj new file mode 100644 index 0000000..6daaac4 --- /dev/null +++ b/Component/Yw.BIMFace.SDK.Core/Yw.BIMFace.SDK.Core.csproj @@ -0,0 +1,16 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>disable</Nullable> + <Version>3.0.1</Version> + <GeneratePackageOnBuild>True</GeneratePackageOnBuild> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="Yw.FlurlHttp.Core" Version="3.0.0" /> + <PackageReference Include="Yw.Newtonsoft.Core" Version="3.0.0" /> + </ItemGroup> + +</Project> diff --git a/Desktop/HStation.Desktop.Xhs.Core/DbFirstHelper.cs b/Desktop/HStation.Desktop.Xhs.Core/DbFirstHelper.cs index b438d3c..8c4b006 100644 --- a/Desktop/HStation.Desktop.Xhs.Core/DbFirstHelper.cs +++ b/Desktop/HStation.Desktop.Xhs.Core/DbFirstHelper.cs @@ -19,6 +19,8 @@ new BLL.XhsDbFirstHelper().Initial(); new Yw.BLL.MapDbFirstHelper().Initial(); new Yw.BLL.BasicDbFirstHelper().Initial(); + new Yw.BLL.HydroDbFirstHelper().Initial(); + } } } diff --git a/Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs b/Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs index 049cb15..75dafee 100644 --- a/Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs +++ b/Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs @@ -71,7 +71,7 @@ tileNavPane.Dock = DockStyle.Top; tileNavPane.Location = new Point(0, 0); tileNavPane.Name = "tileNavPane"; - tileNavPane.Size = new Size(932, 60); + tileNavPane.Size = new Size(1189, 53); tileNavPane.TabIndex = 0; tileNavPane.Text = "tileNavPane1"; tileNavPane.ElementClick += tileNavPane_ElementClick; @@ -88,6 +88,7 @@ nbMin.Caption = null; nbMin.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True; nbMin.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbMin.ImageOptions.SvgImage"); + nbMin.ImageOptions.SvgImageSize = new Size(24, 24); nbMin.Name = "nbMin"; nbMin.ElementClick += nbMin_ElementClick; // @@ -97,7 +98,7 @@ nbNormal.Caption = null; nbNormal.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True; nbNormal.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbNormal.ImageOptions.SvgImage"); - nbNormal.ImageOptions.SvgImageSize = new Size(24, 24); + nbNormal.ImageOptions.SvgImageSize = new Size(20, 20); nbNormal.Name = "nbNormal"; nbNormal.ElementClick += nbNormal_ElementClick; // @@ -107,6 +108,7 @@ nbClose.Caption = null; nbClose.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True; nbClose.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbClose.ImageOptions.SvgImage"); + nbClose.ImageOptions.SvgImageSize = new Size(24, 24); nbClose.Name = "nbClose"; nbClose.ElementClick += nabClose_ElementClick; // @@ -162,15 +164,15 @@ barDockControlTop.Dock = DockStyle.Top; barDockControlTop.Location = new Point(0, 0); barDockControlTop.Manager = barManager1; - barDockControlTop.Size = new Size(932, 0); + barDockControlTop.Size = new Size(1189, 0); // // barDockControlBottom // barDockControlBottom.CausesValidation = false; barDockControlBottom.Dock = DockStyle.Bottom; - barDockControlBottom.Location = new Point(0, 498); + barDockControlBottom.Location = new Point(0, 717); barDockControlBottom.Manager = barManager1; - barDockControlBottom.Size = new Size(932, 23); + barDockControlBottom.Size = new Size(1189, 23); // // barDockControlLeft // @@ -178,15 +180,15 @@ barDockControlLeft.Dock = DockStyle.Left; barDockControlLeft.Location = new Point(0, 0); barDockControlLeft.Manager = barManager1; - barDockControlLeft.Size = new Size(0, 498); + barDockControlLeft.Size = new Size(0, 717); // // barDockControlRight // barDockControlRight.CausesValidation = false; barDockControlRight.Dock = DockStyle.Right; - barDockControlRight.Location = new Point(932, 0); + barDockControlRight.Location = new Point(1189, 0); barDockControlRight.Manager = barManager1; - barDockControlRight.Size = new Size(0, 498); + barDockControlRight.Size = new Size(0, 717); // // dockManager1 // @@ -212,7 +214,7 @@ // AutoScaleDimensions = new SizeF(7F, 14F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(932, 521); + ClientSize = new Size(1189, 740); Controls.Add(tileNavPane); Controls.Add(barDockControlLeft); Controls.Add(barDockControlRight); @@ -221,6 +223,7 @@ Margin = new Padding(3, 2, 3, 2); Name = "MainForm"; Text = "Form1"; + WindowState = FormWindowState.Maximized; FormClosing += MainForm_FormClosing; FormClosed += MainForm_FormClosed; Load += MainForm_Load; diff --git a/Desktop/HStation.Desktop.Xhs.Core/Program.cs b/Desktop/HStation.Desktop.Xhs.Core/Program.cs index 90f7c7b..c62c4ff 100644 --- a/Desktop/HStation.Desktop.Xhs.Core/Program.cs +++ b/Desktop/HStation.Desktop.Xhs.Core/Program.cs @@ -20,6 +20,9 @@ // return; //} + //Yw.FileFolderZipHelper.Zip(@"C:\Users\admin\Desktop\居家办公工作\RevitTest", @"C:\Users\admin\Desktop\居家办公工作\RevitTest.ywrvt"); + + //扫描全局DTO映射 //TypeAdapterConfig.GlobalSettings.Scan(Assembly.Load("Yw.BLL.Auth.Core"), Assembly.Load("HStation.BLL.Xhs.Core")); DbFirstHelper.Initial(); diff --git a/HStation.Xhs.Core.sln b/HStation.Xhs.Core.sln index cab89f5..cd23f77 100644 --- a/HStation.Xhs.Core.sln +++ b/HStation.Xhs.Core.sln @@ -55,13 +55,17 @@ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.Dto.Core", "Dto\HStation.Dto.Core\HStation.Dto.Core.csproj", "{4BCDC547-079A-4CB6-824B-800B111380AD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HStation.BLL.Core", "BLL\HStation.BLL.Core\HStation.BLL.Core.csproj", "{5D082C0C-FD9B-4BEE-B57F-6C3D1B9F0BB3}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.BLL.Core", "BLL\HStation.BLL.Core\HStation.BLL.Core.csproj", "{5D082C0C-FD9B-4BEE-B57F-6C3D1B9F0BB3}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Application", "Application", "{276C57AF-5A9C-4A50-A79E-A5098D322FE9}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.Application.Xhs.Core", "Application\HStation.Application.Xhs.Core\HStation.Application.Xhs.Core.csproj", "{784A568F-A01F-45FC-AACB-B80F87EA3ABA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HStation.Application.Core", "Application\HStation.Application.Core\HStation.Application.Core.csproj", "{4724474E-66CD-4237-B3A0-085125AD2D8F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HStation.Application.Core", "Application\HStation.Application.Core\HStation.Application.Core.csproj", "{4724474E-66CD-4237-B3A0-085125AD2D8F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Component", "Component", "{0469F9DE-F12C-4B83-A871-A77A82DCB4C8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Yw.BIMFace.SDK.Core", "Component\Yw.BIMFace.SDK.Core\Yw.BIMFace.SDK.Core.csproj", "{D6D805ED-C848-4403-97AB-E86715B9E2DB}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -153,6 +157,10 @@ {4724474E-66CD-4237-B3A0-085125AD2D8F}.Debug|Any CPU.Build.0 = Debug|Any CPU {4724474E-66CD-4237-B3A0-085125AD2D8F}.Release|Any CPU.ActiveCfg = Release|Any CPU {4724474E-66CD-4237-B3A0-085125AD2D8F}.Release|Any CPU.Build.0 = Release|Any CPU + {D6D805ED-C848-4403-97AB-E86715B9E2DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D6D805ED-C848-4403-97AB-E86715B9E2DB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D6D805ED-C848-4403-97AB-E86715B9E2DB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D6D805ED-C848-4403-97AB-E86715B9E2DB}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -179,6 +187,7 @@ {5D082C0C-FD9B-4BEE-B57F-6C3D1B9F0BB3} = {4D3764D7-19DE-4C77-8F75-0EFB19D64B3F} {784A568F-A01F-45FC-AACB-B80F87EA3ABA} = {276C57AF-5A9C-4A50-A79E-A5098D322FE9} {4724474E-66CD-4237-B3A0-085125AD2D8F} = {276C57AF-5A9C-4A50-A79E-A5098D322FE9} + {D6D805ED-C848-4403-97AB-E86715B9E2DB} = {0469F9DE-F12C-4B83-A871-A77A82DCB4C8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E02989A8-9B6F-43E5-AACA-790328215089} diff --git a/Hydro/HStation.Hydro.Core/HStation.Hydro.Core.csproj b/Hydro/HStation.Hydro.Core/HStation.Hydro.Core.csproj index 4100b82..f53a1ff 100644 --- a/Hydro/HStation.Hydro.Core/HStation.Hydro.Core.csproj +++ b/Hydro/HStation.Hydro.Core/HStation.Hydro.Core.csproj @@ -7,7 +7,7 @@ </PropertyGroup> <ItemGroup> - <PackageReference Include="Yw.BLL.Hydro.Core" Version="3.0.0" /> + <PackageReference Include="Yw.BLL.Hydro.Core" Version="3.0.2" /> </ItemGroup> <ItemGroup> diff --git a/Hydro/HStation.Hydro.Core/ParseHelper.cs b/Hydro/HStation.Hydro.Core/ParseHelper.cs index 1336644..13b9931 100644 --- a/Hydro/HStation.Hydro.Core/ParseHelper.cs +++ b/Hydro/HStation.Hydro.Core/ParseHelper.cs @@ -8,7 +8,7 @@ /// <summary> /// 浠嶳evit瑙f瀽 /// </summary> - public static long FromRevit(HStation.Model.RevitModel revitModel) + public static Yw.Model.HydroModelInfo FromRevit(HStation.Model.RevitModel revitModel) { var hydro = new Yw.Model.HydroModelInfo(); hydro.Name = revitModel.Name; @@ -19,6 +19,7 @@ hydro.TagName = null; hydro.Description = revitModel.Description; + //姘村簱 if (revitModel.Reservoirs != null && revitModel.Reservoirs.Count > 0) { hydro.Reservoirs = new List<Yw.Model.HydroReservoirInfo>(); @@ -32,15 +33,200 @@ reservoir.Description = revitReservoir.Description; reservoir.Head = revitReservoir.Head; reservoir.Pattern = revitReservoir.Pattern; - reservoir.ScenePropValueList = new List<Yw.Model.HydroScenePropValuePureInfo>(); - - + var center = revitReservoir.BoundingBox.GetCenter(); + reservoir.Position2d = new Yw.Model.Hydro.Position2d(center.X, center.Y); + reservoir.Position3d = new Yw.Model.Hydro.Position3d(center.X, center.Y, center.Z); + reservoir.ScenePropValueList = revitReservoir.PropValueList?.Select(x => new Yw.Model.HydroScenePropValuePureInfo() + { + PropName = x.PropName, + PropValue = x.PropValue + }).ToList(); + hydro.Reservoirs.Add(reservoir); } - - } - return default; + //姘存睜 + if (revitModel.Tanks != null && revitModel.Tanks.Count > 0) + { + hydro.Tanks = new List<Yw.Model.HydroTankInfo>(); + foreach (var revitTank in revitModel.Tanks) + { + var tank = new Yw.Model.HydroTankInfo(); + tank.Catalog = Yw.Hydro.Catalog.Tank; + tank.Name = revitTank.Name; + tank.Code = revitTank.Code; + tank.Flags = revitTank.Flags; + tank.Description = revitTank.Description; + tank.Elev = revitTank.Elev; + tank.InitLevel = revitTank.InitLevel; + tank.MinLevel = revitTank.MinLevel; + tank.MaxLevel = revitTank.MaxLevel; + tank.Diameter = revitTank.Diameter; + tank.MinVol = revitTank.MinVol; + tank.VolCurve = revitTank.VolCurve; + var center = revitTank.BoundingBox.GetCenter(); + tank.Position2d = new Yw.Model.Hydro.Position2d(center.X, center.Y); + tank.Position3d = new Yw.Model.Hydro.Position3d(center.X, center.Y, center.Z); + tank.ScenePropValueList = revitTank.PropValueList?.Select(x => new Yw.Model.HydroScenePropValuePureInfo() + { + PropName = x.PropName, + PropValue = x.PropValue + }).ToList(); + hydro.Tanks.Add(tank); + } + } + + //鎵╂暎鍣� + if (revitModel.Emitters != null && revitModel.Emitters.Count > 0) + { + hydro.Emitters = new List<Yw.Model.HydroEmitterInfo>(); + foreach (var revitEmitter in revitModel.Emitters) + { + var emitter = new Yw.Model.HydroEmitterInfo(); + emitter.Catalog = Yw.Hydro.Catalog.Emitter; + emitter.Name = revitEmitter.Name; + emitter.Code = revitEmitter.Code; + emitter.Flags = revitEmitter.Flags; + emitter.Description = revitEmitter.Description; + emitter.EmitterType = revitEmitter.EmitterType; + emitter.FlowCoefficient = revitEmitter.FlowCoefficient; + var center = revitEmitter.BoundingBox.GetCenter(); + emitter.Position2d = new Yw.Model.Hydro.Position2d(center.X, center.Y); + emitter.Position3d = new Yw.Model.Hydro.Position3d(center.X, center.Y, center.Z); + emitter.ScenePropValueList = revitEmitter.PropValueList?.Select(x => new Yw.Model.HydroScenePropValuePureInfo() + { + PropName = x.PropName, + PropValue = x.PropValue + }).ToList(); + hydro.Emitters.Add(emitter); + } + } + + //鑺傜偣 + if (revitModel.Junctions != null && revitModel.Junctions.Count > 0) + { + hydro.Junctions = new List<Yw.Model.HydroJunctionInfo>(); + foreach (var revitJunction in revitModel.Junctions) + { + var junction = new Yw.Model.HydroJunctionInfo(); + junction.Catalog = Yw.Hydro.Catalog.Junction; + junction.Name = revitJunction.Name; + junction.Code = revitJunction.Code; + junction.Flags = revitJunction.Flags; + junction.Description = revitJunction.Description; + junction.Elev = revitJunction.Elev; + junction.Demand = revitJunction.Demand; + junction.Pattern = revitJunction.Pattern; + var center = revitJunction.BoundingBox.GetCenter(); + junction.Position2d = new Yw.Model.Hydro.Position2d(center.X, center.Y); + junction.Position3d = new Yw.Model.Hydro.Position3d(center.X, center.Y, center.Z); + junction.ScenePropValueList = revitJunction.PropValueList?.Select(x => new Yw.Model.HydroScenePropValuePureInfo() + { + PropName = x.PropName, + PropValue = x.PropValue + }).ToList(); + hydro.Junctions.Add(junction); + } + } + + //绠¢亾 + if (revitModel.Pipes != null && revitModel.Pipes.Count > 0) + { + hydro.Pipes = new List<Yw.Model.HydroPipeInfo>(); + foreach (var revitPipe in revitModel.Pipes) + { + var pipe = new Yw.Model.HydroPipeInfo(); + pipe.Catalog = Yw.Hydro.Catalog.Pipe; + pipe.Name = revitPipe.Name; + pipe.Code = revitPipe.Code; + pipe.Flags = revitPipe.Flags; + pipe.Description = revitPipe.Description; + pipe.StartCode = revitPipe.StartCode; + pipe.EndCode = revitPipe.EndCode; + pipe.Diameter = revitPipe.Diameter; + pipe.Length = revitPipe.Length; + pipe.Roughness = revitPipe.Roughness; + pipe.MinorLoss = revitPipe.MinorLoss; + pipe.PipeStatus = revitPipe.PipeStatus; + pipe.ScenePropValueList = revitPipe.PropValueList?.Select(x => new Yw.Model.HydroScenePropValuePureInfo() + { + PropName = x.PropName, + PropValue = x.PropValue + }).ToList(); + hydro.Pipes.Add(pipe); + } + } + + //姘存车 + if (revitModel.Pumps != null && revitModel.Pumps.Count > 0) + { + hydro.Pumps = new List<Yw.Model.HydroPumpInfo>(); + foreach (var revitPump in revitModel.Pumps) + { + var pump = new Yw.Model.HydroPumpInfo(); + pump.Catalog = Yw.Hydro.Catalog.Pump; + pump.Name = revitPump.Name; + pump.Code = revitPump.Code; + pump.Flags = revitPump.Flags; + pump.Description = revitPump.Description; + pump.StartCode = revitPump.StartCode; + pump.EndCode = revitPump.EndCode; + pump.Power = revitPump.Power; + pump.Head = revitPump.Head; + pump.Speed = revitPump.Speed; + pump.Pattern = revitPump.Pattern; + pump.ScenePropValueList = revitPump.PropValueList?.Select(x => new Yw.Model.HydroScenePropValuePureInfo() + { + PropName = x.PropName, + PropValue = x.PropValue + }).ToList(); + hydro.Pumps.Add(pump); + } + } + + //闃�闂� + if (revitModel.Valves != null && revitModel.Valves.Count > 0) + { + hydro.Valves = new List<Yw.Model.HydroValveInfo>(); + foreach (var revitValve in revitModel.Valves) + { + var valve = new Yw.Model.HydroValveInfo(); + valve.Catalog = Yw.Hydro.Catalog.Valve; + valve.Name = revitValve.Name; + valve.Code = revitValve.Code; + valve.Flags = revitValve.Flags; + valve.Description = revitValve.Description; + valve.StartCode = revitValve.StartCode; + valve.EndCode = revitValve.EndCode; + valve.Diameter = revitValve.Diameter; + valve.MinorLoss = revitValve.MinorLoss; + valve.ValveType = revitValve.ValveType; + valve.ValveSetting = revitValve.ValveSetting; + valve.ScenePropValueList = revitValve.PropValueList?.Select(x => new Yw.Model.HydroScenePropValuePureInfo() + { + PropName = x.PropName, + PropValue = x.PropValue + }).ToList(); + hydro.Valves.Add(valve); + } + } + + //瑁呴グ浠� + if (revitModel.Decorators != null && revitModel.Decorators.Count > 0) + { + hydro.Decorators = new List<Yw.Model.HydroDecoratorInfo>(); + foreach (var revitDecorator in revitModel.Decorators) + { + var decorator = new Yw.Model.HydroDecoratorInfo(); + decorator.Name = revitDecorator.Name; + decorator.Category = revitDecorator.Category; + decorator.Decoration = revitDecorator.Decoration; + decorator.Description = revitDecorator.Description; + hydro.Decorators.Add(decorator); + } + } + + return hydro; } } } diff --git a/Service/HStation.Service.Revit.Core/02-parter/00-core/RevitBoundingBox.cs b/Service/HStation.Service.Revit.Core/02-parter/00-core/RevitBoundingBox.cs index e076b83..16205ba 100644 --- a/Service/HStation.Service.Revit.Core/02-parter/00-core/RevitBoundingBox.cs +++ b/Service/HStation.Service.Revit.Core/02-parter/00-core/RevitBoundingBox.cs @@ -14,5 +14,16 @@ /// /// </summary> public RevitPosition Max { get; set; } + + /// <summary> + /// 鑾峰彇涓績浣嶇疆 + /// </summary> + public RevitPosition GetCenter() + { + var x = (this.Max.X - this.Min.X) / 2; + var y = (this.Max.Y - this.Min.Y) / 2; + var z = (this.Max.Z - this.Min.Z) / 2; + return new RevitPosition(x, y, z); + } } } diff --git a/Service/HStation.Service.Revit.Core/02-parter/00-core/RevitPosition.cs b/Service/HStation.Service.Revit.Core/02-parter/00-core/RevitPosition.cs index 6d997a3..54d8c9f 100644 --- a/Service/HStation.Service.Revit.Core/02-parter/00-core/RevitPosition.cs +++ b/Service/HStation.Service.Revit.Core/02-parter/00-core/RevitPosition.cs @@ -6,6 +6,37 @@ public class RevitPosition { /// <summary> + /// + /// </summary> + public RevitPosition() { } + + /// <summary> + /// + /// </summary> + /// <param name="x"></param> + /// <param name="y"></param> + /// <param name="z"></param> + public RevitPosition(double x, double y, double z) + { + X = x; + Y = y; + Z = z; + } + + /// <summary> + /// + /// </summary> + /// <param name="rhs"></param> + public RevitPosition(RevitPosition rhs) + { + this.X = rhs.X; + this.Y = rhs.Y; + this.Z = rhs.Z; + } + + + + /// <summary> /// X /// </summary> public double X { get; set; } diff --git a/Service/HStation.Service.Xhs.Core/00-core/DataType.cs b/Service/HStation.Service.Xhs.Core/00-core/DataType.cs index e99b246..f096ed6 100644 --- a/Service/HStation.Service.Xhs.Core/00-core/DataType.cs +++ b/Service/HStation.Service.Xhs.Core/00-core/DataType.cs @@ -13,7 +13,7 @@ /// <summary> /// 椤圭洰绔� /// </summary> - public const string XhsProjectItem = "xhs-project-site"; + public const string XhsProjectSite = "xhs-project-site"; } } diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.Designer.cs index d29ce8c..f6cfedc 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.Designer.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.Designer.cs @@ -32,6 +32,10 @@ DevExpress.XtraLayout.ColumnDefinition columnDefinition2 = new DevExpress.XtraLayout.ColumnDefinition(); DevExpress.XtraLayout.ColumnDefinition columnDefinition3 = new DevExpress.XtraLayout.ColumnDefinition(); DevExpress.XtraLayout.RowDefinition rowDefinition1 = new DevExpress.XtraLayout.RowDefinition(); + DevExpress.XtraLayout.RowDefinition rowDefinition2 = new DevExpress.XtraLayout.RowDefinition(); + DevExpress.XtraEditors.TileItemElement tileItemElement1 = new DevExpress.XtraEditors.TileItemElement(); + ComponentResourceManager resources = new ComponentResourceManager(typeof(HomeXhsProjectPage)); + DevExpress.XtraEditors.TileItemElement tileItemElement2 = new DevExpress.XtraEditors.TileItemElement(); layoutControl1 = new DevExpress.XtraLayout.LayoutControl(); mapViewProjectListContainer1 = new MapViewProjectListContainer(); homeXhsProjectPropertyCtrl1 = new HomeXhsProjectPropertyCtrl(); @@ -40,22 +44,30 @@ layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem(); layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem(); layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem(); + tileControl1 = new DevExpress.XtraEditors.TileControl(); + layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem(); + tileGroup1 = new DevExpress.XtraEditors.TileGroup(); + tileItemForProject = new DevExpress.XtraEditors.TileItem(); + tilItemForPumpMain = new DevExpress.XtraEditors.TileItem(); ((ISupportInitialize)layoutControl1).BeginInit(); layoutControl1.SuspendLayout(); ((ISupportInitialize)Root).BeginInit(); ((ISupportInitialize)layoutControlItem1).BeginInit(); ((ISupportInitialize)layoutControlItem2).BeginInit(); ((ISupportInitialize)layoutControlItem3).BeginInit(); + ((ISupportInitialize)layoutControlItem4).BeginInit(); SuspendLayout(); // // layoutControl1 // + layoutControl1.Controls.Add(tileControl1); layoutControl1.Controls.Add(mapViewProjectListContainer1); layoutControl1.Controls.Add(homeXhsProjectPropertyCtrl1); layoutControl1.Controls.Add(homeXhsProjectTreeListCtrl1); layoutControl1.Dock = DockStyle.Fill; layoutControl1.Location = new Point(0, 0); layoutControl1.Name = "layoutControl1"; + layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(506, 387, 650, 400); layoutControl1.Root = Root; layoutControl1.Size = new Size(1063, 677); layoutControl1.TabIndex = 0; @@ -63,25 +75,26 @@ // // mapViewProjectListContainer1 // - mapViewProjectListContainer1.Location = new Point(252, 2); + mapViewProjectListContainer1.Location = new Point(252, 122); mapViewProjectListContainer1.Margin = new Padding(3, 2, 3, 2); mapViewProjectListContainer1.Name = "mapViewProjectListContainer1"; - mapViewProjectListContainer1.Size = new Size(559, 673); + mapViewProjectListContainer1.Size = new Size(559, 553); mapViewProjectListContainer1.TabIndex = 6; // // homeXhsProjectPropertyCtrl1 // - homeXhsProjectPropertyCtrl1.Location = new Point(815, 2); + homeXhsProjectPropertyCtrl1.Location = new Point(815, 122); homeXhsProjectPropertyCtrl1.Name = "homeXhsProjectPropertyCtrl1"; homeXhsProjectPropertyCtrl1.SelectedObject = null; - homeXhsProjectPropertyCtrl1.Size = new Size(246, 673); + homeXhsProjectPropertyCtrl1.Size = new Size(246, 553); homeXhsProjectPropertyCtrl1.TabIndex = 5; // // homeXhsProjectTreeListCtrl1 // - homeXhsProjectTreeListCtrl1.Location = new Point(2, 2); + homeXhsProjectTreeListCtrl1.Location = new Point(2, 122); homeXhsProjectTreeListCtrl1.Name = "homeXhsProjectTreeListCtrl1"; - homeXhsProjectTreeListCtrl1.Size = new Size(246, 673); + homeXhsProjectTreeListCtrl1.Padding = new Padding(10); + homeXhsProjectTreeListCtrl1.Size = new Size(246, 553); homeXhsProjectTreeListCtrl1.TabIndex = 4; homeXhsProjectTreeListCtrl1.SelectProjectEvent += homeXhsProjectTreeListCtrl1_SelectProjectEvent; // @@ -89,7 +102,7 @@ // Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True; Root.GroupBordersVisible = false; - Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2, layoutControlItem3 }); + Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2, layoutControlItem3, layoutControlItem4 }); Root.LayoutMode = DevExpress.XtraLayout.Utils.LayoutMode.Table; Root.Name = "Root"; columnDefinition1.SizeType = SizeType.Absolute; @@ -99,9 +112,11 @@ columnDefinition3.SizeType = SizeType.Absolute; columnDefinition3.Width = 250D; Root.OptionsTableLayoutGroup.ColumnDefinitions.AddRange(new DevExpress.XtraLayout.ColumnDefinition[] { columnDefinition1, columnDefinition2, columnDefinition3 }); - rowDefinition1.Height = 100D; - rowDefinition1.SizeType = SizeType.Percent; - Root.OptionsTableLayoutGroup.RowDefinitions.AddRange(new DevExpress.XtraLayout.RowDefinition[] { rowDefinition1 }); + rowDefinition1.Height = 120D; + rowDefinition1.SizeType = SizeType.Absolute; + rowDefinition2.Height = 100D; + rowDefinition2.SizeType = SizeType.Percent; + Root.OptionsTableLayoutGroup.RowDefinitions.AddRange(new DevExpress.XtraLayout.RowDefinition[] { rowDefinition1, rowDefinition2 }); Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0); Root.Size = new Size(1063, 677); Root.TextVisible = false; @@ -109,31 +124,78 @@ // layoutControlItem1 // layoutControlItem1.Control = homeXhsProjectTreeListCtrl1; - layoutControlItem1.Location = new Point(0, 0); + layoutControlItem1.Location = new Point(0, 120); layoutControlItem1.Name = "layoutControlItem1"; - layoutControlItem1.Size = new Size(250, 677); + layoutControlItem1.OptionsTableLayoutItem.RowIndex = 1; + layoutControlItem1.Size = new Size(250, 557); layoutControlItem1.TextSize = new Size(0, 0); layoutControlItem1.TextVisible = false; // // layoutControlItem2 // layoutControlItem2.Control = homeXhsProjectPropertyCtrl1; - layoutControlItem2.Location = new Point(813, 0); + layoutControlItem2.Location = new Point(813, 120); layoutControlItem2.Name = "layoutControlItem2"; layoutControlItem2.OptionsTableLayoutItem.ColumnIndex = 2; - layoutControlItem2.Size = new Size(250, 677); + layoutControlItem2.OptionsTableLayoutItem.RowIndex = 1; + layoutControlItem2.Size = new Size(250, 557); layoutControlItem2.TextSize = new Size(0, 0); layoutControlItem2.TextVisible = false; // // layoutControlItem3 // layoutControlItem3.Control = mapViewProjectListContainer1; - layoutControlItem3.Location = new Point(250, 0); + layoutControlItem3.Location = new Point(250, 120); layoutControlItem3.Name = "layoutControlItem3"; layoutControlItem3.OptionsTableLayoutItem.ColumnIndex = 1; - layoutControlItem3.Size = new Size(563, 677); + layoutControlItem3.OptionsTableLayoutItem.RowIndex = 1; + layoutControlItem3.Size = new Size(563, 557); layoutControlItem3.TextSize = new Size(0, 0); layoutControlItem3.TextVisible = false; + // + // tileControl1 + // + tileControl1.Groups.Add(tileGroup1); + tileControl1.Location = new Point(2, 2); + tileControl1.MaxId = 2; + tileControl1.Name = "tileControl1"; + tileControl1.Size = new Size(1059, 116); + tileControl1.TabIndex = 7; + tileControl1.Text = "tileControl1"; + // + // layoutControlItem4 + // + layoutControlItem4.Control = tileControl1; + layoutControlItem4.Location = new Point(0, 0); + layoutControlItem4.Name = "layoutControlItem4"; + layoutControlItem4.OptionsTableLayoutItem.ColumnSpan = 3; + layoutControlItem4.Size = new Size(1063, 120); + layoutControlItem4.TextSize = new Size(0, 0); + layoutControlItem4.TextVisible = false; + // + // tileGroup1 + // + tileGroup1.Items.Add(tileItemForProject); + tileGroup1.Items.Add(tilItemForPumpMain); + tileGroup1.Name = "tileGroup1"; + tileGroup1.Text = "tileGroup1"; + // + // tileItemForProject + // + tileItemElement1.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("resource.SvgImage"); + tileItemElement1.Text = "椤圭洰鎬绘暟閲�"; + tileItemForProject.Elements.Add(tileItemElement1); + tileItemForProject.Id = 0; + tileItemForProject.ItemSize = DevExpress.XtraEditors.TileItemSize.Large; + tileItemForProject.Name = "tileItemForProject"; + // + // tilItemForPumpMain + // + tileItemElement2.Text = "姘存车鍨嬪彿鎬绘暟閲�"; + tilItemForPumpMain.Elements.Add(tileItemElement2); + tilItemForPumpMain.Id = 1; + tilItemForPumpMain.ItemSize = DevExpress.XtraEditors.TileItemSize.Large; + tilItemForPumpMain.Name = "tilItemForPumpMain"; // // HomeXhsProjectPage // @@ -150,6 +212,7 @@ ((ISupportInitialize)layoutControlItem1).EndInit(); ((ISupportInitialize)layoutControlItem2).EndInit(); ((ISupportInitialize)layoutControlItem3).EndInit(); + ((ISupportInitialize)layoutControlItem4).EndInit(); ResumeLayout(false); } @@ -163,5 +226,10 @@ private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1; private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2; private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3; + private DevExpress.XtraEditors.TileControl tileControl1; + private DevExpress.XtraEditors.TileGroup tileGroup1; + private DevExpress.XtraEditors.TileItem tileItemForProject; + private DevExpress.XtraEditors.TileItem tilItemForPumpMain; + private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4; } } diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.resx index af32865..3738beb 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.resx +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/HomeXhsProjectPage.resx @@ -117,4 +117,22 @@ <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> + <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" /> + <data name="resource.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAFECAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iX3gzNF9fVHJhZmZpY19MaWdodHMiIHN0eWxlPSJlbmFibGUtYmFja2dy + b3VuZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5ZZWxsb3d7Zmls + bDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlDMjM7fQoJLkJs + YWNre2ZpbGw6IzcyNzI3Mjt9Cjwvc3R5bGU+DQogIDxjaXJjbGUgY3g9IjkiIGN5PSI5IiByPSI3IiBj + bGFzcz0iR3JlZW4iIC8+DQogIDxjaXJjbGUgY3g9IjkiIGN5PSIyNSIgcj0iNyIgY2xhc3M9IlJlZCIg + Lz4NCiAgPGNpcmNsZSBjeD0iMjUiIGN5PSI5IiByPSI3IiBjbGFzcz0iWWVsbG93IiAvPg0KICA8Y2ly + Y2xlIGN4PSIyNSIgY3k9IjI1IiByPSI3IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L +</value> + </data> </root> \ No newline at end of file diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectViewModel.cs index 626bc71..38ec3bb 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectViewModel.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectViewModel.cs @@ -63,13 +63,53 @@ #endregion - #region 绗洓姝ョ敓鎴愰」鐩� + #region 绗洓姝ヨ嚜鍔ㄧ敓鎴愰」鐩� + + /// <summary> + /// 姘村姏妯″瀷id + /// </summary> + public long? HydroID { get; set; } + + /// <summary> + /// 椤圭洰id + /// </summary> + public long? ProjectID { get; set; } + + /// <summary> + /// 椤圭洰绔檌d + /// </summary> + public long? ProjectSiteID { get; set; } + + /// <summary> + /// 姘村姏妯″瀷鍏宠仈id + /// </summary> + public long? HydroRelationID { get; set; } + + /// <summary> + /// 鍦板浘淇℃伅id + /// </summary> + public long? MapInfoID { get; set; } + + /// <summary> + /// bimfaceid + /// </summary> + public long? BimfaceId { get; set; } + + /// <summary> + /// bimface 鏂囦欢id + /// </summary> + public long? BimfaceFileID { get; set; } + + /// <summary> + /// bimface 鏂囦欢鍏宠仈id + /// </summary> + public long? BimfaceFileRelationID { get; set; } #endregion - #region 绗簲姝ラ」鐩畬鎴� + #region 绗簲姝ラ」鐩鍏ュ畬鎴� diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/02-ProjectInfo/InputXhsProjectInfoWizardPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/02-ProjectInfo/InputXhsProjectInfoWizardPage.cs index 529ca1f..5d1b6b8 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/02-ProjectInfo/InputXhsProjectInfoWizardPage.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/02-ProjectInfo/InputXhsProjectInfoWizardPage.cs @@ -27,9 +27,9 @@ return; } _vm = t; + _isInitialize = true; var allFlagList = await _bllFlag.Value.GetFlagListBySysType(HStation.Xhs.DataType.XhsProject); this.setFlagsEditCtrl1.SetBindingData(allFlagList, null); - _isInitialize = true; } /// <summary> diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/GenerateXhsProjectWizardPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/GenerateXhsProjectWizardPage.Designer.cs index bfd820d..352760a 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/GenerateXhsProjectWizardPage.Designer.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/GenerateXhsProjectWizardPage.Designer.cs @@ -29,18 +29,18 @@ private void InitializeComponent() { layoutControl1 = new DevExpress.XtraLayout.LayoutControl(); - Root = new DevExpress.XtraLayout.LayoutControlGroup(); - listBoxControl1 = new DevExpress.XtraEditors.ListBoxControl(); - layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem(); progressBarControl1 = new DevExpress.XtraEditors.ProgressBarControl(); - layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem(); + listBoxControl1 = new DevExpress.XtraEditors.ListBoxControl(); + Root = new DevExpress.XtraLayout.LayoutControlGroup(); + layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem(); + itemForProgress = new DevExpress.XtraLayout.LayoutControlItem(); ((ISupportInitialize)layoutControl1).BeginInit(); layoutControl1.SuspendLayout(); - ((ISupportInitialize)Root).BeginInit(); - ((ISupportInitialize)listBoxControl1).BeginInit(); - ((ISupportInitialize)layoutControlItem1).BeginInit(); ((ISupportInitialize)progressBarControl1.Properties).BeginInit(); - ((ISupportInitialize)layoutControlItem2).BeginInit(); + ((ISupportInitialize)listBoxControl1).BeginInit(); + ((ISupportInitialize)Root).BeginInit(); + ((ISupportInitialize)layoutControlItem1).BeginInit(); + ((ISupportInitialize)itemForProgress).BeginInit(); SuspendLayout(); // // layoutControl1 @@ -56,22 +56,35 @@ layoutControl1.TabIndex = 0; layoutControl1.Text = "layoutControl1"; // + // progressBarControl1 + // + progressBarControl1.Location = new Point(12, 12); + progressBarControl1.Name = "progressBarControl1"; + progressBarControl1.Properties.FlowAnimationEnabled = true; + progressBarControl1.Properties.ShowTitle = true; + progressBarControl1.Size = new Size(697, 18); + progressBarControl1.StyleController = layoutControl1; + progressBarControl1.TabIndex = 5; + // + // listBoxControl1 + // + listBoxControl1.ItemHeight = 25; + listBoxControl1.Location = new Point(12, 34); + listBoxControl1.Name = "listBoxControl1"; + listBoxControl1.SelectionMode = SelectionMode.None; + listBoxControl1.ShowFocusRect = false; + listBoxControl1.Size = new Size(697, 459); + listBoxControl1.StyleController = layoutControl1; + listBoxControl1.TabIndex = 4; + // // Root // Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True; Root.GroupBordersVisible = false; - Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2 }); + Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, itemForProgress }); Root.Name = "Root"; Root.Size = new Size(721, 505); Root.TextVisible = false; - // - // listBoxControl1 - // - listBoxControl1.Location = new Point(12, 34); - listBoxControl1.Name = "listBoxControl1"; - listBoxControl1.Size = new Size(697, 459); - listBoxControl1.StyleController = layoutControl1; - listBoxControl1.TabIndex = 4; // // layoutControlItem1 // @@ -82,37 +95,29 @@ layoutControlItem1.TextSize = new Size(0, 0); layoutControlItem1.TextVisible = false; // - // progressBarControl1 + // itemForProgress // - progressBarControl1.Location = new Point(12, 12); - progressBarControl1.Name = "progressBarControl1"; - progressBarControl1.Size = new Size(697, 18); - progressBarControl1.StyleController = layoutControl1; - progressBarControl1.TabIndex = 5; + itemForProgress.Control = progressBarControl1; + itemForProgress.Location = new Point(0, 0); + itemForProgress.Name = "itemForProgress"; + itemForProgress.Size = new Size(701, 22); + itemForProgress.TextSize = new Size(0, 0); + itemForProgress.TextVisible = false; // - // layoutControlItem2 - // - layoutControlItem2.Control = progressBarControl1; - layoutControlItem2.Location = new Point(0, 0); - layoutControlItem2.Name = "layoutControlItem2"; - layoutControlItem2.Size = new Size(701, 22); - layoutControlItem2.TextSize = new Size(0, 0); - layoutControlItem2.TextVisible = false; - // - // GenerateXhsProjectCtrl + // GenerateXhsProjectWizardPage // AutoScaleDimensions = new SizeF(7F, 14F); AutoScaleMode = AutoScaleMode.Font; Controls.Add(layoutControl1); - Name = "GenerateXhsProjectCtrl"; + Name = "GenerateXhsProjectWizardPage"; Size = new Size(721, 505); ((ISupportInitialize)layoutControl1).EndInit(); layoutControl1.ResumeLayout(false); - ((ISupportInitialize)Root).EndInit(); - ((ISupportInitialize)listBoxControl1).EndInit(); - ((ISupportInitialize)layoutControlItem1).EndInit(); ((ISupportInitialize)progressBarControl1.Properties).EndInit(); - ((ISupportInitialize)layoutControlItem2).EndInit(); + ((ISupportInitialize)listBoxControl1).EndInit(); + ((ISupportInitialize)Root).EndInit(); + ((ISupportInitialize)layoutControlItem1).EndInit(); + ((ISupportInitialize)itemForProgress).EndInit(); ResumeLayout(false); } @@ -123,6 +128,6 @@ private DevExpress.XtraEditors.ListBoxControl listBoxControl1; private DevExpress.XtraLayout.LayoutControlGroup Root; private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1; - private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2; + private DevExpress.XtraLayout.LayoutControlItem itemForProgress; } } diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/GenerateXhsProjectWizardPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/GenerateXhsProjectWizardPage.cs index a241bb1..325cb00 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/GenerateXhsProjectWizardPage.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/GenerateXhsProjectWizardPage.cs @@ -1,58 +1,114 @@ -锘縰sing DevExpress.XtraEditors; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace HStation.WinFrmUI +锘縩amespace HStation.WinFrmUI { public partial class GenerateXhsProjectWizardPage : DevExpress.XtraEditors.XtraUserControl, IWizardPage<ImportXhsProjectViewModel> { public GenerateXhsProjectWizardPage() { InitializeComponent(); + this.layoutControl1.SetupLayoutControl(); } - public bool AllowPrev => throw new NotImplementedException(); - - public bool AllowNext => throw new NotImplementedException(); - - public bool AllowCancel => throw new NotImplementedException(); - - public bool AllowComplete => throw new NotImplementedException(); - - public bool IsInitialize => throw new NotImplementedException(); - + /// <summary> + /// 鐘舵�佹敼鍙樹簨浠� + /// </summary> public event Action PageStateChangedEvent; + private bool _isInitialize = false;//鏄惁鍒濆鍖� + private ImportXhsProjectViewModel _vm = null;//鎿嶄綔瀵硅薄 - public bool CanCancel() + + /// <summary> + /// + /// </summary> + public async void InitialPage(ImportXhsProjectViewModel vm) { - throw new NotImplementedException(); + if (_isInitialize) + { + return; + } + _vm = vm; + _isInitialize = await ImportXhsProjectHelper.Import(vm, (msg) => + { + this.listBoxControl1.Items.Add(msg); + }, (max, current) => + { + this.progressBarControl1.Properties.Maximum = max; + this.progressBarControl1.Position = current; + // this.progressBarControl1.Properties.Step = current; + // this.progressBarControl1.PerformStep(); + }); + + this.PageStateChangedEvent?.Invoke(); } - public bool CanComplete() + /// <summary> + /// 鍏佽涓婁竴姝� + /// </summary> + public bool AllowPrev { - throw new NotImplementedException(); + get { return false; } } - public bool CanNext() + /// <summary> + /// 鍏佽涓嬩竴姝� + /// </summary> + public bool AllowNext { - throw new NotImplementedException(); + get { return _isInitialize; } } + /// <summary> + /// 鍏佽鍙栨秷 + /// </summary> + public bool AllowCancel + { + get { return false; } + } + + /// <summary> + /// 鍏佽瀹屾垚 + /// </summary> + public bool AllowComplete + { + get { return false; } + } + + /// <summary> + /// 鑳藉惁涓婁竴姝� + /// </summary> + /// <returns></returns> public bool CanPrev() { - throw new NotImplementedException(); + return false; } - public void InitialPage(ImportXhsProjectViewModel t) + /// <summary> + /// 鑳藉惁涓嬩竴姝� + /// </summary> + public bool CanNext() { - throw new NotImplementedException(); + return _isInitialize; } + + /// <summary> + /// 鑳藉惁鍙栨秷 + /// </summary> + public bool CanCancel() + { + return false; + } + + /// <summary> + /// 鑳藉惁瀹屾垚 + /// </summary> + public bool CanComplete() + { + return false; + } + + + + + + } } diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/ImportXhsProjectHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/ImportXhsProjectHelper.cs index 2fd887d..c6d11f5 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/ImportXhsProjectHelper.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/ImportXhsProjectHelper.cs @@ -1,11 +1,13 @@ -锘縩amespace HStation.WinFrmUI +锘縰sing DevExpress.XtraScheduler.VCalendar; + +namespace HStation.WinFrmUI { /// <summary> /// /// </summary> public class ImportXhsProjectHelper { - private const string _tempFolder = "project-import-temp"; + private const string _tempFolder = "ImportProjectTemp";//瀵煎叆椤圭洰涓存椂鏂囦欢澶� /// <summary> @@ -17,50 +19,85 @@ /// <returns></returns> public static async Task<bool> Import(ImportXhsProjectViewModel vm, Action<string> feedBackMsg, Action<int, int> feedBackProgress) { - #region 鏂囦欢瑙f瀽 - var tempFolderPath = Path.Combine(Yw.Service.ConfigHelper.DataPath, HStation.Settings.XhsParasHelper.Xhs.DataFolder, _tempFolder); - var bol = Yw.FileFolderZipHelper.UnZip(vm.ZipFile, tempFolderPath, null); - if (!bol) - { - feedBackMsg?.Invoke("妯″瀷鏂囦欢瑙f瀽澶辫触"); - return bol; - } + #region 涓存椂鏂囦欢澶勭悊 - var tempDirectoryInfo = new DirectoryInfo(tempFolderPath); - var allFileInfoList = tempDirectoryInfo.GetFiles(); - if (allFileInfoList == null || allFileInfoList.Count() < 1) + var tempFolder = Path.Combine(Yw.Service.ConfigHelper.DataPath, HStation.Settings.XhsParasHelper.Xhs.DataFolder, _tempFolder); + //濡傛灉瀛樺湪涓存椂鏂囦欢澶� + if (Directory.Exists(tempFolder)) { - feedBackMsg?.Invoke("妯″瀷鏂囦欢瑙f瀽澶辫触"); - return bol; + //鍒犻櫎涓存椂鏂囦欢澶瑰強瀛愮洰褰曚笌鏂囦欢 + Directory.Delete(tempFolder, true); } + //鍒涘缓涓存椂鏂囦欢澶� + Directory.CreateDirectory(tempFolder); #endregion - #region 姘村姏妯″瀷 + #region 鍘嬬缉鏂囦欢瑙f瀽 + feedBackMsg?.Invoke("姝e湪瑙f瀽妯″瀷鏂囦欢..."); + var bol = Yw.FileFolderZipHelper.UnZip(vm.ZipFile, tempFolder, null); + if (!bol) + { + feedBackMsg?.Invoke("妯″瀷鏂囦欢瑙f瀽澶辫触锛侊紒锛�"); + return bol; + } + + var tempFolderInfo = new DirectoryInfo(tempFolder); + var allFileInfoList = tempFolderInfo.GetFiles(); + if (allFileInfoList == null || allFileInfoList.Count() < 1) + { + feedBackMsg?.Invoke("妯″瀷鏂囦欢瑙f瀽澶辫触锛侊紒锛�"); + return bol; + } + + feedBackMsg?.Invoke("妯″瀷鏂囦欢瑙f瀽鎴愬姛銆傘�傘��"); + + feedBackProgress?.Invoke(100, 10); + + #endregion + + #region 姘村姏缁撴瀯鏂囦欢 + + feedBackMsg?.Invoke("姝e湪瑙f瀽姘村姏缁撴瀯鏂囦欢..."); var jsonFileInfo = allFileInfoList.Where(x => x.Extension == ".json").FirstOrDefault(); if (jsonFileInfo == null) { - feedBackMsg?.Invoke("姘村姏缁撴瀯鏂囦欢瑙f瀽澶辫触"); + feedBackMsg?.Invoke("姘村姏缁撴瀯鏂囦欢瑙f瀽澶辫触锛侊紒锛�"); return false; } var jsonText = File.ReadAllText(jsonFileInfo.FullName); var revitModel = JsonHelper.Json2Object<HStation.Model.RevitModel>(jsonText); - var hydroId = HStation.Hydro.ParseHelper.FromRevit(revitModel); - if (hydroId < 1) + var hydroInfo = HStation.Hydro.ParseHelper.FromRevit(revitModel); + if (hydroInfo == null) { - feedBackMsg?.Invoke("姘村姏缁撴瀯鏂囦欢瑙f瀽澶辫触"); + feedBackMsg?.Invoke("姘村姏缁撴瀯鏂囦欢瑙f瀽澶辫触锛侊紒锛�"); return false; } + var bllHydro = new Lazy<Yw.BLL.HydroModelInfo>(() => new Yw.BLL.HydroModelInfo()); + var hydroId = await bllHydro.Value.Save(hydroInfo); + if (hydroId < 1) + { + feedBackMsg?.Invoke("姘村姏缁撴瀯淇濆瓨澶辫触锛侊紒锛�"); + return false; + } + + feedBackMsg?.Invoke("姘村姏缁撴瀯鏂囦欢瑙f瀽鎴愬姛銆傘�傘��"); + + feedBackProgress?.Invoke(100, 20); + + vm.HydroID = hydroId; #endregion - #region 鍒涘缓椤圭洰 + #region 鍒涘缓淇濆瓨椤圭洰 - var bllXhsProject = new BLL.XhsProjectExtensions(); + feedBackMsg?.Invoke("姝e湪鍒涘缓椤圭洰..."); + + var bllXhsProject = new Lazy<BLL.XhsProjectExtensions>(() => new BLL.XhsProjectExtensions()); var project = new AddXhsProjectExtensionsInput(); project.NO = vm.NO; @@ -78,22 +115,58 @@ } }; - var projectId = await bllXhsProject.Insert(project); + var projectId = await bllXhsProject.Value.Insert(project); if (projectId < 1) { - feedBackMsg?.Invoke("椤圭洰鍒涘缓澶辫触"); + feedBackMsg?.Invoke("椤圭洰鍒涘缓澶辫触锛侊紒锛�"); return false; } - #endregion + feedBackMsg?.Invoke("椤圭洰鍒涘缓鎴愬姛銆傘�傘��"); - #region 鍏宠仈妯″瀷 + vm.ProjectID = projectId; - + feedBackProgress?.Invoke(100, 25); #endregion - #region 鍦板浘浣嶇疆 + #region 鍏宠仈姘村姏妯″瀷 + + var bllXhsProjectSite = new Lazy<BLL.XhsProjectSite>(() => new BLL.XhsProjectSite()); + var allProjectSiteList = await bllXhsProjectSite.Value.GetByProjectID(projectId); + var projectSiteId = allProjectSiteList.First().ID; + + vm.ProjectSiteID = projectSiteId; + + feedBackMsg?.Invoke("姝e湪鍏宠仈姘村姏妯″瀷..."); + + var hydroRelation = new Yw.Dto.AddHydroModelRelationInput(); + hydroRelation.ObjectType = HStation.Xhs.DataType.XhsProjectSite; + hydroRelation.ObjectID = projectSiteId; + hydroRelation.ModelID = hydroId; + hydroRelation.Purpose = Yw.Hydro.Purpose.Simulation; + hydroRelation.Content = null; + hydroRelation.Description = null; + + var bllHydroRelation = new Lazy<Yw.BLL.HydroModelRelation>(() => new Yw.BLL.HydroModelRelation()); + var hydroRelationId = await bllHydroRelation.Value.Insert(hydroRelation); + if (hydroRelationId < 1) + { + feedBackMsg?.Invoke("鍏宠仈姘村姏妯″瀷澶辫触锛侊紒锛�"); + return false; + } + + feedBackMsg?.Invoke("鍏宠仈姘村姏鎴愬姛銆傘�傘��"); + + vm.HydroRelationID = hydroRelationId; + + feedBackProgress?.Invoke(100, 30); + + #endregion + + #region 璁剧疆鍦板浘浣嶇疆 + + feedBackMsg?.Invoke("姝e湪璁剧疆鍦板浘浣嶇疆..."); if (vm.Location != null) { @@ -109,37 +182,51 @@ var mapInfoId = await new Yw.BLL.MapInfo().Insert(mapInfo); if (mapInfoId < 1) { - feedBackMsg?.Invoke("鍦板浘瀹氫綅淇℃伅淇濆瓨澶辫触"); + feedBackMsg?.Invoke("璁剧疆鍦板浘浣嶇疆澶辫触锛侊紒锛�"); } else { - feedBackMsg?.Invoke("淇濆瓨鍦板浘瀹氫綅淇℃伅鎴愬姛"); + feedBackMsg?.Invoke("璁剧疆鍦板浘浣嶇疆鎴愬姛銆傘�傘��"); } } + else + { + feedBackMsg?.Invoke("璁剧疆鍦板浘浣嶇疆澶辫触锛侊紒锛�"); + } + + feedBackMsg?.Invoke("璁剧疆鍦板浘浣嶇疆瀹屾垚銆傘�傘��"); + + feedBackProgress?.Invoke(100, 40); #endregion - #region 涓婁紶妯″瀷 + #region 涓婁紶Revit妯″瀷 + feedBackMsg?.Invoke("姝e湪瑙f瀽Revit妯″瀷鏂囦欢..."); var rvtFileInfo = allFileInfoList.Where(x => x.Extension == ".rvt").FirstOrDefault(); if (rvtFileInfo == null) { - feedBackMsg?.Invoke("Revit妯″瀷鏂囦欢瑙f瀽澶辫触"); - return false; + feedBackMsg?.Invoke("Revit妯″瀷鏂囦欢瑙f瀽澶辫触锛侊紒锛�"); } var bimfaceId = await Yw.WinFrmUI.BimfaceHelper.UploadFile(rvtFileInfo.FullName); if (bimfaceId < 1) { - feedBackMsg?.Invoke("Revit妯″瀷鏂囦欢涓婁紶澶辫触"); - return false; + feedBackMsg?.Invoke("Revit妯″瀷鏂囦欢涓婁紶澶辫触锛侊紒锛�"); + return true; } + feedBackMsg?.Invoke("瑙f瀽Revit妯″瀷鏂囦欢鎴愬姛銆傘�傘��"); + feedBackProgress?.Invoke(100, 60); + + vm.BimfaceId = bimfaceId; #endregion - #region 淇濆瓨Bimface + #region 淇濆瓨Bimface鏂囦欢 + + feedBackMsg?.Invoke("姝e湪淇濆瓨Bimface鏂囦欢..."); var bllBimfaceFile = new Yw.BLL.BimfaceFile(); @@ -155,19 +242,23 @@ var bimfaceFileId = await bllBimfaceFile.Insert(bimfaceFile); if (bimfaceFileId < 1) { - feedBackMsg?.Invoke("BIMFACE鏂囦欢淇℃伅淇濆瓨澶辫触"); + feedBackMsg?.Invoke("Bimface鏂囦欢淇濆瓨澶辫触锛侊紒锛�"); + return true; } - else - { - feedBackMsg?.Invoke("BIMFACE鏂囦欢淇℃伅淇濆瓨鎴愬姛"); - } + + feedBackMsg?.Invoke("Bimface鏂囦欢淇濆瓨鎴愬姛銆傘�傘��"); + + feedBackProgress?.Invoke(100, 70); + + vm.BimfaceFileID = bimfaceFileId; #endregion - #region 鍏宠仈Bimface + #region 鍏宠仈Bimface鏂囦欢 + + feedBackMsg?.Invoke("姝e湪鍏宠仈Bimface鏂囦欢..."); var bllBimfaceRelation = new Yw.BLL.BimfaceFileRelation(); - var bimfaceRelation = new Yw.Dto.AddBimfaceFileRelationInput(); bimfaceRelation.ObjectType = HStation.Xhs.DataType.XhsProject; bimfaceRelation.ObjectID = projectId; @@ -178,30 +269,44 @@ var bimfaceRelationId = await bllBimfaceRelation.Insert(bimfaceRelation); if (bimfaceRelationId < 1) { - feedBackMsg?.Invoke("BIMFACE鍏宠仈澶辫触"); + feedBackMsg?.Invoke("Bimface鏂囦欢鍏宠仈澶辫触锛侊紒锛�"); + return true; } - else - { - feedBackMsg?.Invoke("BIMFACE鍏宠仈鎴愬姛"); - } + feedBackMsg?.Invoke("Bimface鏂囦欢鍏宠仈鎴愬姛銆傘�傘��"); + feedBackProgress?.Invoke(100, 80); + + vm.BimfaceFileRelationID = bimfaceRelationId; #endregion #region 鍙戣捣bimface杞崲 + feedBackMsg?.Invoke("姝e湪杩涜Bimface妯″瀷杞婚噺鍖�..."); var bimfaceTranslateStatus = await Yw.WinFrmUI.BimfaceHelper.TranslateRvtFile(bimfaceId); if (bimfaceTranslateStatus != Yw.BIMFace.eTranslateStatus.Success) { await Yw.WinFrmUI.BimfaceHelper.WaitFileTranslateStatusUntilSuccess(bimfaceId, 3000); } + feedBackMsg?.Invoke("Bimface妯″瀷杞婚噺鍖栧畬鎴愩�傘�傘��"); + feedBackProgress?.Invoke(100, 90); #endregion #region 鏇存柊鐘舵�� + feedBackMsg?.Invoke("姝e湪鏇存柊Bimface鏂囦欢鐘舵��..."); bol = await bllBimfaceFile.UpdateFileStatus(bimfaceFileId, (int)Yw.Bimface.eFileStatus.ConvertSucceed); - feedBackMsg?.Invoke("鏂囦欢鐘舵�佹洿鏂�"); + if (bol) + { + feedBackMsg?.Invoke("姝e湪Bimface鏂囦欢鐘舵�佹洿鏂版垚鍔熴�傘�傘��"); + } + else + { + feedBackMsg?.Invoke("姝e湪Bimface鏂囦欢鐘舵�佹洿鏂板け璐ワ紒锛侊紒"); + } + + feedBackProgress?.Invoke(100, 100); #endregion diff --git a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/Yw.WinFrmUI.Bimface.Core.csproj b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/Yw.WinFrmUI.Bimface.Core.csproj index 41f6a82..82494ae 100644 --- a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/Yw.WinFrmUI.Bimface.Core.csproj +++ b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/Yw.WinFrmUI.Bimface.Core.csproj @@ -88,13 +88,13 @@ <ItemGroup> <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" /> - <PackageReference Include="Yw.BIMFace.SDK.Core" Version="3.0.1" /> <PackageReference Include="Yw.BLL.Bimface.Core" Version="3.0.1" /> <PackageReference Include="Yw.WebBrower.Core" Version="3.0.2" /> <PackageReference Include="Yw.WebView2.WinFrmUI.Core" Version="3.0.0" /> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\..\Component\Yw.BIMFace.SDK.Core\Yw.BIMFace.SDK.Core.csproj" /> <ProjectReference Include="..\Yw.WinFrmUI.Core\Yw.WinFrmUI.Core.csproj" /> </ItemGroup> -- Gitblit v1.9.3