Source : ISO 10303-504
SCHEMA aic_draughting_annotation;
USE FROM
draughting_element_schema -- ISO 10303-101
(draughting_callout,
terminator_symbol);
USE FROM
geometry_schema -- ISO 10303-42
(axis2_placement_2d,
geometric_representation_context);
USE FROM
measure_schema -- ISO 10303-41
(conversion_based_unit,
derived_unit,
global_unit_assigned_context,
length_measure_with_unit,
length_unit,
measure_with_unit,
named_unit,
plane_angle_unit,
plane_angle_measure_with_unit,
si_unit);
USE FROM
presentation_appearance_schema -- ISO 10303-46
(box_height,
box_rotate_angle,
box_slant_angle,
box_width,
context_dependent_invisibility,
curve_style,
curve_style_font,
externally_defined_curve_font,
externally_defined_hatch_style,
externally_defined_tile_style,
fill_area_style,
fill_area_style_colour,
fill_area_style_hatching,
fill_area_style_tile_symbol_with_style,
fill_area_style_tiles,
null_style,
pre_defined_curve_font,
presentation_style_by_context,
symbol_colour,
symbol_style,
text_style,
text_style_for_defined_font,
text_style_with_box_characteristics,
text_style_with_mirror,
text_style_with_spacing);
USE FROM
presentation_definition_schema -- ISO 10303-46
(annotation_curve_occurrence,
annotation_fill_area,
annotation_fill_area_occurrence,
annotation_occurrence,
annotation_symbol,
annotation_symbol_occurrence,
annotation_text_occurrence,
composite_text,
composite_text_with_associated_curves,
composite_text_with_blanking_box,
composite_text_with_extent,
defined_symbol,
externally_defined_symbol,
pre_defined_symbol,
symbol_representation,
symbol_representation_map,
text_alignment,
text_literal,
text_literal_with_associated_curves,
text_literal_with_blanking_box,
text_literal_with_delineation,
text_literal_with_extent);
USE FROM
presentation_resource_schema -- ISO 10303-46
(colour_rgb,
externally_defined_text_font,
font_select,
pre_defined_colour,
pre_defined_text_font);
USE FROM
representation_schema -- ISO 10303-43
(mapped_item,
representation,
representation_item);
REFERENCE FROM
geometry_schema -- ISO 10303-42
(axis2_placement);
TYPE draughting_subfigure_representation_item =
SELECT
(annotation_occurrence,
axis2_placement,
draughting_callout);
END_TYPE;
TYPE draughting_symbol_representation_item =
SELECT
(annotation_curve_occurrence,
annotation_fill_area_occurrence,
annotation_symbol_occurrence,
annotation_text_occurrence,
axis2_placement);
END_TYPE;
ENTITY annotation_subfigure_occurrence
SUBTYPE OF (annotation_symbol_occurrence);
WHERE
WR1: SIZEOF (QUERY (sty <* SELF.styles |
NOT (SIZEOF (sty.styles) = 1)
)) = 0;
WR2: SIZEOF (QUERY (sty <* SELF.styles |
NOT ('AIC_DRAUGHTING_ANNOTATION.NULL_STYLE'
IN TYPEOF (sty.styles[1])) ))=0;
WR3: ('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_SYMBOL'
IN TYPEOF (SELF.item));
WR4: ('AIC_DRAUGHTING_ANNOTATION.DRAUGHTING_SUBFIGURE_REPRESENTATION'
IN TYPEOF
(SELF.item\mapped_item.mapping_source.mapped_representation));
END_ENTITY;
ENTITY draughting_annotation_occurrence
SUBTYPE OF (annotation_occurrence);
WHERE
WR1: (NOT ('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_CURVE_OCCURRENCE'
IN TYPEOF (SELF))) OR
(SIZEOF (QUERY (sty <* SELF.styles |
NOT ((SIZEOF (sty.styles) = 1)
AND ('AIC_DRAUGHTING_ANNOTATION.CURVE_STYLE'
IN TYPEOF (sty.styles[1]))) )) = 0);
WR2: (NOT ('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_FILL_AREA_OCCURRENCE'
IN TYPEOF (SELF))) OR (SIZEOF (QUERY (sty <* SELF.styles |
NOT ((SIZEOF (sty.styles) = 1)
AND ('AIC_DRAUGHTING_ANNOTATION.FILL_AREA_STYLE'
IN TYPEOF (sty.styles[1]))) )) = 0);
WR3: (NOT ('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_FILL_AREA_OCCURRENCE'
IN TYPEOF (SELF))) OR (SIZEOF (QUERY (bound <*
SELF.item\annotation_fill_area.boundaries |
NOT (SIZEOF (QUERY (si <*
USEDIN (bound, 'PRESENTATION_APPEARANCE_SCHEMA.' +
'STYLED_ITEM.ITEM') |
('AIC_DRAUGHTING_ANNOTATION.' +
'ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF (si)))) > 0))) = 0);
WR4: (NOT ('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_SYMBOL_OCCURRENCE'
IN TYPEOF (SELF))) OR (SIZEOF (QUERY (sty <* SELF.styles |
NOT ((SIZEOF (sty.styles) = 1) AND
(SIZEOF (TYPEOF (sty.styles[1]) *
['AIC_DRAUGHTING_ANNOTATION.SYMBOL_STYLE',
'AIC_DRAUGHTING_ANNOTATION.NULL_STYLE']) = 1)) )) = 0);
WR5: (NOT (('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_SYMBOL_OCCURRENCE'
IN TYPEOF (SELF)) AND
('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_SYMBOL'
IN TYPEOF(SELF.item)))) OR
(SIZEOF (['AIC_DRAUGHTING_ANNOTATION.' +
'DRAUGHTING_SYMBOL_REPRESENTATION',
'AIC_DRAUGHTING_ANNOTATION.' +
'DRAUGHTING_SUBFIGURE_REPRESENTATION'] *
TYPEOF (SELF.item\mapped_item.mapping_source.
mapped_representation)) = 1);
WR6: (NOT ('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF (SELF))) OR
(SIZEOF (QUERY (sty <* SELF.styles |
NOT ((SIZEOF (sty.styles) = 1)
AND ('AIC_DRAUGHTING_ANNOTATION.TEXT_STYLE'
IN TYPEOF (sty.styles[1]))) )) = 0);
WR7: (NOT('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF (SELF))) OR
(SIZEOF (TYPEOF(SELF.item) *
['AIC_DRAUGHTING_ANNOTATION.COMPOSITE_TEXT',
'AIC_DRAUGHTING_ANNOTATION.TEXT_LITERAL']) = 1);
WR8: (NOT (('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF (SELF)) AND
('AIC_DRAUGHTING_ANNOTATION.COMPOSITE_TEXT'
IN TYPEOF (SELF.item)))) OR (SIZEOF (QUERY (tl <*
SELF.item\composite_text.collected_text |
NOT ('AIC_DRAUGHTING_ANNOTATION.TEXT_LITERAL'
IN TYPEOF (tl)) )) = 0);
WR9: (NOT (('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF (SELF)) AND
('AIC_DRAUGHTING_ANNOTATION.TEXT_LITERAL'
IN TYPEOF (SELF.item)))) OR (SELF.item\text_literal.alignment
IN ['baseline left', 'baseline centre', 'baseline right']);
WR10: (NOT (('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF (SELF)) AND
('AIC_DRAUGHTING_ANNOTATION.COMPOSITE_TEXT'
IN TYPEOF (SELF.item)))) OR
(SIZEOF (QUERY (tl <* QUERY (text <* SELF.
item\composite_text.collected_text
|('AIC_DRAUGHTING_ANNOTATION.TEXT_LITERAL' IN TYPEOF(text))) |
NOT (tl\text_literal.alignment IN
['baseline left', 'baseline centre', 'baseline right']) )) = 0);
WR11: NOT (('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(SELF)) AND
('AIC_DRAUGHTING_ANNOTATION.COMPOSITE_TEXT'
IN TYPEOF (SELF.item))) OR check_text_alignment(SELF.item);
WR12: NOT (('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(SELF)) AND
('AIC_DRAUGHTING_ANNOTATION.COMPOSITE_TEXT'
IN TYPEOF (SELF.item))) OR check_text_font(SELF.item);
WR13: (NOT (('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF(SELF)) AND
('AIC_DRAUGHTING_ANNOTATION.COMPOSITE_TEXT'
IN TYPEOF (SELF.item)))) OR
(SIZEOF (QUERY (tl <* QUERY (text <*
SELF.item\composite_text.collected_text |
('AIC_DRAUGHTING_ANNOTATION.TEXT_LITERAL' IN TYPEOF (text))) |
NOT (SIZEOF (TYPEOF(tl) *
['AIC_DRAUGHTING_ANNOTATION.' +
'TEXT_LITERAL_WITH_BLANKING_BOX',
'AIC_DRAUGHTING_ANNOTATION.' +
'TEXT_LITERAL_WITH_ASSOCIATED_CURVES']) = 0) )) = 0);
WR14: (NOT (('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF (SELF)) AND
('AIC_DRAUGHTING_ANNOTATION.TEXT_LITERAL_WITH_ASSOCIATED_CURVES'
IN TYPEOF (SELF.item)))) OR
(SIZEOF (QUERY (crv <*
SELF.item\text_literal_with_associated_curves.
associated_curves |
NOT (SIZEOF (QUERY (si <* USEDIN (crv,
'PRESENTATION_APPEARANCE_SCHEMA.STYLED_ITEM.ITEM') |
('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_CURVE_OCCURRENCE'
IN TYPEOF (si)) )) > 0) )) = 0);
WR15: (NOT (('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_TEXT_OCCURRENCE'
IN TYPEOF (SELF)) AND
('AIC_DRAUGHTING_ANNOTATION.COMPOSITE_TEXT_WITH_ASSOCIATED_CURVES'
IN TYPEOF (SELF.item)))) OR
(SIZEOF (QUERY (crv <*
SELF.item\composite_text_with_associated_curves.
associated_curves |
NOT (SIZEOF (QUERY (si <* USEDIN (crv,
'PRESENTATION_APPEARANCE_SCHEMA.STYLED_ITEM.ITEM') |
('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_CURVE_OCCURRENCE'
IN TYPEOF (si)) )) > 0) )) = 0);
WR16: SIZEOF (QUERY (cs <* QUERY (sty <* SELF.styles |
('AIC_DRAUGHTING_ANNOTATION.CURVE_STYLE' IN TYPEOF (sty.styles[1])))
| NOT (('AIC_DRAUGHTING_ANNOTATION.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF (cs.styles[1]\curve_style.curve_width)) AND
('MEASURE_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF (cs.styles[1]\curve_style.
curve_width\measure_with_unit.value_component))))) = 0;
WR17: SIZEOF (QUERY (fas <* QUERY (sty <* SELF.styles |
('AIC_DRAUGHTING_ANNOTATION.FILL_AREA_STYLE'
IN TYPEOF (sty.styles[1]))) |
NOT ((SIZEOF (QUERY (fs <* fas.styles[1]\fill_area_style.fill_styles
| ('AIC_DRAUGHTING_ANNOTATION.FILL_AREA_STYLE_TILES'
IN TYPEOF (fs)))) <= 1)
AND (SIZEOF (QUERY (fst <* QUERY (fs <*
fas.styles[1]\fill_area_style.fill_styles |
('AIC_DRAUGHTING_ANNOTATION.FILL_AREA_STYLE_TILES'
IN TYPEOF (fs))) |
NOT (SIZEOF (fst\fill_area_style_tiles.tiles) = 1)
)) = 0))
)) = 0;
WR18: SIZEOF (QUERY (fas <* QUERY (sty <* SELF.styles |
('AIC_DRAUGHTING_ANNOTATION.FILL_AREA_STYLE'
IN TYPEOF (sty.styles[1]))) |
NOT (SIZEOF (QUERY (fsh <* QUERY (fs <*
fas.styles[1]\fill_area_style.fill_styles |
('AIC_DRAUGHTING_ANNOTATION.FILL_AREA_STYLE_HATCHING'
IN TYPEOF (fs))) |
NOT (fsh\fill_area_style_hatching.point_of_reference_hatch_line :=:
fsh\fill_area_style_hatching.pattern_start) )) = 0) )) = 0;
WR19: SIZEOF (QUERY (ts <* QUERY (sty <* SELF.styles |
('AIC_DRAUGHTING_ANNOTATION.TEXT_STYLE'
IN TYPEOF(sty.styles[1]))) |
NOT ('AIC_DRAUGHTING_ANNOTATION.' +
'TEXT_STYLE_WITH_BOX_CHARACTERISTICS'
IN TYPEOF (ts.styles[1])))) = 0;
WR20: SIZEOF (QUERY (ts <* QUERY (sty <* SELF.styles |
('AIC_DRAUGHTING_ANNOTATION.TEXT_STYLE_WITH_BOX_CHARACTERISTICS'
IN TYPEOF (sty.styles[1]))) |
NOT (SIZEOF (ts.styles[1]\text_style_with_box_characteristics.
characteristics) = 4) )) = 0;
END_ENTITY;
ENTITY draughting_subfigure_representation
SUBTYPE OF (symbol_representation);
SELF\representation.items : SET[1:?] OF draughting_subfigure_representation_item;
WHERE
WR1: SIZEOF (QUERY (item <* SELF\representation.items |
SIZEOF (['AIC_DRAUGHTING_ANNOTATION.ANNOTATION_OCCURRENCE',
'AIC_DRAUGHTING_ANNOTATION.DRAUGHTING_CALLOUT'] *
TYPEOF (item)) = 1)) >= 1;
WR2: SIZEOF (QUERY (srm <* QUERY (rm <*
USEDIN (SELF, 'REPRESENTATION_SCHEMA.' +
'REPRESENTATION_MAP.MAPPED_REPRESENTATION') |
('AIC_DRAUGHTING_ANNOTATION.SYMBOL_REPRESENTATION_MAP'
IN TYPEOF(rm))) |
NOT (SIZEOF (QUERY (a_s <* QUERY (mi <* srm.map_usage |
('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_SYMBOL' IN TYPEOF(mi)))
| NOT (SIZEOF (QUERY (aso <*
USEDIN (a_s, 'PRESENTATION_APPEARANCE_SCHEMA.' +
'STYLED_ITEM.ITEM') |
NOT ('AIC_DRAUGHTING_ANNOTATION.ANNOTATION_SUBFIGURE_OCCURRENCE'
IN TYPEOF(aso)))) = 0))) = 0))) > 0;
WR3: SIZEOF (SELF.context_of_items.representations_in_context) = 1;
END_ENTITY;
ENTITY draughting_symbol_representation
SUBTYPE OF (symbol_representation);
SELF\representation.items : SET[1:?] OF draughting_symbol_representation_item;
UNIQUE
UR1:
SELF\representation.name;
WHERE
WR1: SIZEOF (QUERY (item <* SELF\representation.items |
(SIZEOF (TYPEOF (item) *
['AIC_DRAUGHTING_ANNOTATION.ANNOTATION_CURVE_OCCURRENCE',
'AIC_DRAUGHTING_ANNOTATION.ANNOTATION_SYMBOL_OCCURRENCE',
'AIC_DRAUGHTING_ANNOTATION.ANNOTATION_FILL_AREA_OCCURRENCE',
'AIC_DRAUGHTING_ANNOTATION.ANNOTATION_TEXT_OCCURRENCE']) = 1)
)) >= 1;
WR2: SIZEOF (QUERY (item <* SELF\representation.items |
'AIC_DRAUGHTING_ANNOTATION.ANNOTATION_SUBFIGURE_OCCURRENCE'
IN TYPEOF (item))) = 0;
WR3: SIZEOF ( QUERY (rm <*
USEDIN (SELF, 'REPRESENTATION_SCHEMA.' +
'REPRESENTATION_MAP.MAPPED_REPRESENTATION') |
NOT ('REPRESENTATION_SCHEMA.SYMBOL_REPRESENTATION_MAP'
IN TYPEOF(rm)))) = 0;
WR4: SIZEOF (SELF.context_of_items.representations_in_context) = 1;
END_ENTITY;
ENTITY draughting_text_literal_with_delineation
SUBTYPE OF (text_literal_with_delineation);
WHERE
WR1: SELF.delineation IN ['underline', 'overline'];
END_ENTITY;
FUNCTION check_text_alignment
(ct : composite_text) : BOOLEAN;
LOCAL a : SET OF text_alignment := []; END_LOCAL; -- create a set of all the alignments REPEAT i := 1 TO HIINDEX (ct.collected_text); a := a + [ct.collected_text[i]\text_literal.alignment]; END_REPEAT; -- if there is more than one element in the set -- then not all alignments were the same RETURN (SIZEOF(a) = 1);
END_FUNCTION;
FUNCTION check_text_font
(ct : composite_text) : BOOLEAN;
LOCAL f : SET OF font_select := []; END_LOCAL; -- build a set of all the fonts REPEAT i := 1 TO HIINDEX (ct.collected_text); f := f + [ct.collected_text[i]\text_literal.font]; END_REPEAT; -- if there is more than one element in the set -- then not all fonts were the same RETURN (SIZEOF(f) <= 1);
END_FUNCTION;
END_SCHEMA; -- aic_draughting_annotation