| | |
| | | using DevExpress.XtraEditors; |
| | | using HStation.Model; |
| | | using HStation.Vmo; |
| | | using Microsoft.Extensions.DependencyInjection; |
| | | using static DevExpress.XtraEditors.XtraInputBox; |
| | | using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window; |
| | | |
| | |
| | | |
| | | feedBackProgress?.Invoke(100, 5); |
| | | |
| | | #endregion 第一步 临时文件处理(进度5%) |
| | | #endregion |
| | | |
| | | #region 第二步 创建项目(进度 10%) |
| | | |
| | | feedBackMsg?.Invoke("正在创建项目...", Color.Black); |
| | | |
| | | var project = new Vmo.XhsProjectExtensionsVmo(); |
| | | project.NO = vm.NO; |
| | | project.Name = vm.Name; |
| | | project.Address = vm.Address; |
| | | project.Customer = vm.Customer; |
| | | project.Flags = vm.Flags; |
| | | project.TagName = vm.TagName; |
| | | project.Description = vm.Description; |
| | | project.SiteList = new List<XhsProjectSiteVmo>() |
| | | { |
| | | new XhsProjectSiteVmo() |
| | | { |
| | | Name=vm.Name, |
| | | Description=vm.Description |
| | | } |
| | | }; |
| | | |
| | | var projectId = await BLLFactory<HStation.BLL.XhsProjectExtensions>.Instance.Insert(project); |
| | | if (projectId < 1) |
| | | //尚未创建项目 |
| | | if (vm.Project == null) |
| | | { |
| | | feedBackMsg?.Invoke("项目创建失败!!!", Color.Red); |
| | | return false; |
| | | feedBackMsg?.Invoke("正在创建项目...", Color.Black); |
| | | |
| | | var project = new Vmo.XhsProjectExtensionsVmo(); |
| | | project.NO = vm.NO; |
| | | project.Name = vm.Name; |
| | | project.Address = vm.Address; |
| | | project.Customer = vm.Customer; |
| | | project.Flags = vm.Flags; |
| | | project.TagName = vm.TagName; |
| | | project.Description = vm.Description; |
| | | project.SiteList = new List<XhsProjectSiteVmo>() |
| | | { |
| | | new XhsProjectSiteVmo() |
| | | { |
| | | Name=vm.Name, |
| | | Description=vm.Description |
| | | } |
| | | }; |
| | | |
| | | var projectId = await BLLFactory<HStation.BLL.XhsProjectExtensions>.Instance.Insert(project); |
| | | if (projectId < 1) |
| | | { |
| | | feedBackMsg?.Invoke("项目创建失败!!!", Color.Red); |
| | | return false; |
| | | } |
| | | vm.ProjectID = projectId; |
| | | vm.Project = await BLLFactory<HStation.BLL.XhsProjectExtensions>.Instance.GetByID(projectId); |
| | | vm.ProjectSiteID = vm.Project.SiteList.FirstOrDefault().ID; |
| | | |
| | | feedBackMsg?.Invoke("项目创建成功。。。", Color.Green); |
| | | } |
| | | |
| | | feedBackMsg?.Invoke("项目创建成功。。。", Color.Green); |
| | | |
| | | vm.ProjectID = projectId; |
| | | |
| | | feedBackProgress?.Invoke(100, 10); |
| | | |
| | | #endregion 第二步 创建项目(进度 10%) |
| | | #endregion |
| | | |
| | | #region 第三步 设置地图位置(进度 20%) |
| | | |
| | | feedBackMsg?.Invoke("正在设置地图位置...", Color.Black); |
| | | |
| | | if (vm.Location != null) |
| | | if (vm.MapInfo != null) |
| | | { |
| | | var mapInfo = new Yw.Vmo.MapInfoVmo(); |
| | | mapInfo.ObjectType = HStation.Xhs.DataType.XhsProject; |
| | | mapInfo.ObjectID = projectId; |
| | | mapInfo.ObjectName = project.Name; |
| | | mapInfo.Purpose = Yw.Map.Purpose.Location; |
| | | mapInfo.Kind = Yw.Map.Kind.Gaodei; |
| | | mapInfo.Shape = Yw.Map.Shape.Marker; |
| | | mapInfo.Position = vm.Location.ToJson(); |
| | | feedBackMsg?.Invoke("正在设置地图位置...", Color.Black); |
| | | |
| | | var mapInfoId = await BLLFactory<Yw.BLL.MapInfo>.Instance.Insert(mapInfo); |
| | | if (mapInfoId < 1) |
| | | if (vm.Location != null) |
| | | { |
| | | feedBackMsg?.Invoke("设置地图位置失败!!!", Color.Red); |
| | | var mapInfo = new Yw.Vmo.MapInfoVmo(); |
| | | mapInfo.ObjectType = HStation.Xhs.DataType.XhsProject; |
| | | mapInfo.ObjectID = vm.ProjectID.Value; |
| | | mapInfo.ObjectName = vm.Project.Name; |
| | | mapInfo.Purpose = Yw.Map.Purpose.Location; |
| | | mapInfo.Kind = Yw.Map.Kind.Gaodei; |
| | | mapInfo.Shape = Yw.Map.Shape.Marker; |
| | | mapInfo.Position = vm.Location.ToJson(); |
| | | |
| | | var mapInfoId = await BLLFactory<Yw.BLL.MapInfo>.Instance.Insert(mapInfo); |
| | | if (mapInfoId < 1) |
| | | { |
| | | feedBackMsg?.Invoke("设置地图位置失败!!!", Color.Red); |
| | | } |
| | | else |
| | | { |
| | | vm.MapInfoID = mapInfoId; |
| | | vm.MapInfo = await BLLFactory<Yw.BLL.MapInfo>.Instance.GetByID(mapInfoId); |
| | | feedBackMsg?.Invoke("设置地图位置成功。。。", Color.Green); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | vm.MapInfoID = mapInfoId; |
| | | feedBackMsg?.Invoke("设置地图位置成功。。。", Color.Green); |
| | | feedBackMsg?.Invoke("未设置地图位置信息!!!", Color.Red); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | feedBackMsg?.Invoke("未设置地图位置信息!!!", Color.Red); |
| | | } |
| | | |
| | | feedBackProgress?.Invoke(100, 20); |
| | | |
| | | #endregion 第三步 设置地图位置(进度 20%) |
| | | #endregion |
| | | |
| | | #region 第四步 压缩文件解析 (进度25%) |
| | | |
| | | msg = "正在解析模型文件..."; |
| | | feedBackMsg?.Invoke(msg, Color.Black); |
| | | #region 第四步 压缩文件解析 (进度30%) |
| | | |
| | | var zipFilePwd = HStation.Settings.XhsParasHelper.Xhs.File.Password; |
| | | var bol = Yw.FileFolderZipHelper.UnZip(vm.ZipFile, tempFolder, zipFilePwd); |
| | | var localZipFile = vm.LocalZipFile; |
| | | if (!vm.IsLocal) |
| | | { |
| | | if (vm.TransferRevitFile != null) |
| | | { |
| | | feedBackMsg?.Invoke("正在下载模型文件...", Color.Black); |
| | | localZipFile = await BLLFactory<HStation.BLL.TransferRevitFile>.Instance.Download(vm.TransferRevitFile.StorageHouse, vm.TransferRevitFile.StorageCode); |
| | | feedBackMsg?.Invoke("模型文件下载完成!!!", Color.Green); |
| | | } |
| | | } |
| | | msg = "正在解析模型文件..."; |
| | | feedBackMsg?.Invoke(msg, Color.Black); |
| | | var bol = Yw.FileFolderZipHelper.UnZip(localZipFile, tempFolder, zipFilePwd); |
| | | if (!bol) |
| | | { |
| | | feedBackMsg?.Invoke("模型文件解析失败!!!", Color.Red); |
| | |
| | | |
| | | feedBackMsg?.Invoke("模型文件解析成功。。。", Color.Green); |
| | | |
| | | feedBackProgress?.Invoke(100, 25); |
| | | feedBackProgress?.Invoke(100, 30); |
| | | |
| | | #endregion 第四步 压缩文件解析 (进度25%) |
| | | #endregion |
| | | |
| | | #region 第五步 解析水力结构文件 (进度30%) |
| | | #region 第五步 解析水力结构文件 (进度40%) |
| | | |
| | | feedBackMsg?.Invoke("正在解析水力结构文件...", Color.Black); |
| | | var structFileInfo = allFileInfoList.Find(x => x.Name == HStation.Revit.ConstParas.StructFileName); |
| | |
| | | return true; |
| | | } |
| | | var structOthersFileInfo = allFileInfoList.Find(x => x.Name == HStation.Revit.ConstParas.StructOthersFileName); |
| | | |
| | | var structRevitModel = HStation.Service.RevitParseHelper.FromJsonFile |
| | | (structFileInfo.FullName, structOthersFileInfo?.FullName, out bool structFileResult, out List<string> structFileMsgList); |
| | | //解析结果判断 |
| | | if (!structFileResult) |
| | | { |
| | | structFileMsgList?.ForEach(x => feedBackMsg?.Invoke(x, Color.Red)); |
| | | } |
| | | //Revit属性错误处理 |
| | | var hasRevitPropError = false; |
| | | if (structRevitModel != null) |
| | |
| | | { |
| | | case Revit.ePropStatus.Error: |
| | | { |
| | | feedBackMsg?.Invoke($"构件编码:{revitParter.Id},构件属性:{revitParterPropStatus.PropName},错误:{revitParterPropStatus.StatusInfo} ", Color.Red); |
| | | feedBackMsg?.Invoke($"构件类型:{revitParter.Catalog},构件编码:{revitParter.Id},构件属性:{revitParterPropStatus.PropName},错误:{revitParterPropStatus.StatusInfo} ", Color.Red); |
| | | } |
| | | break; |
| | | |
| | | case Revit.ePropStatus.Lack: |
| | | { |
| | | feedBackMsg?.Invoke($"构件编码:{revitParter.Id},构件属性:{revitParterPropStatus.PropName},缺省:{revitParterPropStatus.StatusInfo} ", Color.Gray); |
| | | } |
| | | break; |
| | | |
| | | case Revit.ePropStatus.Abnormal: |
| | | { |
| | | feedBackMsg?.Invoke($"构件编码:{revitParter.Id},构件属性:{revitParterPropStatus.PropName},异常:{revitParterPropStatus.StatusInfo} ", Color.Orange); |
| | | } |
| | | break; |
| | | default: break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | //解析结果判断 |
| | | if (!structFileResult) |
| | | { |
| | | structFileMsgList?.ForEach(x => feedBackMsg?.Invoke(x, Color.Red)); |
| | | } |
| | | |
| | | if (hasRevitPropError || !structFileResult) |
| | | { |
| | | feedBackMsg?.Invoke($"水力结构文件解析错误!!!", Color.Red); |
| | |
| | | feedBackProgress?.Invoke(100, 100); |
| | | return true; |
| | | } |
| | | |
| | | vm.RevitModel = structRevitModel; |
| | | |
| | | var hydroInfo = HStation.Hydro.TransferHelper.FromRevit(structRevitModel, out msg); |
| | | if (hydroInfo == null) |
| | |
| | | return true; |
| | | } |
| | | |
| | | var hydroId = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.Save(hydroInfo); |
| | | if (hydroId < 1) |
| | | { |
| | | feedBackMsg?.Invoke("水力结构信息保存失败!!!", Color.Red); |
| | | feedBackMsg?.Invoke("项目导入结束。。。", Color.Blue); |
| | | feedBackProgress?.Invoke(100, 100); |
| | | return true; |
| | | } |
| | | |
| | | feedBackMsg?.Invoke("正在进行产品匹配...", Color.Black); |
| | | hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(hydroId); |
| | | var matchingParas = AssetsMatchingParasHelper.Create(hydroInfo); |
| | | var matchingParas = Yw.WinFrmUI.HydroMatchingHelper.Create(hydroInfo); |
| | | if (AssetsMatchingHelper.Matching(matchingParas, out string error)) |
| | | { |
| | | if (AssetsMatchingParasHelper.Apply(hydroInfo, matchingParas)) |
| | | if (Yw.WinFrmUI.HydroMatchingHelper.Apply(hydroInfo, matchingParas)) |
| | | { |
| | | feedBackMsg?.Invoke("产品匹配成功。。。", Color.Green); |
| | | feedBackMsg?.Invoke("产品匹配完成。。。", Color.Green); |
| | | } |
| | | else |
| | | { |
| | |
| | | { |
| | | feedBackMsg?.Invoke("产品匹配失败!!!", Color.Red); |
| | | } |
| | | hydroId = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.Save(hydroInfo); |
| | | |
| | | feedBackMsg?.Invoke("水力结构文件解析成功。。。", Color.Green); |
| | | feedBackProgress?.Invoke(100, 30); |
| | | vm.HydroID = hydroId; |
| | | |
| | | #endregion 第五步 解析水力结构文件 (进度30%) |
| | | |
| | | #region 第六步 关联水力结构模型(进度 40%) |
| | | |
| | | var projectSite = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(projectId); |
| | | if (projectSite == null) |
| | | feedBackMsg?.Invoke("正在进行管网修复...", Color.Black); |
| | | if (hydroInfo.RepairLinksDirection(out msg)) |
| | | { |
| | | feedBackMsg?.Invoke("项目站信息错误...", Color.Red); |
| | | feedBackMsg?.Invoke(msg, Color.Green); |
| | | } |
| | | else |
| | | { |
| | | feedBackMsg?.Invoke(msg, Color.Red); |
| | | } |
| | | |
| | | feedBackMsg?.Invoke("正在进行管网参数修复...", Color.Black); |
| | | hydroInfo.RepairParas(out msg); |
| | | if (string.IsNullOrEmpty(msg)) |
| | | { |
| | | feedBackMsg?.Invoke("管网参数修复完成。。。", Color.Green); |
| | | } |
| | | else |
| | | { |
| | | feedBackMsg?.Invoke(msg, Color.Red); |
| | | } |
| | | |
| | | feedBackMsg?.Invoke("正在保存水力结构信息...", Color.Black); |
| | | var hydroId = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.Save(hydroInfo); |
| | | if (hydroId < 1) |
| | | { |
| | | feedBackMsg?.Invoke("水力结构信息保存失败!!!", Color.Red); |
| | | feedBackMsg?.Invoke("项目导入结束。。。", Color.Blue); |
| | | feedBackProgress?.Invoke(100, 100); |
| | | return true; |
| | | } |
| | | feedBackMsg?.Invoke("水力结构信息保存成功。。。", Color.Green); |
| | | |
| | | var projectSiteId = projectSite.ID; |
| | | vm.ProjectSiteID = projectSite.ID; |
| | | feedBackMsg?.Invoke("水力结构文件解析成功。。。", Color.Green); |
| | | feedBackProgress?.Invoke(100, 40); |
| | | vm.HydroID = hydroId; |
| | | |
| | | #endregion |
| | | |
| | | #region 第六步 关联水力结构模型(进度 50%) |
| | | |
| | | feedBackMsg?.Invoke("正在关联水力结构模型...", Color.Black); |
| | | |
| | | var hydroRelation = new Yw.Vmo.HydroModelRelationVmo(); |
| | | hydroRelation.ObjectType = HStation.Xhs.DataType.XhsProjectSite; |
| | | hydroRelation.ObjectID = projectSiteId; |
| | | hydroRelation.ModelID = hydroId; |
| | | hydroRelation.ObjectID = vm.ProjectSiteID.Value; |
| | | hydroRelation.ModelID = vm.HydroID.Value; |
| | | hydroRelation.Purpose = HStation.Xhs.Purpose.Simulation; |
| | | hydroRelation.Content = null; |
| | | hydroRelation.Description = null; |
| | |
| | | |
| | | vm.HydroRelationID = hydroRelationId; |
| | | feedBackMsg?.Invoke("关联水力结构模型成功。。。", Color.Green); |
| | | feedBackProgress?.Invoke(100, 40); |
| | | feedBackProgress?.Invoke(100, 50); |
| | | |
| | | #endregion 第六步 关联水力结构模型(进度 40%) |
| | | #endregion |
| | | |
| | | #region 第七步 上传Revit模型文件(进度 45%) |
| | | #region 第七步 上传Revit模型文件(进度 60%) |
| | | |
| | | feedBackMsg?.Invoke("正在解析Revit模型文件...", Color.Black); |
| | | var rvtFileInfo = allFileInfoList.Find(x => x.Name == HStation.Revit.ConstParas.RvtFileName); |
| | |
| | | } |
| | | |
| | | //var bimfaceId = await Yw.WinFrmUI.BimfaceHelper.UploadFile(rvtFileInfo.FullName);//上传 |
| | | var bimfaceId = 10000882826621; //测试用例 10000878572231 10000882826621 |
| | | var bimfaceId = 10000884893369; //测试用例 10000878572231 10000882826621 10000884283372 10000884362886 10000884702464 10000884893369 |
| | | if (bimfaceId < 1) |
| | | { |
| | | feedBackMsg?.Invoke("Revit模型文件上传失败!!!", Color.Red); |
| | |
| | | |
| | | vm.BimfaceId = bimfaceId; |
| | | feedBackMsg?.Invoke("解析Revit模型文件成功。。。", Color.Green); |
| | | feedBackProgress?.Invoke(100, 45); |
| | | feedBackProgress?.Invoke(100, 60); |
| | | |
| | | #endregion 第七步 上传Revit模型文件(进度 45%) |
| | | #endregion |
| | | |
| | | #region 第八步 保存Bimface文件 (进度 50%) |
| | | #region 第八步 保存Bimface文件 (进度 65%) |
| | | |
| | | feedBackMsg?.Invoke("正在保存Bimface文件...", Color.Black); |
| | | |
| | |
| | | |
| | | vm.BimfaceFileID = bimfaceFileId; |
| | | feedBackMsg?.Invoke("Bimface文件保存成功。。。", Color.Green); |
| | | feedBackProgress?.Invoke(100, 50); |
| | | feedBackProgress?.Invoke(100, 65); |
| | | |
| | | #endregion 第八步 保存Bimface文件 (进度 50%) |
| | | #endregion |
| | | |
| | | #region 第九步 关联Bimface文件(进度 55%) |
| | | #region 第九步 关联Bimface文件(进度 70%) |
| | | |
| | | feedBackMsg?.Invoke("正在关联Bimface文件...", Color.Black); |
| | | |
| | | var bimfaceRelation = new Yw.Vmo.BimfaceFileRelationVmo(); |
| | | bimfaceRelation.ObjectType = HStation.Xhs.DataType.XhsProjectSite; |
| | | bimfaceRelation.ObjectID = projectSiteId; |
| | | bimfaceRelation.ObjectID = vm.ProjectSiteID.Value; |
| | | bimfaceRelation.BimfaceFileID = bimfaceFileId; |
| | | bimfaceRelation.Purpose = HStation.Xhs.Purpose.Simulation; |
| | | bimfaceRelation.Description = vm.Description; |
| | |
| | | } |
| | | vm.BimfaceFileRelationID = bimfaceRelationId; |
| | | feedBackMsg?.Invoke("Bimface文件关联成功。。。", Color.Green); |
| | | feedBackProgress?.Invoke(100, 55); |
| | | feedBackProgress?.Invoke(100, 70); |
| | | |
| | | #endregion 第九步 关联Bimface文件(进度 55%) |
| | | #endregion |
| | | |
| | | #region 第十步 发起bimface转换(进度 80%) |
| | | #region 第十步 发起bimface转换(进度 90%) |
| | | |
| | | feedBackMsg?.Invoke("正在进行Bimface模型轻量化...", Color.Black); |
| | | //var bimfaceTranslateStatus = await Yw.WinFrmUI.BimfaceHelper.TranslateRvtFile(bimfaceId);//发起转换 |
| | |
| | | feedBackMsg?.Invoke("Bimface模型轻量化完成。。。", Color.Green); |
| | | } |
| | | |
| | | feedBackProgress?.Invoke(100, 80); |
| | | feedBackProgress?.Invoke(100, 90); |
| | | |
| | | #endregion 第十步 发起bimface转换(进度 80%) |
| | | #endregion |
| | | |
| | | #region 第十一步 更新Bimface文件状态(进度 100%) |
| | | |
| | |
| | | feedBackMsg?.Invoke("项目导入完成。。。", Color.Green); |
| | | return true; |
| | | |
| | | #endregion 第十一步 更新Bimface文件状态(进度 100%) |
| | | #endregion |
| | | } |
| | | |
| | | |
| | | } |
| | | } |