Linear Dimensions

FME 2013 introduces the ability to write dimension features to Microstation v8.

To create linear dimension features in Microstation v8 requires writing an aggregate feature having the following attributes. The aggregate must contain one feature with line geometry, but the dimension geometry will be based on the attribute values.

Required attributes

Microstation infrastructure
igds_element_type - 33
igds_dim_type - 1

Dimension reference points
igds_dim_refx{0}.pt.x - first reference point x
igds_dim_refx{0}.pt.y - first reference point y
igds_dim_refx{0}.pt.z - first reference point z

igds_dim_refx{1}.pt.x - second reference point x
igds_dim_refx{1}.pt.y - second reference point y
igds_dim_refx{1}.pt.z - second reference point z

Dimension line
igds_dim_refx{0}.base_offset - dimension line offset from reference points (+ is up)
igds_dim_refx{1}.base_offset - text offset along dimension line (+ is right)
igds_base_to_text_dist - text vertical offset from dimension line (+ is up)

Dimension text
igds_dim_text_height - dimension text height
igds_dim_text_width - dimension text width
igds_dimstyle_postfix_symbol - symbol after text
igds_dimstyle_prefix_symbol - symbol before text

Pre/Postfix Symbols
0: None
1: Ǿ
2: R
3: □
4: SR
5: SǾ
6: None
7: None


Dimension terminator
igds_arrow_width - terminator arrow width
igds_arrow_height - terminator arrow width
igds_dimstyle_left_term - left terminator style
igds_dimstyle_right_term - right terminator style

Terminators
0: None
1: Arrow
2: Slash
3: Large Circle
4: Small Circle
5: Arrow
6: None
7: None


Dimension rotation
The dimension rotation is defined in quaternions, which allows full 3D rotations. For simple 2D rotation around the Z axis, you can use the following settings (rotation is in radians):

If rotation is between  π radians (180 degrees) and  -π radians (-180 degrees), sign = 1, otherwise sign = -1

igds_quat.w = abs(cos(rotation/2))
igds_quat.x = 0
igds_quat.y = 0
igds_quat.z = sin(rotation/2) * sign

Other
These two attributes are necessary to create the dimension, but don't seem to affect its appearance.
igds_dim_refx{0}.base_offset_y - 0
igds_dim_refx{1}.base_offset_y - 0
igds_dim_refx{0}.segment_text_offset - 0
igds_dim_refx{1}.segment_text_offset - 0