# SUBSYSTEM OVERVIEW

Product Structure/Configuration Management (PS/CM) Subsystem (s044)

The PS/CM subsystem will create a STEP AP203 Class 1 model with information obtained from PDElib configuration files. There is a primary (PS) configuration file that drives the whole process. For each component defined in the PS configuration file there is a secondary (CM) configuration file.

# PS CONFIGURATION FILE

The PS configuration file is used to define the individual components and their relationship in an assembly. The contents of this file are restricted to data structures defined by the s044 data definition file (s044.ddf). The individual component information contains the following data:

       Component id (required)
       Unit (required)
       Tolerance (required)
       CM file name (required)

Every component and assembly must have an entry containing this information. The CM file name defines the secondary PDElib configuration file used to define the required CM data for the component. The content of this file will be explained later in this document. The assembly relationship information contains the following data:

       Parent id (required)
       Child id (required)
       Instance id (required)
       Instance name (required)
       Instance description (required)
       X rotation (optional)
       Y rotation (optional)
       Z rotation (optional)
       X translation (optional)
       Y translation (optional)
       Z translation (optional)

Every component/assembly relationship must have an entry containing this information. The parent id must match an id defined in the component section. The child id must also match an id defined in the component section but cannot be the same as parent. These two ids define a relationship between the assembly (parent) and the component (child). Since a component could be instanced more than once, the instance id, name, and description define the instance. The rotation and translation values are optional and default to zero if not specified. If specified, the rotation values are specified in degrees. Below is an example of the component information in the primary file:

    assy_entity:
    component =
       {"car_id","mm",0.01,"car.cm"},
       {"tire_id","mm",0.01,"tire.cm"},
       {"engine_id","mm",0.01,"engine.cm"},
       {"block_id","mm",0.01,"block.cm"},
       {"piston_id","mm",0.01,"piston.cm"};
    relationship =
       {"car_id","tire_id","id1","name1","description1",,90.0,,10.0,10.0},
       {"car_id","tire_id","id2","name2","description2",,270.0,,-10.0,10.0},
       {"car_id","tire_id","id3","name3","description3",,90.0,,10.0,-10.0},
       {"car_id","tire_id","id4","name4","description4",,270.0,,-10.0,-10.0},
       {"car_id","engine_id","id5","name5","description5",,,90.0,,10.0,10.0},
       {"engine_id","block_id","id6","name6","description6"},
       {"engine_id","piston_id","id7","name7","description7",,90.0,,5.0,5.0},
       {"engine_id","piston_id","id8","name8","description8",,90.0,,-5.0,5.0},
       {"engine_id","piston_id","id9","name9","description9",,90.0,,5.0,-5.0},
       {"engine_id","piston_id","id10","name10","description10",,90.0,,-5.0,-5.0};

Additional file header information is required to complete the definition of the assembly. This data is defined below:

    assy_header:
       file_description = "...";
       author = "...";
       organization = "...";
       preprocessor_version = "...";
       originating_ system = "...";
       authorization = "...";

All of this information is required.

# CM CONFIGURATION FILE

A CM file is required for each component defined in the component section of the PS file. The content of this file is defined by the s041 data definition file. The document fields are used to define the native CAD file information. The geometry for most assemblies is defined by the components of the assembly. In this case, a native CAD file is not required. If an assembly has additional geometry besides the geometry defined by the components, the CAD file is required.

An example of a CM file follows:

    CFG_PRODUCT:
    ID			= "11111";
    NAME			= "tire";
    CFG_PRODUCT_RELATED_PRODUCT_CATEGORY:
    NAME			= "detail";
    CFG_PRODUCT_CATEGORY:
    NAME			= "non_standard";
    CFG_PRODUCT_CATEGORY_RELATIONSHIP:
    CFG_MECHANICAL_CONTEXT:
    DISCIPLINE_TYPE         = "mechanical";
    CFG_PRODUCT_OWNER:
    role_NAME            	=  "design_owner";
    person_ID            	=  "333-003";
    person_FIRST_NAME    	=  "K";
    person_LAST_NAME    	=  "White";
    person_MIDDLE_NAMES  	=  "H";
    organization_NAME    	=  "New Ventures, Inc.";
    organization_ID      	=  "NVI-Michigan";
    CFG_PRDFFR:
    ID			= "A";
    MAKE_OR_BUY		= "BOUGHT";
    CFG_PRDFFR_CREATOR:
    role_NAME           	= "creator";
    person_ID           	= "222-002";
    person_FIRST_NAME   	= "Gabrielle";
    person_LAST_NAME    	= "Pierre";
    organization_NAME   	= "New Ventures, Inc.";
    organization_ID     	= "NVI-Michigan";
    CFG_PRDFFR_SUPPLIER:
    role_NAME           	= "design_supplier";
    person_ID           	= "CDI-2";
    person_FIRST_NAME   	= "B";
    person_LAST_NAME    	= "Smith";
    organization_NAME   	= "Contract Design, Inc.";
    organization_ID     	= "CDI";
    CFG_PRDFFR_APPROVAL:
    approval_status_NAME 	= "approved";
    approval_LEVEL        	= "Approved as initial STEP test case part";
    person_ID            	= "777-007";
    person_FIRST_NAME    	= "James";
    person_LAST_NAME     	= "Black";
    organization_NAME    	= "New Ventures, Inc.";
    organization_ID      	= "NVI-Michigan";
    year_component       	= "1993" ;
    month_component      	= "7" ;
    day_component        	= "17" ;
    hour_component       	= "13" ;
    minute_component     	= "29";
    second_component     	= "52";
    hour_offset             = "5";
    sense                   = "behind";
    CFG_PRDFFR_SECURITY_CLASSIFICATION:
    NAME			= "1993-C1";
    PURPOSE			= "open availability of STEP test data" ;
    level_NAME		= "unclassified";
    CFG_PRDFFR_SECURITY_CLASSIFICATION_APPROVAL:
    approval_status_NAME 	= "approved";
    approval_LEVEL       	= "Approved as unclassified STEP test data";
    person_ID            	= "666-006";
    person_FIRST_NAME    	= "Robert";
    person_LAST_NAME     	= "Spock";
    person_MIDDLE_NAMES  	=  "S";
    organization_NAME    	= "New Ventures, Inc.";
    organization_ID      	= "NVI-Michigan";
    year_component       	= "1993" ;
    month_component      	= "7" ;
    day_component        	= "17" ;
    hour_component       	= "13" ;
    minute_component     	= "47";
    second_component     	= "28";
    hour_offset             = "5";
    sense			= "behind";
    CFG_PRDFFR_SECURITY_CLASSIFICATION_CLASSIFICATION_OFFICER:
    role_NAME 		= "classification_officer";
    person_ID		= "555-005";
    person_FIRST_NAME 	= "Stephen";
    person_LAST_NAME 	= "Johnson";
    organization_NAME	= "New Ventures, Inc.";
    organization_ID 	= "NVI-Michigan";
    CFG_PRDFFR_SECURITY_CLASSIFICATION_CLASSIFICATION_DATE:
    ROLE			= "classification_date";
    year_component 		= "1993";
    month_component 	= "7";
    day_component 		= "17";
    hour_component 		= "13";
    minute_component	= "45";
    second_component	= "20";
    hour_offset		= "5";
    sense			= "behind";
    CFG_PRODUCT_DEFINITION:
    DESCRIPTION		= "detailed drawing as planned for STEP conformance testing";
    DOCUMENT_NAME           = "tire.cad";
    DOCUMENT_TYPE_PRODUCT_DATA_TYPE = "cad_filename";
    CFG_PRODUCT_DEFINITION_SHAPE:
    CFG_PRODUCT_DEFINITION_CONTEXT:
    LIFE_CYCLE_STAGE	= "design";
    CFG_PRODUCT_DEFINITION_CREATOR:
    role_NAME 		= "creator";
    person_ID		= "222-002";
    person_FIRST_NAME 	= "Gabrielle";
    person_LAST_NAME 	= "Pierre";
    organization_NAME	= "New Ventures, Inc.";
    organization_ID 	= "NVI-Michigan";
    CFG_PRODUCT_DEFINITION_DATE:
    ROLE			= "creation_date";
    year_component          = "1993" ;
    month_component         = "7" ;
    day_component           = "19" ;
    hour_component          = "19" ;
    minute_component        = "46";
    second_component        = "55";
    hour_offset             = "5";
    sense                   = "behind";
    CFG_PRODUCT_DEFINITION_APPROVAL:
    approval_status_NAME    = "approved";
    approval_LEVEL          = "Approved as STEP conformance testing drawing";
    person_ID               = "777-007";
    person_FIRST_NAME       = "James";
    person_LAST_NAME        = "Black";
    organization_NAME       = "New Ventures, Inc.";
    organization_ID         = "NVI-Michigan";
    year_component          = "1993" ;
    month_component         = "7" ;
    day_component           = "19" ;
    hour_component          = "19" ;
    minute_component        = "47";
    second_component        = "51";
    hour_offset             = "5";
    sense                   = "behind";

# ASSEMBLY TRAVERSAL

The function passed to s044_TraverseAssembly is defined as follows:

    -----------------------------------------------------------------------------
       PDX_MSGT foo (MDA_PTR shprpr_ptr, GDX_MATRIX matrix,
                     int level, T_S044_ASSEMBLY *current,
                     T_S044_ASSEMBLY *parent, int units,
                     PDX_BOOL assembly, MDA_PTR prddfn_ptr,
                     MDA_PTR nauo_ptr);
    -----------------------------------------------------------------------------
       shprpr_ptr  The shape representation for the current node.
       matrix      The matrix to be applied at this level, either
                      relative or absolute depending on option passed
                      to s044_TraverseAssembly.
       level       Depth of this node from the top level node,
                      with 0 representing the top.
       current     Assembly structure object for the current node.
       parent      Assembly structure object for the parent of the
                      current node.
       units       Units of the current node (see s041_CreateRprCnt).
       assembly    True if this node is an assembly or false if this
                      node is a component.
       prddfn_ptr  The product definition for the current node.
       nauo_ptr    The next assembly usage occurance relating te
                      current node to it's parent node.