Schema: Single_part_representation_mim



SCHEMA Single_part_representation_mim;

USE FROM Document_assignment_mim;    -- ISO/TS 10303-1122

USE FROM Extended_measure_representation_mim;    -- ISO/TS 10303-1106

USE FROM External_model_mim;    -- ISO/TS 10303-1033

USE FROM Part_and_version_identification_mim;    -- ISO/TS 10303-1022

USE FROM Part_view_definition_mim;    -- ISO/TS 10303-1023

USE FROM Person_organization_assignment_mim;    -- ISO/TS 10303-1013

USE FROM Product_categorization_mim;    -- ISO/TS 10303-1016

USE FROM Property_assignment_mim;    -- ISO/TS 10303-1030

USE FROM Shape_property_assignment_mim;    -- ISO/TS 10303-1032


TYPE spr_document_reference_item = SELECT BASED_ON document_reference_item WITH
   (product,
    product_definition,
    product_definition_formation);
END_TYPE;

TYPE spr_organization_item = EXTENSIBLE SELECT BASED_ON organization_item WITH
   (product,
    product_definition,
    product_definition_formation);
END_TYPE;

TYPE spr_person_and_organization_item = EXTENSIBLE SELECT BASED_ON person_and_organization_item WITH
   (product,
    product_definition,
    product_definition_formation);
END_TYPE;

FUNCTION categories_of_product
 (obj : product) : SET OF STRING;
LOCAL
category_assignments: BAG OF product_category;
categories: SET OF STRING:=[];
i: INTEGER;
END_LOCAL;
category_assignments := USEDIN(obj, 'PRODUCT_DEFINITION_SCHEMA' + '.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS');
REPEAT i := LOINDEX(category_assignments) TO HIINDEX(category_assignments) BY 1;
categories := categories + category_assignments[i].name;
END_REPEAT;
RETURN(categories);
      
END_FUNCTION;

END_SCHEMA;  -- Single_part_representation_mim