| Application module: Physical unit 2D design view | ISO/TS 10303-1724:2018-11(E) © ISO | 
         (*
ISO/TC 184/SC 4/WG 12 N9623 - ISO/TS 10303-1724 Physical unit 2D design view - EXPRESS ARM
Supersedes 
         ISO/TC 184/SC 4/WG 12 N8200
*)
         
SCHEMA Physical_unit_2d_design_view_arm;
         USE FROM
         Part_template_shape_with_parameters_arm;
            -- ISO/TS 10303-1720
         USE FROM
         Physical_unit_2d_shape_arm;
            -- ISO/TS 10303-1726
         USE FROM
         Physical_unit_design_view_arm;
            -- ISO/TS 10303-1728
         REFERENCE FROM 
         Support_resource_arm   -- ISO/TS 10303-1800
  (bag_to_set);
         
ENTITY Assembly_component_2d_shape_model
           SUBTYPE OF (Planar_projected_shape_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: SIZEOF(equivalent_reference_shape_model) < 2;
         
         END_ENTITY;
ENTITY Component_2d_location
           SUBTYPE OF (Contextual_shape_representation, Geometric_composition_with_operator_transformation);
           placement_fixed : BOOLEAN;
           SELF\Geometric_relationship_with_operator_transformation.transformation : Cartesian_transformation_2d;
           SELF\Geometric_model_relationship.rep_2 RENAMED assembly_model : Physical_unit_planar_shape_model;
           SELF\Geometric_model_relationship.rep_1 RENAMED component_model : Geometric_model;
DERIVE
           component : Next_assembly_usage := SELF\Contextual_shape_representation.product_context;
           substrate_location : BOOLEAN := substrate_in_assembly(SELF);
           the_context : Geometric_coordinate_space := assembly_model\Representation.context_of_items;
           SELF\Contextual_shape_representation.shape_representing_relationship : Geometric_model_relationship := SELF;
           SELF\Representation_relationship.relation_type : label := 'component 2d location';
WHERE
           WR1: EXISTS (component);
           WR2: NOT('PHYSICAL_UNIT_2D_DESIGN_VIEW_ARM.ASSEMBLY_COMPONENT_2D_SHAPE_MODEL' IN TYPEOF(component_model)) OR
            (component\Product_occurrence_definition_relationship.related_view IN component_model\Assembly_component_2d_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_2d_shape_model FOR 
         (Assembly_component_2d_shape_model);
LOCAL
     ac : BAG OF Assembly_component := [];
     pass : BOOLEAN := TRUE;
   END_LOCAL;
   REPEAT i := 1 to SIZEOF(Assembly_component_2d_shape_model) by 1;
     ac  := ac + Assembly_component_2d_shape_model[i].shape_characterized_component;
   END_REPEAT;WHERE
           WR1: SIZEOF(ac) = SIZEOF(bag_to_set(ac));
         END_RULE;
         
RULE unique_physical_unit_planar_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 (pupsm1 <* 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
            (pupsm1)) AND (SIZEOF (QUERY (pupsm2 <* 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 (pupsm2)) AND (pupsm1 = pupsm2))) > 1)
            )) > 0) )) = 0;
           WR2: SIZEOF(QUERY (puv <* Part_usage_view | (SIZEOF (QUERY (pupsm1 <*
            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 (pupsm1)) AND 
            (SIZEOF (QUERY (pupsm2 <* 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 (pupsm2)) AND 
            (pupsm1 = pupsm2))) > 1) )) > 0) )) = 0;
         END_RULE;
         
FUNCTION pu2dv_has_shape
 (input : Assembly_component) : BOOLEAN;
         LOCAL
    ac2ds : BAG OF Assembly_component_2d_shape_model := USEDIN(input,'PHYSICAL_UNIT_2D_DESIGN_VIEW_ARM.ASSEMBLY_COMPONENT_2D_SHAPE_MODEL.SHAPE_CHARACTERIZED_COMPONENT');
  END_LOCAL;
  RETURN(SIZEOF(ac2ds) > 0);
         END_FUNCTION;
         
FUNCTION pu2dv_typeof
 (input : Assembly_component) : SET[0:?] OF STRING;
         LOCAL
    ac2ds : BAG OF Assembly_component_2d_shape_model := USEDIN(input,'PHYSICAL_UNIT_2D_DESIGN_VIEW_ARM.ASSEMBLY_COMPONENT_2D_SHAPE_MODEL.SHAPE_CHARACTERIZED_COMPONENT');
  END_LOCAL;
  IF SIZEOF(ac2ds) > 1 THEN 
    RETURN(?);
  END_IF;
  RETURN(TYPEOF(ac2ds[1]));
         END_FUNCTION;
         
FUNCTION substrate_in_assembly
 (c2dl : Component_2d_location) : BOOLEAN;
         RETURN(TRUE);
         END_FUNCTION;
         
         END_SCHEMA;  -- Physical_unit_2d_design_view_arm
© ISO 2018 — All rights reserved