GetComponents Method


Returns collection of the load combination components.

Namespace: Autodesk.Revit.DB.Structure
Assembly: RevitAPI (in RevitAPI.dll) Version: 23.0.0.0 (23.1.0.0)
Since: 2016

Syntax

C#
public IList<LoadComponent> GetComponents()
Visual Basic
Public Function GetComponents As IList(Of LoadComponent)
Visual C++
public:
IList<LoadComponent^>^ GetComponents()

Return Value

A collection of the load combination components.

Examples

Copy C#
#region Autodesk.Revit.DB.Structure.LoadCombination.GetUsageIds()
void ModifyLoadCombinationLoadCaseLoadUsageLoadNatureAndLoadComponent(Document document, LoadCombination loadCombination)
{
    // Change name of LoadCombination
    loadCombination.Name = "DL2 + RAIN1";

    // Get any LoadCase from combination
    // Combination can have assigned LoadCase or other (nested) LoadCombination so we need to filter out any LoadCombination
    LoadCase case1 = null;
    IList<ElementId> caseAndCombinationIds = loadCombination.GetCaseAndCombinationIds();
    foreach (ElementId id in caseAndCombinationIds)
    {
        Element element = document.GetElement(id);
        if (element is LoadCase)
        {
           case1 = (LoadCase)element;
           break;
        }
        else if (element is LoadCombination)
        {
           continue;
        }
    }

    if (case1 == null)
       throw new Exception("Can't get LoadCase.");

    // Change case name and number
    case1.Name = "DL2";
    if (LoadCase.IsNumberUnique(document, 3))
    {
        case1.Number = 3;
    }

    // Create load nature
    LoadNature liveNature = LoadNature.Create(document, "Dead nature");
    if (liveNature == null)
       throw new Exception("Create new load nature failed.");

    // Change nature category, ID and number for case
    case1.SubcategoryId = new ElementId(BuiltInCategory.OST_LoadCasesDead);
    case1.NatureId = liveNature.Id;

    //Change factor for case1
    IList<LoadComponent> components = loadCombination.GetComponents();
    foreach (LoadComponent loadComponent in components)
    {
        if (loadComponent.LoadCaseOrCombinationId == case1.Id)
        {
            loadComponent.Factor = 3.0;
        }
    }

    loadCombination.SetComponents(components);

    // Remove one usage from combination
    IList<ElementId> usages = loadCombination.GetUsageIds();
    usages.RemoveAt(0);
    loadCombination.SetUsageIds(usages);

    // Give the user some information
    TaskDialog.Show("Revit", string.Format("Load Combination ID='{0}' modified successfully.", loadCombination.Id.ToString()));
}
#endregion
Copy VB.NET
#Region "Autodesk.Revit.DB.Structure.LoadCombination.GetUsageIds()"
        Private Sub ModifyLoadCombinationLoadCaseLoadUsageLoadNatureAndLoadComponent(document As Document, loadCombination As LoadCombination)
            ' Change name of LoadCombination
            loadCombination.Name = "DL2 + RAIN1"

            ' Get any LoadCase from combination
            ' Combination can have assigned LoadCase or other (nested) LoadCombination so we need to filter out any LoadCombination
            Dim case1 As LoadCase = Nothing
            Dim caseAndCombinationIds As IList(Of ElementId) = loadCombination.GetCaseAndCombinationIds()
            For Each id As ElementId In caseAndCombinationIds
                Dim element As Element = document.GetElement(id)
                If TypeOf element Is LoadCase Then
                    case1 = DirectCast(element, LoadCase)
                    Exit For
                ElseIf TypeOf element Is LoadCombination Then
                    Continue For
                End If
            Next

            If case1 Is Nothing Then
                Throw New Exception("Can't get LoadCase.")
            End If

            ' Change case name and number
            case1.Name = "DL2"
            If LoadCase.IsNumberUnique(document, 3) Then
                case1.Number = 3
            End If

            ' Create load nature
            Dim liveNature As LoadNature = LoadNature.Create(document, "Dead nature")
            If liveNature Is Nothing Then
                Throw New Exception("Create new load nature failed.")
            End If

            ' Change nature category, ID and number for case
            case1.SubcategoryId = New ElementId(BuiltInCategory.OST_LoadCasesDead)
            case1.NatureId = liveNature.Id

            'Change factor for case1
            Dim components As IList(Of LoadComponent) = loadCombination.GetComponents()
            For Each loadComponent As LoadComponent In components
                If loadComponent.LoadCaseOrCombinationId = case1.Id Then
                    loadComponent.Factor = 3.0
                End If
            Next

            loadCombination.SetComponents(components)

            ' Remove one usage from combination
            Dim usages As IList(Of ElementId) = loadCombination.GetUsageIds()
            usages.RemoveAt(0)
            loadCombination.SetUsageIds(usages)

            ' Give the user some information
            TaskDialog.Show("Revit", String.Format("Load Combination ID='{0}' modified successfully.", loadCombination.Id.ToString()))
        End Sub
#End Region

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 →