Source : ISO 10303-47
SCHEMA shape_aspect_definition_schema;
REFERENCE FROM
product_property_definition_schema -- ISO 10303-41
(shape_aspect,
shape_aspect_relationship);
REFERENCE FROM
measure_schema -- ISO 10303-41
(measure_with_unit);
REFERENCE FROM
support_resource_schema -- ISO 10303-41
(bag_to_set,
label,
identifier);
TYPE limit_condition =
ENUMERATION
OF
(maximum_material_condition,
least_material_condition,
regardless_of_feature_size);
END_TYPE;
ENTITY datum
SUBTYPE OF (shape_aspect);
identification : identifier;
INVERSE
established_by_relationships : SET[1:?] OF shape_aspect_relationship FOR related_shape_aspect;
WHERE
WR1: SIZEOF (QUERY (x<*SELF\datum.established_by_relationships | SIZEOF (TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)*
['SHAPE_ASPECT_DEFINITION_SCHEMA.DATUM_FEATURE', 'SHAPE_ASPECT_DEFINITION_SCHEMA.DATUM_TARGET']) <> 1))=0;
END_ENTITY;
ENTITY datum_feature
SUBTYPE OF (shape_aspect);
INVERSE
feature_basis_relationship : shape_aspect_relationship FOR relating_shape_aspect;
WHERE
WR1: SIZEOF (QUERY (sar<* bag_to_set (USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.'+
'RELATING_SHAPE_ASPECT')) | NOT ('SHAPE_ASPECT_DEFINITION_SCHEMA.DATUM' IN TYPEOF (sar\shape_aspect_relationship.related_shape_aspect))))=0;
WR2: SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY;
ENTITY datum_target
SUBTYPE OF (shape_aspect);
target_id : identifier;
INVERSE
target_basis_relationship : shape_aspect_relationship FOR relating_shape_aspect;
WHERE
WR1: SIZEOF (QUERY (sar<* bag_to_set (USEDIN (SELF, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')) | NOT ('SHAPE_ASPECT_DEFINITION_SCHEMA.DATUM' IN TYPEOF (sar\shape_aspect_relationship.related_shape_aspect))))=0;
WR2: SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY;
ENTITY datum_reference;
precedence : INTEGER;
referenced_datum : datum;
WHERE
WR1: precedence > 0;
END_ENTITY;
ENTITY referenced_modified_datum
SUBTYPE OF (datum_reference);
modifier : limit_condition;
END_ENTITY;
ENTITY composite_shape_aspect
SUBTYPE OF (shape_aspect);
INVERSE
component_relationships : SET[2:?] OF shape_aspect_relationship FOR relating_shape_aspect;
END_ENTITY;
ENTITY derived_shape_aspect
SUPERTYPE OF
(ONEOF (apex,
centre_of_symmetry,
geometric_alignment,
geometric_intersection,
parallel_offset,
perpendicular_to,
extension,
tangent))
SUBTYPE OF (shape_aspect);
INVERSE
deriving_relationships : SET[1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
WHERE
WR1: SIZEOF (QUERY (dr <* SELF\derived_shape_aspect.deriving_relationships | NOT ('SHAPE_ASPECT_DEFINITION_SCHEMA.'
+ 'SHAPE_ASPECT_DERIVING_RELATIONSHIP' IN TYPEOF (dr)))) = 0;
END_ENTITY;
ENTITY apex
SUBTYPE OF (derived_shape_aspect);
END_ENTITY;
ENTITY centre_of_symmetry
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (QUERY(sadr<*SELF\derived_shape_aspect.deriving_relationships| NOT('SHAPE_ASPECT_DEFINITION_SCHEMA.SYMMETRIC_SHAPE_ASPECT'
IN TYPEOF (sadr\shape_aspect_relationship.related_shape_aspect))))=0;
END_ENTITY;
ENTITY geometric_alignment
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1;
END_ENTITY;
ENTITY geometric_intersection
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1;
END_ENTITY;
ENTITY parallel_offset
SUBTYPE OF (derived_shape_aspect);
offset : measure_with_unit;
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1;
END_ENTITY;
ENTITY perpendicular_to
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1;
END_ENTITY;
ENTITY extension
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1;
END_ENTITY;
ENTITY tangent
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1;
END_ENTITY;
ENTITY shape_aspect_deriving_relationship
SUBTYPE OF (shape_aspect_relationship);
WHERE
WR1: 'SHAPE_ASPECT_DEFINITION_SCHEMA.DERIVED_SHAPE_ASPECT' IN TYPEOF (SELF\SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT);
END_ENTITY;
ENTITY symmetric_shape_aspect
SUBTYPE OF (shape_aspect);
INVERSE
basis_relationships : SET[1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
WHERE
WR1: SIZEOF (QUERY (x<*SELF\symmetric_shape_aspect.basis_relationships | 'SHAPE_ASPECT_DEFINITION_SCHEMA.CENTRE_OF_SYMMETRY'
IN TYPEOF (x\shape_aspect_relationship.related_shape_aspect)))>=1;
END_ENTITY;
END_SCHEMA; -- shape_aspect_definition_schema