Kaynağa Gözat

mxg:* 修复导出Other类型的构件,连接件Owner获取不到的问题。

mengxiangge 5 yıl önce
ebeveyn
işleme
40f4272ecd

+ 1 - 1
Executer/DataExport/RevitToJBim/Common/ElementWrapperFactory.cs

@@ -36,7 +36,7 @@ namespace RevitToJBim.Common
         {
             if (element is FamilyInstance fi)
             {
-                CreateWrapper(fi);
+                return CreateWrapper(fi);
             }
             return new ElementWrapper(element);
         }

+ 1 - 1
Executer/DataExport/RevitToJBim/ComponentParse/ParseConnector.cs

@@ -52,7 +52,7 @@ namespace RevitToJBim.ComponentParse
             var owner = connector.Owner;
             if (owner != null)
             {
-                ElementWrapper systemTypeWrapper = new ElementWrapper(owner);
+                ElementWrapper systemTypeWrapper = ElementWrapperFactory.CreateWrapper(owner);
                 jConnector.Owner = context.Parser.ParseElement(systemTypeWrapper)?.FirstOrDefault();
             }
             #endregion

+ 16 - 7
Executer/DataExport/RevitToJBim/ComponentParse/ParseFamilyJoinObject.cs

@@ -13,10 +13,12 @@ using System.Threading.Tasks;
 using Autodesk.Revit.DB;
 using JBIM;
 using JBIM.Component;
+using JBIM.Definition;
 using RevitExport.Export;
 using RevitToJBim.Common;
 using JFamilyType=RevitToJBim.Common.FamilyType;
 using RevitToJBim.ParseData;
+using SAGA.RevitUtils.Extends;
 using SAGA.RevitUtils.MEP;
 
 namespace RevitToJBim.ComponentParse
@@ -39,11 +41,23 @@ namespace RevitToJBim.ComponentParse
             {
                 return null;
             }
+            //ElementType
             OtherJoinObject jObject = new OtherJoinObject();
+            //Name,SourceId
             ParseCore.AttachObject(jObject, wrapper);
+            //Location
+            jObject.Location = GeometryLocation.CreatePointLocation(BimConvert.ConvertToXYZ(familyInstance.GetLocationPoint()));
+            //OutLine
+            var polygonPath = RevitUtil.GetBottomPolygon(familyInstance);
+            if (polygonPath != null && polygonPath.Any())
+            {
+                Polygon outLine = new Polygon(BimConvert.ConvertToXYZs(polygonPath));
+                jObject.OutLine.Add(outLine);
+            }
+            //Id
             context.AddBimObject(jObject);
             #region Connector连接关系
-            var connectors = GetConnectors(familyInstance);
+            var connectors = familyInstance.GetAllConnectors();
             if (connectors.Any())
             {
                 ElementOneToManyRel relMany = ParseCore.GetConnectorRels(familyInstance,connectors);
@@ -61,17 +75,12 @@ namespace RevitToJBim.ComponentParse
             }
 
             var wrappers = new List<ElementWrapper>() { };
-            var connectors = GetConnectors(fi);
+            var connectors = fi.GetAllConnectors();
             foreach (var connector in connectors)
             {
                 wrappers.Add(ParseCore.GetConnectorWrapper(connector));
             }
             return wrappers;
         }
-
-        public List<Autodesk.Revit.DB.Connector> GetConnectors(Element familyInstance)
-        {   
-               return  familyInstance.GetAllConnectors();
-        }
     }
 }

+ 15 - 6
Executer/DataExport/RevitToJBim/JsonConverter/ParameterConverter.cs

@@ -36,12 +36,21 @@ namespace RevitToJBim.JsonConverter
                 writer.WriteNull();
                 return;
             }
-            JObject jObject=new JObject();
-            var parameter = value as Parameter;
-            if (parameter == null) return;
-            jObject.Add("Name", parameter?.Definition?.Name);
-            jObject.Add("Value",parameter?.Value);
-            writer.WriteToken(jObject.CreateReader());
+            JObject jObject = new JObject();
+            Parameter parameter = null;
+            try
+            {
+                parameter = value as Parameter;
+                if (parameter == null) return;
+                jObject.Add("Name", parameter?.Definition?.Name);
+                jObject.Add("Value", (parameter?.Value)??"");
+                writer.WriteToken(jObject.CreateReader());
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e);
+            }
+           
         }
     }
 }

+ 5 - 0
Executer/DataExport/RevitToJBim/MbiExport.cs

@@ -44,6 +44,11 @@ namespace RevitToJBim
                 var json = BimJsonUtil.Serializer(mbiDocument);
                 var resultResponse = UploadService.UploadExportFile(json);
                 result= BimJsonUtil.Serializer((ResultBase)resultResponse);
+                //保存到本地
+                string fileName = DateTime.Now.ToString("yyyyMMddHHmmss");
+                string path = Path.Combine( $"{document.PathName}_{fileName}.json");
+                File.WriteAllText(path, json.ToString());
+
             }
             catch (Exception ex)
             {

+ 1 - 1
Starter/Starter/Program.cs

@@ -38,7 +38,7 @@ namespace ExportStart
             {
                 command = "DataExport";
                 path = @"E:\导出测试\testR17.rvt";
-                path = @"E:\导出测试\TestEmptyR17.rvt";
+                path = @"E:\导出测试\延庆园-B1.rvt";
                 JObject jObject=new JObject();
                 jObject.Add("ResultFileName", @"C:\Users\SAGACLOUD\AppData\Local\RevitService\Result_e26be2fd-2097-462b-bdd0-a2a86b616928.txt");
                 param = jObject.ToString();