| Application module: Non feature shape element | ISO/TS 10303-1706:2018-11(E) © ISO | 
         (*
ISO/TC 184/SC 4/WG 12 N9351 - ISO/TS 10303-1706 Non feature shape element - EXPRESS ARM
Supersedes 
         ISO/TC 184/SC 4/WG 12 N8179
*)
         
SCHEMA Non_feature_shape_element_arm;
         USE FROM
         Physical_unit_shape_with_parameters_arm;
            -- ISO/TS 10303-1730
         USE FROM
         Part_feature_location_arm;
            -- ISO/TS 10303-1714
TYPE nfse_feature_or_non_feature_usage =
         
         
         SELECT
         BASED_ON
         feature_or_non_feature_usage
         WITH 
         
            (Usage_view_level_non_feature_shape_model);
         END_TYPE; 
         
TYPE nfse_usage_concept =
         
         
         SELECT
         BASED_ON
         usage_concept
         WITH 
         
            (Non_feature_shape_element);
         END_TYPE; 
         
TYPE view_shape_select =
         
         EXTENSIBLE
         
         GENERIC_ENTITY
         
         
         SELECT
            (Physical_unit_shape_model);
         END_TYPE; 
         
ENTITY Edge_segment_vertex
           SUBTYPE OF (Shape_element);
DERIVE
           SELF\Shape_element.product_definitional : BOOLEAN := TRUE;
         
         END_ENTITY;
ENTITY Interface_plane
           SUBTYPE OF (Non_feature_shape_element);
WHERE
           WR1: (SELF\Shape_element.element_name = 'interface plane');
         
         END_ENTITY;
ENTITY Non_feature_shape_element
           SUBTYPE OF (Shape_element);
           SELF\Shape_element.associated_definition : Part_view_definition;
DERIVE
           SELF\Shape_element.product_definitional : BOOLEAN := FALSE;
INVERSE
           element_shape : SET[0:?] OF Non_feature_shape_model FOR associated_element;
           associated_usage_concept : SET[0:?] OF Usage_concept_usage_relationship FOR associated_usage;
UNIQUE
           UR1: SELF\Shape_element.element_name, associated_definition;
WHERE
           WR1: NOT ((SIZEOF(associated_usage_concept) > 0) OR (SIZEOF(element_shape) > 0));
         
         END_ENTITY;
ENTITY Non_feature_shape_element_relationship
           SUBTYPE OF (Shape_element_relationship);
           SELF\Shape_element_relationship.relating : Non_feature_shape_element;
           SELF\Shape_element_relationship.related : Non_feature_shape_element;
UNIQUE
           UR1: related, relating;
         
         END_ENTITY;
ENTITY Non_feature_shape_model
           SUBTYPE OF (Geometric_model);
           associated_element : Non_feature_shape_element;
           model_shape : 
         OPTIONAL 
         Geometric_model;
WHERE
           WR1: TYPEOF(SELF) <> TYPEOF(model_shape);
           WR2: NOT EXISTS(SELF\Representation.id);
           WR3: SIZEOF(QUERY( x <* USEDIN(SELF, 'PROPERTY_ASSIGNMENT_ARM.PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION')
            | 'SHAPE_PROPERTY_ASSIGNMENT_ARM.SHAPE_DESCRIPTION_ASSOCIATION' IN TYPEOF(x)))=0;
         
         END_ENTITY;
ENTITY Reference_graphic_registration_mark
           SUBTYPE OF (Non_feature_shape_element);
         
         END_ENTITY;
ENTITY Seating_plane
           SUBTYPE OF (Non_feature_shape_element);
WHERE
           WR1: (SELF\Shape_element.element_name = 'seating plane');
         
         END_ENTITY;
ENTITY Usage_view_level_non_feature_shape_model
           ABSTRACT SUPERTYPE
         
           SUBTYPE OF (Non_feature_shape_model);
           SELF\Non_feature_shape_model.associated_element : View_level_non_feature_shape_element;
           SELF\Non_feature_shape_model.model_shape : view_shape_select;
WHERE
           WR1: SELF\Geometric_model.context_of_items = SELF\Non_feature_shape_model.model_shape\Geometric_model.context_of_items;
         
         END_ENTITY;
ENTITY View_level_non_feature_shape_element
           SUBTYPE OF (Non_feature_shape_element);
WHERE
           WR1: NOT(SIZEOF(SELF\Non_feature_shape_element.element_shape) > 0) OR
            valid_es('NON_FEATURE_SHAPE_ELEMENT_ARM.USAGE_VIEW_LEVEL_NON_FEATURE_SHAPE_MODEL',
            (SELF\Non_feature_shape_element.element_shape));
           WR2: NOT EXISTS(SELF\Shape_element.description);
         
         END_ENTITY;
SUBTYPE_CONSTRAINT nfse_shape_element_subtypes FOR Shape_element;
           ONEOF (Edge_segment_vertex,
         Non_feature_shape_element);
      
         END_SUBTYPE_CONSTRAINT;
FUNCTION valid_es
 (input1 : STRING; input2 : SET[0:?] OF Non_feature_shape_model) : BOOLEAN;
         REPEAT i := 1 to HIINDEX(input2);
    IF NOT (input1 IN TYPEOF(input2[i])) THEN RETURN(FALSE);
    END_IF;
   END_REPEAT;
    RETURN(TRUE);
         END_FUNCTION;
         
         END_SCHEMA;  -- Non_feature_shape_element_arm
© ISO 2018 — All rights reserved