Source : ISO 10303-46
SCHEMA presentation_appearance_schema;
REFERENCE FROM
external_reference_schema -- ISO 10303-41
(externally_defined_item,
pre_defined_item);
REFERENCE FROM
geometry_schema -- ISO 10303-42
(axis2_placement,
cartesian_point,
curve,
geometric_representation_item,
point,
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,
ratio_measure,
positive_ratio_measure);
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_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_resource_schema -- ISO 10303-46
(character_glyph_symbol_outline,
character_glyph_symbol_stroke,
colour);
REFERENCE FROM
representation_schema -- ISO 10303-43
(mapped_item,
representation,
representation_item,
representation_map,
using_representations);
REFERENCE FROM
support_resource_schema -- ISO 10303-41
(label,
bag_to_set);
TYPE style_context_select =
SELECT
(group,
presentation_layer_assignment,
representation,
representation_item,
presentation_set);
END_TYPE;
TYPE presentation_style_select =
SELECT
(pre_defined_presentation_style,
point_style,
curve_style,
surface_style_usage,
symbol_style,
fill_area_style,
text_style,
approximation_tolerance,
externally_defined_style,
null_style);
END_TYPE;
TYPE null_style =
ENUMERATION
OF
(null);
END_TYPE;
TYPE marker_select =
SELECT
(marker_type,
pre_defined_marker);
END_TYPE;
TYPE marker_type =
ENUMERATION
OF
(dot,
x,
plus,
asterisk,
ring,
square,
triangle);
END_TYPE;
TYPE size_select =
SELECT
(positive_length_measure,
measure_with_unit,
descriptive_measure,
pre_defined_size);
END_TYPE;
TYPE curve_font_or_scaled_curve_font_select =
SELECT
(curve_style_font_select,
curve_style_font_and_scaling);
END_TYPE;
TYPE curve_style_font_select =
SELECT
(curve_style_font,
pre_defined_curve_font,
externally_defined_curve_font);
END_TYPE;
TYPE squared_or_rounded =
ENUMERATION
OF
(squared,
rounded);
END_TYPE;
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);
END_TYPE;
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;
TYPE curve_or_annotation_curve_occurrence =
SELECT
(curve,
annotation_curve_occurrence);
END_TYPE;
TYPE surface_side =
ENUMERATION
OF
(positive,
negative,
both);
END_TYPE;
TYPE surface_side_style_select =
SELECT
(surface_side_style,
pre_defined_surface_side_style);
END_TYPE;
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;
TYPE curve_or_render =
SELECT
(curve_style,
curve_style_rendering);
END_TYPE;
TYPE shading_curve_method =
ENUMERATION
OF
(constant_colour,
linear_colour);
END_TYPE;
TYPE direction_count_select =
SELECT
(u_direction_count,
v_direction_count);
END_TYPE;
TYPE u_direction_count =
INTEGER
;
WHERE
WR1: SELF > 1;
END_TYPE;
TYPE v_direction_count =
INTEGER
;
WHERE
WR1: SELF > 1;
END_TYPE;
TYPE shading_surface_method =
ENUMERATION
OF
(constant_shading,
colour_shading,
dot_shading,
normal_shading);
END_TYPE;
TYPE rendering_properties_select =
SELECT
(surface_style_reflectance_ambient,
surface_style_transparent);
END_TYPE;
TYPE character_style_select =
SELECT
(character_glyph_style_stroke,
character_glyph_style_outline,
text_style_for_defined_font);
END_TYPE;
TYPE text_justification =
label;
END_TYPE;
TYPE box_characteristic_select =
SELECT
(box_height,
box_width,
box_slant_angle,
box_rotate_angle);
END_TYPE;
TYPE box_height =
positive_ratio_measure;
END_TYPE;
TYPE box_width =
positive_ratio_measure;
END_TYPE;
TYPE box_slant_angle =
plane_angle_measure;
END_TYPE;
TYPE box_rotate_angle =
plane_angle_measure;
END_TYPE;
TYPE character_spacing_select =
SELECT
(length_measure,
ratio_measure,
measure_with_unit,
descriptive_measure,
pre_defined_character_spacing);
END_TYPE;
TYPE symbol_style_select =
SELECT
(symbol_element_style,
symbol_colour);
END_TYPE;
TYPE tolerance_select =
SELECT
(approximation_tolerance_deviation,
approximation_tolerance_parameter);
END_TYPE;
TYPE approximation_method =
ENUMERATION
OF
(chordal_deviation,
chordal_length);
END_TYPE;
TYPE tolerance_deviation_select =
SELECT
(curve_tolerance_deviation,
surface_tolerance_deviation);
END_TYPE;
TYPE curve_tolerance_deviation =
positive_length_measure;
END_TYPE;
TYPE surface_tolerance_deviation =
positive_length_measure;
END_TYPE;
TYPE product_or_presentation_space =
ENUMERATION
OF
(product_shape_space,
presentation_area_space);
END_TYPE;
TYPE tolerance_parameter_select =
SELECT
(curve_tolerance_parameter,
surface_tolerance_parameter);
END_TYPE;
TYPE curve_tolerance_parameter =
REAL;
END_TYPE;
TYPE surface_tolerance_parameter =
REAL;
END_TYPE;
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;
TYPE invisibility_context =
SELECT
(presentation_layer_usage,
presentation_representation,
presentation_set);
END_TYPE;
TYPE invisible_item =
SELECT
(styled_item,
presentation_layer_assignment,
representation);
END_TYPE;
ENTITY styled_item
SUBTYPE OF (representation_item);
styles : SET[1:?] OF presentation_style_assignment;
item : representation_item;
WHERE
WR1: (SIZEOF(SELF.styles) = 1) XOR(SIZEOF(QUERY(pres_style <* SELF.styles | NOT ('PRESENTATION_APPEARANCE_SCHEMA.' +'PRESENTATION_STYLE_BY_CONTEXT'
IN TYPEOF(pres_style)))) = 0);
END_ENTITY;
ENTITY over_riding_styled_item
SUBTYPE OF (styled_item);
over_ridden_style : styled_item;
END_ENTITY;
ENTITY context_dependent_over_riding_styled_item
SUBTYPE OF (over_riding_styled_item);
style_context : SET[1:2] OF style_context_select;
WHERE
WR1: (SIZEOF(QUERY(sc <* SELF.style_context |'REPRESENTATION_SCHEMA.REPRESENTATION' IN TYPEOF(sc))) = 1) AND(SIZEOF(QUERY(sc
<* SELF.style_context |'REPRESENTATION_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF(sc))) = 1);
END_ENTITY;
ENTITY presentation_style_assignment;
styles : SET[1:?] OF presentation_style_select;
WHERE
WR1: SIZEOF (QUERY (style1 <* SELF.styles | NOT (SIZEOF (QUERY (style2 <* (SELF.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 <* SELF.styles |'PRESENTATION_APPEARANCE_SCHEMA.SURFACE_STYLE_USAGE' IN TYPEOF(style1))) <= 2;
END_ENTITY;
ENTITY presentation_style_by_context
SUBTYPE OF (presentation_style_assignment);
style_context : style_context_select;
END_ENTITY;
ENTITY pre_defined_presentation_style
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY externally_defined_style
SUBTYPE OF (externally_defined_item);
END_ENTITY;
ENTITY point_style;
name : label;
marker : marker_select;
marker_size : size_select;
marker_colour : colour;
END_ENTITY;
ENTITY pre_defined_marker
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY pre_defined_size
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY curve_style;
name : label;
curve_font : curve_font_or_scaled_curve_font_select;
curve_width : size_select;
curve_colour : colour;
END_ENTITY;
ENTITY curve_style_with_ends_and_corners
SUBTYPE OF (curve_style);
curve_ends : squared_or_rounded;
curve_corners : squared_or_rounded;
END_ENTITY;
ENTITY curve_style_with_extension
SUBTYPE OF (curve_style);
curve_extensions : length_measure;
END_ENTITY;
ENTITY pre_defined_curve_font
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY externally_defined_curve_font
SUBTYPE OF (externally_defined_item);
END_ENTITY;
ENTITY curve_style_font;
name : label;
pattern_list : LIST[1:?] OF curve_style_font_pattern;
END_ENTITY;
ENTITY curve_style_font_pattern;
visible_segment_length : positive_length_measure;
invisible_segment_length : positive_length_measure;
END_ENTITY;
ENTITY curve_style_wide
SUBTYPE OF (curve_style_font);
interior_style : fill_area_style;
END_ENTITY;
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;
ENTITY curve_style_curve_pattern
SUBTYPE OF (geometric_representation_item);
pattern : annotation_curve_occurrence;
pattern_length : positive_length_measure;
END_ENTITY;
ENTITY curve_style_font_and_scaling;
name : label;
curve_font : curve_style_font_select;
curve_font_scaling : REAL;
END_ENTITY;
ENTITY draughting_pre_defined_curve_font
SUBTYPE OF (pre_defined_curve_font);
WHERE
WR1: SELF.name IN['continuous','chain','chain double dash','dashed','dotted'];
END_ENTITY;
ENTITY fill_area_style;
name : label;
fill_styles : SET[1:?] OF fill_style_select;
WHERE
WR1: SIZEOF(QUERY(fill_style <* SELF.fill_styles |'PRESENTATION_APPEARANCE_SCHEMA.'+'FILL_AREA_STYLE_COLOUR' IN TYPEOF(fill_style)))
<= 1;
END_ENTITY;
ENTITY fill_area_style_colour;
name : label;
fill_colour : colour;
END_ENTITY;
ENTITY pre_defined_hatch_style
SUBTYPE OF (pre_defined_item, geometric_representation_item);
END_ENTITY;
ENTITY externally_defined_hatch_style
SUBTYPE OF (externally_defined_item, geometric_representation_item);
END_ENTITY;
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;
ENTITY pre_defined_tile_style
SUBTYPE OF (pre_defined_item, geometric_representation_item);
END_ENTITY;
ENTITY externally_defined_tile_style
SUBTYPE OF (externally_defined_item, geometric_representation_item);
END_ENTITY;
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;
ENTITY fill_area_style_tile_curve_with_style
SUBTYPE OF (geometric_representation_item);
styled_curve : annotation_curve_occurrence;
END_ENTITY;
ENTITY fill_area_style_tile_coloured_region
SUBTYPE OF (geometric_representation_item);
closed_curve : curve_or_annotation_curve_occurrence;
region_colour : colour;
END_ENTITY;
ENTITY fill_area_style_tile_symbol_with_style
SUBTYPE OF (geometric_representation_item);
symbol : annotation_symbol_occurrence;
END_ENTITY;
ENTITY pre_defined_tile
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY externally_defined_tile
SUBTYPE OF (externally_defined_item);
END_ENTITY;
ENTITY one_direction_repeat_factor
SUBTYPE OF (geometric_representation_item);
repeat_factor : vector;
END_ENTITY;
ENTITY two_direction_repeat_factor
SUBTYPE OF (one_direction_repeat_factor);
second_repeat_factor : vector;
END_ENTITY;
ENTITY surface_style_usage;
side : surface_side;
style : surface_side_style_select;
END_ENTITY;
ENTITY pre_defined_surface_side_style
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY surface_side_style;
name : label;
styles : SET[1:7] OF surface_style_element_select;
WHERE
WR1: SIZEOF(QUERY(style1 <* SELF.styles | SIZEOF(QUERY(style2 <* SELF.styles - style1 | TYPEOF(style1) = TYPEOF(style2)))
> 0)) = 0;
END_ENTITY;
ENTITY surface_style_fill_area;
fill_area : fill_area_style;
END_ENTITY;
ENTITY surface_style_boundary;
style_of_boundary : curve_or_render;
END_ENTITY;
ENTITY curve_style_rendering;
rendering_method : shading_curve_method;
rendering_properties : surface_rendering_properties;
END_ENTITY;
ENTITY surface_rendering_properties;
rendered_colour : colour;
END_ENTITY;
ENTITY surface_style_silhouette;
style_of_silhouette : curve_or_render;
END_ENTITY;
ENTITY surface_style_segmentation_curve;
style_of_segmentation_curve : curve_or_render;
END_ENTITY;
ENTITY surface_style_control_grid;
style_of_control_grid : curve_or_render;
END_ENTITY;
ENTITY surface_style_parameter_line;
style_of_parameter_lines : curve_or_render;
direction_counts : SET[1:2] OF direction_count_select;
WHERE
WR1: (HIINDEX(SELF.direction_counts) = 1) XOR(TYPEOF(SELF.direction_counts[1]) <> TYPEOF(SELF.direction_counts[2]));
END_ENTITY;
ENTITY surface_style_rendering;
rendering_method : shading_surface_method;
surface_colour : colour;
END_ENTITY;
ENTITY surface_style_rendering_with_properties
SUBTYPE OF (surface_style_rendering);
properties : SET[1:2] OF rendering_properties_select;
WHERE
WR1: (HIINDEX(SELF.properties) = 1) XOR(TYPEOF(SELF.properties[1]) <> TYPEOF(SELF.properties[2]));
END_ENTITY;
ENTITY surface_style_reflectance_ambient;
ambient_reflectance : REAL;
END_ENTITY;
ENTITY surface_style_reflectance_ambient_diffuse
SUBTYPE OF (surface_style_reflectance_ambient);
diffuse_reflectance : REAL;
END_ENTITY;
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;
ENTITY surface_style_transparent;
transparency : REAL;
WHERE
WR1: {0.0 <= transparency <= 1.0};
END_ENTITY;
ENTITY text_style;
name : label;
character_appearance : character_style_select;
END_ENTITY;
ENTITY character_glyph_style_stroke;
stroke_style : curve_style;
END_ENTITY;
ENTITY character_glyph_style_outline;
outline_style : curve_style;
END_ENTITY;
ENTITY character_glyph_style_outline_with_characteristics
SUBTYPE OF (character_glyph_style_outline);
characteristics : fill_area_style;
END_ENTITY;
ENTITY text_style_for_defined_font;
text_colour : colour;
END_ENTITY;
ENTITY text_style_with_justification
SUBTYPE OF (text_style);
justification : text_justification;
END_ENTITY;
ENTITY text_style_with_box_characteristics
SUBTYPE OF (text_style);
characteristics : SET[1:4] OF box_characteristic_select;
WHERE
WR1: SIZEOF(QUERY(c1 <* SELF.characteristics | SIZEOF(QUERY(c2 <* SELF.characteristics - c1 | TYPEOF (c1) = TYPEOF (c2)))
> 0)) = 0;
END_ENTITY;
ENTITY text_style_with_spacing
SUBTYPE OF (text_style);
character_spacing : character_spacing_select;
END_ENTITY;
ENTITY pre_defined_character_spacing
SUBTYPE OF (pre_defined_item);
END_ENTITY;
ENTITY text_style_with_mirror
SUBTYPE OF (text_style);
mirror_placement : axis2_placement;
END_ENTITY;
ENTITY symbol_style;
name : label;
style_of_symbol : symbol_style_select;
END_ENTITY;
ENTITY symbol_element_style;
style_of_symbol : presentation_style_assignment;
WHERE
WR1: SIZEOF (QUERY (style <* SELF.style_of_symbol.styles |'PRESENTATION_APPEARANCE_SCHEMA.SYMBOL_STYLE' IN TYPEOF (style)))
= 0;
WR2: NOT ('PRESENTATION_APPEARANCE_SCHEMA.' +'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF (SELF.style_of_symbol));
END_ENTITY;
ENTITY symbol_colour;
colour_of_symbol : colour;
END_ENTITY;
ENTITY approximation_tolerance;
tolerance : tolerance_select;
END_ENTITY;
ENTITY approximation_tolerance_deviation;
tessellation_type : approximation_method;
tolerances : SET[1:2] OF tolerance_deviation_select;
definition_space : product_or_presentation_space;
WHERE
WR1: (HIINDEX(SELF.tolerances) = 1) XOR(TYPEOF(SELF.tolerances[1]) <> TYPEOF(SELF.tolerances[2]));
END_ENTITY;
ENTITY approximation_tolerance_parameter;
tolerances : SET[1:2] OF tolerance_parameter_select;
WHERE
WR1: (HIINDEX (SELF.tolerances) = 1) XOR(TYPEOF (SELF.tolerances[1]) <> TYPEOF (SELF.tolerances[2]));
END_ENTITY;
ENTITY occlusion_precedence;
higher_precedence : hiding_or_blanking_select;
lower_precedence : hiding_or_blanking_select;
occlusion_context : representation;
WHERE
WR1: acyclic_occlusion_precedence (SELF, [SELF.lower_precedence]);
END_ENTITY;
ENTITY invisibility;
invisible_items : SET[1:?] OF invisible_item;
END_ENTITY;
ENTITY context_dependent_invisibility
SUBTYPE OF (invisibility);
presentation_context : invisibility_context;
END_ENTITY;
FUNCTION acyclic_occlusion_precedence
(relation : occlusion_precedence; set_of_lower : SET 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;
END_SCHEMA; -- presentation_appearance_schema