Item |
Creates Family instances within the document.
Namespace: Autodesk.Revit.Creation
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)

public ICollection<ElementId> NewFamilyInstances2(
List<FamilyInstanceCreationData> dataList
)
Parameters
- dataList List FamilyInstanceCreationData
- A list of FamilyInstanceCreationData which wraps the creation arguments of the families to be created.
Return Value
ICollection ElementIdIf the creation is successful, a set of ElementIds which contains the Family instances should be returned, otherwise the exception will be thrown.

Exception | Condition |
---|---|
ArgumentNullException | If FamilyInstanceCreationData's 'curve' or 'symbol' member is . |
InvalidOperationException | If regeneration fails at the end of the batch creation. |

Note: ForbiddenForDynamicUpdateException might be thrown during a dynamic update if the inserted instance establishes a mutual dependency with another structure.
Note: if the created family instance includes nested instances, the API framework will automatically regenerate the document during this method call.

ICollection<ElementId> BatchCreateColumns(Autodesk.Revit.DB.Document document, Level level)
{
List<FamilyInstanceCreationData> fiCreationDatas = new List<FamilyInstanceCreationData>();
//ElementSet elementSet = null;
ICollection<ElementId> elementSet = null;
//Try to get a FamilySymbol
FamilySymbol familySymbol = null;
FilteredElementCollector collector = new FilteredElementCollector(document);
ICollection<Element> collection = collector.OfClass(typeof(FamilySymbol)).ToElements();
foreach (Element e in collection)
{
familySymbol = e as FamilySymbol;
if (null != familySymbol.Category)
{
if ("Structural Columns" == familySymbol.Category.Name)
{
break;
}
}
}
if (null != familySymbol)
{
//Create 10 FamilyInstanceCreationData items for batch creation
for (int i = 1; i < 11; i++)
{
XYZ location = new XYZ(i * 10, 100, 0);
FamilyInstanceCreationData fiCreationData =
new FamilyInstanceCreationData(location, familySymbol, level, StructuralType.Column);
if (null != fiCreationData)
{
fiCreationDatas.Add(fiCreationData);
}
}
if (fiCreationDatas.Count > 0)
{
// Create Columns
elementSet = document.Create.NewFamilyInstances2(fiCreationDatas);
}
else
{
throw new Exception("Batch creation failed.");
}
}
else
{
throw new Exception("No column types found.");
}
return elementSet;
}
