GlobalParameter
This class represents a GlobalParameter element in Revit.
Inheritance Hierarchy
System.Object
Autodesk.Revit.DB.Element
Autodesk.Revit.DB.ParameterElement
Autodesk.Revit.DB.GlobalParameter
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntax
public class GlobalParameter : ParameterElement
The GlobalParameter type exposes the following members.
Properties
Name
Description
Public Property
AssemblyInstanceId
The id of the assembly instance to which the element belongs.
(Inherited from Element)
Public Property
Code Example
BoundingBox
Retrieves a box that circumscribes all geometry of the element.
(Inherited from Element)
Public Property
Category
Retrieves a Category object that represents the category or sub category in which the element resides.
(Inherited from Element)
Public Property
Code Example
CreatedPhaseId
Id of a Phase at which the Element was created.
(Inherited from Element)
Public Property
Code Example
DemolishedPhaseId
Id of a Phase at which the Element was demolished.
(Inherited from Element)
Public Property
Code Example
DesignOption
Returns the design option to which the element belongs.
(Inherited from Element)
Public Property
Document
Returns the Document in which the Element resides.
(Inherited from Element)
Public Property
Code Example
Geometry
Retrieves the geometric representation of the element.
(Inherited from Element)
Public Property
GroupId
The id of the group to which an element belongs.
(Inherited from Element)
Public Property
Code Example
Id
A unique identifier for an Element in an Autodesk Revit project.
(Inherited from Element)
Public Property
IsDrivenByDimension
Indicates whether this parameter is driven by a dimension or not.
Public Property
IsDrivenByFormula
Indicates whether this parameter is driven by a formula or not.
Public Property
IsModifiable
Identifies if the element is modifiable.
(Inherited from Element)
Public Property
IsReporting
Indicates whether this is a reporting global parameter or not.
Public Property
IsTransient
Indicates whether an element is transient or permanent.
(Inherited from Element)
Public Property
IsValidObject
Specifies whether the .NET object represents a valid Revit entity.
(Inherited from Element)
Public Property
LevelId
The id of the level associated with the element.
(Inherited from Element)
Public Property
Code Example
Location
This property is used to find the physical location of an element within a project.
(Inherited from Element)
Public Property
Name
A human readable name for the Element.
(Inherited from Element)
Public Property
OwnerViewId
The id of the view that owns the element.
(Inherited from Element)
Public Property
Code Example
Parameter.BuiltInParameter.
Retrieves a parameter from the element given a parameter id.
(Inherited from Element)
Public Property
Parameter.Definition.
Retrieves a parameter from the element based on its definition.
(Inherited from Element)
Public Property
Parameter.Guid.
Retrieves a parameter from the element given a GUID for a shared parameter.
(Inherited from Element)
Public Property
Code Example
Parameters
Retrieves a set containing all of the parameters that are contained within the element.
(Inherited from Element)
Public Property
ParametersMap
Retrieves a map containing all of the parameters that are contained within the element.
(Inherited from Element)
Public Property
Pinned
Identifies if the element has been pinned to prevent changes.
(Inherited from Element)
Public Property
Code Example
UniqueId
A stable unique identifier for an element within the document.
(Inherited from Element)
Public Property
VersionGuid
Get the element version Guid.
(Inherited from Element)
Public Property
ViewSpecific
Identifies if the element is owned by a view.
(Inherited from Element)
Public Property
WorksetId
Get Id of the Workset which owns the element.
(Inherited from Element)
Methods
Name
Description
Public Method
ArePhasesModifiable
Returns true if the properties CreatedPhaseId and DemolishedPhaseId can be modified for this Element.
(Inherited from Element)
Public Method
CanBeHidden
Indicates if the element can be hidden in the view.
(Inherited from Element)
Public Method
CanBeLocked
Identifies if the element can be locked.
(Inherited from Element)
Public Method
CanChangeReporting
Tests whether the global parameter permits a change of its current value of the IsReporting attribute.
Public Method
CanDeleteSubelement
Checks if given subelement can be removed from the element.
(Inherited from Element)
Public Method
CanHaveTypeAssigned.
Identifies if the element can have a type assigned.
(Inherited from Element)
Public Method
CanLabelDimension
Tests whether a dimension can be labeled by the global parameter.
Public Method
ChangeTypeId(ElementId)
Changes the type of the element.
(Inherited from Element)
Public Method
Static Member
Create
Creates a new Global Parameter in the given document.
Public Method
DeleteEntity
Deletes the existing entity created by %schema% in the element
(Inherited from Element)
Public Method
DeleteSubelement
Removes a subelement from the element.
(Inherited from Element)
Public Method
DeleteSubelements
Removes the subelements from the element.
(Inherited from Element)
Public Method
Dispose
(Inherited from Element)
Public Method
Equals
Determines whether the specified object is equal to the current object.
(Inherited from Object)
Public Method
EvaluateAllParameterValues
Evaluates all the parameters’ values of the element.
(Inherited from Element)
Public Method
EvaluateParameterValues
Evaluate the parameters’ values of the element on the given parameter ID set.
(Inherited from Element)
Public Method
GetAffectedElements
Returns all elements of which properties are driven by this global parameter.
Public Method
GetAffectedGlobalParameters
Returns all other global parameters which refer to this global parameter in their formulas.
Public Method
Code Example
GetDefinition
Get the definition representing this parameter element.
(Inherited from ParameterElement)
Public Method
GetDependentElements
Get all elements that, from a logical point of view, are the children of this Element.
(Inherited from Element)
Public Method
GetEntity
Returns the existing entity corresponding to the Schema if it has been saved in the Element, or an invalid entity otherwise.
(Inherited from Element)
Public Method
GetEntitySchemaGuids
Returns the Schema guids of any Entities stored in this element.
(Inherited from Element)
Public Method
GetExternalFileReference
Gets information pertaining to the external file referenced by the element.
(Inherited from Element)
Public Method
GetExternalResourceReference
Gets the ExternalResourceReference associated with a specified external resource type.
(Inherited from Element)
Public Method
GetExternalResourceReferenceExpanded
Gets the collection of ExternalResourceReference associated with a specified external resource type.
(Inherited from Element)
Public Method
GetExternalResourceReferences
Gets the map of the external resource references referenced by the element.
(Inherited from Element)
Public Method
GetExternalResourceReferencesExpanded
Gets the expanded map of the external resource references referenced by the element.
(Inherited from Element)
Public Method
GetFormula
Returns the parameter’s expression in form of a string.
Public Method
Code Example
GetGeneratingElementIds
Returns the ids of the element(s) that generated the input geometry object.
(Inherited from Element)
Public Method
GetGeometryObjectFromReference
Retrieve one geometric primitive contained in the element given a reference.
(Inherited from Element)
Public Method
GetHashCode
Serves as the default hash function.
(Inherited from Object)
Public Method
GetLabeledDimensions
Returns all dimension elements that are currently labeled by this global parameter.
Public Method
GetLabelName
Returns the name of this parameter’s label, which is used to label dimension elements.
Public Method
GetMaterialArea
Gets the area of the material with the given id.
(Inherited from Element)
Public Method
GetMaterialIds
Gets the element ids of all materials present in the element.
(Inherited from Element)
Public Method
GetMaterialVolume
Gets the volume of the material with the given id.
(Inherited from Element)
Public Method
GetMonitoredLinkElementIds
Provides the link instance IDs when the element is monitoring.
(Inherited from Element)
Public Method
GetMonitoredLocalElementIds
Provides the local element IDs when the element is monitoring.
(Inherited from Element)
Public Method
GetOrderedParameters
Gets the parameters associated to the element in order.
(Inherited from Element)
Public Method
GetParameter
Retrieves a parameter from the element given identifier.
(Inherited from Element)
Public Method
GetParameterFormatOptions
Returns a FormatOptions override for the element Parameter, or a default FormatOptions if no override exists.
(Inherited from Element)
Public Method
GetParameters
Retrieves the parameters from the element via the given name.
(Inherited from Element)
Public Method
GetPhaseStatus
Gets the status of a given element in the input phase
(Inherited from Element)
Public Method
GetSubelements
Returns the collection of element subelements.
(Inherited from Element)
Public Method
GetType
Gets the Type of the current instance.
(Inherited from Object)
Public Method
Code Example
GetTypeId
Returns the identifier of this element’s type.
(Inherited from Element)
Public Method
GetValidTypes.
Obtains a set of types that are valid for this element.
(Inherited from Element)
Public Method
GetValue
Obtains the curent value of the global parameter.
Public Method
HasPhases
Returns true if this Element has the properties CreatedPhaseId and DemolishedPhaseId.
(Inherited from Element)
Public Method
HasValidTypeForReporting
Tests that the global parameter has data of a type that supports reporting.
Public Method
IsCreatedPhaseOrderValid
Returns true if createdPhaseId and demolishedPhaseId are in order.
(Inherited from Element)
Public Method
IsDemolishedPhaseOrderValid
Returns true if createdPhaseId and demolishedPhaseId are in order.
(Inherited from Element)
Public Method
IsExternalFileReference
Determines whether this Element represents an external file.
(Inherited from Element)
Public Method
IsHidden
Identifies if the element has been permanently hidden in the view.
(Inherited from Element)
Public Method
IsMonitoringLinkElement
Indicate whether an element is monitoring any elements in any linked models.
(Inherited from Element)
Public Method
IsMonitoringLocalElement
Indicate whether an element is monitoring other local elements.
(Inherited from Element)
Public Method
IsPhaseCreatedValid
Returns true if createdPhaseId is an allowed value for the property CreatedPhaseId in this Element.
(Inherited from Element)
Public Method
IsPhaseDemolishedValid
Returns true if demolishedPhaseId is an allowed value for the property DemolishedPhaseId in this Element.
(Inherited from Element)
Public Method
IsValidFormula
Tests that the given expression is a valid as formula for this parameter.
Public Method
IsValidType(ElementId)
Checks if given type is valid for this element.
(Inherited from Element)
Public Method
Code Example
LabelDimension
Labels a dimension with this global parameter.
Public Method
LookupParameter
Attempts to find a parameter on the element which has the given name.
(Inherited from Element)
Public Method
RefersToExternalResourceReference
Determines whether this Element uses external resources associated with a specified external resource type.
(Inherited from Element)
Public Method
RefersToExternalResourceReferences
Determines whether this Element uses external resources.
(Inherited from Element)
Public Method
Code Example
SetDrivingDimension
Set a dimension to drive the value of this parameter.
Public Method
SetEntity
Stores the entity in the element. If an Entity described by the same Schema already exists, it is overwritten.
(Inherited from Element)
Public Method
Code Example
SetFormula
Sets a formula expression for this parameter.
Public Method
Code Example
SetValue
Sets a new value of the global parameter.
Public Method
ToString
Returns a string that represents the current object.
(Inherited from Object)
Public Method
UnlabelDimension
Unlabels a dimension that is currently labeled by this global parameter.
Remarks
Global parameters can be used to drive values of dimensions or other elements’ parameters. Also, a global parameter can be driven by a selected dimension, the value of which then determines the value of the global parameter. Such parameters can further be used to drive values of other elements’ parameters.
See also the GlobalParametersManager class for methods that operate upon global parameters of a document, such as getting all defined global parameters and testing whether a global parameter of certain name already exists or not.
Reporting vs. Non-Reporting parameters
There are several ways global parameters can be categorized, but probably the most significant categorization stems from the IsReporting property which divides global parameters into two groups - Reporting and Non-Reporting. The significance of reporting parameters lays in the fact that their values are driven by the dimension that has been labeled by a reporting parameter. It means that the value of a reporting parameter reflects the value of a dimension (length or angle) and gets updated anytime the dimension changes. Non-Reporting parameters behave in the opposite manner - they drive value of dimensions that have been labeled by them, which results in controlling the model’s geometry through global parameters’ values.
Reporting parameters are limited in several ways. They can be only of Length or Angle type, a requirement due to the fact that a dimension must be able to drive the value. For the same reason reporting parameters may not have formulas.
Non-Reporting parameters, on the other way, can be of almost any type (Length, Integer, Area, etc.) with the exception of ElementId type. Also, Non-Reporting parameters may have assigned formulas in which other global parameters may be used as arguments. This way one global parameter’s value can be derived from other parameter (or parameters), and the other parameter can be either reporting or non-reporting.
Creating Global Parameters
Global parameters get created via the static method Create(Document, String, ForgeTypeId). It is important to note that each new parameter must have a name that is unique within the document. Parameters are created as non-reporting initially, but programmers are free to modify the IsReporting property once a global parameter is created and is of an eligible type. The programmer can call the HasValidTypeForReporting. when in doubt whether parameters of a certain data type can be made reporting. Note, that a parameter may not be made reporting after more than one dimension has been labeled by it. It is because reporting parameter can label (and be driven) by one dimension only.
An alternative way of making a parameter reporting is via the SetDrivingDimension(ElementId) method which labels one dimension by a global parameter and also makes the parameter reporting if it is not reporting yet.
Other important properties of global parameters are IsDrivenByDimension and IsDrivenByFormula, which are mutually exclusive - a parameter that has a formula assigned cannot be driven by a dimension (nor can be reporting) and vice versa.
Global Parameters with formulas
Like with family parameters, formulas may be assigned to non-reporting global parameters using the SetFormula(String) method (paired with GetFormula. to query the current formula.) Formulas may include all standard arithmetic operations and logical operations (as functions and, or, not.) Input to logical operations must be Boolean values (parameters of YesNo type). Consequently, arithmetic operations can be applied to numeric values only. While there are no operations supported for string (text) arguments, strings can be used as results of a logical If operation. Depending on their type (and units), parameters of different value types can be combined. However, unit-less values such as Integer and Number (double) may only be combined with each other. Since formulas can get quite complicated, the method IsValidFormula(String) is available for the programmer to ensure a formula is valid in order to avoid potential exception due to applying an invalid formula.
Labeling dimensions
Probably the most notable feature of global parameters is their ability to “Label” dimensions, a process that establishes dependency of a dimension on a global parameter (or vice versa, depending on the reporting status.) One parameter can label any number of dimensions as long as the parameter is non-reporting. If the parameter labels a multi-segment dimension, values of all segments of this dimension will be equal to the parameter’s value. As mentioned above, reporting parameter can label one dimension only, and this dimension can have only one segment. Methods and properties related to labeling include: LabelDimension(ElementId), UnlabelDimension(ElementId), and GetLabeledDimensions.. Also in this set is the CanLabelDimension(ElementId) method which indicates whether or not a particular dimension can be labeled. Presently, only single linear dimensions and angles are permitted.
Elements affected by a Global Parameter
Global parameters can be associated with other global parameters as well as regular family instance parameters (which may report global parameters as their values via the assignment formula.) There are two methods available to find relations among parameters: GetAffectedGlobalParameters. and GetAffectedElements.. The former returns all other global parameters that refer to a particular global parameter in their respective formulas. The other method returns a set of all elements of which some parameters are controlled by the global parameter. These two methods together with the GetLabeledDimensions. can help the programmer in figuring out how model elements relate to each other via global parameters.
Methods for maintaining associations between element properties and global parameters can be found in the Parameter class.
Getting and setting the value of a Global Parameter
All global parameters, formula-driven, dimension-driven, or independent, have values. A value can be obtained by calling the GetValue. method. The object returned by that method is an instance of one of the classes derived from ParameterValue class. The concrete instance is determined by the type of the global parameter (specified upon creation.) Parameters that are neither formula-driven nor dimension-driven (reporting) can have a value assigned. The method to use is SetValue(ParameterValue) and it accepts the same type of ParameterValue that is returned by SetValue. However, the type can also be deduced easily: Text parameters accept only StringParameterValue. Integer and YesNo parameters accept only IntegerParameterValue. All other parameters accept only DoubleParameterValue.