The revit file is a sample from autodesk.
rac_basic_sample_project.rvt
link:
https://knowledge.autodesk.com/support/revit-products/getting-started/caas/CloudHelp/cloudhelp/2016/...
A part of my source.
---------------------------------------------
public class ExportContext : IExportContext
{
private readonly Stack<Document> _mDocumentStack;
private readonly ExportedRevitDocument _mExportedDocument;
public RenderNodeAction OnElementBegin(ElementId elementId)
{
_parameterDataList = new List<ParameterData>();
var element = _mDocumentStack.Peek().GetElement(elementId);
var v = element.Document.GetElement(element.LevelId) as Level;
var geometry = element.get_Geometry(_mGeometryOptions);
if (geometry != null && !geometry.Any()) return RenderNodeAction.Skip;
CheckVoidGeometry(element);
ElementCategory categoryByRevitName;
var exportedObject = new ExportedObject();
try
{
if (element.Category != null)
{
var categoryname = ElementCategory.Default;
categoryname = ElementCategory.GetCategoryByRevitName(element.Category.Id.IntegerValue);
if (categoryname == null)
{
categoryByRevitName = ElementCategory.Default;
}
else
{
categoryByRevitName = ElementCategory.GetCategoryByRevitName(element.Category.Id.IntegerValue);
}
}
else
{
categoryByRevitName = ElementCategory.Default;
}
}
catch (Exception e)
{
categoryByRevitName = ElementCategory.Default;
_SimpleLog.WriteLog(e);
}
#region DataStructure
//// Element Parameter
foreach (Parameter param in element.Parameters)
if (param != null)
{
var datalist = GetParameterInformation(param, element.Id);
if (datalist != null) _parameterDataList.Add(datalist);
}
//// Element Material Parameter
if (element.GetMaterialIds(false) != null)
{
var elementMatInt = element.GetMaterialIds(false).Count > 0
? element.GetMaterialIds(false).FirstOrDefault()?.IntegerValue
: null;
if (elementMatInt != null)
{
var material = materials.FirstOrDefault(x => x.Id.IntegerValue == elementMatInt);
if (material != null)
{
ReadMaterialProps(_mDocumentStack.Peek(), material);
if (material?.Parameters != null)
foreach (Parameter matpara in material.Parameters)
{
var datalist1 = GetParameterInformation(matpara, element.Id);
if (datalist1 != null) _parameterDataList.Add(datalist1);
}
}
}
}
var enumCategory = (BuiltInCategory) element.Category.Id.IntegerValue;
var vName = string.Empty;
#endregion
exportedObject.X = 0;
exportedObject.Y = 0;
exportedObject.Z = 0;
ExportedBoundingBox boundbox = null;
if (geometry != null)
{
var geoboundbox = geometry.GetBoundingBox();
boundbox = GetFromRevit.BoundingBox(geoboundbox ?? element.get_BoundingBox(Options.MainView3D));
}
else
{
boundbox = GetFromRevit.BoundingBox(element.get_BoundingBox(Options.MainView3D));
}
exportedObject.Name = element.Name;
exportedObject.UniqueId = element.UniqueId;
exportedObject.ElementId = elementId.IntegerValue;
exportedObject.BoundingBox = boundbox;
exportedObject.AddCollider = categoryByRevitName.AddCollider;
exportedObject.ElementGroup = element.GroupId.IntegerValue;
exportedObject.Parameters = _parameterDataList.OrderBy(x => x.Key).ToList();
exportedObject.LevelName = v != null ? v.Name : vName;
exportedObject.EnumCategoryString = enumCategory.ToString().Replace("OST_", "");
_mExportedDocument.Objects.Add(exportedObject);
return RenderNodeAction.Proceed;
}
...
}