Integrated generic resource: Visual presentation | ISO 10303-46:2021(E) © ISO |
The subject of the presentation_appearance_schema is the specification of the intended graphical appearance of a presented picture. The presentation_appearance_schema also defines the mechanism which allows the appropriate association of these appearance attributes with annotation_occurrences in the context of a presentation_representation. Thus, the context of the presentation_representation can be used to determine the appearance of different kinds of elements in the picture.
This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following EXPRESS declaration begins the presentation_appearance_schema and identifies the necessary external references.Each implementation of an AP that uses this schema and that encodes entity names shall use the encoding specified in Annex A. Each reference to this schema in an open system shall use the identifier encoding specified in Annex B. This schema is illustrated in Annex D using the EXPRESS-G notation.
EXPRESS specification:
*)
SCHEMA presentation_appearance_schema;
REFERENCE FROM
external_reference_schema
--
ISO 10303-41
(externally_defined_item,
pre_defined_item);
REFERENCE FROM
geometric_model_schema
--
ISO 10303-42
(complex_triangulated_face,
coordinates_list,
tessellated_edge,
tessellated_face,
tessellated_item,
tessellated_shell,
tessellated_solid,
tessellated_surface_set,
tessellated_vertex,
triangulated_face);
REFERENCE FROM
geometry_schema
--
ISO 10303-42
(axis2_placement,
b_spline_curve,
cartesian_point,
composite_curve,
curve,
geometric_representation_item,
point,
polyline,
vector);
REFERENCE FROM
group_schema
--
ISO 10303-41
(group);
REFERENCE FROM
measure_schema
--
ISO 10303-41
(descriptive_measure,
length_measure,
measure_with_unit,
plane_angle_measure,
positive_length_measure,
positive_ratio_measure,
ratio_measure);
REFERENCE FROM
presentation_definition_schema
--
ISO 10303-46
(annotation_curve_occurrence,
annotation_fill_area,
annotation_symbol_occurrence,
annotation_text_with_delineation,
symbol_representation_with_blanking_box);
REFERENCE FROM
presentation_organization_schema
--
ISO 10303-46
(area_dependent_annotation_representation,
presentation_area,
presentation_layer_assignment,
presentation_layer_usage,
presentation_representation,
presentation_set,
presentation_view,
product_data_representation_view,
view_dependent_annotation_representation);
REFERENCE FROM
presentation_resource_schema
--
ISO 10303-46
(character_glyph_symbol_outline,
character_glyph_symbol_stroke,
colour);
REFERENCE FROM
product_property_representation_schema
--
ISO 10303-41
(context_dependent_shape_representation);
REFERENCE FROM
representation_schema
--
ISO 10303-43
(founded_item,
mapped_item,
representation,
representation_item,
representation_map,
representation_or_representation_reference,
representation_relationship,
using_representations);
REFERENCE FROM
support_resource_schema
--
ISO 10303-41
(bag_to_set,
label);
REFERENCE FROM
topology_schema
--
ISO 10303-42
(topological_representation_item);
(*
NOTE 1 The schemas referenced above are specified in the following parts:
external_reference_schema ISO 10303-41 geometric_model_schema ISO 10303-42 geometry_schema ISO 10303-42 group_schema ISO 10303-41 measure_schema ISO 10303-41 presentation_definition_schema ISO 10303-46 presentation_organization_schema ISO 10303-46 presentation_resource_schema ISO 10303-46 product_property_representation_schema ISO 10303-41 representation_schema ISO 10303-43 support_resource_schema ISO 10303-41 topology_schema ISO 10303-42
NOTE 2 See Annex D for a graphical representation of this schema.
The presentation_appearance_schema allows the association of appearance attributes with selected annotation primitives and with product shape elements. In this part of ISO 10303, presentation style can be assigned to any representation_item. A style assignment is made by instantiating a styled_item which refers to a representation_item together with its presentation_style_assignment. A presentation_style_assignment itself is a collection of different presentation styles such as point style, curve style, or text style. Styling an unstyled representation_item produces a new representation_item which has presentation style assigned. The presentation_style_assignment of a styled_item affects the appearance of the referenced representation_item as well as the appearance of all representation_items referenced directly or indirectly by that item. Only those representation_items are affected which are not already styled. This means styling a styled representation_item has no effect, styling a partially styled representation_item affects only the appearance of the unstyled parts, and styling an unstyled representation_item affects the appearance of the whole item. Only styled representation_items may be presented. Whether they are actually presented depends on several other facts, like layer invisibility and invisibility, hidden line and surface removal, as well as clipping. This part of ISO 10303 does not make any statement about the effect if style conflicts occurs. A style conflict occurs, for example, when a representation_item is used by several styled_items.
A presentation_style_assignment is used to assign style to a representation_item independently from any presentation context. A subtype of presentation_style_assignment, the presentation_style_by_context, allows the assignment of style for a specific presentation context. A presentation context can be any presentation_set, representation, or representation_item. In the last case, a style can be assigned to an item as a whole, and a different style can be assigned to a part of that item.
A style assignment can be over-ridden by an over_riding_styled_item. A subtype of over_riding_styled_item, the context_dependent_over_riding_styled_item, allows the over-riding of a style for a specific presentation context.
Types of presentation stylesFor each annotation primitive defined in the presentation_definition_schema, a special group of styles exist. These groups are point styles, curve styles, fill area styles, surface styles, text styles, and symbol styles. This part of ISO 10303 does not restrict style assignment to product shape elements. For example, it allows the assignment of surface style to a point. However, only appropriate styles affect the appearance of the product shape element; i.e., surface styles only affect surfaces, fill area styles and curve styles only affect curves, and point styles only affect points, curves, and surfaces. For high-level product shape elements such as solid models, the using Application Protocol has to specify which styles affect the appearance of these elements. Nevertheless, the style assignment for annotation primitives is more restrictive. Details on these restrictions can be found in clause 5 subtypes of annotation_occurrence.
Presentation styles can be specified using the resources of this schema, can be externally defined, or can be pre-defined by Application Protocols. The presentation styles defined in this schema include the following.
Point styles provide the resources to specify the visual appearance of points. They allow the specification of the marker symbol, marker size, and colour to be used for presenting points. Point styles can be specified by the entity point_style.
Curve styles provide the resources to specify the visual appearance of curves. They allow the specification of curve fonts, curve width, appearance of curve ends and corners, colour, or patterns for filling visible curve segments. A curve font specifies whether a curve shall be drawn using solid, dashed, or dotted lines. The presentation_appearance_schema allows the specification of arbitrary patterns for curve fonts and the usage of externally defined or pre-defined curve fonts. The entities used for the definition of curve fonts are externally_defined_curve_font, pre_defined_curve_font, curve_style_font, curve_style_font_pattern, and curve_style_font_and_scaling. The curve width can be specified as measure or pre-defined size. Curve ends and corners may be drawn squared or rounded, and extension or shortage can be specified for curve ends. The entities supporting this structure are curve_style_with_ends_and_corners and curve_style_with_extension. A curve_style_wide allows the specification of a fill area style which is used for filling visible curve segments. This has been included to meet draughting requirements for the presentation of curves. The curve_style_rendering controls the rendering of curves on a surface and is described together with surface styles.
Fill area styles provide the resources to specify the visual appearance of annotation fill areas. They allow the specification of a solid colour, hatches, or tiling patterns. The fill_area_style_colour can be used to specify a solid colour that is used for presenting a fill area. The hatching patterns can be composed of sets of parallel lines with arbitrary angle. Alternatively, hatching patterns may be externally defined or pre-defined. The entities for hatches are fill_area_style_hatching, pre_defined_hatch_style, externally_defined_ hatch_style, and one_direction_repeat_factor. The tiling patterns can be made of curves, coloured regions, or symbols. Alternatively, tiling pattern may be externally defined or pre-defined. Tiling patterns are repeated in two directions which are specified by arbitrary vectors. The entities for the definition of tiling patterns are pre_defined_tile_style, externally_defined_tile_style, fill_area_style_tiles, fill_area_style_tile_curve_with_style, fill_area_style_tile_coloured_region, fill_area_style_tile_symbol_with_style, pre_defined_tile, externally_defined_tile, and two_direction_repeat_factor.
Surface styles provide the resources to specify the visual appearance of surfaces. Separate surface styles may be applied to each side of a surface, or the same surface styles can be used for both sides. The surface style usage specifies a surface side style for one or both sides of a surface. Entities for the assignment of style to sides of a surface are surface_style_usage and surface_side_style. A surface side style may be any combination of fill area style, boundary style, silhouette style, segmentation curve style, control grid style, parameter line style, or rendering style.
A fill area style specifies a solid colour, hatches, or a tiling pattern for filling the side of a surface.
A boundary style specifies a curve style or a rendering method and properties for presenting the boundary curves of a surface. If no boundary style is specified, the boundary curves shall not be presented.
A silhouette style specifies a curve style or a rendering method and properties for presenting the silhouette curves of a surface. If no silhouette style is specified, silhouette curves shall not be presented.
A segmentation curve style specifies a curve style or a rendering method and properties for presenting the segmentation curves of a surface. This style affects only surfaces which are divided into segments such as B-spline surfaces. If no segmentation curve style is specified, segmentation curves shall not be presented.
A control grid style specifies a curve style or a rendering method and properties for presenting the mesh of control points which are used for the definition of a surface. This style affects only surfaces which are defined over a mesh of control points, such as B-spline surfaces. If no control grid style is specified, the control grid shall not be presented.
A parameter line style specifies a curve style or a rendering method and properties for presenting iso-parameter lines of a surface. The number of parameter lines in each parameter direction has to be specified for this style. If no parameter line style is specified, the parameter lines shall not be presented.
The entities defining these surface styles are surface_fill_area, surface_style_boundary, surface_style_silhouette, surface_style_segmentation_curve, surface_style_control_grid, and surface_style_parameter_line.
The entities curve_style_rendering and surface_rendering_properties specify the rendering method and properties for curves on a surface. A rendering style specifies the method which shall be used for rendering the surface. If this style is specified, surface rendering using reflectance calculations is performed for presenting the surface. For this style, a colour shall be specified for the surface. Additional rendering properties including transparency and ambient, diffuse, and specular reflectance coefficients can optionally be specified. The entities for rendering styles are surface_style_rendering, surface_style_rendering_with_properties, surface_style_transparent, surface_style_reflectance_ambient, surface_style_reflectance_ambient_diffuse, and surface_style_reflectance_ambient_diffuse_specular. Besides those styles listed above, surface styles may also be pre-defined.
Text styles provide the resources to specify the visual appearance of annotation text. Text justification, box characteristics, character spacing, and mirror axis affect the appearance of the whole text, while character glyph style affects the appearance of the individual characters or symbols which make up the text. Text justification specifies how the text is aligned. The supported types of alignment are specified by Application Protocols. The box characteristics specify the geometry of the character box. The character box is a parallelogram for which the width, height, slant angle, and rotation angle may be specified. Text spacing defines the spacing which shall be included between adjacent character boxes of a string, in addition to the spacing included in the font definition. Text mirroring specifies a mirror axis which shall be used for mirroring the text. Mirroring shall be performed after all remaining text styles have been applied. The entities supporting the definition of these text styles are text_style, text_style_with_spacing, text_style_with_mirror, text_style_with_justification, and text_style_with_box_characteristics. A character glyph style may be an outline style, stroke style, or only a text colour. An outline style is a curve style that is used for presenting the outlines which make up a character glyph. Optionally, a fill area style for filling the outlines may be specified. An outline style affects only character glyphs which are defined by outlines. A stroke style is a curve style that is used for presenting the strokes which make up a character glyph. A stroke style affects only character glyphs which are defined by strokes. For pre-defined and externally defined fonts, only a colour shall be specified. The entities supporting the definition of these character glyph styles are character_glyph_style_stroke, character_glyph_style_outline, character_glyph_style_outline_with_characteristics, and text_style_for_defined_font.
Symbol styles provide the resources to specify the visual appearance of annotation symbols. A symbol style is an arbitrary collection of point styles, curve styles, fill area styles, surface styles, and text styles. The entities supporting the definition of these symbol styles are symbol_style, symbol_element_style, and symbol_colour.
Approximation tolerancesApproximation tolerances specify the allowable tolerances between the shape of the presented elements and their mathematically exact position and shape. Approximation tolerances apply to curves and surfaces and can be specified in parameter space, product shape space, or presentation area space. The space in which the tolerances are specified depends on the approximation method used. For the chordal deviation and chordal length approximation methods, the tolerance can be specified in product-shape or presentation-area space. For the parameter approximation method, the tolerance shall be specified in parameter space.
Occlusion and invisibilityThe presentation_appearance_schema provides resources to specify the intended appearance of items which hide each other because they overlap in two-dimensional space. Those items include the elements of the presentation hierarchy which are defined in clause 4 in this part of ISO 10303, annotation_fill_areas, annotation texts with delineations, character glyphs, and symbols. For this purpose, an occlusion_precedence can be specified for any two of these items.
In addition, the presentation_appearance_schema provides resources to specify the invisibility of styled_items or layers.
Surface vIsual textureThe presentation_appearance_schema provides resources to specify an external image association to tessellated geometry, in particular to Tessellated_face and Tessellated_surface_set.
Vertex colours for tessellated geometryThe presentation_appearance_schema provides resources to specify association of colour information with vertices of tessellated geometry elements, in particular vertices of a Tessellated_face, Tessellated_surface_set, Tessellated_shell, and Tessellated_solid. Colour information is specified using integer triples to represent RGB colours or integer quadruples to represent RGB colour values with transparency.
NOTE Figure 18 shows the definition of chordal_deviation and chordal_length.
EXPRESS specification:
*)
TYPE
approximation_method
=
ENUMERATION
OF
(chordal_deviation,
chordal_length);
END_TYPE;
(*
Enumerated item definitions:
chordal_deviation: curves are approximated in a way that the distance between the curve and the line segment does not exceed a given deviation value. Surfaces are approximated in a way that the distance between the surface and the polygon does not exceed a given deviation value. The distance is measured in the normal direction to the line segment or the planar polygon. The chordal_deviation is measured either in product shape space units or presentation_area units as specified by an approximation_tolerance_deviation.
chordal_length: curves are approximated in a way that the resulting line segments have uniform length. Surfaces are approximated in a way that the edges of the resulting planar polygons have uniform length. The chordal_length is measured either in product shape space units or presentation_area units as specified by an approximation_tolerance_deviation.
EXPRESS specification:
*)
TYPE
box_characteristic_select
=
SELECT
(box_height,
box_width,
box_slant_angle,
box_rotate_angle);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
box_height
=
positive_ratio_measure;
END_TYPE;
(*
The box_rotate_angle is an angle which indicates that the box for a character glyph shall be presented at an angle to the baseline of the text string within which the glyph occurs, the angle being that between the baseline of the glyph and an axis perpendicular to the baseline of the text string.
NOTE Figure 19 shows the definition of box_rotate_angle.
EXPRESS specification:
*)
TYPE
box_rotate_angle
=
plane_angle_measure;
END_TYPE;
(*
A box_slant_angle is an angle which indicates that the box for a character glyph shall be presented as a parallelogram, with the angle being between the character up line and an axis perpendicular to the character base line.
NOTE Figure 19 shows the definition of box_slant_angle.
EXPRESS specification:
*)
TYPE
box_slant_angle
=
plane_angle_measure;
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
box_width
=
positive_ratio_measure;
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
character_spacing_select
=
SELECT
(length_measure,
ratio_measure,
measure_with_unit,
descriptive_measure,
pre_defined_character_spacing);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
character_style_select
=
SELECT
(character_glyph_style_stroke,
character_glyph_style_outline,
text_style_for_defined_font);
END_TYPE;
(*
The colour_type_enum is an enumeration of colour formats to be associated with vertices of tessellated geometry.
EXPRESS specification:
*)
TYPE
colour_type_enum
=
ENUMERATION
OF
(RGB8,
RGBT8);
END_TYPE;
(*
Enumerated item definitions:
RGB8: Red Green Blue eight-bit-integer storage colour-model format.
RGBT8: Red Green Blue Transparency 8-bit integer storage colour model format.
EXPRESS specification:
*)
TYPE
curve_font_or_scaled_curve_font_select
=
SELECT
(curve_style_font_select,
curve_style_font_and_scaling);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
curve_or_annotation_curve_occurrence
=
SELECT
(curve,
annotation_curve_occurrence);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
curve_or_render
=
SELECT
(curve_style,
curve_style_rendering);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
curve_style_font_select
=
SELECT
(curve_style_font,
pre_defined_curve_font,
externally_defined_curve_font);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
curve_tolerance_deviation
=
positive_length_measure;
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
curve_tolerance_parameter
=
REAL;
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
direction_count_select
=
SELECT
(u_direction_count,
v_direction_count);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
fill_area_style_tile_shape_select
=
SELECT
(fill_area_style_tile_curve_with_style,
fill_area_style_tile_coloured_region,
fill_area_style_tile_symbol_with_style,
pre_defined_tile,
externally_defined_tile);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
fill_style_select
=
SELECT
(fill_area_style_colour,
pre_defined_tile_style,
externally_defined_tile_style,
fill_area_style_tiles,
pre_defined_hatch_style,
externally_defined_hatch_style,
fill_area_style_hatching,
texture_style_specification);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
hiding_or_blanking_select
=
SELECT
(presentation_area,
presentation_view,
product_data_representation_view,
annotation_fill_area,
area_dependent_annotation_representation,
view_dependent_annotation_representation,
annotation_text_with_delineation,
character_glyph_symbol_stroke,
character_glyph_symbol_outline,
symbol_representation_with_blanking_box);
END_TYPE;
(*
NOTE The list of entity data types will be extended in application resources that use the constructs of this resource.
The invisibility_context type selects the context in which elements of a picture may be denoted as invisible.EXPRESS specification:
*)
TYPE
invisibility_context
=
EXTENSIBLE
GENERIC_ENTITY
SELECT
(presentation_layer_usage,
presentation_representation,
presentation_set);
END_TYPE;
(*
NOTE The list of entity data types will be extended in application resources that use the constructs of this resource.
The invisible_item type selects elements of a picture that may be denoted as invisible.EXPRESS specification:
*)
TYPE
invisible_item
=
EXTENSIBLE
GENERIC_ENTITY
SELECT
(styled_item,
presentation_layer_assignment,
representation);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
marker_select
=
SELECT
(marker_type,
pre_defined_marker);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
marker_type
=
ENUMERATION
OF
(dot,
x,
plus,
asterisk,
ring,
square,
triangle);
END_TYPE;
(*
Enumerated item definitions:
dot: points are presented as dots (.).
x: points are presented as diagonal crosses (x).
plus: points are presented as plus signs (+).
asterisk: points are presented as asterisks (*).
ring: points are presented as circles (◦).
square: points are presented as squares (□).
triangle: points are presented as triangles (△).
The non_negative_real type is a real and its value is restricted to be zero or positive.
EXPRESS specification:
*)
TYPE
non_negative_real
=
REAL;
WHERE
WR1: 0.0 <= SELF;
END_TYPE;
(*
Formal propositions:
WR1: The value of the real shall be greater than or equal to zero.
EXAMPLE A symbol is defined using two annotation_curve_occurrences, which are styled such that one is red and the other is blue. If an instance of the symbol is assigned null_style, it will be presented using the colours specified in the definition.
EXPRESS specification:
*)
TYPE
null_style
=
ENUMERATION
OF
(null);
END_TYPE;
(*
Enumerated item definitions:
null: the representation_item to which the style is applied shall be presented using the style or styles contained in its definition, if any.
EXPRESS specification:
*)
TYPE
presentation_style_select
=
SELECT
(pre_defined_presentation_style,
point_style,
curve_style,
surface_style_usage,
symbol_style,
fill_area_style,
text_style,
texture_style_tessellation_specification,
approximation_tolerance,
externally_defined_style,
null_style);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
product_or_presentation_space
=
ENUMERATION
OF
(product_shape_space,
presentation_area_space);
END_TYPE;
(*
Enumerated item definitions:
product_shape_space: the definition space of the product shape item to be presented.
presentation_area_space: the coordinate space in which the presentation_area is founded.
EXPRESS specification:
*)
TYPE
rendering_properties_select
=
SELECT
(surface_style_reflectance_ambient,
surface_style_transparent);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
shading_curve_method
=
ENUMERATION
OF
(constant_colour,
linear_colour);
END_TYPE;
(*
Enumerated item definitions:
constant_colour: if the curve has a colour association table and is approximated by i polyline segments, the colour state at the segment boundaries shall be interpolated in this table according to the state variable value at each boundary. The i-th polyline segment shall then be shaded in constant colour according to the colour state at the i-th segment start.
linear_colour: if the curve has a colour association table and is approximated by i polyline segments, the colour state at the segment boundaries shall be interpolated in this table according to the state variable value at each boundary. The i-th polyline segment shall then be shaded in linearly interpolated colour according to the colour states at both segment boundaries.
NOTE 1 The descriptions of the different types of surface shading show that in some cases the method involves interpolating results from the lighting, and in other case it involves performing the reflectance calculation after interpolation. For this reason, the shading method may be thought of as selecting a location in a display system's graphics pipeline where interpolation takes place.
NOTE 2 The results of the shading methods should produce the effects according to the enumerated item definitions. One particular case where the effects are difficult to define is when the silhouette of a surface intersects itself or another silhouette of the same surface. In this case, the effect is implementation-dependent.
NOTE 3 The shading methods correspond to those provided by PHIGS PLUS [10].
EXPRESS specification:
*)
TYPE
shading_surface_method
=
ENUMERATION
OF
(constant_shading,
colour_shading,
dot_shading,
normal_shading);
END_TYPE;
(*
Enumerated item definitions:
constant_shading: a reflectance calculation is performed for each facet of the approximated surface to produce one reflected colour per facet. The point on the facet used in the calculation is implementation-dependent. The colour used in the reflectance calculation is the surface_colour specified in the relevant surface_style_rendering entity.
colour_shading: a reflectance calculation is performed at each vertex of each facet of the approximated product shape, using the surface_colour and the surface normals in the vertices. The resulting reflected colours are interpolated linearly across each facet.
dot_shading: any dot products needed by the reflectance equation are calculated from surface normals at a set of positions on the surface. These dot products are interpolated linearly across the surface. The reflectance calculation is performed at each interpolated position of the surface to produce a reflected colour based on the interpolated dot products and the surface_colour of the relevant surface_style_rendering entity.
normal_shading: the surface normals are interpolated linearly across the surface. The reflectance calculation is performed at each interpolated position of the surface to produce a reflected colour based on the interpolated surface normal and the surface_colour of the relevant surface_style_rendering entity.
If the surface_colour is specified through a colour_specification, the interpolation of colours shall be performed in the colour model of that specification. Otherwise the interpolation may be performed in an arbitrary model.
NOTE 4 The result of colour interpolation depends on the colour model in which interpolation is performed.
NOTE 5 Examples of colour models are RGB, HSV, HLS.
NOTE 6 More information about colour models and colour interpolation can be found in [13], pp. 611-620.
EXPRESS specification:
*)
TYPE
size_select
=
SELECT
(positive_length_measure,
measure_with_unit,
descriptive_measure,
pre_defined_size);
END_TYPE;
(*
NOTE See figure 20.
EXPRESS specification:
*)
TYPE
squared_or_rounded
=
ENUMERATION
OF
(squared,
rounded);
END_TYPE;
(*
Enumerated item definitions:
squared: the curve is squared off at its end points and corners.
rounded: a filled semi-circular arc with diameter equal to the curve width is drawn around the curve's end points and corners.
EXPRESS specification:
*)
TYPE
style_context_select
=
SELECT
(group,
context_dependent_shape_representation,
presentation_layer_assignment,
presentation_set,
representation,
representation_item,
representation_relationship);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
styled_item_target
=
SELECT
(geometric_representation_item,
mapped_item,
representation_or_representation_reference,
topological_representation_item);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
surface_side
=
ENUMERATION
OF
(positive,
negative,
both);
END_TYPE;
(*
Enumerated item definitions:
positive: the side of a surface which is in the same direction as the surface normal.
negative: the side of a surface which is in the opposite direction than the surface normal.
both: both sides.
EXPRESS specification:
*)
TYPE
surface_side_style_select
=
SELECT
(surface_side_style,
pre_defined_surface_side_style);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
surface_style_element_select
=
SELECT
(surface_style_fill_area,
surface_style_boundary,
surface_style_silhouette,
surface_style_segmentation_curve,
surface_style_control_grid,
surface_style_parameter_line,
surface_style_rendering);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
surface_tolerance_deviation
=
positive_length_measure;
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
surface_tolerance_parameter
=
REAL;
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
symbol_style_select
=
SELECT
(symbol_element_style,
symbol_colour);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
tessellated_face_or_tessellated_surface_set
=
SELECT
(tessellated_face,
tessellated_surface_set);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
tessellated_surface_item
=
SELECT
(tessellated_face,
tessellated_shell,
tessellated_solid,
tessellated_surface_set);
END_TYPE;
(*
NOTE Application Protocols shall specify legal values of the text_justification and shall associate precise meaning to these values.
EXPRESS specification:
*)
TYPE
text_justification
=
label;
END_TYPE;
(*
The texture_file_type type is an enumeration list of file formats that specifies the image format of a texture mapped to a single_texture_style_tessellation_specification.
EXPRESS specification:
*)
TYPE
texture_file_type
=
ENUMERATION
OF
(JPEG,
PNG,
GIF,
TIFF,
BMP,
DDS,
TGA,
other);
END_TYPE;
(*
Enumerated item definitions:
JPEG: Joint Photographic Experts Group image file format.
PNG: Portable Network Graphics image file format.
GIF: Graphics Interchange Format image file format.
TIFF: Tagged Image File Format image file format.
BMP: Bitmap image file format.
NOTE 1 This format is defined by Microsoft Windows Bitmap Format [16]
DDS: DirectDraw Surface image file format.
NOTE 2 This file format is defined by Microsoft DirectX 7 [17].
TGA: Truevision Graphics Adapter image file format.
NOTE 3 This file format is defined by Truevision Inc. [18].
other: other image file format.
EXPRESS specification:
*)
TYPE
tolerance_deviation_select
=
SELECT
(curve_tolerance_deviation,
surface_tolerance_deviation);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
tolerance_parameter_select
=
SELECT
(curve_tolerance_parameter,
surface_tolerance_parameter);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
tolerance_select
=
SELECT
(approximation_tolerance_deviation,
approximation_tolerance_parameter);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
u_direction_count
=
INTEGER;
WHERE
WR1: SELF > 1;
END_TYPE;
(*
Formal propositions:
WR1: The u direction count shall be greater than 1.
The unsigned_8_bit_integer type is an unsigned integer with binary representation of eight bits.
EXPRESS specification:
*)
TYPE
unsigned_8_bit_integer
=
INTEGER;
WHERE
WR1: { 0 <= SELF <= 255 };
END_TYPE;
(*
Formal propositions:
WR1: The value of the integer shall be in the range 0 to 255 inclusive.
EXPRESS specification:
*)
TYPE
v_direction_count
=
INTEGER;
WHERE
WR1: SELF > 1;
END_TYPE;
(*
Formal propositions:
WR1: The v direction count shall be greater than 1.
EXPRESS specification:
*)
ENTITY approximation_tolerance
SUBTYPE OF (founded_item);
tolerance : tolerance_select;
END_ENTITY;
(*
Attribute definitions:
tolerance: the tolerances to be used for approximating curves and surfaces.
NOTE If no approximation_tolerance is specified, the accuracy of rendering is implementation-dependent.
EXPRESS specification:
*)
ENTITY approximation_tolerance_deviation
SUBTYPE OF (founded_item);
tessellation_type : approximation_method;
tolerances : SET[1:2] OF tolerance_deviation_select;
definition_space : product_or_presentation_space;
WHERE
WR1: (HIINDEX(tolerances) = 1)
XOR
(TYPEOF(tolerances[1]) <> TYPEOF(tolerances[2]));
END_ENTITY;
(*
Attribute definitions:
tessellation_type: the selected approximation_method which determines the kind of tessellation with which curves and surfaces are approximated by graphical primitives.
tolerances: the set of tolerances which specify the maximum allowable deviation for the approximation of curves and surfaces.
definition_space: the coordinate space in which the tolerances are specified. The tolerances can be specified in the definition space of the curve or surface to which the tolerances are applied or in the definition space of the presentation_area which contains the curve or surface.
Formal propositions:
WR1: If there are two members of the tolerances set, they shall not be of the same type.
EXPRESS specification:
*)
ENTITY approximation_tolerance_parameter
SUBTYPE OF (founded_item);
tolerances : SET[1:2] OF tolerance_parameter_select;
WHERE
WR1: (HIINDEX (tolerances) = 1 )
XOR
(TYPEOF (tolerances[1]) <> TYPEOF (tolerances[2]));
END_ENTITY;
(*
Attribute definitions:
tolerances: the set of tolerances used for approximating curves and surfaces. Curves and surfaces are approximated in such a way that uniform steps in parameter space are taken as the basis of the approximation. The specified lengths are measured in parameter space units.
Formal propositions:
WR1: If there are two members of the tolerances set, they shall not be of the same type.
EXPRESS specification:
*)
ENTITY character_glyph_style_outline
SUBTYPE OF (founded_item);
outline_style : curve_style;
END_ENTITY;
(*
Attribute definitions:
outline_style: the curve_style applied to the curves which define a character_glyph_symbol_outline.
EXPRESS specification:
*)
ENTITY character_glyph_style_outline_with_characteristics
SUBTYPE OF (character_glyph_style_outline);
characteristics : fill_area_style;
END_ENTITY;
(*
Attribute definitions:
characteristics: the characteristics about the regions of the character glyph.
EXPRESS specification:
*)
ENTITY character_glyph_style_stroke
SUBTYPE OF (founded_item);
stroke_style : curve_style;
END_ENTITY;
(*
Attribute definitions:
stroke_style: the curve_style applied to the curves which define a character_glyph_symbol_stroke.
EXAMPLE A symbol is included as an item in two separate views, but is to be presented in only the first view. A context_dependent_invisibility is used to specify that the symbol is not visible in the second view, by specifying this view as the context for the invisibility.
EXPRESS specification:
*)
ENTITY context_dependent_invisibility
SUBTYPE OF (invisibility);
presentation_context : invisibility_context;
END_ENTITY;
(*
Attribute definitions:
presentation_context: the presentation_set, presentation_representation, or presentation_layer_usage that provides the context for the specification of invisibility.
EXAMPLE A circle instance is used by geometric_curve_set instance 1 which is an item in representation instance 1. In this example the instance of circle represents the head of a screw in a door hinge. A styled_item instance is an item in representation instance 1. That styled_item has the geometric_curve_set as its item, and a presentation_style_assignment with a curve_style which has a colour of blue. The representation instance 1 is included in representation instance 2 through the use of representation_map instance 1 and mapped_item instance 1, as one hinge on a door. The representation instance 1 is included in a different location in representation instance 2 through representation_map 2 and mapped_item instance 2 as a second hinge. An instance of context_dependent_over_riding_styled_item is also an item in representation instance 2. That context_dependent_over_riding_styled_item has the circle instance as its item, the styled_item instance as its over_ridden_style, a presentation_style_assignment with a curve_style which has a colour of red, and a style_context of mapped_item instance 1. The red color for the circle takes precedence over the blue color of the geometric_curve_set for a representation of the geometric_curve_set as it is included in the presentation through mapped_item instance 1. A presentation of representation instance 2 would have the geometric_curve_set presented in two different places, the first having a red screw head and all the other curves blue, the second having all the curves blue.
EXPRESS specification:
*)
ENTITY context_dependent_over_riding_styled_item
SUBTYPE OF (over_riding_styled_item);
style_context : LIST[1:?] OF style_context_select;
WHERE
WR1: (SIZEOF(QUERY(sc <* style_context | 'REPRESENTATION_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF(sc)))= 1) OR
(SIZEOF(QUERY(sc <* style_context |
('REPRESENTATION_SCHEMA.MAPPED_ITEM' IN TYPEOF(sc))
OR ('PRESENTATION_APPEARANCE_SCHEMA.CONTEXT_DEPENDENT_SHAPE_REPRESENTATION' IN TYPEOF(sc))
OR ('REPRESENTATION_SCHEMA.REPRESENTATION_RELATIONSHIP' IN TYPEOF(sc)) ))
= SIZEOF(style_context));
END_ENTITY;
(*
Attribute definitions:
style_context: a list of one or more contexts for the overriding of the overridden style.
Formal propositions:
WR1: There shall be only one representation_item or all style_contexts are mapped_items or all style_contexts are context_dependent_shape_representation or representation_relationships.
EXPRESS specification:
*)
ENTITY curve_style
SUBTYPE OF (founded_item);
name : label;
curve_font :
OPTIONAL
curve_font_or_scaled_curve_font_select;
curve_width :
OPTIONAL
size_select;
curve_colour :
OPTIONAL
colour;
WHERE
WR1: EXISTS(curve_font) OR EXISTS(curve_width) OR EXISTS(curve_colour);
END_ENTITY;
(*
Attribute definitions:
name: the word, or group of words, by which the curve_style is referred to.
curve_font: the curve_style_font, scaled curve_style_font, pre_defined_curve_font, scaled pre_defined_curve_font, externally_defined_curve_font, or scaled externally_defined_curve_font which is used to present a curve.
curve_width: the width of the visible part of the presented curve in presentation_area units.
curve_colour: the colour of the visible part of the curve.
Formal propositions:
WR1: At least one of curve_font, curve_width or curve_colour shall be defined.
NOTE Figure 21 shows the definition of curve_style_curve_pattern.
EXPRESS specification:
*)
ENTITY curve_style_curve_pattern
SUBTYPE OF (geometric_representation_item);
pattern : annotation_curve_occurrence;
pattern_length : positive_length_measure;
END_ENTITY;
(*
Attribute definitions:
pattern: the repetitive pattern for filling the curve. The pattern is defined as an annotation_curve_occurrence and is therefore itself associated with a presentation style.
pattern_length: the length of the pattern in presentation_area units.
EXPRESS specification:
*)
ENTITY curve_style_curve_pattern_set
SUBTYPE OF (curve_style_font, geometric_representation_item);
pattern_set : SET[1:?] OF curve_style_curve_pattern;
END_ENTITY;
(*
Attribute definitions:
pattern_set: the repetitive pattern_set consists of a set of curve_style_curve_patterns.
Informal propositions:
IP1: The curve starts always with a complete pattern.
IP2: The curve pattern is clipped off at the end of the curve and may therefore be incomplete.
EXPRESS specification:
*)
ENTITY curve_style_font
SUBTYPE OF (founded_item);
name : label;
pattern_list : LIST[1:?] OF curve_style_font_pattern;
END_ENTITY;
(*
Attribute definitions:
name: the word, or group of words, by which the curve_style_font is referred to.
pattern_list: a list of curve_style_font_patterns that contains the patterns used for drawing curves. The patterns are applied in the order in which they occur in the list.
Informal propositions:
IP1: The curve starts always with a complete pattern.
IP2: The font pattern is clipped off at the end of the curve and may therefore be incomplete.
EXPRESS specification:
*)
ENTITY curve_style_font_and_scaling
SUBTYPE OF (founded_item);
name : label;
curve_font : curve_style_font_select;
curve_font_scaling : REAL;
END_ENTITY;
(*
Attribute definitions:
name: the word, or group of words, by which the curve_style_font_and_scaling is referred to.
curve_font: the curve_font to be scaled.
curve_font_scaling: the scale factor.
EXPRESS specification:
*)
ENTITY curve_style_font_pattern
SUBTYPE OF (founded_item);
visible_segment_length : positive_length_measure;
invisible_segment_length : positive_length_measure;
END_ENTITY;
(*
Attribute definitions:
visible_segment_length: the length of the visible segment in the pattern definition measured in presentation_area units.
invisible_segment_length: the length of the invisible segment in the pattern definition measured in presentation_area units.
EXPRESS specification:
*)
ENTITY curve_style_rendering;
rendering_method : shading_curve_method;
rendering_properties : surface_rendering_properties;
END_ENTITY;
(*
Attribute definitions:
rendering_method: specifies the method which shall be used for interpolating colours along curves on a surface.
rendering_properties: specifies the rendering properties of the surface which contains the curves.
EXPRESS specification:
*)
ENTITY curve_style_wide
SUBTYPE OF (curve_style_font);
interior_style : fill_area_style;
END_ENTITY;
(*
Attribute definitions:
interior_style: the style for filling the visible curve segments with tiles or hatches.
EXPRESS specification:
*)
ENTITY curve_style_with_ends_and_corners
SUBTYPE OF (curve_style);
curve_ends : squared_or_rounded;
curve_corners : squared_or_rounded;
WHERE
WR1: EXISTS(curve_width);
END_ENTITY;
(*
Attribute definitions:
curve_ends: an indication of how to present the ends of a curve.
curve_corners: an indication of how to present the corners of a curve.
Formal propositions:
WR1: A value for curve_width shall be provided.
EXPRESS specification:
*)
ENTITY curve_style_with_extension
SUBTYPE OF (curve_style);
curve_extensions : length_measure;
WHERE
WR1: EXISTS(curve_width);
END_ENTITY;
(*
Attribute definitions:
curve_extensions: a length_measure indicating how to lengthen or shorten the ends of a curve. If the length_measure is positive, the curve shall be extended at both ends in a tangential direction by the specified length in presentation_area units. If the length_measure is negative, the curve shall be shortened by the absolute value of the specified length in presentation_area units.
NOTE See figure 22.
Formal propositions:
WR1: A value for curve_width shall be provided.
Table 1 states the lengths of each line segment and space, in millimetres, corresponding to each of the predefined curve fonts that are specified in this part of ISO 10303. If the pre_defined_curve_font is used as part of the definition of a curve_style_font_and_scaling, then the given lengths are those when the curve_font_scaling attribute has the value 1.0.
NOTE 1 The curve_style_font_and_scaling is defined in ISO 10303-46.
NOTE 2 Illustrations of curve fonts are given in Figure 23.
Table 1 — Line segment and space lengths for predefined curve fonts
Curve pattern name |
Segment (mm) |
Space (mm) |
Segment (mm) |
Space (mm) |
Segment (mm) |
Space (mm) |
Number of segments |
---|---|---|---|---|---|---|---|
Continuous | 0 | ||||||
Dashed | 4.0 | 1.5 | 2 | ||||
Chain | 7.0 | 1.0 | 1.0 | 1.0 | 4 | ||
Chain double dash | 7.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 6 |
Dotted | 1.0 | 1.0 | 2 |
EXPRESS specification:
*)
ENTITY draughting_pre_defined_curve_font
SUBTYPE OF (pre_defined_curve_font);
WHERE
WR1: SELF\pre_defined_item.name IN
['continuous',
'chain',
'chain double dash',
'dashed',
'dotted'];
END_ENTITY;
(*
Formal propositions:
WR1: The name of the draughting_pre_defined_curve_font shall be ’continuous’, ’chain’, ’chain double dash’, ’dashed’, or ’dotted’.
EXPRESS specification:
*)
ENTITY externally_defined_curve_font
SUBTYPE OF (externally_defined_item);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY externally_defined_hatch_style
SUBTYPE OF (externally_defined_item, geometric_representation_item);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY externally_defined_style
SUBTYPE OF (externally_defined_item, founded_item);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY externally_defined_tile
SUBTYPE OF (externally_defined_item);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY externally_defined_tile_style
SUBTYPE OF (externally_defined_item, geometric_representation_item);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY fill_area_style
SUBTYPE OF (founded_item);
name : label;
fill_styles : SET[1:?] OF fill_style_select;
WHERE
WR1: SIZEOF(QUERY(fill_style <* fill_styles |
'PRESENTATION_APPEARANCE_SCHEMA.'+
'FILL_AREA_STYLE_COLOUR' IN
TYPEOF(fill_style)
)) <= 1;
END_ENTITY;
(*
Attribute definitions:
name: the word, or group of words, by which the fill_area_style is referred to.
fill_styles: the set of fill area styles to use in presenting visible curve segments, annotation fill areas, or surfaces.
Formal propositions:
WR1: There shall be not more than one fill_area_style_colour in the fill_styles set.
EXPRESS specification:
*)
ENTITY fill_area_style_colour;
name : label;
fill_colour : colour;
END_ENTITY;
(*
Attribute definitions:
name: the word, or group of words, by which the fill_area_style_colour is referred to.
fill_colour: the colour to be used for filling the area.
NOTE Figure 24 shows the definition of fill_area_style_hatching.
EXPRESS specification:
*)
ENTITY fill_area_style_hatching
SUBTYPE OF (geometric_representation_item);
hatch_line_appearance : curve_style;
start_of_next_hatch_line : one_direction_repeat_factor;
point_of_reference_hatch_line : cartesian_point;
pattern_start : cartesian_point;
hatch_line_angle : plane_angle_measure;
END_ENTITY;
(*
Attribute definitions:
hatch_line_appearance: the curve_style of the hatching lines. Any curve_style pattern shall start at the origin of each hatch line. The origin of the reference hatch line is specified by pattern_start. The origin of any other hatch line is determined by adding a multiple of start_of_next_hatch_line to pattern_start.
start_of_next_hatch_line: the displacement between adjacent hatch lines, specified as a vector.
point_of_reference_hatch_line: the origin for mapping the fill_area_style_hatching onto a curve, annotation fill area, or surface.
pattern_start: the start point for the curve_style of the point_of_reference_hatch_line.
hatch_line_angle: the angle determining the direction of the parallel hatching lines.
EXPRESS specification:
*)
ENTITY fill_area_style_tile_coloured_region
SUBTYPE OF (geometric_representation_item);
closed_curve : curve_or_annotation_curve_occurrence;
region_colour : colour;
WHERE
WR1: (NOT('GEOMETRY_SCHEMA.CURVE' IN TYPEOF (closed_curve))) OR
('GEOMETRY_SCHEMA.CIRCLE' IN TYPEOF (closed_curve)) OR
('GEOMETRY_SCHEMA.ELLIPSE' IN TYPEOF (closed_curve)) OR
( ('GEOMETRY_SCHEMA.B_SPLINE_CURVE' IN TYPEOF (closed_curve))
AND (closed_curve\b_spline_curve.closed_curve = TRUE) ) OR
( ('GEOMETRY_SCHEMA.COMPOSITE_CURVE' IN TYPEOF (closed_curve))
AND (closed_curve\composite_curve.closed_curve = TRUE) ) OR
( ('GEOMETRY_SCHEMA.POLYLINE' IN TYPEOF (closed_curve))
AND (closed_curve\polyline.points[LOINDEX(closed_curve\polyline.points)] =
closed_curve\polyline.points[HIINDEX(closed_curve\polyline.points)]) );
END_ENTITY;
(*
Attribute definitions:
closed_curve: the closed curve which defines a coloured region. The referenced curve may also be associated with style.
region_colour: the colour of that region which is defined by the interior of the closed curve.
Formal propositions:
WR1: The closed_curve shall be closed and not self-intersecting.
EXPRESS specification:
*)
ENTITY fill_area_style_tile_curve_with_style
SUBTYPE OF (geometric_representation_item);
styled_curve : annotation_curve_occurrence;
END_ENTITY;
(*
Attribute definitions:
styled_curve: the two-dimensional styled curve defined in the local coordinate system of a fill area tile.
EXPRESS specification:
*)
ENTITY fill_area_style_tile_symbol_with_style
SUBTYPE OF (geometric_representation_item);
symbol : annotation_symbol_occurrence;
END_ENTITY;
(*
Attribute definitions:
symbol: a styled annotation symbol.
EXPRESS specification:
*)
ENTITY fill_area_style_tiles
SUBTYPE OF (geometric_representation_item);
tiling_pattern : two_direction_repeat_factor;
tiles : SET[1:?] OF fill_area_style_tile_shape_select;
tiling_scale : positive_ratio_measure;
END_ENTITY;
(*
Attribute definitions:
tiling_pattern: the two_direction_repeat_factor defining the shape and relative positioning of the tiles.
tiles: the set of constituents of the tile.
tiling_scale: the scaling factor applied to each tile as it is placed in the annotation_fill_area.
EXPRESS specification:
*)
ENTITY invisibility;
invisible_items : SET[1:?] OF invisible_item;
END_ENTITY;
(*
Attribute definitions:
invisible_items: a set of styled_items, presentation_layer_assignments, or presentation_representations that are denoted as being invisible.
This relationship is transitive. If entity A hides entity B, and entity B hides entity C, then entity A also hides entity C.
This relationship only applies if the two entities are in the same representation.
NOTE If two such entities overlap and do not participate in an occlusion_precedence relationship, which entity has precedence is up to the particular implementation which presents it.
EXPRESS specification:
*)
ENTITY occlusion_precedence;
higher_precedence : hiding_or_blanking_select;
lower_precedence : hiding_or_blanking_select;
occlusion_context : representation;
WHERE
WR1: acyclic_occlusion_precedence (SELF, [lower_precedence]);
END_ENTITY;
(*
Attribute definitions:
higher_precedence: the entity which can blank or hide the lower_precedence entity.
lower_precedence: the entity which can be blanked or hidden by the higher_precedence entity.
occlusion_context: the representation in which the precedence has meaning.
Formal propositions:
WR1: An occlusion_precedence entity shall not participate in a tree of hiding_or_blanking_select entities where the root of the tree is also a leaf of its own tree.
NOTE Figure 25 shows the positions defined by a one_direction_repeat_factor.
EXPRESS specification:
*)
ENTITY one_direction_repeat_factor
SUBTYPE OF (geometric_representation_item);
repeat_factor : vector;
END_ENTITY;
(*
Attribute definitions:
repeat_factor: the vector which specifies the relative positioning of hatch lines.
EXAMPLE A circle instance is used by a geometric_curve_set which is an item in a representation. A styled_item instance is an item in the same representation. That styled_item has the geometric_curve_set as its item, and a presentation_style_assignment with a curve_style which has a colour of blue. An instance of over_riding_styled_item is also an item in the same representation. That over_riding_styled_item has the circle instance as its item, the styled_item instance as its over_ridden_style, and a presentation_style_assignment with a curve_style which has a colour of red. The red colour for the circle takes precedence over the blue colour of the geometric_curve_set for a presentation of the geometric_curve_set.
EXPRESS specification:
*)
ENTITY over_riding_styled_item
SUBTYPE OF (styled_item);
over_ridden_style : styled_item;
END_ENTITY;
(*
Attribute definitions:
over_ridden_style: the styled_item that will have its style overridden.
EXPRESS specification:
*)
ENTITY point_style
SUBTYPE OF (founded_item);
name : label;
marker :
OPTIONAL
marker_select;
marker_size :
OPTIONAL
size_select;
marker_colour :
OPTIONAL
colour;
WHERE
WR1: EXISTS(marker) OR EXISTS(marker_size) OR EXISTS(marker_colour);
END_ENTITY;
(*
Attribute definitions:
name: the word, or group of words, by which the point_style is referred to.
marker: the kind of marker which shall be used to present a point.
marker_size: the size in presentation_area units used for drawing the marker.
marker_colour: the colour to be applied to the marker.
Formal propositions:
WR1: at least one of the OPTIONAL attributes marker, marker_style or marker_colour shall exist.
NOTE Application Resources or Application Protocols specify the use of this entity.
EXPRESS specification:
*)
ENTITY pre_defined_character_spacing
SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*
NOTE Application Resources or Application Protocols specify the use of this entity.
EXPRESS specification:
*)
ENTITY pre_defined_curve_font
SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*
NOTE Application Resources or Application Protocols specify the use of this entity.
EXPRESS specification:
*)
ENTITY pre_defined_hatch_style
SUBTYPE OF (pre_defined_item, geometric_representation_item);
END_ENTITY;
(*
NOTE Application Resources or Application Protocols specify the use of this entity.
EXPRESS specification:
*)
ENTITY pre_defined_marker
SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*
NOTE Application Resources or Application Protocols specify the use of this entity.
EXPRESS specification:
*)
ENTITY pre_defined_presentation_style
SUBTYPE OF (founded_item, pre_defined_item);
END_ENTITY;
(*
NOTE Application Resources or Application Protocols specify the use of this entity.
EXPRESS specification:
*)
ENTITY pre_defined_size
SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*
NOTE Application Resources or Application Protocols specify the use of this entity.
EXPRESS specification:
*)
ENTITY pre_defined_surface_side_style
SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*
NOTE Application Resources or Application Protocols specify the use of this entity.
EXPRESS specification:
*)
ENTITY pre_defined_tile
SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*
NOTE Application Resources or Application Protocols specify the use of this entity.
EXPRESS specification:
*)
ENTITY pre_defined_tile_style
SUBTYPE OF (pre_defined_item, geometric_representation_item);
END_ENTITY;
(*
EXAMPLE If a line is given a style which is a curve style, it shall appear. If a line is given both curve and point style, both the curve and its related cartesian points shall appear.
EXPRESS specification:
*)
ENTITY presentation_style_assignment
SUBTYPE OF (founded_item);
styles : SET[1:?] OF presentation_style_select;
WHERE
WR1: SIZEOF (QUERY (style1 <* styles |
NOT (SIZEOF (QUERY (style2 <* (styles - style1) |
NOT ((TYPEOF (style1) <> TYPEOF (style2)) OR
(SIZEOF (['PRESENTATION_APPEARANCE_SCHEMA.' +
'SURFACE_STYLE_USAGE',
'PRESENTATION_APPEARANCE_SCHEMA.'+
'EXTERNALLY_DEFINED_STYLE'] *
TYPEOF (style1)) = 1)
))) = 0
))) = 0;
WR2: SIZEOF (QUERY (style1 <* styles |
'PRESENTATION_APPEARANCE_SCHEMA.SURFACE_STYLE_USAGE' IN
TYPEOF(style1)
)) <= 2;
WR3: SIZEOF (QUERY (style1 <* styles |
('PRESENTATION_APPEARANCE_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF (style1)) AND
(SIZEOF (QUERY (style2 <* (styles - style1) |
('PRESENTATION_APPEARANCE_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF (style2)) AND
((style1\surface_style_usage.side = both) OR
(style2\surface_style_usage.side = both) OR
(style1\surface_style_usage.side = style2\surface_style_usage.side)) )) > 0))) = 0;
END_ENTITY;
(*
Attribute definitions:
styles: the set of presentation styles that are assigned to a representation_item.
Formal propositions:
WR1: The same style shall not appear more than once in the set of styles, except for externally_defined_style and surface_style_usage.
WR2: The surface_style_usage shall not occur more than twice in the set of styles.
WR3: If there are two instances of surface_style_usage in the set of styles, each shall specify the style for opposite sides of the surface being styled.
Informal propositions:
IP1: Externally defined styles shall not conflict with other styles in the same presentation_style_assignment entity, including other externally defined styles.
NOTE For one style to conflict with the other, it specifies a different style for the same characteristic, such as colour or width. For example, one style might say blue, the other green, and both be applied to the same entity.
EXPRESS specification:
*)
ENTITY presentation_style_by_context
SUBTYPE OF (presentation_style_assignment);
style_context : style_context_select;
END_ENTITY;
(*
Attribute definitions:
style_context: the presentation context in which a style is assigned to a representation_item.
A single_texture_style_tessellation_specification is a type of texture_style_tessellation_specification that defines a visual texture. The texture_coordinates is an array, whose elements are implicitly associated to coordinates in the tessellated geometry that is associated with this entity when it is used. The texture is defined in an external file.
EXPRESS specification:
*)
ENTITY single_texture_style_tessellation_specification
SUBTYPE OF (texture_style_tessellation_specification);
texture_image : label;
texture_coordinates : LIST[1:?] OF LIST[2:2] OF non_negative_real;
texture_format : texture_file_type;
repeating_pattern : BOOLEAN;
END_ENTITY;
(*
Attribute definitions:
texture_image: the name of the external image file containing the texture to be mapped to a tessellated_face_or_tessellated_surface_set .
NOTE The name should include the format extension corresponding to one of the formats enumerated in texture_file_type.
texture_coordinates: the list of (U,V) texture coordinates associated to the 3D coordinates of the points of the associated tessellated geometry. When the texture is mapped on a tessellated_face without pnindex, the first element of the list is the texture (U,V) value of the first point of the associated coordinates_list. When the texture is mapped on a tessellated_face with pnindex , the first element of the list is the texture (U,V) value of the first point indicated by pnindex. When the texture is mapped on a tessellated_surface_set, the first element of the list is the texture (U,V) value of the first point of the associated coordinates_list.
texture_format: the name of the format extension of the external image file containing the texture to be mapped to the tessellated_face_or_tessellated_surface_set.
repeating_pattern: when repeating_pattern is FALSE, U and V value range for texture_coordinates shall be 0.0 to 1.0, where (0,0) is the bottom-left corner and (1,1) is the top-right corner of the texture image. When repeating_pattern is TRUE, U and V values greater than 0.0 are permitted; in this case the integer part is subtracted to obtain a number in a range 0.0 to 1.0 for the texture mapping.
EXPRESS specification:
*)
ENTITY styled_item
SUBTYPE OF (representation_item);
styles : SET[0:?] OF presentation_style_assignment;
item : styled_item_target;
WHERE
WR1: (SIZEOF(styles) = 0) AND ( 'PRESENTATION_APPEARANCE_SCHEMA.STYLED_TESSELLATED_ITEM_WITH_COLOURS' IN TYPEOF(self))
OR
(SIZEOF(styles) = 1)
OR
(SIZEOF(styles) > 1) AND (SIZEOF(QUERY(pres_style <* styles | NOT ('PRESENTATION_APPEARANCE_SCHEMA.' + 'PRESENTATION_STYLE_BY_CONTEXT'
IN TYPEOF(pres_style)))) = 0);
WR2: NOT ('PRESENTATION_APPEARANCE_SCHEMA.STYLED_ITEM' IN TYPEOF(item));
WR3: ('REPRESENTATION_SCHEMA.MAPPED_ITEM' IN TYPEOF(item)) OR
('GEOMETRY_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF(item)) OR
('PRESENTATION_APPEARANCE_SCHEMA.CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM' IN TYPEOF(SELF));
END_ENTITY;
(*
Attribute definitions:
styles: the styles assigned to the item.
item: the item to which styles are assigned.
Formal propositions:
WR1: The set styles shall contain only one style or all members of the set shall be presentation_style_by_context entities.
NOTE This is to ensure that there are no style conflicts; more than one style may be specified only when the context in which each style applies is given.
WR2: The item to be styled shall not be a styled_item.
WR3: Unless the styled_item is a context_dependent_over_riding_styled_item, the styled item shall either be a mapped_item or a geometric_representation_item.
A styled_tessellated_face_or_surface_with_single_texture is a type of styled_item that assigns a visual texture to tessellated geometry, which may be either a tessellated_face or a collection of tessellated faces defined in a tessellated_surface_set .
EXPRESS specification:
*)
ENTITY styled_tessellated_face_or_surface_with_single_texture
SUBTYPE OF (styled_item);
SELF\styled_item.styles : SET[1:1] OF presentation_style_assignment;
SELF\styled_item.item : tessellated_face_or_tessellated_surface_set;
DERIVE
texture_style_specification : texture_style_tessellation_specification := styles[LOINDEX(styles)]\presentation_style_assignment.styles[LOINDEX(styles)];
WHERE
WR1: ('PRESENTATION_APPEARANCE_SCHEMA.SINGLE_TEXTURE_STYLE_TESSELLATION_SPECIFICATION' IN TYPEOF(styles[LOINDEX(styles)]\presentation_style_assignment.styles[LOINDEX(styles)]))
AND (SIZEOF(styles[LOINDEX(styles)]\presentation_style_assignment.styles) = 1);
WR2: NOT ('GEOMETRIC_MODEL_SCHEMA.TRIANGULATED_FACE' IN TYPEOF(item))
OR
((
((SIZEOF(item\triangulated_face.pnindex) > 0) AND (SIZEOF(texture_style_specification\single_texture_style_tessellation_specification.texture_coordinates)
= SIZEOF(item\triangulated_face.pnindex))))
OR
((SIZEOF(item\triangulated_face.pnindex) = 0) AND (SIZEOF(texture_style_specification\single_texture_style_tessellation_specification.texture_coordinates)
= item\tessellated_face.coordinates\coordinates_list.npoints)));
WR3: NOT ('GEOMETRIC_MODEL_SCHEMA.COMPLEX_TRIANGULATED_FACE' IN TYPEOF(item))
OR
((SIZEOF(item\complex_triangulated_face.pnindex) > 0) AND (SIZEOF(texture_style_specification\single_texture_style_tessellation_specification.texture_coordinates)
= SIZEOF(item\complex_triangulated_face.pnindex)))
OR
((SIZEOF(item\complex_triangulated_face.pnindex) = 0) AND (SIZEOF(texture_style_specification\single_texture_style_tessellation_specification.texture_coordinates)
= item\tessellated_face.coordinates\coordinates_list.npoints));
WR4: NOT ('GEOMETRIC_MODEL_SCHEMA.TESSELLATED_SURFACE_SET' IN TYPEOF(item))
OR
(SIZEOF(texture_style_specification\single_texture_style_tessellation_specification.texture_coordinates) = item\tessellated_surface_set.coordinates\coordinates_list.npoints);
END_ENTITY;
(*
Attribute definitions:
styles: specifies the presentation_style_assignment that specifies the texture defined by a texture_style_tessellation_specification.
NOTE The actual appearance is realized in the model by the presentation_style_assignment entity referenced by the appearance attribute.
item: specifies the tessellated geometry to which the texture style is applied.
texture_style_specification: specifies the visual texture to be applied.
Formal propositions:
WR1: the SET of styles shall contain only one element.
WR2: if the item styled is a triangulated_face then the size of the texture_coordinates of the associated single_texture_style_tessellation_specification shall be equal to the number of points defining the triangulated_face; this number is obtained from either the pnindex attribute of triangulated_face (if non-zero), or from the npoints attribute of the coordinates_list of the triangulated_face.
WR3: if the item styled is a complex_triangulated_face then the size of the texture_coordinates of the associated single_texture_style_tessellation_specification shall be equal to the number of points defining the complex_triangulated_face; this number is obtained from either the pnindex attribute of complex_triangulated_face (if non zero), or from the npoints attribute of the coordinates_list of the complex_triangulated_face.
WR4: if the item styled is a tessellated_surface_set then the size of the texture_coordinates of the associated single_texture_style_tessellation_specification shall be equal to the number of points defining the tessellated_surface_set; this number is obtained from the npoints attribute of the coordinates_list of the tessellated_surface_set.
A styled_tessellated_item_with_colours is a type of styled_item that assigns colour values to the vertices of tessellated surfaces.
EXPRESS specification:
*)
ENTITY styled_tessellated_item_with_colours
SUBTYPE OF (styled_item);
SELF\styled_item.item : tessellated_surface_item;
colour_type : colour_type_enum;
colour_values : LIST[1:?] OF LIST[3:4] OF unsigned_8_bit_integer;
DERIVE
coloured_coordinate_values : coordinates_list := get_coordinate_values(item );
WHERE
WR1: SIZEOF(SELF\styled_item.styles)= 0;
WR2: ((colour_type = RGB8) AND (SIZEOF(QUERY(clist <* colour_values | NOT (SIZEOF(clist) = 3)))= 0)) OR
((colour_type = RGBT8) AND (SIZEOF(QUERY(clist <* colour_values | NOT (SIZEOF(clist) = 4)))= 0));
WR3: SIZEOF(colour_values) = coloured_coordinate_values\coordinates_list.npoints;
END_ENTITY;
(*
Attribute definitions:
item: the tessellated geometry to which the colours are assigned, this may be a tessellated_face, a tessellated_shell, a tessellated_solid, or a tessellated_surface_set.
colour_type: the colour formats used by the colour_values attribute.
colour_values: an unlimited list of three or four integers representing a vertex colour.
coloured_coordinate_values: the coordinates_list of the tessellated_surface_item specified by the item attribute; this coordinates_list is populated by the get_coordinate_values function.
Formal propositions:
WR1: The inherited styles attribute be an empty SET.
WR2: If the colour_type is RGB8 then colour_values shall be a list of three unsigned eight-bit integers, or, if the colour_type is RGBT8 then colour_values shall be a list of four unsigned eight-bit integers.
WR3: The number of colour_values shall be equal to the number of points in the associated coordinates_list.
EXPRESS specification:
*)
ENTITY surface_rendering_properties;
rendered_colour : colour;
END_ENTITY;
(*
Attribute definitions:
rendered_colour: the presentation colour of a surface for use during the rendering process.
EXPRESS specification:
*)
ENTITY surface_side_style
SUBTYPE OF (founded_item);
name : label;
styles : SET[1:7] OF surface_style_element_select;
WHERE
WR1: SIZEOF(QUERY( style1 <* styles |
SIZEOF(QUERY( style2 <* styles - style1 |
TYPEOF(style1) = TYPEOF(style2)
)) > 0
)) = 0;
END_ENTITY;
(*
Attribute definitions:
name: the word, or group of words, by which the surface_side_style is referred to.
styles: a collection of different surface styles.
Formal propositions:
WR1: All of the styles shall be of different types.
EXPRESS specification:
*)
ENTITY surface_style_boundary
SUBTYPE OF (founded_item);
style_of_boundary : curve_or_render;
END_ENTITY;
(*
Attribute definitions:
style_of_boundary: the style for the boundary curves of a surface.
EXPRESS specification:
*)
ENTITY surface_style_control_grid
SUBTYPE OF (founded_item);
style_of_control_grid : curve_or_render;
END_ENTITY;
(*
Attribute definitions:
style_of_control_grid: the style for the control grid of a surface.
NOTE This style has only an effect on surfaces which are defined over a mesh of control points. These surfaces include the following types:
EXPRESS specification:
*)
ENTITY surface_style_fill_area
SUBTYPE OF (founded_item);
fill_area : fill_area_style;
END_ENTITY;
(*
Attribute definitions:
fill_area: the fill_area_style associated with the two-dimensional parameter space of a surface that will be mapped onto the surface itself.
EXPRESS specification:
*)
ENTITY surface_style_parameter_line
SUBTYPE OF (founded_item);
style_of_parameter_lines : curve_or_render;
direction_counts : SET[1:2] OF direction_count_select;
WHERE
WR1: (HIINDEX(direction_counts) = 1)
XOR
(TYPEOF(direction_counts[1]) <>
TYPEOF(direction_counts[2]));
END_ENTITY;
(*
Attribute definitions:
style_of_parameter_lines: the style for the iso-parameter curves of a surface.
direction_counts: a set of u_direction_count and v_direction_count indicating the number of iso-parameter curves in the u and v directions.
Formal propositions:
WR1: If there are two members of the direction_counts set, they shall not be of the same type.
NOTE 1 The reflectance calculation is conceptually applied at one or more points on a surface being lit and shaded and produces a colour at such points. Input to the reflectance calculation includes the position at which the reflectance equation is to be applied, the surface normal, the surface colour at that position, the light sources, and the three-dimensional camera model.
NOTE 2 Suggested reflectance equations can be found in Annex E.
EXPRESS specification:
*)
ENTITY surface_style_reflectance_ambient;
ambient_reflectance : REAL;
END_ENTITY;
(*
Attribute definitions:
ambient_reflectance: the reflectance coefficient for the ambient part of the reflectance equation.
NOTE Suggested reflectance equations can be found in Annex E.
EXPRESS specification:
*)
ENTITY surface_style_reflectance_ambient_diffuse
SUBTYPE OF (surface_style_reflectance_ambient);
diffuse_reflectance : REAL;
END_ENTITY;
(*
Attribute definitions:
diffuse_reflectance: the reflectance coefficient for the diffuse part of the reflectance equation.
NOTE Suggested reflectance equations can be found in Annex E.
EXPRESS specification:
*)
ENTITY surface_style_reflectance_ambient_diffuse_specular
SUBTYPE OF (surface_style_reflectance_ambient_diffuse);
specular_reflectance : REAL;
specular_exponent : REAL;
specular_colour : colour;
END_ENTITY;
(*
Attribute definitions:
specular_reflectance: the reflectance coefficient for the specular part of the reflectance equation.
specular_exponent: the exponent for the specular part of the reflectance equation.
specular_colour: the colour for the specular part of the reflectance equation.
EXPRESS specification:
*)
ENTITY surface_style_rendering;
rendering_method : shading_surface_method;
surface_colour : colour;
END_ENTITY;
(*
Attribute definitions:
rendering_method: the method for interpolating colours across surfaces.
surface_colour: the colour used to render the surface.
EXPRESS specification:
*)
ENTITY surface_style_rendering_with_properties
SUBTYPE OF (surface_style_rendering);
properties : SET[1:2] OF rendering_properties_select;
WHERE
WR1: (HIINDEX(properties) = 1)
XOR
(TYPEOF(properties[1]) <> TYPEOF(properties[2]));
END_ENTITY;
(*
Attribute definitions:
properties: the collection of rendering properties for a surface.
Formal propositions:
WR1: All of the properties shall be of different types.
EXPRESS specification:
*)
ENTITY surface_style_segmentation_curve
SUBTYPE OF (founded_item);
style_of_segmentation_curve : curve_or_render;
END_ENTITY;
(*
Attribute definitions:
style_of_segmentation_curve: the style for the segmentation curves of a surface.
NOTE This style has only an effect on surfaces which have segmentation curves. These surfaces include the following types:
EXPRESS specification:
*)
ENTITY surface_style_silhouette
SUBTYPE OF (founded_item);
style_of_silhouette : curve_or_render;
END_ENTITY;
(*
Attribute definitions:
style_of_silhouette: the style for the silhouette curves within a surface.
EXPRESS specification:
*)
ENTITY surface_style_transparent;
transparency : REAL;
WHERE
WR1: {0.0 <= transparency <= 1.0};
END_ENTITY;
(*
Attribute definitions:
transparency: the degree of transparency indicated by the percentage of light traversing the surface.
Formal propositions:
WR1: The transparency shall be between 0.0 and 1.0.
EXPRESS specification:
*)
ENTITY surface_style_usage
SUBTYPE OF (founded_item);
side : surface_side;
style : surface_side_style_select;
END_ENTITY;
(*
Attribute definitions:
side: the indication of which side of the surface to apply the style.
style: the style which shall be applied to the surface.
EXPRESS specification:
*)
ENTITY symbol_colour;
colour_of_symbol : colour;
END_ENTITY;
(*
Attribute definitions:
colour_of_symbol: the colour for the symbol.
EXPRESS specification:
*)
ENTITY symbol_element_style
SUBTYPE OF (founded_item);
style_of_symbol : presentation_style_assignment;
WHERE
WR1: SIZEOF (QUERY ( style <* style_of_symbol\presentation_style_assignment.styles |
'PRESENTATION_APPEARANCE_SCHEMA.SYMBOL_STYLE' IN
TYPEOF (style))) = 0;
WR2: NOT ('PRESENTATION_APPEARANCE_SCHEMA.' +
'PRESENTATION_STYLE_BY_CONTEXT' IN
TYPEOF (style_of_symbol)
);
END_ENTITY;
(*
Attribute definitions:
style_of_symbol: the presentation_style_assignment for the constituent parts of a symbol.
Formal propositions:
WR1: There shall be no symbol_style in the style_of_symbol.
WR2: The style_of_symbol shall not be dependent on a context.
EXPRESS specification:
*)
ENTITY symbol_style
SUBTYPE OF (founded_item);
name : label;
style_of_symbol : symbol_style_select;
END_ENTITY;
(*
Attribute definitions:
name: the word, or group of words, by which the symbol_style is referred to.
style_of_symbol: the symbol_element_style or symbol_colour that specifies the visual appearance of a symbol.
EXPRESS specification:
*)
ENTITY text_style
SUBTYPE OF (founded_item);
name : label;
character_appearance : character_style_select;
END_ENTITY;
(*
Attribute definitions:
name: the word, or group of words, by which the text_style is referred to.
character_appearance: the character style to be used for presenting the text.
EXPRESS specification:
*)
ENTITY text_style_for_defined_font;
text_colour : colour;
END_ENTITY;
(*
Attribute definitions:
text_colour: the colour to be used for presenting the text.
EXPRESS specification:
*)
ENTITY text_style_with_box_characteristics
SUBTYPE OF (text_style);
characteristics : SET[1:4] OF box_characteristic_select;
WHERE
WR1: SIZEOF( QUERY( c1 <* characteristics |
SIZEOF( QUERY( c2 <* characteristics - c1 |
TYPEOF (c1) = TYPEOF (c2)
)) > 0
)) = 0;
END_ENTITY;
(*
Attribute definitions:
characteristics: the characteristics of the character boxes. These characteristics determine height, width, rotation angle, and slant angle of the character boxes.
Formal propositions:
WR1: The characteristics shall be of different types.
EXPRESS specification:
*)
ENTITY text_style_with_justification
SUBTYPE OF (text_style);
justification : text_justification;
END_ENTITY;
(*
Attribute definitions:
justification: the method of text justification in a line.
NOTE Figure 26 shows the definition of text_style_with_mirror.
EXPRESS specification:
*)
ENTITY text_style_with_mirror
SUBTYPE OF (text_style);
mirror_placement : axis2_placement;
END_ENTITY;
(*
Attribute definitions:
mirror_placement: the placement and orientation of the mirror axis. The mirror axis passes through the location of the axis2_placement and is parallel to the x axis defined by the axis2_placement.
Informal propositions:
IP1: A text_style_with_mirror.mirror_placement shall have the axis2_placement founded in the same context as the text that is being mirrored.
EXPRESS specification:
*)
ENTITY text_style_with_spacing
SUBTYPE OF (text_style);
character_spacing : character_spacing_select;
END_ENTITY;
(*
Attribute definitions:
character_spacing: the distance between the character boxes of adjacent characters.
A texture_style_specification is a type of founded_item and is an abstract entity that defines a visual texture.
EXPRESS specification:
*)
ENTITY texture_style_specification
ABSTRACT SUPERTYPE
SUBTYPE OF (founded_item);
END_ENTITY;
(*
A texture_style_tessellation_specification is a type of texture_style_specification an abstract entity that defines a visual texture to be assigned to tessellated geometry.
EXPRESS specification:
*)
ENTITY texture_style_tessellation_specification
ABSTRACT SUPERTYPE
SUBTYPE OF (texture_style_specification);
END_ENTITY;
(*
NOTE Figure 27 shows the positions defined by a two_direction_repeat_factor.
EXPRESS specification:
*)
ENTITY two_direction_repeat_factor
SUBTYPE OF (one_direction_repeat_factor);
second_repeat_factor : vector;
END_ENTITY;
(*
Attribute definitions:
second_repeat_factor: the vector which specifies the relative positioning of tiles in the second direction.
The founded_item_subtypes constraint specifies a constraint that applies to instances of subtypes of founded_item.
A founded_item_subtypes is a constraint that applies to instances of subtypes of founded_item.EXPRESS specification:
*)
SUBTYPE_CONSTRAINT founded_item_subtypes FOR founded_item;
ONEOF (approximation_tolerance,
approximation_tolerance_deviation,
approximation_tolerance_parameter,
character_glyph_style_outline,
character_glyph_style_stroke,
curve_style,
curve_style_font,
curve_style_font_and_scaling,
curve_style_font_pattern,
externally_defined_style,
fill_area_style,
point_style,
pre_defined_presentation_style,
presentation_style_assignment,
surface_side_style,
surface_style_boundary,
surface_style_control_grid,
surface_style_fill_area,
surface_style_parameter_line,
surface_style_segmentation_curve,
surface_style_silhouette,
surface_style_usage,
symbol_element_style,
symbol_style,
text_style);
END_SUBTYPE_CONSTRAINT;
(*
The pas_geometric_representation_item_subtypes constraint specifies a constraint that applies to instances of subtypes of geometric_representation_item.
A pas_geometric_representation_item_subtypes is a constraint that applies to instances of subtypes of geometric_representation_item.EXPRESS specification:
*)
SUBTYPE_CONSTRAINT pas_geometric_representation_item_subtypes FOR geometric_representation_item;
ONEOF (curve,
curve_style_curve_pattern,
curve_style_curve_pattern_set,
externally_defined_hatch_style,
externally_defined_tile_style,
fill_area_style_hatching,
fill_area_style_tile_coloured_region,
fill_area_style_tile_curve_with_style,
fill_area_style_tile_symbol_with_style,
fill_area_style_tiles,
one_direction_repeat_factor,
point,
pre_defined_hatch_style,
pre_defined_tile_style,
vector);
END_SUBTYPE_CONSTRAINT;
(*
EXPRESS specification:
*)
FUNCTION acyclic_occlusion_precedence (relation : occlusion_precedence; set_of_lower : SET[0:?] OF hiding_or_blanking_select) : BOOLEAN;
LOCAL x : SET OF occlusion_precedence; local_set_of_lower : SET OF hiding_or_blanking_select; END_LOCAL; REPEAT i:=1 TO HIINDEX(set_of_lower); IF relation.higher_precedence :=: set_of_lower[i] THEN RETURN(FALSE); END_IF; END_REPEAT; x := bag_to_set (USEDIN ( relation.higher_precedence, 'PRESENTATION_APPEARANCE_SCHEMA.'+ 'OCCLUSION_PRECEDENCE.LOWER_PRECEDENCE')); local_set_of_lower := set_of_lower + relation.higher_precedence; IF SIZEOF (x) > 0 THEN REPEAT i:=1 TO HIINDEX (x); IF NOT acyclic_occlusion_precedence(x[i] , local_set_of_lower) THEN RETURN (FALSE); END_IF; END_REPEAT; END_IF; RETURN (TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: the occlusion_precedence which is tested. This is input to the function.
set_of_lower: the set of items that are referenced directly or indirectly by lower_precedence of the relation. This argument is input to the function. On initial input this set contains as its only element the lower_precedence item of the relation.
The get_coordinate_values function returns the coordinates_list for a tessellated_face, a tessellated_shell, a tessellated_solid, or a tessellated_surface_set.
EXPRESS specification:
*)
FUNCTION get_coordinate_values (source : tessellated_surface_item) : coordinates_list;
LOCAL coordinate_values : coordinates_list; max : INTEGER; END_LOCAL; (* If source is of type tessellated_face its single coordinates_list is returned *) CASE TRUE OF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_FACE' IN TYPEOF(source): --first case BEGIN coordinate_values := source\tessellated_face.coordinates; RETURN(coordinate_values); END; (* If source is of type tessellated_surface_set its single coordinates_list is returned *) 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_SURFACE_SET' IN TYPEOF(source): --second case BEGIN coordinate_values := source\tessellated_surface_set.coordinates; RETURN(coordinate_values); END; (* For complex cases of tessellated_solid or tessellated_shell multiple coordinates_lists may occur. A valid return is only possible if a single coordinates_list is used for all components of the shell or solid *) (* A tessellated_solid, or tessellated_shell has a SET of teessellated_structured_items which must be inspected, the local variable coordinate_values is set to the coordinates_list referenced by items[1] and is later compared to other referenced coordinates_lists *) 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_SOLID' IN TYPEOF(source): -- third case BEGIN IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_FACE' IN TYPEOF(source\tessellated_solid.items[1]) THEN coordinate_values := source\tessellated_solid.items[1]\tessellated_face.coordinates; END_IF; IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_EDGE' IN TYPEOF(source\tessellated_solid.items[1]) THEN coordinate_values := source\tessellated_solid.items[1]\tessellated_edge.coordinates; END_IF; IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_VERTEX' IN TYPEOF(source\tessellated_solid.items[1]) THEN coordinate_values := source\tessellated_solid.items[1]\tessellated_vertex.coordinates; END_IF; max := SIZEOF(source\tessellated_solid.items); IF max = 1 THEN RETURN(coordinate_values); (* simple case with only 1 item in the list *) ELSE REPEAT i := 2 TO max; (* check that each item on the list references the same coordintes_list as items[1], if NOT rerurn ? *) IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_FACE' IN TYPEOF(source\tessellated_solid.items[i]) THEN IF NOT(coordinate_values :=: source\tessellated_solid.items[i]\tessellated_face.coordinates) THEN RETURN (?); END_IF; END_IF; IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_EDGE' IN TYPEOF(source\tessellated_solid.items[i]) THEN IF NOT(coordinate_values :=: source\tessellated_solid.items[i]\tessellated_edge.coordinates) THEN RETURN(?); END_IF; END_IF; IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_VERTEX' IN TYPEOF(source\tessellated_solid.items[i]) THEN IF NOT(coordinate_values :=: source\tessellated_solid.items[i]\tessellated_vertex.coordinates) THEN RETURN(?); END_IF; END_IF; END_REPEAT; RETURN(coordinate_values); (* all items referenced by the tessellated_solid share the same coordinates list which is now returned. *) END_IF; END; (* tessellated_shell has a SET of tessellated_structured_items which must be inspected *) 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_SHELL' IN TYPEOF(source): --fourth case BEGIN IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_FACE' IN TYPEOF(source\tessellated_shell.items[1]) THEN coordinate_values := source\tessellated_shell.items[1]\tessellated_face.coordinates; END_IF; IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_EDGE' IN TYPEOF(source\tessellated_shell.items[1]) THEN coordinate_values := source\tessellated_shell.items[1]\tessellated_edge.coordinates; END_IF; IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_VERTEX' IN TYPEOF(source\tessellated_shell.items[1]) THEN coordinate_values := source\tessellated_shell.items[1]\tessellated_vertex.coordinates; END_IF; max := SIZEOF(source\tessellated_shell.items); IF max = 1 THEN RETURN(coordinate_values); (* simple case with only 1 item in the list *) ELSE REPEAT i := 2 TO max; (* check that each item on the list references the same coordinates_list as item[1], if NOT rerurn ? *) IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_FACE' IN TYPEOF(source\tessellated_shell.items[i]) THEN IF NOT(coordinate_values :=: source\tessellated_shell.items[i]\tessellated_face.coordinates) THEN RETURN (?); END_IF; END_IF; IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_EDGE' IN TYPEOF(source\tessellated_shell.items[i]) THEN IF NOT (coordinate_values :=: source\tessellated_shell.items[i]\tessellated_edge.coordinates) THEN RETURN(?); END_IF; END_IF; IF 'GEOMETRIC_MODEL_SCHEMA.TESSELLATED_VERTEX' IN TYPEOF(source\tessellated_shell.items[i]) THEN IF NOT (coordinate_values :=: source\tessellated_shell.items[i]\tessellated_vertex.coordinates) THEN RETURN(?); END_IF; END_IF; END_REPEAT; RETURN(coordinate_values); (* all items referenced by the tessellated_shell share the same coordinates_list which is now returned. *) END_IF; END; END_CASE;
END_FUNCTION;
(*
Argument definitions:
source: the tessellated_face, tessellated_shell, tessellated_solid, or tessellated_surface_set, for which the coordinates_list is required.
*)
END_SCHEMA; -- presentation_appearance_schema
(*
© ISO 2021 — All rights reserved