Application module: Part definition relationship | ISO/TS 10303-1055:2019(E) © ISO |
(*
ISO/TC 184/SC 4/WG 12 N10333 - ISO/TS 10303-1055 Part definition relationship - EXPRESS ARM
Supersedes
ISO/TC 184/SC 4/WG 12 N9872
*)
SCHEMA Part_definition_relationship_arm;
USE FROM
Part_view_definition_arm;
-- ISO/TS 10303-1023
USE FROM
Product_view_definition_relationship_arm;
-- ISO/TS 10303-1041
USE FROM
Value_with_unit_arm;
-- ISO/TS 10303-1054
REFERENCE FROM
Support_resource_arm -- ISO/TS 10303-1800
(bag_to_set);
TYPE pdr_additional_application_domain_enumeration =
ENUMERATION
BASED_ON
additional_application_domain_enumeration
WITH
(complete_design,
partial_design,
partial_design_interface);
END_TYPE;
ENTITY Definitional_part_view_usage
SUBTYPE OF (View_definition_usage);
SELF\View_definition_relationship.relating_view : Part_view_definition;
SELF\View_definition_relationship.related_view : Part_view_definition;
WHERE
WR1: acyclic_definitional_part_view_usage (SELF, [related_view],
'PART_DEFINITION_RELATIONSHIP_ARM.DEFINITIONAL_PART_VIEW_USAGE');
END_ENTITY;
ENTITY Make_from_relationship
SUBTYPE OF (View_definition_usage);
SELF\View_definition_relationship.relating_view : Part_view_definition;
SELF\View_definition_relationship.related_view : Part_view_definition;
quantity :
OPTIONAL
Value_with_unit;
priority :
OPTIONAL
INTEGER;
WHERE
WR1: SELF\View_definition_relationship.relating_view :<>:
SELF\View_definition_relationship.related_view;
WR2: NOT(EXISTS(quantity)) XOR
((NOT ('NUMBER' IN TYPEOF(quantity.value_component))) XOR (quantity.value_component > 0));
END_ENTITY;
SUBTYPE_CONSTRAINT pdr_view_definition_usage_subtypes FOR View_definition_usage;
ONEOF (Definitional_part_view_usage,
Make_from_relationship);
END_SUBTYPE_CONSTRAINT;
FUNCTION acyclic_definitional_part_view_usage
(relation : Definitional_part_view_usage; relatives : SET[1:?] OF Part_view_definition; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF Definitional_part_view_usage; END_LOCAL; IF relation.relating_view IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(pd <* bag_to_set(USEDIN(relation.relating_view, 'PART_DEFINITION_RELATIONSHIP_ARM.DEFINITIONAL_PART_VIEW_USAGE.RELATED_VIEW')) | specific_relation IN TYPEOF(pd)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_definitional_part_view_usage(x[i], relatives + relation.relating_view, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
END_SCHEMA; -- Part_definition_relationship_arm
© ISO 2019 — All rights reserved