using Autodesk.Revit.DB; using HStation.Model; using HStation.RevitDev.Model.AttributeClass; using HStation.RevitDev.Model.Common; using HStation.RevitDev.Model.ModelEnum; using HStation.RevitDev.RevitDataExport.Common; using Newtonsoft.Json.Linq; using System; using System.Reflection; namespace HStation.RevitDev.RevitDataExport.Utility { public class ExportModelHelper { Document m_doc; public ExportModelHelper(Document doc) { m_doc = doc; } public string Export() { JArray retArray = new JArray(); var dict = GlobalResource.RevitModels.Find(x => x.Item1 == m_doc.Title); if (dict == null) { retArray.ToString(); } foreach (var pair in dict.Item2) { var revitType = pair.Key; var jArray = ExportRevitModel(revitType); retArray.Merge(jArray); } return retArray.ToString(); } private string GetRevitModelPropertyName(RevitType revitType) { Type revitModelType = typeof(RevitModel); ExportType expType = ElementTypeMapping.GetExportType(revitType); var props = revitModelType.GetProperties(); foreach (var prop in props) { var attr = prop.GetCustomAttribute(); if (attr == null) { continue; } var attrExpType = attr.m_exportType; if (expType == attrExpType) { return prop.Name; } } return null; } private JArray ExportRevitModel(RevitType revitType) { var outElems = new JArray(); var dict = GlobalResource.RevitModels.Find(x => x.Item1 == m_doc.Title)?.Item2; if (dict == null) { return outElems; } var revitModels = dict[revitType]; foreach (var modelId in revitModels) { ElementId id = null; var elemId = modelId; if (int.TryParse(elemId, out int elementId)) { id = new ElementId(elementId); } Element rvtElem = m_doc.GetElement(id); if (rvtElem == null) { continue; } //JObject outElem = rvtElem.Export(revitType); JObject outElem = rvtElem.Export2(); outElem["构件类型"] = revitType.GetDescription(); outElems.Add(outElem); } return outElems; } } }