FamilyGetFamilyTypeParameterValues Method |
Returns all applicable values for a FamilyType parameter of this family.
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntaxpublic ISet<ElementId> GetFamilyTypeParameterValues(
ElementId parameterId
)
Public Function GetFamilyTypeParameterValues (
parameterId As ElementId
) As ISet(Of ElementId)
public:
ISet<ElementId^>^ GetFamilyTypeParameterValues(
ElementId^ parameterId
)
member GetFamilyTypeParameterValues :
parameterId : ElementId -> ISet<ElementId>
Parameters
- parameterId ElementId
-
A valid Id of a FamilyType parameter defined for this family.
Return Value
ISetElementId
Ids of all applicable
ElementType and
NestedFamilyTypeReference elements.
Exceptions
RemarksThe values are Element Ids of all family types that match
the category specified by the definition of the given parameter.
The elements are either of class ElementType or
NestedFamilyTypeReference. The second variant is
for the types that are nested in families and thus are not
accessible otherwise.
If there are no applicable types of such category the returned
collection will be empty.
Examplepublic void GetNestedFamilyTypes(FamilyInstance instance)
{
Parameter aTypeParam = null;
ISet<ElementId> values = null;
Family family = instance.Symbol.Family;
foreach (Parameter param in instance.Symbol.Parameters)
{
if (Category.IsBuiltInCategory(param.Definition.GetDataType()))
{
aTypeParam = param;
values = family.GetFamilyTypeParameterValues(param.Id);
break;
}
}
if (aTypeParam == null)
{
TaskDialog.Show("Warning", "The selected family has no FamilyType parameter defined.");
}
else if (values == null)
{
TaskDialog.Show("Error", "A FamilyType parameter does not have any applicable values!?");
}
else
{
ElementId newValue = values.Last<ElementId>();
if (newValue != aTypeParam.AsElementId())
{
using (Transaction trans = new Transaction(instance.Document, "Setting parameter value"))
{
trans.Start();
aTypeParam.Set(newValue);
trans.Commit();
}
}
}
}
Public Sub GetNestedFamilyTypes(instance As FamilyInstance)
Dim aTypeParam As Parameter = Nothing
Dim values As ISet(Of ElementId) = Nothing
Dim family As Family = instance.Symbol.Family
For Each param As Parameter In instance.Symbol.Parameters
If Category.IsBuiltInCategory(param.Definition.GetDataType()) Then
aTypeParam = param
values = family.GetFamilyTypeParameterValues(param.Id)
Exit For
End If
Next
If aTypeParam Is Nothing Then
TaskDialog.Show("Warning", "The selected family has no FamilyType parameter defined.")
ElseIf values Is Nothing Then
TaskDialog.Show("Error", "A FamilyType parameter does not have any applicable values!?")
Else
Dim newValue As ElementId = values.Last()
If newValue <> aTypeParam.AsElementId() Then
Using trans As New Transaction(instance.Document, "Setting parameter value")
trans.Start()
aTypeParam.[Set](newValue)
trans.Commit()
End Using
End If
End If
End Sub
No code example is currently available or this language may not be supported.
No code example is currently available or this language may not be supported.
See Also