NewFamilyInstances2 Method


Item Factory Base New Family Instances 2 Method

Creates Family instances within the document.

Namespace: Autodesk.Revit.Creation
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntax
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 ElementId
If the creation is successful, a set of ElementIds which contains the Family instances should be returned, otherwise the exception will be thrown.
Exceptions
Exception Condition
ArgumentNullException If FamilyInstanceCreationData's 'curve' or 'symbol' member is .
InvalidOperationException If regeneration fails at the end of the batch creation.
Remarks

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.

Example
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;
}
See Also
ArchiLabs Desktop

Put AI to work inside Revit.

Give Desktop your instructions and project files to build Revit families, update model elements, and create views and schedules. Works directly in Revit and AutoCAD.

Explore Desktop →