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);
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: (('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);
WHERE
WR1: SIZEOF (QUERY (item <* SELF\representation.items | NOT (SIZEOF (['AIC_DRAUGHTING_ANNOTATION.ANNOTATION_OCCURRENCE','AIC_DRAUGHTING_ANNOTATION.DRAUGHTING_CALLOUT','GEOMETRY_SCHEMA.AXIS2_PLACEMENT']*
TYPEOF (item)) = 1))) = 0;
WR2: SIZEOF (QUERY (item <* SELF\representation.items | SIZEOF (['AIC_DRAUGHTING_ANNOTATION.ANNOTATION_OCCURRENCE','AIC_DRAUGHTING_ANNOTATION.DRAUGHTING_CALLOUT']
* TYPEOF (item)) = 1)) >= 1;
WR3: 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;
WR4: NOT (acyclic_mapped_item_usage (SELF));
WR5: SIZEOF (SELF.context_of_items.representations_in_context) = 1;
END_ENTITY;
ENTITY draughting_symbol_representation
SUBTYPE OF (symbol_representation);
UNIQUE
UR1:
SELF\representation.name;
WHERE
WR1: SIZEOF (QUERY (item <* SELF\representation.items | NOT (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','GEOMETRY_SCHEMA.AXIS2_PLACEMENT'])
= 1))) = 0;
WR2: 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;
WR3: SIZEOF (QUERY (item <* SELF\representation.items |'AIC_DRAUGHTING_ANNOTATION.ANNOTATION_SUBFIGURE_OCCURRENCE' IN TYPEOF
(item))) = 0;
WR4: SIZEOF (QUERY (srm <* QUERY (rm <* USEDIN (SELF, 'REPRESENTATION_SCHEMA.' +'REPRESENTATION_MAP.MAPPED_REPRESENTATION')
|('REPRESENTATION_SCHEMA.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_SYMBOL_OCCURRENCE' IN TYPEOF(aso)))) = 0))) = 0))) > 0;
WR5: NOT (acyclic_mapped_item_usage (SELF));
WR6: 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 acyclic_mapped_item_usage
(rep : representation) : BOOLEAN;
LOCAL items : SET OF representation_item; END_LOCAL; items := QUERY (item <* rep.items | 'AIC_DRAUGHTING_ANNOTATION.MAPPED_ITEM' IN TYPEOF (item)); IF SIZEOF (items) = 0 THEN RETURN (FALSE); ELSE REPEAT i := 1 TO HIINDEX (items); IF items[i]\mapped_item.mapping_source.mapped_representation :=: rep THEN RETURN (TRUE); ELSE RETURN (acyclic_mapped_item_usage(items[i]\ mapped_item.mapping_source.mapped_representation)); END_IF; END_REPEAT; RETURN (FALSE); END_IF;
END_FUNCTION;
FUNCTION check_text_alignment
(ct : composite_text) : BOOLEAN;
LOCAL a : SET OF text_alignment := []; END_LOCAL; REPEAT i := 1 TO HIINDEX (ct.collected_text); a := a + [ct.collected_text[i]\text_literal.alignment]; END_REPEAT; RETURN (SIZEOF(a) = 1);
END_FUNCTION;
FUNCTION check_text_font
(ct : composite_text) : BOOLEAN;
LOCAL f : SET OF font_select := []; END_LOCAL; REPEAT i := 1 TO HIINDEX (ct.collected_text); f := f + [ct.collected_text[i]\text_literal.font]; END_REPEAT; RETURN (SIZEOF(f) <= 1);
END_FUNCTION;
END_SCHEMA; -- aic_draughting_annotation