Schema: aic_draughting_annotation

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