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 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 common_datum
SUBTYPE OF (composite_shape_aspect, datum);
WHERE
WR1: SIZEOF (SELF\composite_shape_aspect.component_relationships) = 2;
WR2: SIZEOF (QUERY ( sar <* SELF\composite_shape_aspect.component_relationships|
NOT (('SHAPE_ASPECT_DEFINITION_SCHEMA.DATUM' IN TYPEOF (sar.related_shape_aspect)) AND
NOT ('SHAPE_ASPECT_DEFINITION_SCHEMA.COMMON_DATUM' IN TYPEOF (sar.related_shape_aspect))) )) = 0;
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 datum
SUBTYPE OF (shape_aspect);
identification : identifier;
INVERSE
established_by_relationships : SET[1:?] OF shape_aspect_relationship FOR related_shape_aspect;
WHERE
WR1: ('SHAPE_ASPECT_DEFINITION_SCHEMA.DATUM_FEATURE' IN TYPEOF(SELF)) OR
NOT
(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)
XOR
(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 : SET[1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
WHERE
WR1: SIZEOF(QUERY(sar <* SELF\datum_feature.feature_basis_relationship
| ('SHAPE_ASPECT_DEFINITION_SCHEMA.DATUM' IN TYPEOF
(sar\shape_aspect_relationship.related_shape_aspect)))) = 1;
WR2: SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY;
ENTITY datum_reference;
precedence : INTEGER;
referenced_datum : datum;
WHERE
WR1: precedence > 0;
END_ENTITY;
ENTITY datum_target
SUBTYPE OF (shape_aspect);
target_id : identifier;
INVERSE
target_basis_relationship : SET[1:?] OF shape_aspect_relationship FOR relating_shape_aspect;
WHERE
WR1: SIZEOF(QUERY(sar <* SELF\datum_target.target_basis_relationship
| ('SHAPE_ASPECT_DEFINITION_SCHEMA.DATUM' IN TYPEOF
(sar\shape_aspect_relationship.related_shape_aspect)))) = 1;
WR2: SELF\shape_aspect.product_definitional = TRUE;
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 extension
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1;
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 referenced_modified_datum
SUBTYPE OF (datum_reference);
modifier : limit_condition;
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;
ENTITY tangent
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1;
END_ENTITY;
END_SCHEMA; -- shape_aspect_definition_schema