GlobalParameter Class

This class represents a GlobalParameter element in Revit.
Inheritance Hierarchy
SystemObject
  Autodesk.Revit.DBElement
    Autodesk.Revit.DBParameterElement
      Autodesk.Revit.DBGlobalParameter

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
 NameDescription
Public propertyAssemblyInstanceId The id of the assembly instance to which the element belongs.
(Inherited from Element)
Public propertyCode exampleBoundingBoxRetrieves a box that circumscribes all geometry of the element.
(Inherited from Element)
Public propertyCategoryRetrieves a Category object that represents the category or sub category in which the element resides.
(Inherited from Element)
Public propertyCode exampleCreatedPhaseId Id of a Phase at which the Element was created.
(Inherited from Element)
Public propertyCode exampleDemolishedPhaseId Id of a Phase at which the Element was demolished.
(Inherited from Element)
Public propertyCode exampleDesignOptionReturns the design option to which the element belongs.
(Inherited from Element)
Public propertyDocumentReturns the Document in which the Element resides.
(Inherited from Element)
Public propertyCode exampleGeometryRetrieves the geometric representation of the element.
(Inherited from Element)
Public propertyGroupId The id of the group to which an element belongs.
(Inherited from Element)
Public propertyCode exampleId A unique identifier for an Element in an Autodesk Revit project.
(Inherited from Element)
Public propertyIsDrivenByDimension Indicates whether this parameter is driven by a dimension or not.
Public propertyIsDrivenByFormula Indicates whether this parameter is driven by a formula or not.
Public propertyIsModifiable Identifies if the element is modifiable.
(Inherited from Element)
Public propertyIsReporting Indicates whether this is a reporting global parameter or not.
Public propertyIsTransient Indicates whether an element is transient or permanent.
(Inherited from Element)
Public propertyIsValidObject Specifies whether the .NET object represents a valid Revit entity.
(Inherited from Element)
Public propertyLevelId The id of the level associated with the element.
(Inherited from Element)
Public propertyCode exampleLocationThis property is used to find the physical location of an element within a project.
(Inherited from Element)
Public propertyNameA human readable name for the Element.
(Inherited from Element)
Public propertyOwnerViewId The id of the view that owns the element.
(Inherited from Element)
Public propertyCode exampleParameterBuiltInParameterRetrieves a parameter from the element given a parameter id.
(Inherited from Element)
Public propertyParameterDefinitionRetrieves a parameter from the element based on its definition.
(Inherited from Element)
Public propertyParameterGuidRetrieves a parameter from the element given a GUID for a shared parameter.
(Inherited from Element)
Public propertyCode exampleParametersRetrieves a set containing all of the parameters that are contained within the element.
(Inherited from Element)
Public propertyParametersMapRetrieves a map containing all of the parameters that are contained within the element.
(Inherited from Element)
Public propertyPinned Identifies if the element has been pinned to prevent changes.
(Inherited from Element)
Public propertyCode exampleUniqueId A stable unique identifier for an element within the document.
(Inherited from Element)
Public propertyVersionGuid Get the element version Guid.
(Inherited from Element)
Public propertyViewSpecific Identifies if the element is owned by a view.
(Inherited from Element)
Public propertyWorksetId Get Id of the Workset which owns the element.
(Inherited from Element)
Top
Methods
 NameDescription
Public methodArePhasesModifiable Returns true if the properties CreatedPhaseId and DemolishedPhaseId can be modified for this Element.
(Inherited from Element)
Public methodCanBeHiddenIndicates if the element can be hidden in the view.
(Inherited from Element)
Public methodCanBeLocked Identifies if the element can be locked.
(Inherited from Element)
Public methodCanChangeReporting Tests whether the global parameter permits a change of its current value of the IsReporting attribute.
Public methodCanDeleteSubelement Checks if given subelement can be removed from the element.
(Inherited from Element)
Public methodCanHaveTypeAssigned Identifies if the element can have a type assigned.
(Inherited from Element)
Public methodCanLabelDimension Tests whether a dimension can be labeled by the global parameter.
Public methodChangeTypeId(ElementId) Changes the type of the element.
(Inherited from Element)
Public methodStatic memberCreate Creates a new Global Parameter in the given document.
Public methodDeleteEntity Deletes the existing entity created by %schema% in the element
(Inherited from Element)
Public methodDeleteSubelement Removes a subelement from the element.
(Inherited from Element)
Public methodDeleteSubelements Removes the subelements from the element.
(Inherited from Element)
Public methodDispose
(Inherited from Element)
Public methodEqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
Public methodEvaluateAllParameterValues Evaluates all the parameters' values of the element.
(Inherited from Element)
Public methodEvaluateParameterValues Evaluate the parameters' values of the element on the given parameter ID set.
(Inherited from Element)
Public methodGetAffectedElements Returns all elements of which properties are driven by this global parameter.
Public methodGetAffectedGlobalParameters Returns all other global parameters which refer to this global parameter in their formulas.
Public methodCode exampleGetDefinition Get the definition representing this parameter element.
(Inherited from ParameterElement)
Public methodGetDependentElements Get all elements that, from a logical point of view, are the children of this Element.
(Inherited from Element)
Public methodGetEntity 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 methodGetEntitySchemaGuids Returns the Schema guids of any Entities stored in this element.
(Inherited from Element)
Public methodGetExternalFileReference Gets information pertaining to the external file referenced by the element.
(Inherited from Element)
Public methodGetExternalResourceReference Gets the ExternalResourceReference associated with a specified external resource type.
(Inherited from Element)
Public methodGetExternalResourceReferenceExpanded Gets the collection of ExternalResourceReference associated with a specified external resource type.
(Inherited from Element)
Public methodGetExternalResourceReferences Gets the map of the external resource references referenced by the element.
(Inherited from Element)
Public methodGetExternalResourceReferencesExpanded Gets the expanded map of the external resource references referenced by the element.
(Inherited from Element)
Public methodGetFormula Returns the parameter's expression in form of a string.
Public methodCode exampleGetGeneratingElementIds Returns the ids of the element(s) that generated the input geometry object.
(Inherited from Element)
Public methodGetGeometryObjectFromReference Retrieve one geometric primitive contained in the element given a reference.
(Inherited from Element)
Public methodGetHashCodeServes as the default hash function.
(Inherited from Object)
Public methodGetLabeledDimensions Returns all dimension elements that are currently labeled by this global parameter.
Public methodGetLabelName Returns the name of this parameter's label, which is used to label dimension elements.
Public methodGetMaterialArea Gets the area of the material with the given id.
(Inherited from Element)
Public methodGetMaterialIds Gets the element ids of all materials present in the element.
(Inherited from Element)
Public methodGetMaterialVolume Gets the volume of the material with the given id.
(Inherited from Element)
Public methodGetMonitoredLinkElementIds Provides the link instance IDs when the element is monitoring.
(Inherited from Element)
Public methodGetMonitoredLocalElementIds Provides the local element IDs when the element is monitoring.
(Inherited from Element)
Public methodGetOrderedParameters Gets the parameters associated to the element in order.
(Inherited from Element)
Public methodGetParameterRetrieves a parameter from the element given identifier.
(Inherited from Element)
Public methodGetParameterFormatOptions Returns a FormatOptions override for the element Parameter, or a default FormatOptions if no override exists.
(Inherited from Element)
Public methodGetParametersRetrieves the parameters from the element via the given name.
(Inherited from Element)
Public methodGetPhaseStatus Gets the status of a given element in the input phase
(Inherited from Element)
Public methodGetSubelements Returns the collection of element subelements.
(Inherited from Element)
Public methodGetTypeGets the Type of the current instance.
(Inherited from Object)
Public methodCode exampleGetTypeId Returns the identifier of this element's type.
(Inherited from Element)
Public methodGetValidTypes Obtains a set of types that are valid for this element.
(Inherited from Element)
Public methodGetValue Obtains the curent value of the global parameter.
Public methodHasPhases Returns true if this Element has the properties CreatedPhaseId and DemolishedPhaseId.
(Inherited from Element)
Public methodHasValidTypeForReporting Tests that the global parameter has data of a type that supports reporting.
Public methodIsCreatedPhaseOrderValid Returns true if createdPhaseId and demolishedPhaseId are in order.
(Inherited from Element)
Public methodIsDemolishedPhaseOrderValid Returns true if createdPhaseId and demolishedPhaseId are in order.
(Inherited from Element)
Public methodIsExternalFileReference Determines whether this Element represents an external file.
(Inherited from Element)
Public methodIsHiddenIdentifies if the element has been permanently hidden in the view.
(Inherited from Element)
Public methodIsMonitoringLinkElement Indicate whether an element is monitoring any elements in any linked models.
(Inherited from Element)
Public methodIsMonitoringLocalElement Indicate whether an element is monitoring other local elements.
(Inherited from Element)
Public methodIsPhaseCreatedValid Returns true if createdPhaseId is an allowed value for the property CreatedPhaseId in this Element.
(Inherited from Element)
Public methodIsPhaseDemolishedValid Returns true if demolishedPhaseId is an allowed value for the property DemolishedPhaseId in this Element.
(Inherited from Element)
Public methodIsValidFormula Tests that the given expression is a valid as formula for this parameter.
Public methodIsValidType(ElementId) Checks if given type is valid for this element.
(Inherited from Element)
Public methodCode exampleLabelDimension Labels a dimension with this global parameter.
Public methodLookupParameterAttempts to find a parameter on the element which has the given name.
(Inherited from Element)
Public methodRefersToExternalResourceReference Determines whether this Element uses external resources associated with a specified external resource type.
(Inherited from Element)
Public methodRefersToExternalResourceReferences Determines whether this Element uses external resources.
(Inherited from Element)
Public methodCode exampleSetDrivingDimension Set a dimension to drive the value of this parameter.
Public methodSetEntity Stores the entity in the element. If an Entity described by the same Schema already exists, it is overwritten.
(Inherited from Element)
Public methodCode exampleSetFormula Sets a formula expression for this parameter.
Public methodCode exampleSetValue Sets a new value of the global parameter.
Public methodToStringReturns a string that represents the current object.
(Inherited from Object)
Public methodUnlabelDimension Unlabels a dimension that is currently labeled by this global parameter.
Top
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.

See Also