ソースを参照

Merge branch 'master' of http://dev.dp.sagacloud.cn:8886/r/Revit/SAGA.MBI

xulisong 6 年 前
コミット
e2b62e2f67

+ 178 - 0
MBI/Menu/MBITool.xml

@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Menus>
+  <App>
+    <AppIndex>1</AppIndex>
+    <AppName>SAGA</AppName>
+  </App>
+  <Tab TabName="工具">
+    <MenuTab>MBITool_W</MenuTab>
+    <Modules>MBITool</Modules>
+  </Tab>
+  <Panel PanelName="数据修正" GroupFlag="True" GroupImage="" RevitVer="R14,R15,R16,R17"  ButtonStyles="Large">
+    
+    <Button ButtonStyles="Large">
+      <ButtonName>SAGA.MBI.CheckCloudAndLocalFamilyCommand</ButtonName>
+      <ButtonText>同步族类型</ButtonText>
+      <ImageName>1、打开楼层模型</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.CheckCloudAndLocalFamilyCommand</ClassName>
+      <ToolTip>处理云平台和物理世界族类型不同步的问题。</ToolTip>
+      <LongDescription>处理云平台和物理世界族类型不同步的问题。</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MBITool_W</MenuTab>
+      <Modules>MBITool</Modules>
+    </Button>
+  
+    <Button ButtonStyles="Large">
+      <ButtonName>SAGA.MBI.AddEquipLocationCommand</ButtonName>
+      <ButtonText>更新所有楼层设备的坐标信息</ButtonText>
+      <ImageName>1、打开楼层模型</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.AddEquipLocationCommand</ClassName>
+      <ToolTip>更新所有楼层设备的坐标信息</ToolTip>
+      <LongDescription>更新所有楼层设备的坐标信息</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MBITool_W</MenuTab>
+      <Modules>MBITool</Modules>
+    </Button>
+    <Button ButtonStyles="Large">
+      <ButtonName>SAGA.MBI.ExportMbiModelCommand</ButtonName>
+      <ButtonText>上传jsonZ文件</ButtonText>
+      <ImageName>2、模型文件管理</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.ExportMbiModelCommand</ClassName>
+      <ToolTip>模型文件管理。</ToolTip>
+      <LongDescription>模型文件管理。</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MBITool_W</MenuTab>
+      <Modules>MBITool</Modules>
+    </Button>
+    <Button ButtonStyles="Large">
+      <ButtonName>SAGA.MBI.UpdateEquipinSpaceCommand</ButtonName>
+      <ButtonText>更新设备所在空间关系</ButtonText>
+      <ImageName>1、打开楼层模型</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.UpdateEquipinSpaceCommand</ClassName>
+      <ToolTip>更新设备所在空间关系。</ToolTip>
+      <LongDescription>更新设备所在空间关系。</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MBITool_W</MenuTab>
+      <Modules>MBITool</Modules>
+    </Button>
+    <Button ButtonStyles="Large">
+      <ButtonName>SAGA.MBI.CheckEquipinFloorCommand</ButtonName>
+      <ButtonText>更新设备所在楼层关系</ButtonText>
+      <ImageName>1、打开楼层模型</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.CheckEquipinFloorCommand</ClassName>
+      <ToolTip>更新设备所在楼层关系。</ToolTip>
+      <LongDescription>更新设备所在楼层关系。</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MBITool_W</MenuTab>
+      <Modules>MBITool</Modules>
+    </Button>
+    <Button ButtonStyles="Large">
+      <ButtonName>SAGA.MBI.CorrectLossDutyCommand</ButtonName>
+      <ButtonText>修正有模型但没有岗位问题</ButtonText>
+      <ImageName>1、打开楼层模型</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.CorrectLossDutyCommand</ClassName>
+      <ToolTip>修正有模型但没有岗位问题。</ToolTip>
+      <LongDescription>修正有模型但没有岗位问题。</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MBITool_W</MenuTab>
+      <Modules>MBITool</Modules>
+    </Button>
+    <Button ButtonStyles="Large">
+      <ButtonName>SAGA.MBI.CorrectBIMIDDutyCommand</ButtonName>
+      <ButtonText>修正BIMID重复</ButtonText>
+      <ImageName>1、打开楼层模型</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.CorrectBIMIDDutyCommand</ClassName>
+      <ToolTip>修正BIMID重复。</ToolTip>
+      <LongDescription>修正BIMID重复。</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MBITool_W</MenuTab>
+      <Modules>MBITool</Modules>
+    </Button>
+  </Panel>
+  <Panel PanelName="工具" GroupFlag="True" GroupImage="" RevitVer="R14,R15,R16,R17"  ButtonStyles="Large">
+
+    <Button ButtonStyles="Stacked">
+      <ButtonName>SAGA.MBI.DeleteZeroSpaceCommand</ButtonName>
+      <ButtonText>删除本层Zero空间</ButtonText>
+      <ImageName>1、打开楼层模型</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.DeleteZeroSpaceCommand</ClassName>
+      <ToolTip>删除本层Zero空间。</ToolTip>
+      <LongDescription>删除本层Zero空间。</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MBITool_W</MenuTab>
+      <Modules>MBITool</Modules>
+    </Button>
+
+    <Button ButtonStyles="Stacked">
+      <ButtonName>SAGA.MBI.ExportCategoriesCommand</ButtonName>
+      <ButtonText>导出所有的设备类别</ButtonText>
+      <ImageName>1、打开楼层模型</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.ExportCategoriesCommand</ClassName>
+      <ToolTip>更新设备所在楼层关系。</ToolTip>
+      <LongDescription>更新设备所在楼层关系。</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MBITool_W</MenuTab>
+      <Modules>MBITool</Modules>
+    </Button>
+
+    <Button ButtonStyles="Stacked">
+      <ButtonName>SAGA.MBI.ReportEquipInSpaceCommand</ButtonName>
+      <ButtonText>查询设备所在的空间</ButtonText>
+      <ImageName>1、打开楼层模型</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.ReportEquipInSpaceCommand</ClassName>
+      <ToolTip>查询设备所在的空间</ToolTip>
+      <LongDescription>查询设备所在的空间</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MBITool_W</MenuTab>
+      <Modules>MBITool</Modules>
+    </Button>
+    <Button ButtonStyles="Stacked">
+      <ButtonName>SAGA.MBI.ExportAllDutyCommand</ButtonName>
+      <ButtonText>导出所有的岗位</ButtonText>
+      <ImageName>1、打开楼层模型</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.ExportAllDutyCommand</ClassName>
+      <ToolTip>导出所有的岗位</ToolTip>
+      <LongDescription>导出所有的岗位</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MBITool_W</MenuTab>
+      <Modules>MBITool</Modules>
+    </Button>
+    <Button ButtonStyles="Stacked">
+      <ButtonName>SAGA.MBI.VerticalPipeAlginCommand</ButtonName>
+      <ButtonText>立管对齐</ButtonText>
+      <ImageName>1、打开楼层模型</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.VerticalPipeAlginCommand</ClassName>
+      <ToolTip>立管对齐</ToolTip>
+      <LongDescription>立管对齐</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MBITool_W</MenuTab>
+      <Modules>MBITool</Modules>
+    </Button>
+    <Button ButtonStyles="Stacked">
+      <ButtonName>SAGA.MBI.VerticalPipeIsolationCommand</ButtonName>
+      <ButtonText>框选立管</ButtonText>
+      <ImageName>1、打开楼层模型</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.VerticalPipeIsolationCommand</ClassName>
+      <ToolTip>框选立管</ToolTip>
+      <LongDescription>框选立管</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MBITool_W</MenuTab>
+      <Modules>MBITool</Modules>
+    </Button>
+  </Panel>
+</Menus>
+<!--名称里面换行-->
+<!-- <ButtonText>扫楼App&#x000A;用户管理</ButtonText>-->

+ 1 - 0
MBI/SAGA.MBI/Interaction/MBIModelInfoUpload.cs

@@ -81,6 +81,7 @@ namespace SAGA.MBI.Interaction
             Dictionary<string,bool> results=new Dictionary<string, bool>();
             foreach (var context in contexts)
             {
+                if(context==null)continue;
                 try
                 {
                     context.OpenDocument();

+ 1 - 1
MBI/SAGA.MBI/JsonConvert/CommonConvert.cs

@@ -92,7 +92,7 @@ namespace SAGA.MBI.RequestData
         public static List<MRevitEquipBase> FloorQuery_SubSet(string floorId, string[] type)
         {
             List<MRevitEquipBase> list = new List<MRevitEquipBase>();
-            var json = CommonRequest.QueryObjectByInfos(floorId,new JObject(), type);
+            var json = CommonRequest.DownLoadFloorDataByBIMFloorInfo(floorId, type);
             if (!json.IsRequestHasItem()) return list;
             JObject jObject = JObject.Parse(json);
             foreach (JObject jobjItem in jObject["Content"])

+ 1 - 3
MBI/SAGA.MBI/RequestData/CommonRequest.cs

@@ -131,9 +131,7 @@ namespace SAGA.MBI.RequestData
         public static string DownLoadFloorDataByBIMFloorInfo(string floorId, JArray jArray, string[] type = null)
         {
             string url = MBIConst.DataPlatformLocalHost + $"data-platform-3/object/query_by_info?secret={MBIControl.ProjectCur.Password}&projectId={MBIControl.ProjectCur.Id}";
-
-            string buildingId = DalProjectTree.GetBuildingIdByFloor(floorId);
-
+            
             JObject criteriaJObject = new JObject();
             criteriaJObject.Add("infos", jArray);
             //求并集

+ 37 - 2
MBI/SAGA.MBI/ToolCommand.cs

@@ -476,7 +476,7 @@ namespace SAGA.MBI
     /// </summary>
     [Transaction(TransactionMode.Manual)]
     [Regeneration(RegenerationOption.Manual)]
-    public class CorrectLossDutyCommand : ExternalCommand, IExternalCommandAvailability
+    public class CorrectLossDutyCommand : ExternalCommand
     {
         public override Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
         {
@@ -508,12 +508,47 @@ namespace SAGA.MBI
         /// Onlys show the dialog when a document is open, as Dockable dialogs are only available
         /// when a document is open.
         /// </summary>
-        public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
+        public override bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
         {
             return true;
         }
     }
+    /// <summary>
+    /// 修正岗位缺失
+    /// </summary>
+    [Transaction(TransactionMode.Manual)]
+    [Regeneration(RegenerationOption.Manual)]
+    public class CorrectBIMIDDutyCommand : ExternalCommand
+    {
+        public override Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
+        {
+            try
+            {
+                var tip = MessageShow.Question("是否开始修正BIMID重复问题?\r\n本功能将会保留信息点最全的岗位,删除其它岗位\r\n是:开始修正全部建筑\r\n取消:取消修正。");
+                if (tip)
+                {
+                    CheckDuplicationBIMId.CorrectAll();
+                    MessageBox.Show("修正成功");
+                }
+            }
+            catch (Exception e)
+            {
+                MessageShow.Show(e);
+                return Result.Cancelled;
+            }
+            return Result.Succeeded;
+        }
 
+
+        /// <summary>
+        /// Onlys show the dialog when a document is open, as Dockable dialogs are only available
+        /// when a document is open.
+        /// </summary>
+        public override bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
+        {
+            return true;
+        }
+    }
     #endregion
 
 }

+ 21 - 4
MBI/SAGA.MBI/ToolsData/CheckDuplicationBIMId.cs

@@ -35,15 +35,15 @@ namespace SAGA.MBI.ToolsData
         /// <summary>
         /// 检查BIMId是否重复
         /// </summary>
-        public static void CheckAll()
+        public static void CorrectAll()
         {
             List<IEnumerable<IGrouping<string, MRevitEquipBase>>> groupss=new List<IEnumerable<IGrouping<string, MRevitEquipBase>>>();
             foreach (TreeNodeItem buildingItem in MBIControl.ProjectTree.Children)
             {
                 string buildingId = buildingItem.Item.Id;
-                groupss.Add(Check(buildingId));
+                var groups=(Check(buildingId));
+                Correct(groups);
             }
-            ExportToExcel(groupss);
         }
         /// <summary>
         /// 检查BIMId是否重复
@@ -55,13 +55,30 @@ namespace SAGA.MBI.ToolsData
             var exceptionGroups = bybimidGroups.Where(t => t.Count() >= 2 && !t.Key.IsOnlyDutyNoModelBIMID());
             return exceptionGroups;
         }
+        /// <summary>
+        /// 修正Bimdid重复数据,保留信息点最全的
+        /// </summary>
+        /// <param name="groups"></param>
+        private static void  Correct(IEnumerable<IGrouping<string, MRevitEquipBase>> groups)
+        {
+            foreach (IGrouping<string, MRevitEquipBase> equipBases in groups)
+            {
+                var list=equipBases.ToList();
+                    list.Sort((x, y) => { return x.CloundJObject.Count.CompareTo(y.CloundJObject.Count);});
+                for (int i = 0; i < list.Count-1; i++)
+                {
+                    var item = list[i];
+                    item.DelObject();
+                }
+            }
+        }
 
 
         /// <summary>
         /// 导出数据
         /// </summary>
         /// <param name="xyzsList"></param>
-        public static void ExportToExcel(List<IEnumerable<IGrouping<string, MRevitEquipBase>>> groupss)
+        private static void ExportToExcel(List<IEnumerable<IGrouping<string, MRevitEquipBase>>> groupss)
         {
             SaveFileDialog sflg = new SaveFileDialog();
             sflg.Filter = "Excel(*.xlsx)|*.xlsx";

+ 61 - 52
MBI/SAGA.MBI/WinView/Upload/VMUploadModeManage.cs

@@ -22,6 +22,7 @@ using SAGA.MBI.DataArrange;
 using SAGA.MBI.RequestData;
 using SAGA.MBIAssistData.BLL;
 using SAGA.MBI.Interaction;
+using SAGA.RevitUtils;
 
 namespace SAGA.MBI.WinView.Upload
 {
@@ -101,75 +102,83 @@ namespace SAGA.MBI.WinView.Upload
         [Command]
         public void Upload(object param)
         {
-            Window mainWin = param as Window;
-            if (mainWin == null) return;
-            if (IsUploadModify)
+            try
             {
-                WinUploadConfirmModify win = new WinUploadConfirmModify();
-                if (win.ShowDialog() == true)
+                Window mainWin = param as Window;
+                if (mainWin == null) return;
+                if (IsUploadModify)
                 {
-                    var upfloors = UploadFloors.Where(t =>
-                        t.IsUpload && t.MFloor.FloorLock.LockState == MFloorLockState.LockBySelf).ToList();
-                    int i = 0, count = upfloors.Count();
-                    foreach (var ufloor in upfloors)
+                    WinUploadConfirmModify win = new WinUploadConfirmModify();
+                    if (win.ShowDialog() == true)
                     {
-                        try
+                        var upfloors = UploadFloors.Where(t =>
+                            t.IsUpload && t.MFloor.FloorLock.LockState == MFloorLockState.LockBySelf).ToList();
+                        int i = 0, count = upfloors.Count();
+                        foreach (var ufloor in upfloors)
                         {
-                            i++;
-                            CalcContext context = ufloor.CalcContext;
-
-                            Log4Net.Debug($"开始上传楼层 {ufloor.MFloor} 数据");
-                            if (context == null || !context.Upload())
-                            {
-                                continue;
-                            }
-                            Log4Net.Debug($"结束上传楼层 {ufloor.MFloor} 数据");
-                            Log4Net.Debug($"开始上传楼层 {ufloor.MFloor} 模型文件");
-                            if (FloorFileOperate.UploadFile(ufloor.MFloor.ToString(), ufloor.MFloor.FullPath, count, i))
+                            try
                             {
-                                Log4Net.Debug($"结束上传楼层 {ufloor.MFloor} 模型文件");
+                                i++;
+                                CalcContext context = ufloor.CalcContext;
+
+                                Log4Net.Debug($"开始上传楼层 {ufloor.MFloor} 数据");
+                                if (context == null || !context.Upload())
+                                {
+                                    continue;
+                                }
+                                Log4Net.Debug($"结束上传楼层 {ufloor.MFloor} 数据");
+                                Log4Net.Debug($"开始上传楼层 {ufloor.MFloor} 模型文件");
+                                if (FloorFileOperate.UploadFile(ufloor.MFloor.ToString(), ufloor.MFloor.FullPath, count, i))
+                                {
+                                    Log4Net.Debug($"结束上传楼层 {ufloor.MFloor} 模型文件");
 
-                                Log4Net.Debug($"开始楼层 {ufloor.MFloor} 后序操作");
-                                //请除Duty和BIMID的关系
-                                MBIAssistHelper.DeleteFloorRelation(ufloor.MFloor.Id);
-                                //解锁
-                                DalLock.UnLockFloor(ufloor.MFloor.Id, false);
-                                //上传成功后清除日志数据
-                                ProjectLogManager.ClearFiles(ufloor.MFloor.Id);
-                                //删除备份文件
-                                FloorFileOperate.Del000BakFile(ufloor.MFloor.FullPath);
+                                    Log4Net.Debug($"开始楼层 {ufloor.MFloor} 后序操作");
+                                    //请除Duty和BIMID的关系
+                                    MBIAssistHelper.DeleteFloorRelation(ufloor.MFloor.Id);
+                                    //解锁
+                                    DalLock.UnLockFloor(ufloor.MFloor.Id, false);
+                                    //上传成功后清除日志数据
+                                    ProjectLogManager.ClearFiles(ufloor.MFloor.Id);
+                                    //删除备份文件
+                                    FloorFileOperate.Del000BakFile(ufloor.MFloor.FullPath);
 
-                                Log4Net.Debug($"结束楼层 {ufloor.MFloor} 后序操作");
+                                    Log4Net.Debug($"结束楼层 {ufloor.MFloor} 后序操作");
+                                }
                             }
+                            catch (Exception e)
+                            {
+                                MessageShowBase.Show(e);
+                            }
+
                         }
-                        catch (Exception e)
-                        {
-                            MessageShowBase.Show(e);
-                        }
+                        #region 上传底图文件
+                        Log4Net.Debug($"开始楼层底图上传");
+                        MBIModelInfoUpload.UpdateMbiInfo(upfloors.Select(f => f.CalcContext).ToList());
+                        Log4Net.Debug($"结束楼层底图上传");
+                        #endregion
+                        //添加提示窗口
+                        UpLoadFileRequest.CloseUploadWindow(true, true);
 
-                    }
-                    #region 上传底图文件
-                    Log4Net.Debug($"开始楼层底图上传");
-                    MBIModelInfoUpload.UpdateMbiInfo(upfloors.Select(f => f.CalcContext).ToList());
-                    Log4Net.Debug($"结束楼层底图上传");
-                    #endregion
-                    //添加提示窗口
-                    UpLoadFileRequest.CloseUploadWindow(true, true);
+                        mainWin.Close();
 
-                    mainWin.Close();
+                    }
 
                 }
+                else
+                {
+                    MessageShowBase.Infomation("功能正在开发。");
+                    //WinUploadConfirmReplace win = new WinUploadConfirmReplace();
+                    //if (win.ShowDialog() == true)
+                    //{
 
+                    //}
+                }
             }
-            else
+            catch (Exception e)
             {
-                MessageShowBase.Infomation("功能正在开发。");
-                //WinUploadConfirmReplace win = new WinUploadConfirmReplace();
-                //if (win.ShowDialog() == true)
-                //{
-
-                //}
+                MessageShow.Show(e);
             }
+            
         }
         public bool CanUpload(object param)
         {