PDM-UG: Complete instantiation example for part structure and relationships

From WikiSTEP

Jump to: navigation, search

This page belongs to the PDM Usage Guide.

ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('Assembly instantiation example'), '2;1');
FILE_NAME('', '11.06.1999, 08:29:45', (''), (''), '', '', '');
FILE_SCHEMA(('PDM_SCHEMA {1.2}'));
ENDSEC;
DATA;

/* Entities #10 to #520 define that items with associated meta-   */
/* information that are referenced in the product structure       */
/* definitions below                                              */
#10 = APPLICATION_CONTEXT('');
#20 = PRODUCT_CONTEXT('', #10, '');
#30 = PRODUCT('dca', 'disc cap assembly', 'disc cap assembly in dissassembly view of hub assembly', (#20));
#40 = PRODUCT('h1', 'hub assembly', '', (#20));
#50 = PRODUCT('s1', 'sleeve assembly', '', (#20));
#60 = PRODUCT_RELATED_PRODUCT_CATEGORY('assembly', $, (#40, #50, #30));
#70 = PRODUCT_RELATED_PRODUCT_CATEGORY('part', '', (#40, #50, #30));
#80 = PRODUCT_CATEGORY_RELATIONSHIP('', $, #70, #60);
#90 = PRODUCT('seal1', 'sealing', '', (#20));
#100 = PRODUCT('d1', 'disc', 'disc with holes', (#20));
#110 = PRODUCT('c1', 'cap', 'cap for hub assembly', (#20));
#120 = PRODUCT('cy1', 'cylinder', 'cylinder for sleeve assembly', (#20));
#130 = PRODUCT('g1', 'gasket', 'gasket for sleeve assembly', (#20));
#140 = PRODUCT('gex', 'gasket extern', 'externally supplied gasket', (#20));
#150 = PRODUCT('mat23', 'raw material for caps', '', (#20));
#160 = PRODUCT('cl_alt', 'cylinder alternative', 'alternate product for cy1', (#20));
#170 = PRODUCT_RELATED_PRODUCT_CATEGORY('part', '', (#40, #100, #110, #50, #120, #130, #30, #140, #150, #160, #90));
#180 = APPLICATION_PROTOCOL_DEFINITION('version 1.2', 'pdm_schema', 2000, #10);
#190 = PRODUCT_RELATED_PRODUCT_CATEGORY('detail', $, (#100, #110, #120, #130, #140, #160, #90));
#200 = PRODUCT_RELATED_PRODUCT_CATEGORY('part', '', (#100, #110, #120, #130, #140, #160, #90));
#210 = PRODUCT_CATEGORY_RELATIONSHIP('', $, #200, #190);
#220 = PRODUCT_DEFINITION_CONTEXT_ROLE('', $);
#230 = PRODUCT_DEFINITION_CONTEXT('part definition', #10, '');
#240 = PRODUCT_DEFINITION_FORMATION('next_assembly', 'hub assembly version 2 (with individual occurrences of components', #40);
#250 = PRODUCT_DEFINITION('view 1 hub', 'design view on hub assembly', #240, #230);
#260 = APPLICATION_CONTEXT('mechanical design');
#270 = PRODUCT_DEFINITION_CONTEXT('', #260, 'design');
#280 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#250, #270, #220);
#290 = PRODUCT_DEFINITION_FORMATION('1', '', #100);
#300 = PRODUCT_DEFINITION('disc view 1', 'design view on disc', #290, #230);
#310 = APPLICATION_CONTEXT('mechanical design');
#320 = PRODUCT_DEFINITION_CONTEXT('', #310, 'design');
#330 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#300, #320, #220);
#340 = PRODUCT_DEFINITION_CONTEXT_ROLE('part definition type', $);
#350 = PRODUCT_DEFINITION_CONTEXT('assembly definition', #10, '');
#360 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#250, #350, #340);
#370 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('disc1', 'single instance usage', '', #250, #300, $);
#390 = PRODUCT_DEFINITION_FORMATION('1', '', #130);
#400 = PRODUCT_DEFINITION('gv1', 'design view on gasket', #390, #230);
#410 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#400, #270, #220);
#420 = PRODUCT_DEFINITION_FORMATION('1', '', #120);
#430 = PRODUCT_DEFINITION('cv1', 'design view on cylinder', #420, #230);
#440 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#430, #270, #220);
#450 = PRODUCT_DEFINITION_FORMATION('1', '', #50);
#460 = PRODUCT_DEFINITION('sv1', 'design view on sleeve assembly', #450, #230);
#470 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#460, #270, #220);
#480 = PRODUCT_DEFINITION_FORMATION('1', '', #110);
#490 = PRODUCT_DEFINITION('capv1', 'design view on cap', #480, #230);
#500 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#490, #270, #220);
#520 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#460, #350, #340);

/* Instances #530 to #570 define the product structure for        */
/* the hub assembly of #250 via the components including the      */
/* sub-assembly of the sleeve #460                                */
#530 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('gu1', 'single instance usage', 'gasket usage 1', #460, #400, $);
#540 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('gu2', 'single instance usage', 'gasket usage 2', #460, #400, $);
#550 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('cyl1', 'single instance usage', 'cylinder usage', #460, #430, $);
#560 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('cap1', 'single instance usage', 'usage of cap in hub assembly', #250, #490, $);
#570 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('svu1', 'single instance usage', 'usage of sleeve sub-assembly in hub assembly', #250, #460, $);

/* Entitles #580 to #700 define the 'id owners' for the parts  */
#580 = ORGANIZATION('com1', 'Example Company', 'company');
#590 = ORGANIZATION_ROLE('id_owner');
#600 = APPLIED_ORGANIZATION_ASSIGNMENT(#580, #590, (#40));
#610 = ORGANIZATION_ROLE('id owner');
#620 = APPLIED_ORGANIZATION_ASSIGNMENT(#580, #610, (#130));
#630 = ORGANIZATION_ROLE('id owner');
#640 = APPLIED_ORGANIZATION_ASSIGNMENT(#580, #630, (#120));
#650 = ORGANIZATION_ROLE('id owner');
#660 = APPLIED_ORGANIZATION_ASSIGNMENT(#580, #650, (#50));
#670 = ORGANIZATION_ROLE('id owner');
#680 = APPLIED_ORGANIZATION_ASSIGNMENT(#580, #670, (#110));
#690 = ORGANIZATION_ROLE('id owner');
#700 = APPLIED_ORGANIZATION_ASSIGNMENT(#580, #690, (#100));

/* Entity #710 is an alternate view on the hub assembly version   */
/* defined by the product_definition_formation #240               */
/* The product structure in this view is defined by the entities  */
/* #760 to #810                                                   */
/* This product structure is different to the view #240 of the    */
/* same part version defined by #250. In this example the alternate */
/* product structure related to the view is a disassembly structure */
/* as opposed to the assembly structure related to the view #250   */
#710 = PRODUCT_DEFINITION('view 2 hub', 'disassembly view on hub', #240, #230);
#720 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#710, $, #220);
#730 = PRODUCT_DEFINITION_FORMATION('1', '', #30);
#740 = PRODUCT_DEFINITION('dcav1', 'disassembly view on disc and cap', #730, #230);
#750 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#740, $, #220);
#760 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('du', 'single instance usage', 'disc in disc cap assembly', #740, #300, $);
#770 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#740, #350, #340);
#780 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('cu', 'single instance usage', 'cap in disc-cap assembly', #740, #490, $);
#790 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#710, #350, #340);
#800 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('su2', 'single instance usage', 'sleeve assembly in disassembly view of hub', #710, #460, $);
#810 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('dcau1', 'single instance usage', 'disc cap assembly usage in disassembly view of hub', #710, #740, $);

/* #820 is another version of the hub assembly defined by #40     */
/* This version is specified with a product structure that        */
/* quantifies the occurrences of components in an assembly        */
/* The product structure relationships that defines the quantified */
/* usage of the components in an assembly are instantiated complex  */
/* with NEXT_ASSEMBLY_COMPONENT_USAGE to indicate that a given     */
/* parent node directly uses the referenced component              */
#820 = PRODUCT_DEFINITION_FORMATION('quantif', 'version specified with quantified  usages', #40);
#830 = PRODUCT_DEFINITION('qv1', 'view on quantified version of hub assembly', #820, #230);
#840 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#830, $, #220);
#850 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#830, #350, #340);
#860 = DIMENSIONAL_EXPONENTS(0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000);
#870 = NAMED_UNIT(#860);
#880 = MEASURE_WITH_UNIT(COUNT_MEASURE(1), #870);
#890 = (ASSEMBLY_COMPONENT_USAGE($) NEXT_ASSEMBLY_USAGE_OCCURRENCE() 
   PRODUCT_DEFINITION_RELATIONSHIP('du4', 'quantified instance usage', 
   'quantified usage of disc', #830, #300) PRODUCT_DEFINITION_USAGE() 
   QUANTIFIED_ASSEMBLY_COMPONENT_USAGE(#880));
#900 = DIMENSIONAL_EXPONENTS(0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000);
#910 = NAMED_UNIT(#900);
#920 = MEASURE_WITH_UNIT(COUNT_MEASURE(1), #910);
#930 = (ASSEMBLY_COMPONENT_USAGE($) NEXT_ASSEMBLY_USAGE_OCCURRENCE()
PRODUCT_DEFINITION_RELATIONSHIP('cau4', 'quantified instance usage', 'quantified usage if ap', #830, #490) PRODUCT_DEFINITION_USAGE() QUANTIFIED_ASSEMBLY_COMPONENT_USAGE(#920));
#940 = PRODUCT_DEFINITION_FORMATION('slq', 'quantified version of sleeve assembly', #50);
#950 = PRODUCT_DEFINITION('slqv', 'design view quantified version sleeve assembly', #940, #230);
#960 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#950, $, #220);
#970 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#950, #350, #340);
#980 = DIMENSIONAL_EXPONENTS(0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000);
#990 = NAMED_UNIT(#980);
#1000 = MEASURE_WITH_UNIT(COUNT_MEASURE(1), #990);
#1010 = (ASSEMBLY_COMPONENT_USAGE($) NEXT_ASSEMBLY_USAGE_OCCURRENCE()PRODUCT_DEFINITION_RELATIONSHIP('cu4', 'quantified instance usage', 'quantified usage of cylinder', #950, #430) PRODUCT_DEFINITION_USAGE() QUANTIFIED_ASSEMBLY_COMPONENT_USAGE(#1000));
#1020 = DIMENSIONAL_EXPONENTS(0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000);
#1030 = NAMED_UNIT(#1020);
#1040 = MEASURE_WITH_UNIT(COUNT_MEASURE(2), #1030);
#1050 = (ASSEMBLY_COMPONENT_USAGE($) NEXT_ASSEMBLY_USAGE_OCCURRENCE()    PRODUCT_DEFINITION_RELATIONSHIP('gu4', 'quantified instance usage', 'quantified usage of gasket for sleeve', #950, #400) PRODUCT_DEFINITION_USAGE() QUANTIFIED_ASSEMBLY_COMPONENT_USAGE(#1040));

/* #140 represents an externally supplied gasket part              */
/* The relationship #1070 relates the version 1 of this externally */
/* supplied part to the internal part master represented by        */
/* #140 in its version 1 (defined by #390) */
#1060 = PRODUCT_DEFINITION_FORMATION('1', '', #140);
#1070 = PRODUCT_DEFINITION_FORMATION_RELATIONSHIP('', 'supplied item', 'supplied item version of gasket', #1060, #390);
#1080 = ORGANIZATION('com2', 'Supplier Company', 'company');
#1090 = ORGANIZATION_ROLE('id owner');
#1100 = APPLIED_ORGANIZATION_ASSIGNMENT(#1080, #1090, (#1060));

/* product #140 represents the raw material for the cap product  */
/* (#110), version 1 (#480) in the design view (#490) */
#1120 = PRODUCT_RELATED_PRODUCT_CATEGORY('raw material', '', (#150));
#1140 = PRODUCT_DEFINITION_FORMATION('1', '', #150);
#1150 = PRODUCT_DEFINITION('mat_view', 'design view on mat23', #1140, #230);
#1160 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#1150, $, #220);
#1170 = ORGANIZATION_ROLE('id owner');
#1180 = APPLIED_ORGANIZATION_ASSIGNMENT(#580, #1170, (#1140));

/* Entities #1181 to #1185 establish the relation that defines that  */
/* the cap (in view of #490) is made from the raw material specified */
/* via #1150 and related entities                                    */
#1181 = DIMENSIONAL_EXPONENTS(0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000, 0.0E+000);
#1182 = NAMED_UNIT(#1181);
#1184 = MEASURE_WITH_UNIT(COUNT_MEASURE(1), #1182);
#1185 = MAKE_FROM_USAGE_OPTION('mkfr1','','',#490,#1150,1,'',#1184);

/* #1190 models the successor version of the sleeve assembly    */
/* version 1 define by #450. 'Sequence' indicates that #1190 is */
/* a direct successor to #450                                   */ 
#1190 = PRODUCT_DEFINITION_FORMATION('2', 'successor version of version 1', #50);
#1200 = PRODUCT_DEFINITION_FORMATION_RELATIONSHIP('', 'sequence', '', #450, #1190);

/* #1210 specifies a view on the sleeve assembly version 2. To this  */
/* view a product structure is attached that extends the product     */
/* structure of version one with an additional sealing part           */
/* For this sealing no detail is given, a                     */
/* promissory_usage_occurrence is used to model the intent to */
/* include the sealing in the sleeve assembly                 */
#1210 = PRODUCT_DEFINITION('sv2', 'design view on sleeve version 2', #1190, #230);
#1220 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#1210, $, #220);
#1230 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#1210, #350, #340);
#1240 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('gu5', 'single instance usage', 'gasket usage for ver2 of sleeve assembly', #1210, #400, $);
#1250 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('gu6', 'single instance usage', '2ns gasket usage for sleeve assembly ver2', #1210, #400, $);
#1260 = PRODUCT_DEFINITION_FORMATION('1', '', #160);
#1270 = PRODUCT_DEFINITION('v1_cyl_alt', 'design view on alternate cylinder', #1260, #230);
#1280 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#1270, $, #220);
#1290 = PRODUCT_DEFINITION_FORMATION('1', 'sealing ver1', #90);
#1295 = PRODUCT_DEFINITION_FORMATION('2', 'sealing ver2', #90);
#1300 = PRODUCT_DEFINITION('sv1', 'design view on sealing v1', #1290, #230);
#1305 = PRODUCT_DEFINITION('sv2', 'design view on sealing v2', #1295, #230);
#1310 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#1300, $, #220);
#1320 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('cylalt', 'single instance usage', 'usage of alternate cylinder of sleeve v2', #1210, #1270, $);

/* #1330 models the intent to use the sealing part as defined */
/* by #1300 in the sleeve part as defined by #1210            */
#1330 = PROMISSORY_USAGE_OCCURRENCE('seal_in_sleeve', 'single instance usage', 'promissory usage of sealing for sleeve assembly ver2', #1210, #1300, $);

/* The entities #1335 and #1337 define a usage of another version of */
/* the sealing part given by its view in #1305 in the sleeve         */
/* assembly #1210. #1337 specifies that the usage of the two version */
/* of the sealing in the sleeve assembly is alternative, i.e. the    */
/* product structure relationship defined by #1335 is alternative to */
/* the one defined by #1330                                          */
#1335 = PROMISSORY_USAGE_OCCURRENCE('seal_in_sleeve', 'single instance usage', 'promissory usage of sealing ver 2 for sleeve assembly ver2', #1210, #1305, $);
#1337 = ASSEMBLY_COMPONENT_USAGE_SUBSTITUTE('sealings_alternative_sleeve', $,#1330,#1335);

/* #1340 is a version of the hub assembly #40 that is derived from */
/* the version #240 of the same part. The derivation relationship is */
/* established by entity #1350                                    */
#1340 = PRODUCT_DEFINITION_FORMATION('ver_double', 'double sleeve version', #40);
#1350 = PRODUCT_DEFINITION_FORMATION_RELATIONSHIP('', 'derivation', '', #240, #1340);
#1360 = PRODUCT_DEFINITION('dsl_view', 'design view on double sleeve version of hub', #1340, #230);
#1370 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#1360, $, #220);
#1380 = PRODUCT_DEFINITION_CONTEXT_ASSOCIATION(#1360, #350, #340);

/* The assembly structure below assembles the #1340 version of the */
/* hub assembly with 2 sleeves. the sleeves each consist of two */
/* gaskets and one cylinder. Thus in the resulting product */
/* structure there are four cylinders. The basic next_assembly_usage */
/* construct allows only to distinguish between two gaskets one the */
/* level of the sleeve assembly definition. To individualize one of */
/* the gaskets in the hub assembly specified_higer_usage_occurrence */
/* is used.                   */
#1390 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('dcau', 'single instance usage', 'usage of dca assembly for double sleeve version', #1360, #740, $);
#1400 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('usl1', 'single instance usage', '1st sleeve in double sleeve version', #1360, #460, $);
#1410 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('usl2', 'single instance usage', '2nd sleeve in double sleeve assembly', #1360, #460, $);

/* #1415 individualizes the first gasket (#530) used in the          */
/*  second sleeve (#1410) of the assembly #1360.                    */
#1415 = SPECIFIED_HIGHER_USAGE_OCCURRENCE('2nd_g', 'identification of second gasket of first sleeve', $, #1360,    /* the hub assembly  */
 #400,     /* gasket used for the assembly */
 $,        /* reference_designator        */
 #1410,    /* upper_usage: select the second sleeve usage */
 #530      /* next_usage_: select first usage of gasket in sleeve */
 );

/* #1420 specifies that the alternate cylinder part #160 is an     */
/* alternative to the cylinder #120. These parts are mutually      */
/* exchangeable in any context                                     */
#1420 = ALTERNATE_PRODUCT_RELATIONSHIP('hub_alternativity',$,#160,#120,'text for basis');
ENDSEC;
END-ISO-10303-21;
Example 28: exchange file for complete part structure and relationships
Personal tools