Application module: Component grouping ISO/TS 10303-1656:2019(E)
© ISO

Cover page
Table of contents
Copyright
Foreword
Introduction
1 Scope
2 Normative references
3 Terms, definitions and abbreviated terms
    3.1 Terms and definitions
    3.2 Abbreviated terms

4 Information requirements
   4.1 Required AM ARMs
   4.2 ARM entity definitions
   4.3 ARM function definitions
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM entity definitions

A MIM short names
B Information object registration
C ARM EXPRESS-G   EXPRESS-G
D MIM EXPRESS-G   EXPRESS-G
E Computer interpretable listings
F Change history
Bibliography
Index

4 Information requirements

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;
(*

4.1 Required AM ARMs

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.

4.2 ARM entity definitions

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.

4.2.1 Array_placement_group   EXPRESS-GMapping table

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.



Figure 1 —  Array_placement_group

Figure 1 —  Array_placement_group

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;
(*

4.2.2 Assembly_component_placement_link   EXPRESS-GMapping table

An Assembly_component_placement_link is a means to specify a directed relationship between two components in the assembly to support regular placement.

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.

4.2.3 Assembly_group_component   EXPRESS-GMapping table

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'.

4.2.4 Linear_array_placement_group_component   EXPRESS-GMapping table

A Linear_array_placement_group_component is a type of an Array_placement_group. The location_uncertainty relates to the originating CAD system uncertainty, not a material processing tolerance.

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.

4.2.5 Linear_array_placement_group_component_link   EXPRESS-GMapping table

A Linear_array_placement_group_component_link is a directed relationship between two Linear_array_placement_group_component included to support establishing an array of placed components.

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.

4.2.6 Rectangular_array_placement_group_component   EXPRESS-GMapping table

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.

4.3 ARM function definitions

This subclause specifies the ARM functions for this module. The ARM functions and definitions are specified below.

4.3.1 acyclic_assembly_component_placement_link

The acyclic_assembly_component_placement_link function determines whether the graph of instances of the Application Object type Assembly_component_placement_link that contains relation as one of its links contains a cycle. This function may be used to evaluate Assembly_component_placement_link or any of its subtypes.

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.

4.3.2 acyclic_linear_array_placement_group_component_link

The acyclic_linear_array_placement_group_component_link function determines whether the graph of instances of the Application Object type Linear_array_placement_group_component_link that contains relation as one of its links contains a cycle. This function may be used to evaluate Linear_array_placement_group_component_link or any of its subtypes.

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.

4.3.3 cg_get_sz_ac

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.

4.3.4 cg_get_sz_lapgc

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