| Application module: Physical unit 3D design view | ISO/TS 10303-1725:2018-11(E) © ISO | 
         (*
ISO/TC 184/SC 4/WG 12 N9390 - ISO/TS 10303-1725 Physical unit 3D design view - EXPRESS ARM
Supersedes 
         ISO/TC 184/SC 4/WG 12 N8203
*)
         
SCHEMA Physical_unit_3d_design_view_arm;
         USE FROM
         Layered_3d_shape_arm;
            -- ISO/TS 10303-1694
         USE FROM
         Part_template_shape_with_parameters_arm;
            -- ISO/TS 10303-1720
         USE FROM
         Physical_unit_design_view_arm;
            -- ISO/TS 10303-1728
         USE FROM
         Solid_model_arm;
            -- ISO/TS 10303-1793
         REFERENCE FROM 
         Support_resource_arm   -- ISO/TS 10303-1800
  (bag_to_set);
         
ENTITY Assembly_component_3d_shape_model
           SUBTYPE OF (Geometric_model);
           shape_characterized_component : SET[1:?] OF Assembly_component;
DERIVE
           equivalent_reference_shape_model : SET[0:1] OF Geometric_model_relationship := bag_to_set(QUERY( gmr <* USEDIN(SELF, 'GEOMETRIC_MODEL_RELATIONSHIP_ARM.GEOMETRIC_MODEL_RELATIONSHIP.REP_2') |
         (gmr\Representation_relationship.relation_type = 'equivalent reference shape model')));
WHERE
           WR1: NOT EXISTS(SELF\Representation.name);
           WR2: SIZEOF(equivalent_reference_shape_model) < 2;
         
         END_ENTITY;
ENTITY Component_3d_location
           SUBTYPE OF (Contextual_shape_representation, Geometric_composition_with_operator_transformation);
           SELF\Geometric_relationship_with_operator_transformation.transformation : Cartesian_transformation_3d;
           placement_fixed : BOOLEAN;
           SELF\Geometric_model_relationship.rep_1 RENAMED component_model : Assembly_component_3d_shape_model;
           SELF\Geometric_model_relationship.rep_2 RENAMED assembly_model : Physical_unit_3d_shape_model;
DERIVE
           component : Next_assembly_usage := SELF\Contextual_shape_representation.product_context;
           the_context : Geometric_coordinate_space := assembly_model\Geometric_model.context_of_items;
           SELF\Contextual_shape_representation.shape_representing_relationship : Geometric_model_relationship := SELF;
           SELF\Representation_relationship.relation_type : label := 'component 3d location';
WHERE
           WR1: EXISTS (component);
           WR2: NOT('PHYSICAL_UNIT_3D_DESIGN_VIEW_ARM.ASSEMBLY_COMPONENT_3D_SHAPE_MODEL' IN TYPEOF(component_model)) OR
            (component\Product_occurrence_definition_relationship.related_view IN component_model\Assembly_component_3d_shape_model.shape_characterized_component);
           WR3: NOT('PHYSICAL_UNIT_SHAPE_WITH_PARAMETERS_ARM.PHYSICAL_UNIT_SHAPE_MODEL' IN TYPEOF(component_model)) OR
            (component_model\Physical_unit_shape_model.shape_characterized_definition :=: 
            component\Product_occurrence_definition_relationship.related_view\Definition_based_product_occurrence.derived_from);
           WR4: NOT('PART_TEMPLATE_SHAPE_WITH_PARAMETERS_ARM.PART_TEMPLATE_SHAPE_MODEL' IN TYPEOF(component_model)) OR
            (component\Product_occurrence_definition_relationship.related_view\Definition_based_product_occurrence.derived_from IN
            component_model\Part_template_shape_model.shape_characterized_definition);
         
         END_ENTITY;
RULE unique_assembly_component_3d_shape_model FOR 
         (Assembly_component_3d_shape_model);
LOCAL
     ac : BAG OF Assembly_component := [];
   END_LOCAL;
   REPEAT i := 1 to SIZEOF(Assembly_component_3d_shape_model) by 1;
     ac  := ac + Assembly_component_3d_shape_model[i].shape_characterized_component;
   END_REPEAT;WHERE
           WR1: SIZEOF(ac) = SIZEOF(bag_to_set(ac));
         END_RULE;
         
RULE unique_physical_unit_3d_shape_model_for_part_design_and_usage_view FOR 
         (Part_design_view, Part_usage_view);
WHERE
           WR1: SIZEOF(QUERY (pdv <* Part_design_view | (SIZEOF (QUERY (pu3dsm1 <*
            USEDIN (pdv,'PHYSICAL_UNIT_SHAPE_WITH_PARAMETERS_ARM.PHYSICAL_UNIT_SHAPE_MODEL.SHAPE_CHARACTERIZED_DEFINITION') |  
            ('PHYSICAL_UNIT_2D_SHAPE_ARM.PHYSICAL_UNIT_PLANAR_SHAPE_MODEL' IN TYPEOF
            (pu3dsm1)) AND (SIZEOF (QUERY (pu3dsm2 <* USEDIN
            (pdv,'PHYSICAL_UNIT_SHAPE_WITH_PARAMETERS_ARM.PHYSICAL_UNIT_SHAPE_MODEL.SHAPE_CHARACTERIZED_DEFINITION') |  
            ('PHYSICAL_UNIT_2D_SHAPE_ARM.PHYSICAL_UNIT_PLANAR_SHAPE_MODEL' IN TYPEOF
            (pu3dsm2)) AND (pu3dsm1 = pu3dsm2))) > 1))) > 0))) = 0;
           WR2: SIZEOF(QUERY (puv <* Part_usage_view | 
            (SIZEOF (QUERY (pu3dsm1 <* USEDIN
            (puv,'PHYSICAL_UNIT_SHAPE_WITH_PARAMETERS_ARM.PHYSICAL_UNIT_SHAPE_MODEL.SHAPE_CHARACTERIZED_DEFINITION') |  
            ('PHYSICAL_UNIT_2D_SHAPE_ARM.PHYSICAL_UNIT_PLANAR_SHAPE_MODEL' IN TYPEOF
            (pu3dsm1)) AND (SIZEOF (QUERY (pu3dsm2 <* USEDIN
            (puv,'PHYSICAL_UNIT_SHAPE_WITH_PARAMETERS_ARM.PHYSICAL_UNIT_SHAPE_MODEL.SHAPE_CHARACTERIZED_DEFINITION') |  
            ('PHYSICAL_UNIT_2D_SHAPE_ARM.PHYSICAL_UNIT_PLANAR_SHAPE_MODEL' IN TYPEOF
            (pu3dsm2)) AND (pu3dsm1 = pu3dsm2))) > 1))) > 0))) = 0;
         END_RULE;
         
         END_SCHEMA;  -- Physical_unit_3d_design_view_arm
© ISO 2018 — All rights reserved