| Application module: Assembly component placement requirements | ISO/TS 10303-1634:2018-11(E) © ISO | 
         (*
ISO/TC 184/SC 4/WG 12 N9399 - ISO/TS 10303-1634 Assembly component placement requirements - EXPRESS ARM
Supersedes 
         ISO/TC 184/SC 4/WG 12 N8083
*)
         
SCHEMA Assembly_component_placement_requirements_arm;
         USE FROM
         Assembly_module_with_interconnect_component_arm;
            -- ISO/TS 10303-1643
         REFERENCE FROM 
         Requirement_decomposition_arm   -- ISO/TS 10303-1740
  (get_rvd);
         
         REFERENCE FROM 
         Support_resource_arm   -- ISO/TS 10303-1800
  (bag_to_set);
         
TYPE acpr_requirement_assignment_item =
         
         
         SELECT
         BASED_ON
         requirement_assignment_item
         WITH 
         
            (restriction_basis_item, 
    Placement_group_requirement_definition);
         END_TYPE; 
         
TYPE assembly_component_or_component_feature =
         
         
         SELECT
            (Assembly_component, 
    Component_feature);
         END_TYPE; 
         
TYPE assembly_product_design_object_category =
         
         EXTENSIBLE
         
         ENUMERATION
         
         OF
         
            
         (assembly_component_category,
    assembly_module_component_category,
    assembly_module_component_terminal_category,
    assembly_module_macro_component_category,
    assembly_module_macro_component_join_terminal_category,
    bare_die_component_category,
    bare_die_component_terminal_category,
    buried_via_category,
    cable_component_category,
    component_feature_category,
    component_termination_passage_category,
    conductive_interconnect_element_with_pre_defined_transitions_category,
    cutout_category,
    cutout_edge_segment_category,
    dielectric_material_passage_category,
    embedded_physical_component_terminal_category,
    fiducial_category,
    fill_area_category,
    inter_stratum_feature_category,
    interconnect_component_interface_terminal_category,
    interconnect_component_join_terminal_category,
    interconnect_module_component_category,
    interconnect_module_component_stratum_based_terminal_category,
    interconnect_module_component_surface_feature_category,
    interconnect_module_component_terminal_category,
    interconnect_module_edge_category,
    interconnect_module_edge_segment_category,
    interconnect_module_macro_component_category,
    interconnect_module_macro_component_join_terminal_category,
    interface_access_material_removal_laminate_component_category,
    interface_access_stratum_feature_template_component_category,
    interface_component_category,
    interfacial_connection_category,
    internal_probe_access_area_category,
    laminate_component_category,
    minimally_defined_component_terminal_category,
    packaged_component_category,
    packaged_component_join_terminal_category,
    packaged_connector_component_category,
    packaged_connector_component_interface_terminal_category,
    physical_component_category,
    plated_passage_or_unsupported_passage_category,
    routed_interconnect_component_category,
    routed_physical_component_category,
    stratum_feature_category,
    via_category);
         END_TYPE; 
         
TYPE assembly_product_design_object_category_or_group =
         
         
         SELECT
            (assembly_product_design_object_category, 
    Group);
         END_TYPE; 
         
TYPE assembly_spacing_type =
         
         EXTENSIBLE
         
         ENUMERATION
         
         OF
         
            
         (nearest_boundary,
    centroid,
    furthest_boundary);
         END_TYPE; 
         
TYPE restriction_basis_item =
         
         EXTENSIBLE
         
         GENERIC_ENTITY
         
         
         SELECT
            (Predefined_requirement_view_definition, 
    Part_feature);
         END_TYPE; 
         
ENTITY Assembly_group_spacing_requirement
           SUBTYPE OF (Predefined_requirement_view_definition);
           dependent_group : Placement_group_requirement_definition;
           of_spacing_type : assembly_spacing_type;
           reference_group : Placement_group_requirement_definition;
           SELF\Predefined_requirement_view_definition.required_characteristic : Length_tolerance_characteristic;
         
         END_ENTITY;
ENTITY Assembly_spacing_requirement
           SUBTYPE OF (Predefined_requirement_view_definition);
           reference_design_object_category : assembly_product_design_object_category_or_group;
           dependent_design_object_category : assembly_product_design_object_category_or_group;
           SELF\Predefined_requirement_view_definition.required_characteristic : Length_tolerance_characteristic;
           of_spacing_type : assembly_spacing_type;
         
         END_ENTITY;
ENTITY Component_group_assignment;
           associated_group : Placement_group_requirement_definition;
           assigned_component : assembly_component_or_component_feature;
         
         END_ENTITY;
ENTITY Component_placement_restriction_assignment;
           maximum_negative_component_height : 
         OPTIONAL 
         Length_tolerance_characteristic;
           maximum_positive_component_height : 
         OPTIONAL 
         Length_tolerance_characteristic;
           area : 
         OPTIONAL 
         Mounting_restriction_area;
           volume : 
         OPTIONAL 
         Mounting_restriction_volume;
           requirement : Item_restricted_requirement;
           components_permitted : BOOLEAN;
           mounting_clearance : 
         OPTIONAL 
         Length_tolerance_characteristic;
WHERE
           WR1: EXISTS(area) OR EXISTS(volume);
         
         END_ENTITY;
ENTITY Item_restricted_requirement
           SUBTYPE OF (Predefined_requirement_view_definition);
           basis : restriction_basis_item;
WHERE
           WR1: SELF :<>: basis;
         
         END_ENTITY;
ENTITY Mounting_restriction_area
           SUBTYPE OF (Non_feature_shape_element);
           mounting_surface : Interconnect_module_component_surface_feature;
           SELF\Non_feature_shape_element.associated_definition : Assembly_module_design_view;
WHERE
           WR1: (SIZEOF(SELF\Non_feature_shape_element.element_shape) = 0) OR
            (SIZEOF(QUERY(es <* SELF\Non_feature_shape_element.element_shape | 
            NOT ('CONSTRUCTION_GEOMETRY_ARM.CONSTRUCTIVE_GEOMETRY' IN TYPEOF(es))
            )) = 0);
         
         END_ENTITY;
ENTITY Mounting_restriction_volume
           SUBTYPE OF (Non_feature_shape_element);
           mounting_surface : Interconnect_module_component_surface_feature;
           SELF\Non_feature_shape_element.associated_definition : Assembly_module_design_view;
INVERSE
           volume : Non_feature_shape_model FOR associated_element;
         
         END_ENTITY;
ENTITY Placement_group_area_assignment;
           placed_group : Placement_group_requirement_definition;
           area : Mounting_restriction_area;
         
         END_ENTITY;
ENTITY Placement_group_requirement_definition
           SUBTYPE OF (Requirement_view_definition);
           design_specific_usage : STRING;
DERIVE
           requirement_relationship : SET[0:?] OF Requirement_view_definition_relationship := bag_to_set((QUERY(rvdr <* USEDIN (SELF, 'REQUIREMENT_VIEW_DEFINITION_RELATIONSHIP_ARM.'+
         	    'REQUIREMENT_VIEW_DEFINITION_RELATIONSHIP.PRIMARY') | (rvdr.relation_type = 'derived_from'))));
           requirement : SET[0:?] OF Requirement_view_definition := get_acpr_rvd(requirement_relationship);
INVERSE
           composition : SET[1:?] OF Component_group_assignment FOR associated_group;
WHERE
           WR1: EXISTS (requirement) AND (SIZEOF(requirement) >= 1);
           WR2: NOT EXISTS (SELF\Product_view_definition.name);
         
         END_ENTITY;
ENTITY Placement_group_volume_assignment;
           placed_group : Placement_group_requirement_definition;
           volume : Mounting_restriction_volume;
         
         END_ENTITY;
SUBTYPE_CONSTRAINT acpr_predefined_requirement_view_definition_subtypes FOR Predefined_requirement_view_definition;
           ONEOF (Assembly_spacing_requirement,
         Assembly_group_spacing_requirement,
         Item_restricted_requirement);
      
         END_SUBTYPE_CONSTRAINT;
FUNCTION get_acpr_rvd
 (input : SET[0:?] OF Requirement_view_definition_relationship) : SET[0:?] OF Requirement_view_definition;
         LOCAL rvd : SET[0:?] OF Requirement_view_definition := []; --this gives us access to the information base END_LOCAL; -- iterate over input REPEAT i := 1 to SIZEOF(input) by 1; rvd := rvd + input[i]\requirement_view_definition_relationship.secondary; END_REPEAT; RETURN(rvd);
         END_FUNCTION;
         
         END_SCHEMA;  -- Assembly_component_placement_requirements_arm
© ISO 2018 — All rights reserved