Application module: Package | ISO/TS 10303-1707:2018-11(E) © ISO |
(*
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