There is only the symbol of the unit and the name of the unit.
For each unit there can be multiple symbols such as ft, '. Although for metric units there is usually only one symbol for each e.g. mm.
You can get the possible unit symbols for each Spec via the Format options of that Spec, as in below code:
Private Function Obj_210716a(ByVal commandData As Autodesk.Revit.UI.ExternalCommandData,
ByRef message As String, ByVal elements As Autodesk.Revit.DB.ElementSet) As Result
Dim UIDoc As UIDocument = commandData.Application.ActiveUIDocument
If UIDoc Is Nothing Then Return Result.Cancelled Else
Dim IntDoc As Document = UIDoc.Document
Dim R As Reference = Nothing
Try
R = UIDoc.Selection.PickObject(Selection.ObjectType.Element, "Select element")
Catch ex As Exception
Return Result.Cancelled
End Try
Dim El As Element = IntDoc.GetElement(R)
For Each P As Parameter In El.Parameters
Dim Sb As New Text.StringBuilder()
If P.StorageType <> StorageType.Double Then Continue For Else
Dim Units As Units = IntDoc.GetUnits
If UnitUtils.IsMeasurableSpec(P.Definition.GetDataType) = False Then Continue For Else
Dim Fo As FormatOptions = Units.GetFormatOptions(P.Definition.GetDataType)
Sb.Append(P.Definition.Name & ",")
If Fo.CanHaveSymbol Then
Dim SymbolsSet As List(Of ForgeTypeId) = Fo.GetValidSymbols()
For i = 0 To SymbolsSet.Count - 1
Dim Fs As ForgeTypeId = SymbolsSet(i)
If Not String.IsNullOrEmpty(Fs.TypeId) Then ' No symbol option is empty ForgeTypeId.TypeId
If i = SymbolsSet.Count - 1 Then
Sb.Append(LabelUtils.GetLabelForSymbol(Fs))
Else
Sb.Append(LabelUtils.GetLabelForSymbol(Fs) & ",")
End If
End If
Next
If Not String.IsNullOrEmpty(Fo.GetSymbolTypeId().TypeId) Then
'When no unit symbol is set the ForgeTypeId.TypeId is empty string which will cause exception for below
Sb.Append(" (Current set = " & LabelUtils.GetLabelForSymbol(Fo.GetSymbolTypeId()) & ")")
End If
Else
Sb.Append("No symbol")
End If
Debug.WriteLine(Sb.ToString)
Next
Return Result.Succeeded
End Function
Example output:
Height 1,mm
Capital Top Offset,mm
Volume,m³ (Current set = m³)
Base Offset,mm
Top Offset,mm
Base Offset,mm
Length,mm
Top Offset,mm
In the example above I get Units object from the document. You can also create a Units instance by either specifying metric or imperial to the constructor of Units. However this doesn't keep sync with how the units are changed in the project (it just provides a default set).
In theory rather than looking at specific parameters as above you could iterate the Specs in the SpectTypeId class (via reflection), create FormatOptions during each iteration and then get the symbols for each via FormatOptions.GetValidSymbols.
For metric system as previously mentioned there is usually only one symbol for each (what you note as short form).