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);

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