Browse Source

xls:同步物理世界信息

xulisong 6 years ago
parent
commit
0e4179c2e7

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/Mode/MaintainerDataConverter.cs

@@ -16,7 +16,7 @@ namespace Com.FirmLib.UI.Maintainer
         {
             var showItem = new AssetShowItem();
             showItem.FamilyCode = dataItem.Category;
-
+            showItem.EquipName = dataItem.Asset.EquipName;
             showItem.Id = dataItem.Id;
             showItem.LocalName = dataItem.Asset.EquipLocalName;
             showItem.LocalCode = dataItem.Asset.EquipLocalId;

+ 1 - 0
MBI/FirmLib/Com.FirmLib.UI/Maintainer/VmManitainerProjectInfo.cs

@@ -413,6 +413,7 @@ namespace Com.FirmLib.UI.Maintainer
             foreach (var dataItem in dataItems)
             {
                 var tempItem = MaintainerDataConverter.ConvertShowItem(dataItem);
+                tempItem.ChangeMaintainer = dataItem.ChnageMaintainer;
                 tempItem.ProjectId = projectId;
                 HistotyAssets.Add(tempItem);
             }

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinManitainerProjectInfo.xaml

@@ -215,7 +215,7 @@
                                 </DataGridTemplateColumn.CellTemplate>
 
                             </DataGridTemplateColumn>
-                            <fw:TDataGridTextColumn Header="是否有其他维修商提供维保" Width="180" IsReadOnly="True"  Binding="{Binding Path=HasOtherMaintainer,Converter={x:Static maintainer:WinManitainerProjectInfo.BoolConverter}}"></fw:TDataGridTextColumn>
+                            <fw:TDataGridTextColumn Header="是否有其他维修商提供维保" Width="180" IsReadOnly="True"  Binding="{Binding Path=ChangeMaintainer,Converter={x:Static maintainer:WinManitainerProjectInfo.BoolConverter}}"></fw:TDataGridTextColumn>
                             <fw:TDataGridTextColumn Header="本地名称" Width="100" IsReadOnly="True"  Binding="{Binding Path=LocalName}"></fw:TDataGridTextColumn>
                             <fw:TDataGridTextColumn Header="本地编码"  Width="80" IsReadOnly="True"  Binding="{Binding Path=LocalCode}"></fw:TDataGridTextColumn>
 

+ 6 - 0
MBI/FirmLib/Com.FirmLib/Entity/MaintainerItem.cs

@@ -61,8 +61,14 @@ namespace Com.FirmLib.Entity
         /// <summary>
         /// 维修商id
         /// </summary>
+         [JsonProperty("DPMaintainerID")]
         public string DpMaintainerId { get; set; }
         /// <summary>
+        /// 设备名称
+        /// </summary>
+        [JsonProperty("EquipName")]
+        public string EquipName { get; set; }
+        /// <summary>
         /// 本地名称
         /// </summary>
         [JsonProperty("EquipLocalName")]

+ 17 - 0
MBI/Menu/SAGABIM.xml

@@ -129,6 +129,23 @@
       <MenuTab>MCJPC_W</MenuTab>
       <Modules>TSRP</Modules>
     </Button>
+   <Button ButtonStyles="Separator">
+      <MenuTab>MCJPC_W</MenuTab>
+      <Modules>TSRP</Modules>
+    </Button>
+<Button ButtonStyles="Large">
+      <ButtonName>SAGA.MBI.SyncLocalNameCommand</ButtonName>
+      <ButtonText>同步本地名称信息点</ButtonText>
+      <ImageName>6、模型信息点维护</ImageName>
+      <DllName>..\OutputDll\SAGA.MBI.exe</DllName>
+      <ClassName>SAGA.MBI.SyncLocalNameCommand</ClassName>
+      <ToolTip>同步本地名称信息点。</ToolTip>
+      <LongDescription>同步本地名称信息点。</LongDescription>
+      <ToolTipImage></ToolTipImage>
+      <MenuTab>MCJPC_W</MenuTab>
+      <Modules>TSRP</Modules>
+    </Button>
+
     <Button ButtonStyles="Separator">
       <MenuTab>MCJPC_W</MenuTab>
       <Modules>TSRP</Modules>

+ 36 - 33
MBI/SAGA.MBI/Command.cs

@@ -19,11 +19,13 @@ using CEFSharpWpf;
 using SAGA.DotNetUtils;
 using SAGA.DotNetUtils.Extend;
 using SAGA.DotNetUtils.Logger;
+using SAGA.MBI.Calc;
 using SAGA.MBI.Common;
 using SAGA.MBI.DataArrange;
 using SAGA.MBI.Interaction;
 using SAGA.MBI.Login;
 using SAGA.MBI.Model;
+using SAGA.MBI.RequestData;
 using SAGA.MBI.Tools;
 using SAGA.MBI.WinView;
 using SAGA.MBI.WinView.BeModingDutyList;
@@ -32,6 +34,7 @@ using SAGA.MBI.WinView.ModeInfoMaintenance;
 using SAGA.MBI.WinView.PositionBeaconModeling;
 using SAGA.MBI.WinView.Space;
 using SAGA.MBI.WinView.Upload;
+using SAGA.Models;
 using SAGA.RevitUtils;
 using SAGA.RevitUtils.Extends;
 using SAGA.RevitUtils.Windows;
@@ -384,23 +387,9 @@ namespace SAGA.MBI
     {
         public override Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
         {
-            //var uiApp = ExternalDataWrapper.Current.UiApp;
-            //var doc = ExternalDataWrapper.Current.Doc;
-            //var spaces = doc.GetElements<SpatialElement>().Where(t => t is Space).ToList();
-            //using (Transaction trans = new Transaction(doc, "创建空间分隔符"))
-            //{
-            //    trans.Start();
-            //    doc.Delete(spaces.Select(t => t.Id).ToList())
-            //        ;
-            //    trans.Commit();
-            //}
-
-            //调用自动创建空间
-            // AutoCreateSpaces();
-
-            // return CreateSpaceSeqarate(doc);
+   
             var win = new WinCreateSpaces();
-           win.Show();
+            win.Show();
             return Result.Succeeded;
         }
 
@@ -633,28 +622,42 @@ namespace SAGA.MBI
             // WriteLogs(logs);
 
         }
+    }
 
-        private static void WriteLogs(string msg)
+    /// <summary>
+    /// 同步模型本地名称
+    /// </summary>
+    [Transaction(TransactionMode.Manual)]
+    [Regeneration(RegenerationOption.Manual)]
+    public class SyncLocalNameCommand : ExternalCommand//, IExternalCommandAvailability
+    {
+        public override Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
         {
-            if (!Directory.Exists("logs"))
-                Directory.CreateDirectory("logs");
-            File.AppendAllText($"logs\\{DateTime.Now:yyyy-MM-dd}", msg);
+            try
+            {
+
+                var floors = DalUploadFloor.GetHasFileFloors();
+                List<CalcContext> contexts = new List<CalcContext>();
+                foreach (UploadFloor floor in floors)
+                {
+
+                    contexts.Add(new CalcContext(floor.MFloor));
+                }
+                 MBIModelInfoManager.SyncPlatformToRevit(contexts);
+                //var doc = ExternalDataWrapper.Current.Doc;             
+                //MBIModelInfoManager.SyncPlatformToRevit(doc);
+            }
+            catch (Exception e)
+            {
+                MessageShow.Show(e);
+                return Result.Cancelled;
+            }
+            return Result.Succeeded;
         }
 
-        protected void StopwatchTest()
+        public bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
         {
-            System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
-            stopwatch.Start(); //  开始监视代码
-
-            //_________________要执行的函数______________________
-            //Code……
-
-            stopwatch.Stop(); //  停止监视
-            TimeSpan timeSpan = stopwatch.Elapsed; //  获取总时间
-            double hours = timeSpan.TotalHours; // 小时
-            double minutes = timeSpan.TotalMinutes;  // 分钟
-            double seconds = timeSpan.TotalSeconds;  //  秒数
-            double milliseconds = timeSpan.TotalMilliseconds;  //  毫秒数 
+            return false;
         }
     }
 }

+ 1 - 1
MBI/SAGA.MBI/Common/MBIConst.cs

@@ -152,7 +152,7 @@ namespace SAGA.MBI.Common
                 string url = ProjectDirOperate.GetConfigureInfo(key);
                 if (url.IsNullOrEmpty())
                 {
-                    url = "http://172.16.0.181:8888/#/";
+                    url = "http://mbi.sagacloud.cn:8888/#/";
                     ProjectDirOperate.SaveConfigureInfo(key, url);
                 }
                 return url;

+ 71 - 0
MBI/SAGA.MBI/DataArrange/DalCommon.cs

@@ -354,5 +354,76 @@ namespace SAGA.MBI.DataArrange
                 RelationRequest.DeleteRelation(relJObject);
             }
         }
+
+        /// <summary>
+        /// 获取mbi数据信息
+        /// </summary>
+        /// <param name="floorId"></param>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public static List<JObject> GetMBIDatas(string floorId, string[] type = null)
+        {
+            List<JObject> list = new List<JObject>();
+            if (type == null)
+                type = new[] { "Eq", "Ec", "VOBc", "Si" };
+            var typelist = type.ToList();
+            string spacetype = "Si";
+            //空间
+            if (typelist.Contains(spacetype))
+            {
+                #region 获取空间数据
+                string json = SpaceRequest.GetFloorSpaceInfos(floorId);
+                if (json.IsRequestHasItem())
+                {
+                    JObject jObject = JObject.Parse(json);
+                    foreach (JObject jobjItem in jObject["Content"])
+                    {
+                        list.Add(jobjItem);
+                    }
+                }           
+                #endregion
+                typelist.Remove(spacetype);
+            }
+            //其它
+            if (typelist.Any())
+            {
+                var json = CommonRequest.FloorQuery(floorId, type);
+                #region 获取除空间外的数据
+                if (json.IsRequestHasItem())
+                {
+                    JObject jObject = JObject.Parse(json);
+                    foreach (JObject jobjItem in jObject["Content"])
+                    {
+                        list.Add(jobjItem);
+                    }
+                } 
+                #endregion
+            }           
+            return list;
+        }
+
+        /// <summary>
+        /// 根据对象id获取mbi数据
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public static JObject GetMBIData(string id)
+        {
+            try
+            {
+                var result =CommonRequest.QueryObjectById(id);
+                if (!result.IsRequestHasItem())
+                {
+                    return null;
+                }
+
+                return (JObject)JObject.Parse(result)["Content"][0];
+            }
+            catch (Exception ex)
+            {
+
+                return null;
+            }
+        }
     }
 }

+ 54 - 10
MBI/SAGA.MBI/Interaction/MBIModelInfoManager.cs

@@ -7,8 +7,11 @@ using System.Text;
 using System.Threading.Tasks;
 using Autodesk.Revit.DB.Mechanical;
 using SAGA.DotNetUtils.Extend;
+using SAGA.MBI.Calc;
 using SAGA.Models;
 using SAGA.RevitUtils.Extends;
+using SAGA.MBI.DataArrange;
+using SAGA.MBI.RevitExport;
 
 namespace SAGA.MBI.Interaction
 {
@@ -28,9 +31,10 @@ namespace SAGA.MBI.Interaction
             var floorId = document.PathName.GetFileName();
             //document.i
             //获取物理世界本层信息;
-            List<MBIItem> mbiItems = new List<MBIItem>();
+            var originItems = DalCommon.GetMBIDatas(floorId);
+            List<MBIItem> mbiItems = originItems.Select(c => MBIItemFactory.Create(c)).ToList();
             //修改模型
-            using (Transaction tran=new Transaction(document,"获取本地名"))
+            using (Transaction tran=new Transaction(document,"获取本地名"))
             {
                 try
                 {
@@ -42,7 +46,6 @@ namespace SAGA.MBI.Interaction
                             //本地名称为null,则不信息修改;
                             continue;
                         }
-
                         #region 核心处理模型修改
                         using (SubTransaction sub = new SubTransaction(document))
                         {
@@ -53,13 +56,12 @@ namespace SAGA.MBI.Interaction
                                 if (id <= 0)
                                     continue;
                                 var element = document.GetElement(new ElementId(mbiItem.RevitId));
-                                do
+                                if (element == null)
                                 {
-                                    if (element is Space space)
-                                    {
-                                        space.SetParameter(BuiltInParameter.ROOM_NAME, mbiItem.LocalName);
-                                    }
-                                } while (false);
+                                    continue;
+                                }
+                                 element.UdpateName(mbiItem.LocalName);
+                            
                                 sub.Commit();
                             }
                             catch (Exception e)
@@ -74,11 +76,53 @@ namespace SAGA.MBI.Interaction
                 }
                 catch (Exception ex)
                 {
-                    tran.Start();
+                    tran.RollBack();
                     flag = false;
                 }
             }
             return flag;
         }
+
+        /// <summary>
+        /// 同步物理世界信息到revit
+        /// </summary>
+        /// <param name="contexts"></param>
+        /// <returns></returns>
+        public static bool SyncPlatformToRevit(List<CalcContext> contexts)
+        {
+            Dictionary<string, bool> results = new Dictionary<string, bool>();
+             var documents=ExternalDataWrapper.Current.App.Documents.ToList<Document>();
+            foreach (var context in contexts)
+            {
+                bool isOpened = false;
+                try
+                {
+
+                    isOpened = documents.Any(d => d.PathName == context.MFloor.FullPath);
+                    //if (!isOpened)
+                    //{
+                    //开,全部开启.;关,新打开的关掉
+                        context.OpenDocument();
+                  //  }               
+                    Document doc = context.RevitDoc;                   
+                    var floorId = doc.PathName.GetFileName();
+                    var flag = SyncPlatformToRevit(doc);
+                    results[floorId] = flag;
+                }
+                catch (Exception ex)
+                {
+
+                }
+                finally
+                {
+                    if (!isOpened)
+                    {
+                         context.CloseDocument();
+                    }
+                 
+                }
+            }
+            return results.All(kv => kv.Value);
+        }
     }
 }

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

@@ -9,9 +9,11 @@ using SAGA.DotNetUtils;
 using SAGA.DotNetUtils.Extend;
 using SAGA.MBI.Calc;
 using SAGA.MBI.Common;
+using SAGA.MBI.DataArrange;
 using SAGA.MBI.JsonConvert;
 using SAGA.MBI.RequestData;
 using SAGA.MBI.RevitExport;
+using SAGA.Models;
 
 namespace SAGA.MBI.Interaction
 {
@@ -43,7 +45,27 @@ namespace SAGA.MBI.Interaction
                 var upSuccess = UpLoadFileRequest.UploadFile(FileServiceSetting.RevitSetting, key, gzipBytes);
                 if (!upSuccess)
                     return false;
-                var jo = CommonTool.GetPropertyJObject("FloorMap", key);
+                #region 删除旧的底图信息
+                try
+                {
+                    var floor =MBIItemFactory.Create<FloorItem>(DalCommon.GetMBIData(floorId));
+                    if (floor != null)
+                    {
+                        var oldFloorKey = floor.FloorMap;
+                        if (!string.IsNullOrEmpty(oldFloorKey))
+                        {
+                            UpLoadFileRequest.DeleteRevitFile(oldFloorKey);
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    
+                   // Logs.Log(ex.StackTrace);
+                }
+                #endregion
+
+                var jo = CommonTool.GetPropertyJObject(MBIBuiltInParameter.FloorMap, key);
                 flag=CommonConvert.UpdateInfosSigle(floorId, jo);
             }
 

+ 2 - 0
MBI/SAGA.MBI/RequestData/CommonRequest.cs

@@ -319,5 +319,7 @@ namespace SAGA.MBI.RequestData
             string request = client.PostRequest();
             return request;
         }
+
+      
     }
 }

+ 38 - 0
MBI/SAGA.MBI/RevitModelHandle/RevitParameterUpdate.cs

@@ -0,0 +1,38 @@
+using Autodesk.Revit.DB;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Autodesk.Revit.DB.Mechanical;
+using SAGA.RevitUtils.Extends;
+
+namespace SAGA.MBI
+{
+    /// <summary>
+    /// revit相关参数哦修改扩展
+    /// </summary>
+    public static class RevitParameterUpdate
+    {
+        /// <summary>
+        /// 更新模型名称
+        /// </summary>
+        /// <param name="element"></param>
+        /// <param name="name"></param>
+        public static void UdpateName(this Element element, string name)
+        {
+            string useName = name ?? string.Empty;
+            do
+            {
+                if (element is Space space)
+                {
+                    if (space.Name == useName || space.GetParameterString(BuiltInParameter.ROOM_NAME) == useName)
+                    {
+                        space.SetParameter(BuiltInParameter.ROOM_NAME, useName);
+
+                    }
+                }
+            } while (false);
+        }
+    }
+}

+ 8 - 0
MBI/SAGA.MBI/SAGA.MBI.csproj

@@ -272,6 +272,7 @@
     </Compile>
     <Compile Include="Model\MQRCode.cs" />
     <Compile Include="RequestData\QRCodeRequest.cs" />
+    <Compile Include="RevitModelHandle\RevitParameterUpdate.cs" />
     <Compile Include="RevitReference\RVTNoModeDutyOperate.cs" />
     <Compile Include="ToolsData\CheckBase\CheckOperation.cs" />
     <Compile Include="ToolsData\CheckBase\CheckType.cs" />
@@ -627,6 +628,9 @@
     <Compile Include="WinView\Space\WinCreateSpace.xaml.cs">
       <DependentUpon>WinCreateSpace.xaml</DependentUpon>
     </Compile>
+    <Compile Include="WinView\Space\WinCreateSpaceWeb.xaml.cs">
+      <DependentUpon>WinCreateSpaceWeb.xaml</DependentUpon>
+    </Compile>
     <Compile Include="WinView\Space\WinSelectSpace.xaml.cs">
       <DependentUpon>WinSelectSpace.xaml</DependentUpon>
     </Compile>
@@ -861,6 +865,10 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
+    <Page Include="WinView\Space\WinCreateSpaceWeb.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="WinView\Space\WinSelectSpace.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>

+ 1 - 1
MBI/SAGA.MBI/WinView/Space/WinCreateSpace.xaml

@@ -92,7 +92,7 @@
                
                 MouseLeftButtonDown="canvas_MouseLeftButtonDown" 
                 MouseMove="canvas_MouseMove"     PreviewMouseLeftButtonUp="canvas_PreviewMouseLeftButtonUp" 
-                MouseWheel="Canvas_OnMouseWheel" MouseLeave="canvas_MouseLeave" MouseEnter="canvas_MouseEnter" MouseRightButtonDown="canvas_MouseRightButtonDown" >
+                MouseLeave="canvas_MouseLeave" MouseEnter="canvas_MouseEnter" MouseRightButtonDown="canvas_MouseRightButtonDown" >
 
             </Canvas>
         </ScrollViewer>

+ 7 - 200
MBI/SAGA.MBI/WinView/Space/WinCreateSpace.xaml.cs

@@ -100,14 +100,6 @@ namespace SAGA.MBI.WinView.Space
         }
         //本层空间数据缓存
         private List<MSpace> m_spacesCache;
-
-        public WinCreateSpaces(List<List<XYZ>> wallsData, List<PointPair> virXyzs, List<XYZ> columnsLocation) : this()
-        {
-            this.m_wallsData = wallsData;
-            this.m_virXyzs = virXyzs;
-            this.m_columnsLocation = columnsLocation;
-
-        }
         private void MainWindow_Loaded(object sender, RoutedEventArgs e)
         {
             CanvasDefaultTips();
@@ -276,17 +268,7 @@ namespace SAGA.MBI.WinView.Space
             this.btnSave.IsEnabled = true;
             Console.WriteLine("Left Down: " + e.GetPosition(canvas));
         }
-        /// <summary>
-        /// 画布鼠标滚轮事件
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-        private void Canvas_OnMouseWheel(object sender, MouseWheelEventArgs e)
-        {
-
-
-        }
-
+      
         /// <summary>
         /// 缩放画布
         /// </summary>
@@ -485,17 +467,7 @@ namespace SAGA.MBI.WinView.Space
 
         }
 
-        /// <summary>
-        /// 判断点是否在直线上
-        /// </summary>
-        /// <param name="line"></param>
-        /// <param name="point"></param>
-        /// <returns></returns>
-        //public static bool PointIsInline(SgLine line, Point point)
-        //{
-        //    return PointIsInLine(point, line.StartPoint, line.EndPoint, 3);
-        //}
-
+        
         /// <summary>
         /// 判断点是否在直线上
         /// </summary>
@@ -898,34 +870,6 @@ namespace SAGA.MBI.WinView.Space
             }
         }
 
-        private bool CheckLogs()
-        {
-            List<DocumentChangedLogMode> logs = DocumentChangedLog.LoadLog(MBIControl.ProjectBasePath);
-
-            #region 去除无效数据
-
-            //根据Id将日志进行分组
-            var groupLogsById = logs.GroupBy(t => t.Id);
-            foreach (var gl in groupLogsById)
-            {
-                //日志中一个Id只会存在一个Add和一个Delete,如果两个同时存在则为无效数据
-                var count = gl.Count(t =>
-                      t.Operator == "Add" || t.Operator == "Delete");
-                if (count == 2)
-                {
-                    logs.RemoveAll(t => t.Id == gl.Key);
-                }
-            }
-
-            #endregion
-            //影响空间的类型
-            var categorys =
-                "OST_MEPSpaceSeparationLines,OST_Walls,OST_RoomSeparationLines,OST_StructuralColumns,OST_Columns";
-            var isAddOrModified = logs.Any(t => categorys.IndexOf(t.Category) > -1);
-
-            //删除的需要全部遍历一遍去查找类型,但是像模型线之类的非设备信息是无法查找的
-            return true;
-        }
         /// <summary>
         /// 创建空间并重新加载到列表
         /// </summary>
@@ -1029,107 +973,7 @@ namespace SAGA.MBI.WinView.Space
             lbSpaces.ItemsSource = new ObservableCollection<MSpace>(datas);
         }
 
-        /// <summary>
-        /// 将Elements 转换为Jarray数据,便于数据请求
-        /// </summary>
-        /// <typeparam name="T"></typeparam>
-        /// <param name="spaces"></param>
-        /// <returns></returns>
-        private static JArray ConvertElementsToJArray<T>(List<T> spaces) where T : Element
-        {
-            JArray infosjobj = new JArray();
-
-            spaces.ForEach(s =>
-            {
-                if (s != null)
-                {
-                    JObject valueJObject = new JObject();
-                    string bimId = s.GetCloudBIMId();
-                    valueJObject.Add("BIMID", bimId);
-                    infosjobj.Add(valueJObject);
-                }
-
-            });
-            return infosjobj;
-        }
-
-        /// <summary>
-        /// 删除冲突的空间
-        /// </summary>
-        /// <param name="doc"></param>
-        private static void DeleteFailuresPreprocessorData(Document doc)
-        {
-            using (Transaction trans = new Transaction(doc, "删除多余的空间"))
-            {
-                trans.Start();
-                try
-                {
-                    //处理异常显示
-                    FailureHandlingOptions fho = trans.GetFailureHandlingOptions();
-                    fho.SetFailuresPreprocessor(new FailuresPreprocessor(false));
-                    trans.SetFailureHandlingOptions(fho);
-                    Regex regex = new Regex("^\\d$");
-                    //对冲突的空间进行删除
-                    foreach (List<ElementId> elementIds in StaticData.FailuresPreprocessorData)
-                    {
-                        var firstElement = doc.GetElement(elementIds.FirstOrDefault());
-                        //对所有冲突的空间编号进行比较,保留较小编号的空间
-                        if (firstElement is Autodesk.Revit.DB.Mechanical.Space first)
-                        {
-                            foreach (var id in elementIds)
-                            {
-                                if (first.Id.IsEqual(id))
-                                    continue;
-                                var curr = doc.GetElement(id) as Autodesk.Revit.DB.Mechanical.Space;
-                                if (curr == null) continue;
-                                //  Logs.Log("=============");
-                                //  Logs.Log($"当前空间Id:{id},Num:{curr.Number}");
-
-                                //如果编号非数字,删其中一个
-                                if (!regex.IsMatch(first.Number))
-                                {
-                                    doc.Delete(new List<ElementId>() { first.Id });
-
-                                    first = curr;
-                                    continue;
-                                }
-                                if (!regex.IsMatch(curr.Number))
-                                {
-                                    doc.Delete(new List<ElementId>() { id });
-                                    continue;
-                                }
-
-                                if (int.Parse(first.Number) > int.Parse(curr.Number))
-                                {
-                                    //  Logs.Log($"1.被删除的空间Id:{id},Num:{first.Number}");
-                                    doc.Delete(new List<ElementId>() { first.Id });
-
-                                    first = curr;
-                                }
-                                else
-                                {
-                                    //   Logs.Log($"2.被删除的空间Id:{id},Num:{curr.Number}");
-                                    doc.Delete(new List<ElementId>() { id });
-
-                                }
-                                // Logs.Log("=============");
-                            }
-                        }
-                    }
-                    //提交事务
-                    trans.Commit();
-                }
-                catch (Exception e)
-                {
-                    MessageBox.Show(e.Message);
-                    //回滚事务
-                    trans.RollBack();
-                }
-            }
-            StaticData.FailuresPreprocessorData.Clear();
-        }
-
-
+        
         /// <summary>
         /// 手动删除冲突的空间
         /// </summary>
@@ -1156,10 +1000,7 @@ namespace SAGA.MBI.WinView.Space
                     {
                         Logs.Log(string.Join("-", elementIds));
                         //取出空间的服务器信息
-                        //  var requestId = ConvertElementsToJArray(elementIds.Select(doc.GetElement).ToList());
-                        // if (requestId.Count == 0) continue;
-                        // var spacesServerInfo = CommonConvert.QueryObjectInfoByIds(m_curFloorId, requestId);
-
+                    
                         var spacesServerInfo = GetSpaceFromCacheByIds(elementIds);
                         //如果返回值小于等于1,自动处理
                         //如果返回值大于1,则在界面处理
@@ -1264,29 +1105,7 @@ namespace SAGA.MBI.WinView.Space
             if (isReCreate) CreateSpaceAndReload(doc, null);
         }
 
-        /// <summary>
-        /// 反射进行墙计算
-        /// SAGA.GplotRelationComputerManage已经引用了SAGA.MBI
-        /// </summary>
-        /// <param name="walls"></param>
-        /// <returns></returns>
-        private List<List<XYZ>> GroupWallByParallel(List<Wall> walls)
-        {
-            // List<List<XYZ>> wallData = WallOperationFactory.GroupWallByParallel(walls);
-            //下面为上一句代码的反射调用
-            var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
-            Assembly asm = Assembly.LoadFrom(Path.Combine(path, "SAGA.GplotRelationComputerManage.dll"));
-            var typeName = "SAGA.GplotRelationComputerManage.ComputerWalls.WallOperationFactory";
-            var type = asm.GetType(typeName);
-            MethodInfo methodInfo = type.GetMethod("GroupWallByParallel");
-            if (methodInfo != null)
-            {
-                var result = methodInfo.Invoke(null, new object[] { walls }) as List<List<XYZ>>;
-                return result;
-            }
-
-            return new List<List<XYZ>>();
-        }
+       
         /// <summary>
         /// 加载模型数据
         /// </summary>
@@ -1379,15 +1198,7 @@ namespace SAGA.MBI.WinView.Space
             ShowSpaceProperty(equipment);
 
         }
-        /// <summary>
-        /// 显示空间属性窗体
-        /// </summary>
-        /// <param name="space"></param>
-        private static void ShowSpaceProperty(string serverId)
-        {
-            MRevitEquipBase equipment = CommonConvert.QueryObjectById(serverId);
-            ShowSpaceProperty(equipment);
-        }
+      
 
         private static void ShowSpaceProperty(MRevitEquipBase equipment)
         {
@@ -1508,11 +1319,7 @@ namespace SAGA.MBI.WinView.Space
         //创建定时器,以检测所有操作是否全部保存完成
         private DispatcherTimer timer;
 
-        private void BtnSaveToRevit_OnClick(object sender, RoutedEventArgs e)
-        {
-            // m_document.Close(true);
-            m_document.Save();
-        }
+       
 
 
         private void CanvasDefaultTips()

+ 14 - 0
MBI/SAGA.MBI/WinView/Space/WinCreateSpaceWeb.xaml

@@ -0,0 +1,14 @@
+<windows:WinBase x:Class="SAGA.MBI.WinView.Space.WinCreateSpaceWeb"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:SAGA.MBI.WinView.Space"
+             xmlns:windows="clr-namespace:SAGA.RevitUtils.Windows;assembly=SAGA.RevitUtils"
+             xmlns:cefSharpWpf="clr-namespace:CEFSharpWPF;assembly=CEFSharpWPF"
+             mc:Ignorable="d" 
+             d:DesignHeight="450" d:DesignWidth="800">
+    <Grid>
+               <cefSharpWpf:UcGplotShow Grid.Row="0" Grid.Column="1" x:Name="ucShowElement"></cefSharpWpf:UcGplotShow>
+    </Grid>
+</windows:WinBase>

+ 29 - 0
MBI/SAGA.MBI/WinView/Space/WinCreateSpaceWeb.xaml.cs

@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using SAGA.RevitUtils.Windows;
+
+namespace SAGA.MBI.WinView.Space
+{
+    /// <summary>
+    /// WinCreateSpaceWeb.xaml 的交互逻辑
+    /// </summary>
+    public partial class WinCreateSpaceWeb : WinBase
+    {
+        public WinCreateSpaceWeb()
+        {
+            InitializeComponent();
+        }
+    }
+}

+ 24 - 0
MBI/SAGA.Models/MBIItem/Builder/FloorItemBuilder.cs

@@ -0,0 +1,24 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json.Linq;
+using SAGA.DotNetUtils.Extend;
+
+namespace SAGA.Models
+{
+    public class FloorItemBuilder : MBIItemBuilder<FloorItem>
+    {
+        public override FloorItem Create(FloorItem item, JObject jobject)
+        {
+            base.Create(item, jobject);
+            var infos = item.Infos;
+            item.Name = infos.GetValueEx(MBIBuiltInParameter.FloorName);
+            item.LocalName = infos.GetValueEx(MBIBuiltInParameter.FloorLocalName);
+            item.FloorMap = infos.GetValueEx(MBIBuiltInParameter.FloorMap);
+            return item;
+        }
+    }
+}

+ 14 - 1
MBI/SAGA.Models/MBIItem/Builder/MBIItemFactory.cs

@@ -25,7 +25,9 @@ namespace SAGA.Models
         {
             //可以动态加载,暂时先硬编码
             m_Builders["SI"] = new RoomItemBuilder();
-            m_Builders["EQ"] = new RoomItemBuilder();
+            m_Builders["EQ"] = new EquipmentItemBuilder();
+             m_Builders["EC"] = new EquipmentItemBuilder();
+             m_Builders["FL"] = new FloorItemBuilder();
         }
 
         /// <summary>
@@ -49,5 +51,16 @@ namespace SAGA.Models
             item = builder.CreateMBIItem(jObject);
             return item;
         }
+
+        /// <summary>
+        /// 创建制定类型实例
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="jobject"></param>
+        /// <returns></returns>
+        public static T Create<T>(JObject jobject) where T : MBIItem
+        {
+            return Create(jobject) as T;
+        }
     }
 }

+ 20 - 0
MBI/SAGA.Models/MBIItem/Entity/FloorItem.cs

@@ -0,0 +1,20 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SAGA.Models
+{
+    public class FloorItem : MBIItem
+    {
+        /// <summary>
+        /// 关联楼层底图key值
+        /// </summary>
+        public string FloorMap
+        {
+            get;set;
+        }
+    }
+}

+ 1 - 1
MBI/SAGA.Models/MBIItem/Entity/MBIItem.cs

@@ -101,7 +101,7 @@ namespace SAGA.Models
                 int index = BimId.IndexOf(":");
                 if (index > -1)
                 {
-                    var sub = BuildingId.Substring(index + 1);
+                    var sub = BimId.Substring(index + 1);
                     flag = sub.ToInt();
                 }
                 return flag;

+ 15 - 0
MBI/SAGA.Models/MBIItem/MBIBuiltInParameter.cs

@@ -132,5 +132,20 @@ namespace SAGA.Models
         public readonly static string BIMID = "BIMID";
 
         #endregion
+
+        #region 楼层通用
+        /// <summary>
+        /// 楼层名称
+        /// </summary>
+        public readonly static string FloorName = "FloorName";
+        /// <summary>
+        /// 楼层本地名称
+        /// </summary>
+        public readonly static string FloorLocalName = "FloorLocalName";
+        /// <summary>
+        /// 楼层底图信息点
+        /// </summary>
+        public readonly static string FloorMap = "FloorMap";
+        #endregion
     }
 }

+ 2 - 0
MBI/SAGA.Models/SAGA.Models.csproj

@@ -87,11 +87,13 @@
     <Compile Include="Graphs\VElements\VSpace.cs" />
     <Compile Include="Graphs\VElements\VGroupSpace.cs" />
     <Compile Include="MBIItem\Builder\EquipmentItemBuilder.cs" />
+    <Compile Include="MBIItem\Builder\FloorItemBuilder.cs" />
     <Compile Include="MBIItem\Builder\IMBIItemBuilder.cs" />
     <Compile Include="MBIItem\Builder\MBIItemFactory.cs" />
     <Compile Include="MBIItem\Builder\RoomItemBuilder.cs" />
     <Compile Include="MBIItem\Entity\AssetItem.cs" />
     <Compile Include="MBIItem\Entity\EquipmentItem.cs" />
+    <Compile Include="MBIItem\Entity\FloorItem.cs" />
     <Compile Include="MBIItem\Entity\RoomItem.cs" />
     <Compile Include="MBIItem\MBIBuiltInParameter.cs" />
     <Compile Include="MBIItem\Entity\MBIItem.cs" />

+ 33 - 3
MBI/SAGA.Revit.sln

@@ -56,9 +56,8 @@ EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SAGA.MBIAssistData", "SAGA.MBIAssistData\SAGA.MBIAssistData.csproj", "{A36305AB-217A-4A6B-8B78-EA79497B1807}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{33B095DB-1BBF-49CE-8D5D-8128D017D382}"
-	ProjectSection(SolutionItems) = preProject
-		Test\Test.csproj = Test\Test.csproj
-	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test", "Test\Test.csproj", "{C14E2157-5E86-488A-89C9-31FB07D98D3C}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -695,6 +694,36 @@ Global
 		{A36305AB-217A-4A6B-8B78-EA79497B1807}.Release|x64.Build.0 = Release|Any CPU
 		{A36305AB-217A-4A6B-8B78-EA79497B1807}.Release|x86.ActiveCfg = Release|Any CPU
 		{A36305AB-217A-4A6B-8B78-EA79497B1807}.Release|x86.Build.0 = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.Debug|x64.Build.0 = Debug|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.Debug|x86.Build.0 = Debug|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R16|Any CPU.ActiveCfg = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R16|Any CPU.Build.0 = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R16|x64.ActiveCfg = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R16|x64.Build.0 = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R16|x86.ActiveCfg = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R16|x86.Build.0 = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R17|Any CPU.ActiveCfg = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R17|Any CPU.Build.0 = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R17|x64.ActiveCfg = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R17|x64.Build.0 = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R17|x86.ActiveCfg = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R17|x86.Build.0 = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R18|Any CPU.ActiveCfg = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R18|Any CPU.Build.0 = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R18|x64.ActiveCfg = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R18|x64.Build.0 = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R18|x86.ActiveCfg = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.R18|x86.Build.0 = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.Release|x64.ActiveCfg = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.Release|x64.Build.0 = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.Release|x86.ActiveCfg = Release|Any CPU
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C}.Release|x86.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -703,6 +732,7 @@ Global
 		{8E39978D-E06F-44CD-BBC9-B6F10FAC29DE} = {6B218122-CAE7-4A42-B73F-AF24B065D823}
 		{1A6202BA-6646-48D1-8F93-F55ED4CFF075} = {6B218122-CAE7-4A42-B73F-AF24B065D823}
 		{EEBDB1AA-C80B-4F44-89EB-FB9D7DC2B1AE} = {6B218122-CAE7-4A42-B73F-AF24B065D823}
+		{C14E2157-5E86-488A-89C9-31FB07D98D3C} = {33B095DB-1BBF-49CE-8D5D-8128D017D382}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {4FA684AA-776F-4C7E-BB48-9587186AC17A}