Schema: aic_associative_draughting_elements

Source : ISO 10303-520



SCHEMA aic_associative_draughting_elements;

USE FROM measure_schema   -- ISO 10303-41
  (derived_unit,
   named_unit);

USE FROM product_property_definition_schema   -- ISO 10303-41
  (shape_aspect_relationship);

USE FROM product_property_representation_schema   -- ISO 10303-41
  (shape_definition_representation);

REFERENCE FROM support_resource_schema   -- ISO 10303-41
  (bag_to_set);

USE FROM representation_schema   -- ISO 10303-43
  (mapped_item,
   representation,
   representation_item,
   representation_map);

REFERENCE FROM representation_schema   -- ISO 10303-43
  (using_representations);

USE FROM qualified_measure_schema   -- ISO 10303-45
  (measure_representation_item);

USE FROM presentation_appearance_schema   -- ISO 10303-46
  (curve_style,
   styled_item);

USE FROM presentation_definition_schema   -- ISO 10303-46
  (annotation_curve_occurrence,
   annotation_fill_area_occurrence,
   annotation_occurrence,
   annotation_occurrence_relationship,
   annotation_symbol_occurrence,
   annotation_text_occurrence,
   text_literal);

USE FROM presentation_organization_schema   -- ISO 10303-46
  (camera_model);

USE FROM shape_dimension_schema   -- ISO 10303-47
  (dimensional_characteristic_representation,
   shape_dimension_representation);

USE FROM draughting_element_schema   -- ISO 10303-101
  (draughting_callout,
   leader_curve,
   projection_curve);


ENTITY annotation_occurrence_associativity
  SUBTYPE OF (annotation_occurrence_relationship);
WHERE
  WR1: SIZEOF (TYPEOF (SELF.related_annotation_occurrence) *['AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.ANNOTATION_FILL_AREA_OCCURRENCE','AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.PROJECTION_CURVE','AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.LEADER_CURVE']) = 1;
END_ENTITY;

ENTITY dimension_text_associativity
  SUBTYPE OF (text_literal, mapped_item);
WHERE
  WR1: ('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.SHAPE_DIMENSION_REPRESENTATION' IN TYPEOF (SELF\mapped_item. mapping_source.mapped_representation));
  WR2: ('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.DRAUGHTING_CALLOUT' IN TYPEOF (SELF\mapped_item.mapping_target));
  WR3: SIZEOF (QUERY (ato <* QUERY (si <* USEDIN (SELF, 'PRESENTATION_APPEARANCE_SCHEMA.STYLED_ITEM.ITEM') |('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(si))) | NOT (SIZEOF(QUERY (dc <* USEDIN (ato, 'DRAUGHTING_ELEMENT_SCHEMA.' +'DRAUGHTING_CALLOUT.CONTENTS') |('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.DRAUGHTING_CALLOUT' IN TYPEOF (dc)))* [SELF\mapped_item.mapping_target]) = 1))) = 0;
END_ENTITY;

ENTITY draughting_model
  SUBTYPE OF (representation);
UNIQUE
  UR1: SELF\representation.name;
WHERE
  WR1: SIZEOF (QUERY (it <* SELF.items | NOT (SIZEOF (['AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.MAPPED_ITEM','AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.STYLED_ITEM','AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.AXIS2_PLACEMENT','AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.CAMERA_MODEL'] * TYPEOF (it)) = 1))) = 0;
  WR2: SIZEOF (QUERY (mi <* QUERY (it <* SELF.items |('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.MAPPED_ITEM' IN TYPEOF(it))) | NOT (SIZEOF (['AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.SHAPE_REPRESENTATION','AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.DRAUGHTING_MODEL'] * TYPEOF (mi\mapped_item.mapping_source. mapped_representation)) = 1))) = 0;
  WR3: SIZEOF (QUERY (smi <* QUERY (si <* QUERY (it <* SELF.items |('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.STYLED_ITEM' IN TYPEOF(it))) |('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.MAPPED_ITEM' IN TYPEOF(si\styled_item.item))) |(NOT (('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.SHAPE_REPRESENTATION' IN TYPEOF(smi\styled_item.item\mapped_item. mapping_source.mapped_representation)) AND(SIZEOF (QUERY (sty <* smi\styled_item.styles |(NOT (SIZEOF (QUERY (psa <* sty.styles |(NOT ('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.CURVE_STYLE' IN TYPEOF(psa))))) = 1)))) = 1))))) = 0;
END_ENTITY;

ENTITY shape_aspect_associativity
  SUBTYPE OF (shape_aspect_relationship);
WHERE
  WR1: SELF.relating_shape_aspect.product_definitional;
  WR2: NOT (SELF.related_shape_aspect.product_definitional);
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.' +'PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (sdr <* QUERY (pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.' +'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF (pdr))) | NOT (SIZEOF (QUERY (it <* sdr.used_representation.items | NOT ('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.CURVE' IN TYPEOF(it)) AND(SIZEOF (QUERY (aco <* USEDIN (it,'PRESENTATION_APPEARANCE_SCHEMA.STYLED_ITEM.ITEM') | SIZEOF (TYPEOF (aco) *['AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.LEADER_CURVE','AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.PROJECTION_CURVE']) = 1)) + SIZEOF (USEDIN (it, 'PRESENTATION_DEFINITION_SCHEMA.' +'ANNOTATION_FILL_AREA.BOUNDARIES')) >= 1))) = 1))) = 0))) = 0;
  WR4: SIZEOF (QUERY (pd <* USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.' +'PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (sdr <* QUERY (pdr <* USEDIN (pd,'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.' +'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF (pdr))) | NOT (check_associative_shape_aspects(sdr)))) = 0))) = 0;
END_ENTITY;

FUNCTION check_associative_shape_aspects
 (sdr : shape_definition_representation) : BOOLEAN;
LOCAL
sr1, sr2 : SET OF representation;
dm, pv : SET OF representation;
END_LOCAL;
IF (SIZEOF (sdr.used_representation.items) <> 2) THEN
RETURN (FALSE);
END_IF;
sr1 := using_representations(sdr.used_representation.items[1]);
sr2 := using_representations(sdr.used_representation.items[2]);
REPEAT i := 1 TO HIINDEX(sr1);
dm := representations_mapped_into(sr1[i]);
REPEAT j := 1 TO HIINDEX(dm);
IF ('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.DRAUGHTING_MODEL' IN TYPEOF(dm[j]))
THEN
IF (dm[j] IN sr2) THEN RETURN (TRUE);
END_IF;
pv := representations_mapped_into(dm[j]);
REPEAT k := 1 TO HIINDEX(pv);
IF ('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.PRESENTATION_VIEW' IN TYPEOF(pv[k]))
THEN
IF (pv[k] IN sr2) THEN RETURN (TRUE);
END_IF;
END_IF;
END_REPEAT;
END_IF;
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO HIINDEX(sr2);
dm := representations_mapped_into(sr2[i]);
REPEAT j := 1 TO HIINDEX(dm);
IF ('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.DRAUGHTING_MODEL' IN TYPEOF(dm[j]))
THEN
IF (dm[j] IN sr1) THEN RETURN (TRUE);
END_IF;
pv := representations_mapped_into(dm[j]);
REPEAT k := 1 TO HIINDEX(pv);
IF ('AIC_ASSOCIATIVE_DRAUGHTING_ELEMENTS.PRESENTATION_VIEW' IN TYPEOF(pv[k]))
THEN
IF (pv[k] IN sr1) THEN RETURN (TRUE);
END_IF;
END_IF;
END_REPEAT;
END_IF;
END_REPEAT;
END_REPEAT;
RETURN(FALSE);
      
END_FUNCTION;

FUNCTION representations_mapped_into
 (rep : representation) : SET OF representation;
LOCAL
results : SET OF representation := [];
rm : SET OF representation_map;
mi : SET OF mapped_item := [];
END_LOCAL;
rm := bag_to_set(USEDIN(rep, 'REPRESENTATION_SCHEMA.' +
'REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
REPEAT i := 1 TO HIINDEX(rm);
mi := mi + rm[i].map_usage;
END_REPEAT;
REPEAT j := 1 TO HIINDEX(mi);
results := results + USEDIN(mi[j],'REPRESENTATION_SCHEMA.' +
'REPRESENTATION.ITEMS');
END_REPEAT;
RETURN(results);
      
END_FUNCTION;

END_SCHEMA;  -- aic_associative_draughting_elements