Model viewing, basic drawing structure and dimensions recommended practices
From WikiSTEP
Contents
|
Introduction
This document describes the recommended practices for implementing the draughtingrelated capabilities model viewing, basic drawing organization, and associative dimensions.
It documents the common approach for the implementers related to AP214 and to AP203 with the corresponding modular extensions.
All instance diagrams presented within this document refer to instances defined within the Part 21 file examples included within section 4.
Scope
The information presented in this document covers how a STEP implementation would support:
- the definition of a projection of a styled model onto a view (i.e., viewing pipeline);
- the layout of views on a sheet;
- the organization of sheets in drawings;
- annotation elements used for presenting dimensions;
- the linkage of dimension annotation to the corresponding numerical values;
- the association of the dimension annotation elements to geometric elements.
Fundamental concepts
Particular concepts of interest within the scope of this recommendation are described within the following sections.
Model viewing
The model viewing capability deals with projecting a model that may contain geometric, as well as three-dimensional planar annotation elements, onto a two-dimensional view. The concept to represent the model is draughting_model.
As depicted in Figure 1 (an instance diagram of the entities involved in the camera model), the result of projecting the three-dimensional potentially styled model is a camera_image. As an item of a presentation_view, a camera_image maps a camera_model onto its designated viewport (a planar_box). The camera_model is the source part of the projection mapping; it contains the information needed to create the projection from a three-dimensional representation to a two-dimensional picture of that representation, to which it is associated by camera_usage.
A camera_image_3d_with_scale is a subtype of camera_image that includes a derived scale. The scale is given by the ratio between the size of the viewport and the size of the view_window (a planar_box) of the view_volume of the camera_model.
Each camera_model is either a camera_model_d2 or a camera_model_d3. A camera_model_d3 captures the projection information to create a mapping from a three dimensional representation to a planar projection of that representation. A camera_model_d3_with_hlshsr is a subtype of camera_model_d3 that indicates, via his hidden_line_surface_removal attribute, whether a removal of hidden lines and surfaces shall be performed.

A view_volume is defined in the view_reference_system of the camera_model that uses the volume. It is either a truncated pyramid or a parallelepiped. The contents of this volume are projected onto the planar_box defined by the view_window that is then mapped onto the viewport.
If the type of projection is parallel (as shown in Figure 2), the projection is made parallel to the line from the projection_point (i.e. from where the items are viewed) to the geometric center of the view_window, and the view_volume is a parallelepiped.

If the type of projection is central, the view_volume is a truncated pyramid emanating from the projection_point.
The view_plane_distance is a signed distance along the z-axis of the axis2_placement indicated by the view_reference_system. This distance positions the origin of the view_window. Front_plane_distance and back_plane_distance define the front and back end of the view_volume. The geometry of the projected representation can be clipped at the front plane (with front_plane_clipping set to TRUE), back plane (back_plane_clipping) and against the planes which are the sides of the view_volume (view_volume_ sides_clipping).
Entities and Attributes
| Name | Explanation |
|---|---|
| draughting_model | The representation of the shape of a product for the purpose of draughting. |
| name | A unique name. |
| items | The elements of the draughting_model. Each item shall be a mapped_item, styled_item, axis2_placement or a camera_model. |
| context_of_items | Same as context of the geometric shape. |
| camera_image | The result of projecting two- or three-dimensional geometry. |
| name | Due to no requirement defined, it is recommended to instantiate with an empty string. |
| mapping_source | A camera_usage. |
| mapping_target | A planar_box onto which the view window is projected. |
| presentation_view | It is a picture that is the result of the projection of a draughting_model. It needs to be placed onto a presentation_area. |
| name | Inconsequential name of the view. |
| items | The elements of the view. In our context this includes the camera_image, the axis2_placement_2d that is the origin of
the view, as well as all annotation_occurrences that are defined and depicted in the view. |
| context_of_items | A two-dimensional representation context. |
| camera_model_d3_with_hlhsr | A camera_model that contains the information to create a projection. This subtype of camera_model indicates whether hidden line and hidden surface removal shall be performed. |
| name | Due to no requirement defined, it is recommended to instantiate with an empty string. |
| view_reference_system | An intermediate three-dimensional coordinate space in the coordinate space to be projected (see Figure 1). |
| perspective_of_volume | A pointer to a view_volume that is the information required to determine how to project the geometry. It is defined in the view_reference_system. |
| hidden_line_surface_removal | A value of TRUE indicates that hidden lines and surfaces shall be removed during projection. |
| view_volume | Defines the volume that is projected onto the presentation_view. |
| projection_type | Parallel or central |
| projection_point | The location from which the items are viewed. For a parallel projection, this point indicates a line from itself to the geometric center of the view_window. |
| view_plane_distance | This distance positions the origin of the view_window. |
| front_plane_distance | For a parallel projection, this is the distance to the front of the parallelepiped. |
| front_plane_clipping | A boolean flag indicating whether to clip the projection against the plane given by the front_plane_distance. |
| back_plane_distance | For a parallel projection, this is the distance to the back of the parallelepiped. |
| back_plane_clipping | A boolean flag indicating whether to clip the projection against the plane given by the back_plane_distance. |
| view_volume_sides_clipping | A boolean flag indicating whether to clip the projection against the sides of the view_volume. |
| view_window | A rectangular extent on the view plane. The draughting_model is mapped onto this planar_box, which is then mapped to the viewport of the camera_image. |
| planar_box | A rectangular box and its location in a two-dimensional coordinate system. |
| name | Due to no requirement defined, it is recommended to instantiate with an empty string. |
| size_in_x | The extent in the x-axis direction. |
| size_in_y | The extent in the y-axis direction. |
| placement | The position and orientation of the bottom-left corner of the rectangular box. |
Basic drawing organization
The capability described here allows placing views on drawing sheets and attaching basic organizational information to the sheets. An instance diagram of the entities involved in this area is shown in Figure 3.
The anchor for drawing organization is the entity drawing_definition. Drawing_definition gives an identifier for the organizational number of a drawing and specifies a label for the categorization of a drawing. For a drawing_definition, multiple drawing_revisions may exist. A revision of a drawing includes revisions of sheets that are part of the drawing. This usage is modeled through the use of drawing_sheet_revision_usage. A drawing_sheet_revision is a sheet with an assigned revision identifier. The items of a drawing sheet include an axis2_placement_2d that is the origin of the sheet, mapped_items that place presentations on the sheet, and a planar_box that defines the size of the sheet. Drawing sheets may also contain annotation_occurrences that are defined and depicted in the sheet.
The construct applied_presented_item together with presented_item_presentation is used to link a given drawing revision with the description of the items presented in the drawing.

Entities and Attributes
| Name | Explanation |
|---|---|
| presentation_size | Used to define the size of a presentation_view or presentation_area. |
| unit | The representation that is being assigned a size. In our scope this is the drawing_sheet_revision. |
| size | A planar_box that describes the size of the unit attribute. |
| drawing_definition | Identifies a set of drawing revisions. |
| drawing_number | The organizational number assigned to the drawing (identifier). |
| drawing_type | A label used to categorize the drawing. Due to no requirement defined, it is recommended to instantiate with an empty string. |
| drawing_revision | A revision of a drawing. |
| revision_identifier | The identifier of the drawing revision, usually a letter revision designator. |
| drawing_identifier | The identifier of a drawing (a pointer to the drawing_definition). |
| intended_scale | Optional: a text description of the intended scale – for information only. |
| draughting_title | A brief text string describing the contents of the drawing. |
| items | The sheets or revisions to which the description applies. |
| language | A label to define the language of the description. |
| contents | The text description. |
| applied_presented_item | Assigns an item to a presentation_representation or a presentation_set |
| items | The set of assigned items. Within our scope, this set only includes product_definitions. |
| presented_item_presentation | The association of a presentation with the item for which its is the picture. |
| presentation | The presentation. |
| item | The presented item. |
| drawing_sheet_revision | A revision of a drawing sheet. |
| name | The organizational name assigned to the drawing sheet. |
| items | The elements of the sheet. In our context this includes the axis2_placement_2d that is the origin of the sheet,
mapped_items that place presentations on the sheet, and a planar_box that defines the size of the sheet. |
| context_of_items | A two-dimensional representation context. |
| revision_identifier | The organizational identifier assigned to the drawing sheet. |
| drawing_sheet_revision_usage | Relates the revision of a sheet with the revision of a drawing. |
| area | The drawing_sheet_revision. |
| in_set | The drawing_revision. |
| sheet_number | An identifier indicating the position of the sheet in the overall sequence of sheets defining the drawing. |
Associative dimensions
Associative dimensions establish a link between the calculated size of a dimension and the presentation of this value and the element(s) from which the dimension value is calculated.

Instance diagrams depicting the entities involved defining a geometric locational dimension are shown in Figure 4 and Figure 5. A dimensional_location specifies that a spatial constraint between two identified portions of a given geometric shape exists. This constraint is represented as a measure. The concept for identifying portions of shape is a shape_aspect. Dimensional_location is a subtype of shape_aspect_relationship. The portion of shape specified by a shape_aspect is given by the elements of the shape_representation that is linked to it.

The dimension given implicitly by the relationship of the respective shape_aspects can be linked to an explicit non-geometric representation. Such a representation is shape_dimension_representation. A shape_dimension_representation describes the geometric representation of a dimension of or between shape_aspects with a value. Being part of that representation, the value needs to be instantiated as a measure_representation_item.
The two representations related to the location_dimension are associated via the entity dimensional_characteristic_representation.
Entities and Attributes
| Name | Explanation |
|---|---|
| dimensional_location | Describes a spatial constraint between two shape_aspects. |
| name | Due to no requirement defined, it is recommended to instantiate with an empty string. |
| description | Due to no requirement defined, it is recommended to instantiate with an empty string. |
| relating_shape_aspect | The first shape_aspect. |
| related_shape_aspect | The second shape_aspect. |
| shape_aspect | An identifiable portion of the shape of a product. |
| name | Due to no requirement defined, it is recommended to instantiate with an empty string. |
| description | Due to no requirement defined, it is recommended to instantiate with an empty string. |
| of_shape | The product_definition_shape of which the entity is an aspect. |
| product_definitional | If a value of TRUE is given, than it is asserted that the shape_aspects are on the physical boundary of the product_definition_shape. |
| shape_dimension_representation | A representation of a dimensional_location or dimensional_size. |
| name | Due to no requirement defined, it is recommended to instantiate with an empty string. |
| items | The measure_representation_items that represent the dimension. There shall be at most two items. The value component of these items shall be positive. |
| context_of_items | Same as context of the geometric shape. |
| dimensional_characteristic_representation | Associates the implicit definition of a dimension with an explicit non-geometric representation. |
| dimension | The implicit geometric dimension. |
| representation | The explicit non-geometric representation. |
Presentation of a dimension
A combination of annotation curves, symbols and text are used to present dimensions. The grouping of such elements is achieved via the usage of the entity draughting_callout.
Typically the dimension information is separated in a callout capturing the description of the measure information via text and symbols and a callout capturing the dimension, projection, and leader curves.
For draughting callout which collects the dimension, projection or leader curves a specific subtype corresponding to the type of the presented dimension is used.
The table below shows the available dimension types:
| dimension callout type | description | subtype of |
|---|---|---|
| angular_dimension | presents a value of an angular distance measure (e.g. to specify a circle segment) | dimension_curve_directed_callout |
| curve_dimension | presents a value of distance between two elements measured along a curved path or the length of curved element | dimension_curve_directed_callout |
| diameter_dimension | presents a value of the diametrical size of a circular element | dimension_curve_directed_callout |
| leader_directed_dimension | presents some dimension, e.g. hole characteristics, directed by a leader curve | leader_directed_callout |
| linear_dimension | presents a value of distance between two elements, measure along a linear path or the length of a linear element | dimension_curve_directed_callout |
| ordinate_dimension | presents a dimension value directed by a projection curve | projection_directed_callout |
| radius_dimension | presents a value of radial size of a circular element | dimension_curve_directed_callout |
Dimension_curve_directed_callout, leader_directed_callout, projection_directed_callout are subtypes of draughting_callout without additional attributes. These subtypes have associated constraints that ensure that e.g. a leader_directed_callout actually contains a leader_curve.

The related draughting callout represents the annotation text and symbology to present the measure information of a dimension. The two callouts are related by the entity dimension_callout_relationship with the attribute name set to 'primary'. A secondary presentation of the measure representation may be associated with an additional dimension_callout_relationship with the name attribute set to 'secondary'.
The related callout for the measure information annotation may either be a plain draughting_callout or the subtype structured_dimension_callout may be used to indicate that the presentation of the dimensional information is structured in individual elements (e.g. dimension value text and tolerance text) that need to be identified and distinguished.
In this document it is assumed that dimension information is placed on the view – as opposed to be placed on the drawing sheet – thus it is recommended that the involved draughting_callouts shall be founded in the corresponding presentation_view.
The discussion of the callout for the dimension now exemplarily focuses on a linear_dimension. The approach is similar for the other dimension callout types listed in the table above.

A linear_dimension is a subtype of draughting_callout that presents the value of a dimension via a dimension curve. The contents of a linear_dimension are projection_curve and dimension_curve items. An instance diagram depicting the entities that may be related to a linear_dimension is shown in Figure 7.
The projection_curve and dimension_curve entities represent curves with a style assignment.
A projection_curve is a subtype of annotation_curve_occurrence that models a projection line resulting from projecting a point, curve or surface from an image of the product shape to a point outside that image. Figure 8 is an instance diagram that depicts the entities that are related to a projection_curve.

A dimension_curve is a subtype of annotation_curve_occurrence that, along with related terminator symbols, presents the direction and extent of a dimension measure. To mark the start- and end-point of a dimension extent, dimension_curve_terminator symbols are used. A dimension_curve_terminator is a subtype of terminator_symbol. Dimension_curve_terminator.role specifies either origin or target, depending on whether the symbol corresponds to the beginning or end of a dimension.
The item styled by a dimension_curve_terminator is a defined_symbol, which is defined by a pre_defined_terminator_symbol.name taken from the list {'blanked arrow', 'blanked box', 'blanked dot', 'dimension origin', 'filled arrow', 'filled box' ,'filled dot' ,'integral symbol', 'open arrow', 'slash', 'unfilled arrow'}.
Figure 9 is an instance diagram that depicts the entities that are related to a dimension_curve.

The two callouts, one explicitly presenting the measurements, the other directing the information to the shape, are linked via the entity dimension_callout_relationship.
A dimension_callout_relationship is a subtype of draughting_callout_relationship. The dimension_callout_relationship.name of the relationship can either be 'primary' or 'secondary'. 'Primary' is used if the related_draughting_callout presents the measurement in the primary unit of measure.
Entities and Attributes
| Name | Explanation |
|---|---|
| draughting_callout | Presents product requirements or information used to interpret a drawing. |
| name | Contents vary depending on the subtype being instantiated. |
| contents | Any combination of annotation curves, symbols and text. |
| structured_dimension_callout | Presents type, value, tolerance, and units information associated with a dimension. |
| linear_dimension | Presents a value of distance between two elements or the length of a linear element. |
| dimension_curve | An annotation_curve that – along with related terminator symbols – presents the extent and direction of a measurement. |
| name | Due to no requirement defined, it is recommended to instantiate with an empty string. |
| styles | The style applied to the curve. |
| item | The underlying curve. |
| projection_curve | An annotation_curve that results from projection. |
| dimension_curve_terminator | A symbol representing the beginning or end of a dimension_curve. |
| name | Due to no requirement defined, it is recommended to instantiate with an empty string. |
| styles | The styling of the symbol. This style only includes color characteristics. |
| item | The symbol used. |
| annotation_curve | The related dimension_curve. |
| role | Either .ORIGIN. (start terminator) or .TARGET. (end terminator). |
| defined_symbol | An implicitly defined symbol. |
| name | Due to no requirement defined, it is recommended to instantiate with an empty string. |
| definition | The implicit description of the symbol, either a pre-defined or externally defined symbol. |
| target | Scaling, placement and orientation of the symbol. |
| dimension_callout_relationship | Relates the presentation of the dimension (dimension_curve and projection_curve) to the presentation of the associated information (e.g. text presenting measurement and tolerances). |
| name | If specifications are in the primary unit of measure then ‘primary’; else 'secondary'. |
| description | Due to no requirement defined, it is recommended to instantiate with an empty string. |
| relating_draughting_callout | The dimension. |
| related_draughting_callout | The dimension callout. |
Associativity of dimension value to visual presentation in callout

The shape_dimension_representation specifying the dimension value is mapped onto the structured_dimension_callout via a dimension_text_associativity entity. Dimension_text_associativity is a subtype of mapped_item and text_literal. The text_literal specifies the string to be used as an indication of the measure in the callout. That does not necessarily need to be exactly matching the numerical dimension value. An instance diagram depicting the entities that are related to a dimension_text_associativity is shown in Figure 10.
Entities and Attributes
| Name | Explanation |
|---|---|
| dimension_text_associativity | A subtype of text_literal and mapped_item that maps a shape_dimension_representation onto the callout which presents the measurement. |
| name | Due to no requirement defined, it is recommended to instantiate with an empty string. |
| literal | The character string to present the measurement. |
| placement | The location of the string within the coordinate system within which it is defined. |
| alignment | The alignment of the string relative to its position. This could either be ‘baseline left’, ‘baseline centre’, or ‘baseline right’. |
| path | The writing direction of the string. This could either be .LEFT., .RIGHT., .UP., or .DOWN.. |
| font | The font that will be used to present the string. |
| mapping_source | A representation_map with the .mapped_representation being a shape_dimension_representation. |
| mapping_target | The dimension callout. |
Tolerance information
To specify the limits within which the value of a dimension may vary plus_minus_tolerance can be used. A plus_minus_tolerance may have a range either specified by a tolerance_value or limits_and_fits. Limits_and_fits is a pre_defined fit system for specifying the tolerances associated with the assembly of mating product features. Tolerance_value represents the plus-minus tolerances for a dimension. The range is derived by adding upper_bound resp. subtracting lower_bound from the nominal value of the dimension. An instance diagram depicting the entities that may be related to a plus_minus_tolerance is shown in Figure 11.

Entities and Attributes
| Name | Explanation |
|---|---|
| plus_minus_tolerance | Specification of limits within which a dimension may vary. |
| range | A tolerance_value in the scope of this effort. |
| toleranced_dimension | The dimension being toleranced. |
| tolerance_value | A representation of plus-minus tolerances for a dimension. |
| upper_bound | The value to be added to nominal dimension value to derive maximum. |
| lower_bound | The value to be added to dimension to derive minimum. |
Part 21 file examples
There is an example provided with associative dimensions and another example (derived from the first example) in which the same dimensions are modelled as non_associative.
Example with associative dimensions
A diagram depicting the geometric model used for this example, along with the view that includes different types of dimensions, is shown in Figure 12.

Instance diagram for associative dimensions example
This section provides an overview of the structures used for the different capabilities defined in this complex example by combining the individual figures of the above descriptions.





Notes to the diagrams
Note 1 Complex entity since its a subtype of annotation_occurrence and draughting_annotation_occurrence.
Note 2 Complex entity since its a subtype of draughting_callout and draughting_elements.
Note 3 Complex entity since its a subtype of mapped_item and text_literal.
Note 4 Complex entity since its a subtype of dimension_curve_directed_callout and draughting_elements.
Note 5 Complex entity since its a subtype of annotation_curve_occurrence and draughting_annotation_occurrence.
Note 6 Complex entity since its a subtype of measure_with_unit and representation_item.
Note 7 Complex entity since its a subtype of terminator_symbol and draughting_annotation_occurrence.
Example with non-associative dimensions
In respect to the appearance of the drawing on the sheet this files represent the same model as above. The difference is that the logical structure that associates the presentation of the dimension to their numerical values and to the corresponding geometry is omitted. Dimensioning capability is restricted to the presentation of text, symbology and annotation curves in the drawing views.
Availability of implementation schemas
AP214
The AP214 DIS schema supports the implementation of the capabilities as described. The schema can be retrieved from http://www.cax-if.org.
AP203 with modular extensions
The short form for the associative dimensions extension, its corresponding long form, and the long form schema combining AP 203 and the associative dimension can be accessed via the WWW from: http://www.cax-if.org.

