StorageType

StorageType

StorageType describes the type of parameter values stored internally.

Based on the property value, use the corresponding get and set methods to retrieve and set the parameter data value.

The StorageType is an enumerated type that lists all internal parameter data storage types supported by Revit:

Table 16: Storage Type

Member Name

Description

String

Internal data is stored as a string of characters.

ElementId

Data type represents an element and is stored as an Element ID.

Double

Data is stored internally as an 8-byte floating point number.

Integer

Internal data is stored as a signed 32-bit integer.

None

None represents an invalid storage type. For internal use only.

In most cases, the ElementId value is a positive number. However, it can be a negative number. When the ElementId value is negative, it does not represent an Element but has another meaning. For example, the storage type parameter for a beam's Vertical Projection is ElementId. When the parameter value is Level 1 or Level 2, the ElementId value is positive and corresponds to the ElementId of that level. However, when the parameter value is set to Auto-detect, Center of Beam or Top of Beam, the ElementId value is negative.

The following code sample shows how to check whether a parameter's value can be set to a double value, based on its StorageType:

Code Region 8-4: Checking a parameter's StorageType

public bool SetParameter(Parameter parameter, double value)
{
        bool result = false;
        //if the parameter is readonly, you can't change the value of it
        if (null != parameter && !parameter.IsReadOnly)
        {
                StorageType parameterType = parameter.StorageType;
                if (StorageType.Double != parameterType)
                {
                        throw new Exception("The storagetypes of value and parameter are different!");
                }
 
                //If successful, the result is true
                result = parameter.Set(value);
        }
        
        return result;
}

The Set() method return value indicates that the Parameter value was changed. The Set() method returns true if the Parameter value was changed, otherwise it returns false.

Not all Parameters are writable. An Exception is thrown if the Parameter is read-only.