Revit 2018 Export Add-In, how can I export grouped element.

Revit 2018 Export Add-In, how can I export grouped element.

Anonymous
Not applicable
387 Views
1 Reply
Message 1 of 2

Revit 2018 Export Add-In, how can I export grouped element.

Anonymous
Not applicable

 

Revit and addin sourceRevit and addin source

I am using "RenderNodeAction OnElementBegin(ElementId elementId)" function, for implement IExportContext.

And process each element to get element's information.

 

Question)

1. How can I export the grouped elements(not each element) in OnElementBegin function?

2. How can I exclude the each element in OnElementBegin function?

 

 

 

0 Likes
388 Views
1 Reply
Reply (1)
Message 2 of 2

Anonymous
Not applicable

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;
}
...
}

0 Likes