Application module: Component grouping | ISO/TS 10303-1656:2019(E) © ISO |
This clause specifies the information requirements for the Component grouping application module. The information requirements are specified as the Application Reference Model (ARM) of this application module.
NOTE 1 A graphical representation of the information requirements is given in Annex C.
NOTE 2 The mapping specification is specified in 5.1. It shows how the information requirements are met by using common resources and constructs defined or imported in the MIM schema of this application module.
This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following begins the Component_grouping_arm schema and identifies the necessary external references.
EXPRESS specification:
*)
SCHEMA Component_grouping_arm;
(*
The following EXPRESS interface statements specify the elements imported from the ARMs of other application modules.
EXPRESS specification:
*)
USE FROM
Assembly_component_arm;
--
ISO/TS 10303-1802
USE FROM
Value_with_unit_extension_arm;
--
ISO/TS 10303-1753
REFERENCE FROM
Support_resource_arm
--
ISO/TS 10303-1800
(bag_to_set);
(*
NOTE 1 The schemas referenced above are specified in the following part of ISO 10303:
Assembly_component_arm ISO/TS 10303-1802 Value_with_unit_extension_arm ISO/TS 10303-1753 Support_resource_arm ISO/TS 10303-1800
NOTE 2 See Annex C, Figures C.1and C.2 for a graphical representation of this schema.
This subclause specifies the ARM entities for this module. Each ARM application entity is an atomic element that embodies a unique application concept and contains attributes specifying the data elements of the entity. The ARM entities and definitions are specified below.
An Array_placement_group is a type of Assembly_group_component that is a group of Assembly_component placed in a linear or rectangular regular pattern in the assembly. An Array_placement_group is one of a Linear_array_placement_group_component or a Rectangular_array_placement_group_component. The position tolerance specification of an Assembly_component that is included in an array is different from an Assembly_component that is randomly placed. Text support in this part of ISO 10303 is limited to a linear pattern defined by the character to character spacing defined in the font definition. Spacing properties for items other than text is supported by applying Geometric Dimensioning and Tolerancing methods.
NOTE This part of ISO 10303 provides support for multi-line messages with one instance of the Laminate_text_string_component for each line of the multi-line message.
EXAMPLE 1 Examples of components placed as arrays include: test points, thermal vias, integrated circuit memory devices, light emitting diodes, spare land areas, component terminal mating features where the component itself has terminals arranged in a grid, and text.
EXAMPLE 2 Figure 1 is an example layout for a component array. The Axis_placement that is in the role of origin for the Package definition in this example is placed at the centroid of the Package and consequently at the centroid of the Package_body. The illustration is typical of a drawing presentation of the design information conveyed by this part of ISO 10303. Each rectangle in the illustration is a representation of an instance of a Package_body.
EXPRESS specification:
*)
ENTITY Array_placement_group
ABSTRACT SUPERTYPE
OF (ONEOF (Linear_array_placement_group_component,
Rectangular_array_placement_group_component))
SUBTYPE OF (Assembly_group_component);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY Assembly_component_placement_link;
precedent_element : Assembly_component;
subsequent_element : Assembly_component;
INVERSE
referenced_by : Linear_array_placement_group_component FOR element;
WHERE
WR1: acyclic_assembly_component_placement_link(SELF,
[subsequent_element],
'COMPONENT_GROUPING_ARM.ASSEMBLY_COMPONENT_PLACEMENT_LINK');
END_ENTITY;
(*
Attribute definitions:
precedent_element: specifies the first role of an Assembly_component for the Assembly_component_placement_link.
subsequent_element: specifies the second role of an Assembly_component for the Assembly_component_placement_link.
referenced_by: specifies an inverse relationship that specifies that the existence of the Assembly_component_placement_link is dependent on the existence of the Linear_array_placement_group_component that specifies the Assembly_component_placement_link as its element.
Formal propositions:
WR1: The graph of instances of the Application Object Assembly_component_placement_link shall not contain a cycle.
An Assembly_group_component is a type of Assembly_component and a type of Single_instance. The members of the Assembly_group_component are specified by the attribute components. The members of the Assembly_group_component are also members of the Assembly_definition of which the Assembly_group_component is a member.
EXAMPLE This application object is provided to support, for instance, the hardware items required for power device mounting.
NOTE 1 This application object is not included to support process plans.
NOTE 2 The intent is for all members of Assembly_component that are also in the role of related_views for Next_assembly_usage to be placed as a group in a placement activity using a CAD tool. However, each member of the group is placed individually in this standard. A receiving system should treat the relative placement of members of the group as derived data.
EXPRESS specification:
*)
ENTITY Assembly_group_component
SUBTYPE OF (Assembly_component, Single_instance);
INVERSE
components : SET[1:?] OF Next_assembly_usage FOR relating_view;
WHERE
WR1: SIZEOF(QUERY(co <* components | NOT(('ASSEMBLY_COMPONENT_ARM.ASSEMBLY_COMPONENT') IN TYPEOF(co\Product_occurrence_definition_relationship.related_view))))
= 0;
END_ENTITY;
(*
Attribute definitions:
components: specifies an inverse relationship that specifies that the existence of the Assembly_group_component is dependent on the existence of the Next_assembly_usage that specifies the Assembly_group_component as its relating_view. There shall be one or more Next_assembly_usage for an Assembly_group_component.
Formal propositions:
WR1: The size of components shall be greater than zero, and components[1].relation_type shall be equal to 'group component'.
EXPRESS specification:
*)
ENTITY Linear_array_placement_group_component
SUBTYPE OF (Array_placement_group);
element : SET[1:?] OF Assembly_component_placement_link;
initial_node_positive_x_displacement : Length_data_element;
terminus_node_positive_x_displacement : Length_data_element;
location_uncertainty : Length_data_element;
WHERE
WR1: (1 + SIZEOF(element)) = cg_get_sz_ac(element);
END_ENTITY;
(*
Attribute definitions:
element: specifies a role of the Assembly_component_placement_link for the Linear_array_placement_group_component. There shall be one or more Assembly_component_placement_link for a Linear_array_placement_group_component.
initial_node_positive_x_displacement: specifies a role of the Length_data_element for the Linear_array_placement_group_component. The initial_node_positive_x_displacement is the offset in the positive x direction from the local origin of the first element of the array.
terminus_node_positive_x_displacement: specifies a role of the Length_data_element for the Linear_array_placement_group_component. The terminus_node_positive_x_displacement is the offset in the positive x direction of the last element of the array.
location_uncertainty: specifies a role of the Length_data_element for the Linear_array_placement_group_component.
Formal propositions:
WR1: The number of members of Assembly_component_placement_link referenced by the aggregate element shall be one less than the number of members of Assembly_component referenced by members of the element aggregate.
NOTE This is equivalent to stating that the graph composed of Assembly_component_placement_link referenced by element contains one connected path.
EXPRESS specification:
*)
ENTITY Linear_array_placement_group_component_link;
precedent_element : Linear_array_placement_group_component;
subsequent_element : Linear_array_placement_group_component;
INVERSE
referenced_by : Rectangular_array_placement_group_component FOR element;
WHERE
WR1: acyclic_linear_array_placement_group_component_link(SELF,
[subsequent_element],
'COMPONENT_GROUPING_ARM.LINEAR_ARRAY_PLACEMENT_GROUP_COMPONENT_LINK');
END_ENTITY;
(*
Attribute definitions:
precedent_element: specifies the first role of a Linear_array_placement_group_component for the Linear_array_placement_group_component_link.
subsequent_element: specifies the second role of a Linear_array_placement_group_component for the Linear_array_placement_group_component_link.
referenced_by: specifies an inverse relationship that specifies that the existence of the Linear_array_placement_group_component_link is dependent on the existence of the Rectangular_array_placement_group_component that specifies the Linear_array_placement_group_component_link as its element.
Formal propositions:
WR1: The graph of instances of the Application Object Linear_array_placement_group_component_link shall not contain a cycle.
A Rectangular_array_placement_group_component is a type of Array_placement_group. The location_uncertainty refers to originating CAD system geometric uncertainty, not a material processing tolerance.
EXPRESS specification:
*)
ENTITY Rectangular_array_placement_group_component
SUBTYPE OF (Array_placement_group);
element : SET[1:?] OF Linear_array_placement_group_component_link;
initial_row_positive_y_displacement : Length_data_element;
terminus_row_positive_y_displacement : Length_data_element;
location_uncertainty : Length_data_element;
WHERE
WR1: (1 + SIZEOF(element)) = cg_get_sz_lapgc(element);
END_ENTITY;
(*
Attribute definitions:
element: specifies a role of the Linear_array_placement_group_component_link for the Rectangular_array_placement_group_component. There shall be one or more Linear_array_placement_group_component_link for a Rectangular_array_placement_group_component.
initial_row_positive_y_displacement: specifies a role of the Length_data_element for the Rectangular_array_placement_group_component. The initial_row_positive_y_displacement is the offset in the positive y direction of the first element of the array.
terminus_row_positive_y_displacement: specifies a role of the Length_data_element for the Rectangular_array_placement_group_component. The terminus_row_positive_y_displacement is the offset in the positive y direction of the last element of the array.
location_uncertainty: specifies a role of the Length_data_element for the Rectangular_array_placement_group_component.
Formal propositions:
WR1: The number of members of Linear_array_placement_group_component_link referenced by the aggregate element shall be one less than the number of members of Linear_array_placement_group_component referenced by members of the element aggregate.
NOTE This is equivalent to stating that the graph composed of Linear_array_placement_group_component_link referenced by element contains one connected path.
This subclause specifies the ARM functions for this module. The ARM functions and definitions are specified below.
EXPRESS specification:
*)
FUNCTION acyclic_assembly_component_placement_link (relation : Assembly_component_placement_link; relatives : SET[1:?] OF Assembly_component; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF Assembly_component_placement_link; END_LOCAL; IF relation.precedent_element IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(pd <* bag_to_set(USEDIN(relation.precedent_element, 'COMPONENT_GROUPING_ARM.' + 'ASSEMBLY_COMPONENT_PLACEMENT_LINK.' + 'SUBSEQUENT_ELEMENT')) | specific_relation IN TYPEOF(pd)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_assembly_component_placement_link(x[i], relatives + relation.precedent_element, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: the specified Assembly_component_placement_link.
relatives: the specified set of Assembly_component.
specific_relation: the specified STRING.
EXPRESS specification:
*)
FUNCTION acyclic_linear_array_placement_group_component_link (relation : Linear_array_placement_group_component_link; relatives : SET[1:?] OF Linear_array_placement_group_component; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF Linear_array_placement_group_component_link; END_LOCAL; IF relation.precedent_element IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(pd <* bag_to_set(USEDIN(relation.precedent_element, 'COMPONENT_GROUPING_ARM.' + 'LINEAR_ARRAY_PLACEMENT_GROUP_COMPONENT_LINK.' + 'SUBSEQUENT_ELEMENT')) | specific_relation IN TYPEOF(pd)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_linear_array_placement_group_component_link(x[i], relatives + relation.precedent_element, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: the specified Linear_array_placement_group_component_link.
relatives: the specified set of Linear_array_placement_group_components.
specific_relation: the specified STRING.
The cg_get_sz_ac function returns the size of the set of Assembly_component referenced by the set of Assembly_component_placement_link input to the function. The reference may be either as precedent or subsequent element.
NOTE The use of SET as an aggregate type for Assembly_component provides pruning of redundant references.
EXPRESS specification:
*)
FUNCTION cg_get_sz_ac (input : SET[1:?] OF Assembly_component_placement_link) : INTEGER;
LOCAL ac : SET OF Assembly_component := []; END_LOCAL; REPEAT i := 1 TO HIINDEX(input); ac := ac + input[i]\Assembly_component_placement_link.precedent_element + input[i]\Assembly_component_placement_link.subsequent_element; END_REPEAT; RETURN (SIZEOF(ac));
END_FUNCTION;
(*
Argument definitions:
input: the specified set of Assembly_component_placement_links.
The cg_get_sz_lapgc function returns the size of the set of Linear_array_placement_group_component referenced by the set of Linear_array_placement_group_component_link input to the function. The reference may be either as precedent or subsequent element.
NOTE The use of SET as an aggregate type for Linear_array_placement_group_component provides pruning of redundant references.
EXPRESS specification:
*)
FUNCTION cg_get_sz_lapgc (input : SET[1:?] OF Linear_array_placement_group_component_link) : INTEGER;
LOCAL ac : SET OF Linear_array_placement_group_component := []; END_LOCAL; REPEAT i := 1 TO HIINDEX(input); ac := ac + input[i]\Linear_array_placement_group_component_link.precedent_element + input[i]\Linear_array_placement_group_component_link.subsequent_element; END_REPEAT; RETURN (SIZEOF(ac));
END_FUNCTION;
(*
Argument definitions:
input: the specified set of Linear_array_placement_group_component_links.
*)
END_SCHEMA; -- Component_grouping_arm
(*
© ISO 2019 — All rights reserved