Application module: Package ISO/TS 10303-1707:2018-11(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 type definitions
   4.3 ARM entity definitions
   4.4 ARM subtype constraint definition
   4.5 ARM function definitions
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM type definitions
     5.2.2 MIM entity definitions
     5.2.3 MIM subtype constraint definition

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

(*
ISO/TC 184/SC 4/WG 12 N9448 - ISO/TS 10303-1707 Package - EXPRESS ARM
Supersedes ISO/TC 184/SC 4/WG 12 N8182
*)



SCHEMA Package_arm;

USE FROM Characteristic_arm;    -- ISO/TS 10303-1654

USE FROM Geometric_tolerance_arm;    -- ISO/TS 10303-1051

USE FROM Non_feature_shape_element_arm;    -- ISO/TS 10303-1706

USE FROM Part_feature_function_arm;    -- ISO/TS 10303-1712

REFERENCE FROM Support_resource_arm   -- ISO/TS 10303-1800
  (bag_to_set);


TYPE interface_plane_or_seating_plane = SELECT
   (Seating_plane,
    Interface_plane);
END_TYPE;

TYPE mounting_technology_type = EXTENSIBLE ENUMERATION OF
   (surface_mount,
    through_hole);
END_TYPE;

TYPE pa_external_identification_item = SELECT BASED_ON external_identification_item WITH
   (Package_terminal_template_definition,
    Package);
END_TYPE;

TYPE pa_material_item_select = SELECT BASED_ON material_item_select WITH
   (Package_body,
    Package_terminal_template_definition);
END_TYPE;

TYPE predefined_lead_form = EXTENSIBLE ENUMERATION OF
   (gull_wing,
    j_lead,
    reversed_j_lead,
    integral_terminal,
    undefined,
    ball,
    straight);
END_TYPE;

TYPE seating_plane_intersection_type = ENUMERATION OF
   (surface_intersection,
    through_intersection,
    does_not_intersect);
END_TYPE;

ENTITY Connection_zone_in_part_feature_template_definition
  SUBTYPE OF (Connection_zone);
  SELF\Shape_element.associated_definition : Part_feature_template_definition;
WHERE
  WR1: NOT EXISTS(SELF\Shape_element.element_name);
END_ENTITY;

ENTITY Connection_zone_package_interface_plane_relationship;
  interface_plane : interface_plane_or_seating_plane;
  derived_zone : Connection_zone_in_part_feature_template_definition;
  derived_zone_shape_class : STRING;
INVERSE
  associated_package_terminal : SET[0:1] OF Package_terminal_template_definition FOR seating_plane_zone;
WHERE
  WR1: derived_zone_shape_class IN ['area','edge'];
END_ENTITY;

ENTITY Guided_wave_terminal
  SUBTYPE OF (Package_terminal);
END_ENTITY;

ENTITY Package
  SUBTYPE OF (Part_usage_view);
  mounting_technology : OPTIONAL mounting_technology_type;
  maximum_seating_plane_installation_offset : OPTIONAL Length_data_element;
  nominal_mounting_lead_pitch : OPTIONAL Length_data_element;
  nominal_mounting_lead_span : OPTIONAL Length_data_element;
  maximum_body_height_above_seating_plane : OPTIONAL Length_data_element;
  maximum_body_height_below_seating_plane : OPTIONAL Length_data_element;
  body_clearance_above_seating_plane : OPTIONAL Length_tolerance_characteristic;
  body_clearance_below_seating_plane : OPTIONAL Length_tolerance_characteristic;
  maximum_lead_length_below_seating_plane : OPTIONAL Length_data_element;
  least_lead_length_below_seating_plane : OPTIONAL Length_data_element;
DERIVE
  maximum_package_total_vertical_extent : Length_data_element := max_data_element( add_data_element(maximum_body_height_above_seating_plane,maximum_body_height_below_seating_plane), add_data_element(maximum_body_height_above_seating_plane,maximum_lead_length_below_seating_plane));
  cutout_required : LOGICAL := (maximum_body_height_below_seating_plane\Value_with_unit.value_component > 0.0);
  maximum_installed_height : Length_data_element := add_data_element(maximum_body_height_above_seating_plane,maximum_seating_plane_installation_offset);
  one_orientation_feature : LOGICAL := (SIZEOF(orientation_feature) = 1);
  two_orientation_features : LOGICAL := (SIZEOF(orientation_feature) = 2);
  three_orientation_features : LOGICAL := (SIZEOF(orientation_feature) = 3);
  package_seating_plane : SET[0:?] OF Seating_plane := bag_to_set(QUERY(nfse <* USEDIN(SELF, 'NON_FEATURE_SHAPE_ELEMENT_ARM.NON_FEATURE_SHAPE_ELEMENT.ASSOCIATED_DEFINITION')| 'NON_FEATURE_SHAPE_ELEMENT_ARM.SEATING_PLANE' IN TYPEOF(nfse)));
  interface_plane : SET[0:?] OF Interface_plane := bag_to_set(QUERY(nfse <* USEDIN(SELF, 'NON_FEATURE_SHAPE_ELEMENT_ARM.NON_FEATURE_SHAPE_ELEMENT.ASSOCIATED_DEFINITION')| 'NON_FEATURE_SHAPE_ELEMENT_ARM.INTERFACE_PLANE' IN TYPEOF(nfse)));
INVERSE
  body : SET[0:1] OF Package_body FOR associated_definition;
  package_accesses : SET[0:?] OF Package_terminal FOR associated_definition;
  package_polarity_indication : SET[0:1] OF Polarity_indication_feature FOR associated_definition;
  orientation_feature : SET[0:3] OF Package_orientation_feature FOR associated_definition;
WHERE
  WR1: NOT (mounting_technology = surface_mount) OR (NOT (EXISTS(maximum_lead_length_below_seating_plane) OR EXISTS(least_lead_length_below_seating_plane)));
  WR2: NOT (EXISTS(maximum_lead_length_below_seating_plane)) OR (maximum_lead_length_below_seating_plane\Value_with_unit.value_component > 0.0);
  WR3: NOT (EXISTS(least_lead_length_below_seating_plane)) OR (least_lead_length_below_seating_plane\Value_with_unit.value_component > 0.0);
  WR4: NOT EXISTS(mounting_technology) OR (SIZEOF(package_seating_plane) = 1);
  WR5: SIZEOF(QUERY(pa <* package_accesses | 'PACKAGE_ARM.PRIMARY_REFERENCE_TERMINAL' IN TYPEOF(pa))) = 1;
  WR6: SIZEOF(QUERY(nt <* package_accesses | EXISTS(nt\Part_feature.precedent_feature) )) = (SIZEOF(package_accesses) - 1);
  WR7: SIZEOF(QUERY(nt <* package_accesses | (SIZEOF(nt\Part_feature.subsequent_feature) = 1) )) = (SIZEOF(package_accesses) - 1);
  WR8: NOT one_orientation_feature OR ('PACKAGE_ARM.PRIMARY_ORIENTATION_FEATURE' IN TYPEOF(orientation_feature[1]));
  WR9: NOT two_orientation_features OR ((SIZEOF(QUERY(orf <* orientation_feature | ('PACKAGE_ARM.PRIMARY_ORIENTATION_FEATURE' IN TYPEOF(orf)))) = 1) AND (SIZEOF(QUERY(orf <* orientation_feature | ('PACKAGE_ARM.SECONDARY_ORIENTATION_FEATURE' IN TYPEOF(orf)))) = 1));
  WR10: NOT three_orientation_features OR ((SIZEOF(QUERY(orf <* orientation_feature | ('PACKAGE_ARM.PRIMARY_ORIENTATION_FEATURE' IN TYPEOF(orf)))) = 1) AND (SIZEOF(QUERY(orf <* orientation_feature | ('PACKAGE_ARM.SECONDARY_ORIENTATION_FEATURE' IN TYPEOF(orf)))) = 1) AND (SIZEOF(QUERY(orf <* orientation_feature | ('PACKAGE_ARM.TERTIARY_ORIENTATION_FEATURE' IN TYPEOF(orf)))) = 1));
END_ENTITY;

ENTITY Package_body
  SUBTYPE OF (Part_feature);
  SELF\Part_feature.associated_definition : Package;
INVERSE
  body_material : Material_identification FOR items;
WHERE
  WR1: SIZEOF(QUERY(pf <* USEDIN(SELF, 'PACKAGE_ARM.PACKAGE_BODY_SURFACE.ASSOCIATED_PACKAGE_BODY') | ('PACKAGE_ARM.' + 'PACKAGE_BODY_TOP_SURFACE' IN TYPEOF(pf)))) <= 1;
  WR2: SIZEOF(QUERY(pf <* USEDIN(SELF, 'PACKAGE_ARM.PACKAGE_BODY_SURFACE.ASSOCIATED_PACKAGE_BODY') | ('PACKAGE_ARM.' + 'PACKAGE_BODY_BOTTOM_SURFACE' IN TYPEOF(pf)))) <= 1;
  WR3: SIZEOF(QUERY(pf <* USEDIN(SELF, 'PACKAGE_ARM.PACKAGE_BODY_SURFACE.ASSOCIATED_PACKAGE_BODY') | ('PACKAGE_ARM.' + 'PACKAGE_BODY_EDGE_SURFACE' IN TYPEOF(pf)))) <= 1;
  WR4: 'CONDUCTIVITY_MATERIAL_ASPECTS_ARM.'+ 'MATERIAL_IDENTIFICATION_WITH_CONDUCTIVITY_CLASSIFICATION' IN TYPEOF (body_material);
END_ENTITY;

ENTITY Package_body_bottom_surface
  SUBTYPE OF (Package_body_surface);
END_ENTITY;

ENTITY Package_body_edge_segment_surface
  SUBTYPE OF (Package_body_surface);
  composed_surface : Package_body_edge_surface;
  start_vertex : Edge_segment_vertex;
  end_vertex : Edge_segment_vertex;
WHERE
  WR1: start_vertex :<>: end_vertex;
END_ENTITY;

ENTITY Package_body_edge_surface
  SUBTYPE OF (Package_body_surface);
END_ENTITY;

ENTITY Package_body_surface
  ABSTRACT SUPERTYPE OF (ONEOF (Package_body_bottom_surface,
                                Package_body_top_surface,
                                Package_body_edge_segment_surface,
                                Package_body_edge_surface))
  SUBTYPE OF (Part_feature);
  associated_package_body : Package_body;
END_ENTITY;

ENTITY Package_body_top_surface
  SUBTYPE OF (Package_body_surface);
END_ENTITY;

ENTITY Package_orientation_feature
  ABSTRACT SUPERTYPE OF (ONEOF (Primary_orientation_feature,
                                Secondary_orientation_feature,
                                Tertiary_orientation_feature))
  SUBTYPE OF (Part_feature);
  associated_body_vertical_extent : OPTIONAL SET[1:2] OF Package_body_surface;
  SELF\Part_feature.associated_definition : Package;
WHERE
  WR1: 'GEOMETRIC_TOLERANCE_ARM.DATUM_FEATURE' IN TYPEOF(SELF);
END_ENTITY;

ENTITY Package_terminal
  SUBTYPE OF (Part_feature, Placed_feature);
  SELF\Placed_feature.definition : Package_terminal_template_definition;
  SELF\Part_feature.associated_definition : Package;
INVERSE
  feature_shape : SET[1:?] OF Usage_concept_usage_relationship FOR associated_usage;
END_ENTITY;

ENTITY Package_terminal_surface_constituent_relationship
  SUBTYPE OF (Shape_element_relationship);
  SELF\Shape_element_relationship.relating : Package_body_surface;
  SELF\Shape_element_relationship.related : Package_terminal;
END_ENTITY;

ENTITY Package_terminal_template_definition
  SUBTYPE OF (Part_feature_template_definition);
  SELF\Feature_definition_with_connection_area.connection_area RENAMED external_connection_zone : OPTIONAL SET[1:?] OF Connection_zone_in_part_feature_template_definition;
  internal_connection_zone : OPTIONAL SET[1:?] OF Connection_zone_in_part_feature_template_definition;
  lead_form : OPTIONAL predefined_lead_form;
  seating_plane_intersection : OPTIONAL seating_plane_intersection_type;
  terminal_characteristic : OPTIONAL SET[1:?] OF characteristic;
  terminal_diametrical_extent : OPTIONAL Length_tolerance_characteristic;
  seating_plane_zone : OPTIONAL Connection_zone_package_interface_plane_relationship;
DERIVE
  mates_with_substrate : BOOLEAN := (EXISTS(seating_plane_zone));
  terminal_core_material : SET[0:1] OF Material_identification := bag_to_set(QUERY( temp <* USEDIN(SELF, 'GENERIC_MATERIAL_ASPECTS_ARM.MATERIAL_IDENTIFICATION.ITEMS') | (SIZEOF( QUERY( cla <* USEDIN(temp,'CLASSIFICATION_ASSIGNMENT_ARM.' + 'CLASSIFICATION_ASSIGNMENT.' + 'ITEMS') | cla.role = 'terminal core material')) = 1)));
  terminal_surface_material : SET[0:1] OF Material_identification := bag_to_set(QUERY( temp <* USEDIN(SELF, 'GENERIC_MATERIAL_ASPECTS_ARM.MATERIAL_IDENTIFICATION.ITEMS') | (SIZEOF( QUERY( cla <* USEDIN(temp,'CLASSIFICATION_ASSIGNMENT_ARM.' + 'CLASSIFICATION_ASSIGNMENT.' + 'ITEMS') | cla.role = 'terminal surface material')) = 1)));
INVERSE
  external_lead_form : SET[0:1] OF External_source_identification FOR item;
WHERE
  WR1: NOT EXISTS(seating_plane_zone) OR (SIZEOF(QUERY(cz <* external_connection_zone | (seating_plane_zone.derived_zone = cz))) = 1);
  WR2: NOT EXISTS(seating_plane_zone) OR ((seating_plane_intersection = surface_intersection) OR (seating_plane_intersection = through_intersection));
  WR3: NOT ((seating_plane_intersection = does_not_intersect) AND (EXISTS(seating_plane_zone)));
  WR4: NOT (SIZEOF(terminal_core_material) = 1) OR ('CONDUCTIVITY_MATERIAL_ASPECTS_ARM.MATERIAL_IDENTIFICATION_WITH_CONDUCTIVITY_CLASSIFICATION' IN TYPEOF (terminal_core_material[1]));
  WR5: (SIZEOF(terminal_surface_material) = 1) AND ('CONDUCTIVITY_MATERIAL_ASPECTS_ARM.MATERIAL_IDENTIFICATION_WITH_CONDUCTIVITY_CLASSIFICATION' IN TYPEOF (terminal_surface_material[1]));
  WR6: (EXISTS (lead_form)) XOR ((SIZEOF(external_lead_form)) = 1);
END_ENTITY;

ENTITY Polarity_indication_feature
  SUBTYPE OF (Part_feature);
  associated_body_vertical_extent : OPTIONAL SET[1:2] OF Package_body_surface;
  associated_terminal : Package_terminal;
  SELF\Part_feature.associated_definition : Package;
END_ENTITY;

ENTITY Primary_orientation_feature
  SUBTYPE OF (Package_orientation_feature);
END_ENTITY;

ENTITY Primary_reference_terminal
  SUBTYPE OF (Package_terminal);
WHERE
  WR1: NOT (EXISTS(SELF\Part_feature.precedent_feature));
END_ENTITY;

ENTITY Secondary_orientation_feature
  SUBTYPE OF (Package_orientation_feature);
END_ENTITY;

ENTITY Tertiary_orientation_feature
  SUBTYPE OF (Package_orientation_feature);
END_ENTITY;

ENTITY Visual_orientation_feature
  SUBTYPE OF (Part_feature);
  associated_body_vertical_extent : OPTIONAL SET[1:2] OF Package_body_surface;
  associated_terminal : Package_terminal;
END_ENTITY;

ENTITY Wire_terminal
  SUBTYPE OF (Package_terminal);
END_ENTITY;

ENTITY Wire_terminal_template_definition
  SUBTYPE OF (Package_terminal_template_definition);
  SELF\Package_terminal_template_definition.internal_connection_zone : SET[1:?] OF Connection_zone_in_part_feature_template_definition;
  wire_terminal_length : OPTIONAL Length_tolerance_characteristic;
END_ENTITY;

SUBTYPE_CONSTRAINT part_feature_subtypes FOR Part_feature;
  ONEOF (Package_body,
         Package_body_surface,
         Package_orientation_feature,
         Polarity_indication_feature,
         Visual_orientation_feature);
END_SUBTYPE_CONSTRAINT;

FUNCTION add_data_element
 (input1 : Length_data_element; input2 : Length_data_element) : Length_data_element;
RETURN(input1);
END_FUNCTION;

FUNCTION max_data_element
 (input1 : Length_data_element; input2 : Length_data_element) : Length_data_element;
RETURN(input1);
END_FUNCTION;

END_SCHEMA;  -- Package_arm


© ISO 2018 — All rights reserved