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()
|
{
|
var modelMap = GlobalResource.RevitModels;
|
JArray retArray = new JArray();
|
foreach (var modelPair in modelMap)
|
{
|
var revitType = modelPair.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<ExportTypeAttribute>();
|
if (attr == null) { continue; }
|
|
var attrExpType = attr.m_exportType;
|
if (expType == attrExpType)
|
{
|
return prop.Name;
|
}
|
}
|
return null;
|
}
|
|
private JArray ExportRevitModel(RevitType revitType)
|
{
|
var revitModels = GlobalResource.RevitModels[revitType];
|
var outElems = new JArray();
|
|
foreach (var model in revitModels)
|
{
|
ElementId id = null;
|
var elemId = model.Id;
|
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;
|
}
|
}
|
}
|