AdaptiveComponentFamilyUtils Class


An interface for Adaptive Component Instances.

Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 2015.0.0.0 (2015.0.0.0)
Since: 2012

Syntax

C#
public static class AdaptiveComponentFamilyUtils
Visual Basic
Public NotInheritable Class AdaptiveComponentFamilyUtils
Visual C++
public ref class AdaptiveComponentFamilyUtils abstract sealed

Examples

Copy C#
private void CreateAdaptiveComponentFamily(Document document)
{
    // check if this family is an Adaptive Component family
    if (!(AdaptiveComponentFamilyUtils.IsAdaptiveComponentFamily(document.OwnerFamily))) return;
    using (Transaction transaction = new Transaction(document))
    {
       int placementCtr = 1;
       ReferencePointArray refPointArray = new ReferencePointArray();
       for (int i = 0; i < 10; i++)
       {
           transaction.SetName("Point" + i);
           transaction.Start();
           ReferencePoint referencePoint = document.FamilyCreate.NewReferencePoint(new XYZ(i, 0, 0));
           if (i % 2 == 0)
           // Even-numbered reference points will be Placement Points
           {
               AdaptiveComponentFamilyUtils.MakeAdaptivePoint(document, referencePoint.Id, AdaptivePointType.PlacementPoint);
               transaction.Commit();
               AdaptiveComponentFamilyUtils.SetPlacementNumber(document, referencePoint.Id, placementCtr);
               placementCtr++;
           }
           else
           // Odd-numbered points will be Shape Handle Points
           {
               AdaptiveComponentFamilyUtils.MakeAdaptivePoint(document, referencePoint.Id, AdaptivePointType.ShapeHandlePoint);
               transaction.Commit();
           }
           refPointArray.Append(referencePoint);
       }
       // Create a curve running through all Reference Points
       if (transaction.GetStatus() == TransactionStatus.Committed)
       {
          transaction.SetName("Curve");
          transaction.Start();
          CurveByPoints curve = document.FamilyCreate.NewCurveByPoints(refPointArray);
          transaction.Commit();
       }
    }
}
Copy VB.NET
Private Sub CreateAdaptiveComponentFamily(document As Document)
    ' check if this family is an Adaptive Component family
    If Not (AdaptiveComponentFamilyUtils.IsAdaptiveComponentFamily(document.OwnerFamily)) Then
        Return
    End If
    Using transaction As New Transaction(document)
        Dim placementCtr As Integer = 1
        Dim refPointArray As New ReferencePointArray()
        For i As Integer = 0 To 9
            transaction.SetName("Point" & i)
            transaction.Start()
            Dim referencePoint As ReferencePoint = document.FamilyCreate.NewReferencePoint(New XYZ(i, 0, 0))
            If i Mod 2 = 0 Then
                ' Even-numbered reference points will be Placement Points
                AdaptiveComponentFamilyUtils.MakeAdaptivePoint(document, referencePoint.Id, AdaptivePointType.PlacementPoint)
                transaction.Commit()
                AdaptiveComponentFamilyUtils.SetPlacementNumber(document, referencePoint.Id, placementCtr)
                placementCtr += 1
            Else
                ' Odd-numbered points will be Shape Handle Points
                AdaptiveComponentFamilyUtils.MakeAdaptivePoint(document, referencePoint.Id, AdaptivePointType.ShapeHandlePoint)
                transaction.Commit()
            End If
            refPointArray.Append(referencePoint)
        Next
        ' Create a curve running through all Reference Points
        If transaction.GetStatus() = TransactionStatus.Committed Then
            transaction.SetName("Curve")
            transaction.Start()
            Dim curve As CurveByPoints = document.FamilyCreate.NewCurveByPoints(refPointArray)
            transaction.Commit()
        End If
    End Using
End Sub

Inheritance Hierarchy

System Object
Autodesk.Revit.DB AdaptiveComponentFamilyUtils

See Also

ArchiLabs

Stop fighting Revit automation.

Build repeatable BIM design and documentation workflows with scripts, data, and AI in one place, without wrestling brittle one-off automations.

Try ArchiLabs →