/*====================================================================*\ FILE : TestMfgMenu.c PURPOSE : Top level manufacturing tests HISTORY.. DATE BUILD AUTHOR MODIFICATIONS 22-Oct-96 H-01-14 Bojan $$1 Created. 31-Oct-96 H-01-15 Igor $$2 Changed ProTool * to ProConstToolPtr in ProTestMfgToolVisitAction 12-Nov-96 H-01-16 Bojan $$3 Extended scope to include operations etc 13-Nov-96 H-01-16 mgs $$4 Fixed compile errors on sgi 19-Nov-96 H-01-17 Bojan $$5 Added redfine workcell. 09-Dec-96 H-01-20 amin $$6 Touchups 20-Jan-97 H-01-24 Igor $$7 add info functions for tool and Ncseq. 26-Jan-97 H-01-25 Igor $$8 Added new operation and fixture fncts. 14-May-97 H-03-11 Alexey $$9 Added Collection menu item 15-Sep-97 H-03-22 Pavel $$10 Replace Pro/D on Pro/T 17-Oct-97 H-03-27 Pavel $$11 Replaced Visit functions by UtilCollect 06-Nov-97 H-03-31 Pavel $$12 Added tool redefine 20-Feb-98 H-03-40 Akula $$13 fixed bug (deep drilling) 18-May-98 I-01-08 Akula $$14 Added new menu and aux ncseq. 31-May-99 I-03-12 mka $$15 Delete unused variable. \*====================================================================*/ /*--------------------------------------------------------------------*\ Pro/Toolkit includes -- include this first \*--------------------------------------------------------------------*/ #include #include /*--------------------------------------------------------------------*\ Application macros \*--------------------------------------------------------------------*/ #include "UtilString.h" #include "TestError.h" #include "TestMfgNew.h" #include "UtilCollect.h" /*--------------------------------------------------------------------*\ Application data types \*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*\ Application global/external data \*--------------------------------------------------------------------*/ #include "MfgMenu.h" int ProTestTkClcmdsAct (ProAppData data, int dummy); /*====================================================================*\ FUNCTION : ProTestMfgNew() PURPOSE : Top level menu for new manufacturing functions. \*====================================================================*/ int ProTestMfgNew() { ProMdl model; ProError status; static char *menu[] = {"TkMfgNew","TkMfgAct","TkMfgDQ",""}; MfgMenuChoice obj_action; MfgObjList *mfgobj_list; int id; int ProTestChooseMfgAction(); int ProTestExecMfgAction(); int user_exit_from_process(); int ProTestCollection(); /* Get mfg. model. */ ProMdlCurrentGet(&model); /* Init valuse to 0/NULL. */ mfgobj_list = (MfgObjList *)calloc(1,sizeof(MfgObjList)); /* Test which mfg. objects are defined. */ ProTestMfgObjectsCollect(model, mfgobj_list); /* Set initial state of the menu. */ obj_action.mfgobj_type = MFGOBJ_WKCELL; obj_action.mfgobj_action = MFGACT_CREATE; obj_action.mfgobj_list = mfgobj_list; status = ProMenuPush(); TEST_CALL_REPORT ("ProMenuPush", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenuFileRegister("TkMfgNew","tkmfgnew.mnu", &id); TEST_CALL_REPORT ("ProMenuFileRegister", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgNew","TkMfgNew", (ProMenubuttonAction)ProMenuHold,NULL,0); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgNew","-Workcell", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGOBJ_WKCELL); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgNew","-Fixture", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGOBJ_FIXTURE); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgNew","-Operation", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGOBJ_OPER); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgNew","-NC Sequence", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGOBJ_NC_SEQ); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgNew","-Tool", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGOBJ_TOOL); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgNew","-Collection", (ProMenubuttonAction)ProTestCollection, &model, 0 ); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgNew","-CLcmds", (ProMenubuttonAction)ProTestTkClcmdsAct, &model, 0 ); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR) status = ProMenuDatamodeSet("TkMfgNew", 0); TEST_CALL_REPORT ("ProMenuDatamodeSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenuFileRegister("TkMfgAct","tkmfgact.mnu", &id); TEST_CALL_REPORT ("ProMenuPush", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgAct","TkMfgAct", (ProMenubuttonAction)ProMenuHold,NULL,0); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgAct","-Create", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGACT_CREATE); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgAct","-Redefine", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGACT_REDEFINE); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgAct","-Display", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGACT_DISPLAY); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgAct","-Route", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGACT_ROUTE); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenuDatamodeSet("TkMfgAct", 0); TEST_CALL_REPORT ("ProMenuDatamodeSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenuFileRegister("TkMfgDQ","tkmfgdq.mnu", &id); TEST_CALL_REPORT ("ProMenuFileRegister", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgDQ","TkMfgDQ", (ProMenubuttonAction)ProMenuHold,NULL,0); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgDQ","Done", (ProMenubuttonAction)ProTestExecMfgAction, &obj_action,0); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMfgDQ","Quit", (ProMenubuttonAction)user_exit_from_process,NULL,0); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProCompoundmenuCreate(menu, &id); TEST_CALL_REPORT ("ProCompoundmenuCreate", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight("TkMfgNew","-Workcell"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight("TkMfgAct","-Create"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); if(mfgobj_list->n_wcell <= 0) { status = ProMenubuttonDeactivate("TkMfgNew","-Operation"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); } if(mfgobj_list->n_oper <= 0) { status = ProMenubuttonDeactivate("TkMfgNew","-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); } if(mfgobj_list->n_wcell <= 0) { status = ProMenubuttonDeactivate("TkMfgAct","-Display"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); } status = ProMenubuttonDeactivate("TkMfgAct","-Route"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenuProcess(menu[0], &id); TEST_CALL_REPORT ("ProMenuProcess", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenuPop(); TEST_CALL_REPORT ("ProMenuPop", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); return(0); } /*====================================================================*\ FUNCTION : ProTestMfgObjectsCollect() PURPOSE : Collects the array of Mfg. objects using Visit func. \*====================================================================*/ ProError ProTestMfgObjectsCollect( ProMdl model, MfgObjList *mfgobj_list) { ProSolid mfg_wkpc = NULL; ProAssembly mfg_asm = NULL; ProError status; ProFeature *features; int features_num, i; ProTool *tools; int tools_num; ProMfgType mfg_type; ProError ProTestMfgFeatVisitAction(ProFeature *feature, ProError filt_status, ProAppData app_data); ProError ProTestMfgToolVisitAction(PRO_CONST_ARG ProTool* tool, ProAppData app_data); /* Free memory if already alocated. */ if(mfgobj_list->wcell != NULL) { status = ProArrayFree( (ProArray*)&(mfgobj_list->wcell) ); mfgobj_list->n_wcell = 0; } if(mfgobj_list->fixture != NULL) { status = ProArrayFree( (ProArray*)&(mfgobj_list->wcell) ); mfgobj_list->n_fixture = 0; } if(mfgobj_list->oper != NULL) { status = ProArrayFree( (ProArray*)&(mfgobj_list->wcell) ); mfgobj_list->n_oper = 0; } if(mfgobj_list->nc_seq != NULL) { status = ProArrayFree( (ProArray*)&(mfgobj_list->wcell) ); mfgobj_list->n_nc_seq = 0; } status = ProArrayAlloc(0, sizeof(ProWcell), 1, (ProArray*)&(mfgobj_list->wcell)); status = ProArrayAlloc(0, sizeof(ProFixture), 1, (ProArray*)&(mfgobj_list->fixture)); status = ProArrayAlloc(0, sizeof(ProMfgoper), 1, (ProArray*)&(mfgobj_list->oper)); status = ProArrayAlloc(0, sizeof(ProNcseq), 1, (ProArray*)&(mfgobj_list->nc_seq)); status = ProMfgSolidGet(model, &mfg_wkpc); TEST_CALL_REPORT("ProMfgSolidGet()", "ProTestMfgObjectsCollect", status, status!=PRO_TK_NO_ERROR); status = ProUtilCollectSolidFeatures (mfg_wkpc, &features); if (status == PRO_TK_NO_ERROR) { status = ProArraySizeGet ((ProArray)features, &features_num); TEST_CALL_REPORT( "ProArraySizeGet()", "ProTestMfgObjectsCollect()", status, status != PRO_TK_NO_ERROR ); for (i = 0; i < features_num; i++) { status = ProTestMfgFeatVisitAction (&features[i], PRO_TK_NO_ERROR, (ProAppData)mfgobj_list); } status = ProArrayFree ((ProArray*)&features); TEST_CALL_REPORT( "ProArrayFree()", "ProTestMfgObjectsCollect()", status, status != PRO_TK_NO_ERROR ); } status = ProMfgAssemGet(model, &mfg_asm); TEST_CALL_REPORT("ProMfgAssemGet()", "ProTestMfgObjectsCollect", status, status!=PRO_TK_NO_ERROR); status = ProMfgTypeGet(model, &mfg_type); TEST_CALL_REPORT("ProMfgTypeGet()", "ProTestMfgObjectsCollect", status, status!=PRO_TK_NO_ERROR); if (mfg_type == PRO_MFGTYPE_MACH_PART) { status = ProUtilCollectSolidFeatures (mfg_asm, &features); if (status == PRO_TK_NO_ERROR) { status = ProArraySizeGet ((ProArray)features, &features_num); TEST_CALL_REPORT( "ProArraySizeGet()", "ProTestMfgObjectsCollect()" ,status, status != PRO_TK_NO_ERROR ); for (i = 0; i < features_num; i++) { status = ProTestMfgFeatVisitAction (features+i, PRO_TK_NO_ERROR, (ProAppData)mfgobj_list); } status = ProArrayFree ((ProArray*)&features); TEST_CALL_REPORT( "ProArrayFree()", "ProTestMfgObjectsCollect()", status, status != PRO_TK_NO_ERROR ); } } status = ProArraySizeGet((ProArray*)mfgobj_list->wcell, &(mfgobj_list->n_wcell)); TEST_CALL_REPORT("ProArraySizeGet()", "ProTestMfgObjectsCollect", status, status!=PRO_TK_NO_ERROR); status = ProArraySizeGet((ProArray*)mfgobj_list->fixture, &(mfgobj_list->n_fixture)); TEST_CALL_REPORT("ProArraySizeGet()", "ProTestMfgObjectsCollect", status, status!=PRO_TK_NO_ERROR); status = ProArraySizeGet((ProArray*)mfgobj_list->oper, &(mfgobj_list->n_oper)); TEST_CALL_REPORT("ProArraySizeGet()", "ProTestMfgObjectsCollect", status, status!=PRO_TK_NO_ERROR); status = ProArraySizeGet((ProArray*)mfgobj_list->nc_seq, &(mfgobj_list->n_nc_seq)); TEST_CALL_REPORT("ProArraySizeGet()", "ProTestMfgObjectsCollect", status, status!=PRO_TK_NO_ERROR); status = ProArrayAlloc(0, sizeof(ProTool), 1, (ProArray*)&(mfgobj_list->tool)); TEST_CALL_REPORT("ProArrayAlloc()", "ProTestMfgObjectsCollect", status, status!=PRO_TK_NO_ERROR); status = ProUtilCollectMfgTools (model, &tools); if (status == PRO_TK_NO_ERROR) { status = ProArraySizeGet ((ProArray)tools, &tools_num); TEST_CALL_REPORT( "ProArraySizeGet()", "PProTestMfgObjectsCollect()", status, status != PRO_TK_NO_ERROR ); for (i = 0; i < tools_num; i++) { status = ProTestMfgToolVisitAction (tools+i, (ProAppData)mfgobj_list); } status = ProArrayFree ((ProArray*)&tools); TEST_CALL_REPORT( "ProArrayFree()", "ProTestMfgObjectsCollect()", status, status != PRO_TK_NO_ERROR ); } status = ProArraySizeGet((ProArray*)mfgobj_list->tool, &(mfgobj_list->n_tool)); TEST_CALL_REPORT("ProArraySizeGet()", "ProTestMfgObjectsCollect", status, status!=PRO_TK_NO_ERROR); return(0); } /*====================================================================*\ FUNCTION : ProTestMfgFeatVisitAction() PURPOSE : Generalized action function for visiting mfg. features. \*====================================================================*/ ProError ProTestMfgFeatVisitAction( ProFeature *feature, ProError filt_status, ProAppData app_data) { int status; ProFeattype type; MfgObjList *mfgobj_list; mfgobj_list = app_data; status = ProFeatureTypeGet(feature, &type); TEST_CALL_REPORT("ProFeatureTypeGet()", "ProTestMfgFeatVisitAction()", status, (status != PRO_TK_NO_ERROR)); switch(type) { case PRO_FEAT_WORKCELL: status = ProArrayObjectAdd((ProArray*)&(mfgobj_list->wcell), -1, 1, feature); TEST_CALL_REPORT("ProArrayObjectAdd()", "ProTestMfgFeatVisitAction()", status, status != PRO_TK_NO_ERROR); break; case PRO_FEAT_OPERATION: status = ProArrayObjectAdd((ProArray*)&(mfgobj_list->oper), -1, 1, feature); TEST_CALL_REPORT("ProArrayObjectAdd()", "ProTestMfgFeatVisitAction()", status, status != PRO_TK_NO_ERROR); break; case PRO_FEAT_FIXSETUP: status = ProArrayObjectAdd((ProArray*)&(mfgobj_list->fixture), -1, 1, feature); TEST_CALL_REPORT("ProArrayObjectAdd()", "ProTestMfgFeatVisitAction()", status, status != PRO_TK_NO_ERROR); break; case PRO_FEAT_SAW: case PRO_FEAT_TURN: case PRO_FEAT_MILL: case PRO_FEAT_DRILL: case PRO_FEAT_AUXILIARY: status = ProArrayObjectAdd((ProArray*)&(mfgobj_list->nc_seq), -1, 1, feature); TEST_CALL_REPORT("ProArrayObjectAdd()", "ProTestMfgFeatVisitAction()", status, status != PRO_TK_NO_ERROR); break; default: break; } return(PRO_TK_NO_ERROR); } /*====================================================================*\ FUNCTION : ProTestMfgToolVisitAction() PURPOSE : Generalized action function for visiting mfg. objects. \*====================================================================*/ ProError ProTestMfgToolVisitAction( PRO_CONST_ARG ProTool* tool, ProAppData app_data) { int status; MfgObjList *mfgobj_list; mfgobj_list = app_data; status = ProArrayObjectAdd((ProArray*)&(mfgobj_list->tool), -1, 1, (ProTool *) tool); TEST_CALL_REPORT("ProArrayObjectAdd()", "ProTestWcellVisitAction()", status, status != PRO_TK_NO_ERROR); return(PRO_TK_NO_ERROR); } /*====================================================================*\ FUNCTION : user_exit_from_process() PURPOSE : Exits up from mfg. test menu. \*====================================================================*/ int user_exit_from_process() { ProError status; status = ProMenuDelete(); TEST_CALL_REPORT ("ProMenudelete", "user_exit_from_process", status, status != PRO_TK_NO_ERROR); status = ProMenuDelete(); TEST_CALL_REPORT ("ProMenudelete", "user_exit_from_process", status, status != PRO_TK_NO_ERROR); status = ProMenuDelete(); TEST_CALL_REPORT ("ProMenudelete", "user_exit_from_process", status, status != PRO_TK_NO_ERROR); return(0); } /*====================================================================*\ FUNCTION : ProTestChooseMfgAction PURPOSE : Chose action for an mfg. object. \*====================================================================*/ int ProTestChooseMfgAction(MfgMenuChoice *obj_action, int opt) { switch(opt) { /* Set mfg. object type. */ case MFGOBJ_WKCELL: obj_action->mfgobj_type = MFGOBJ_WKCELL; break; case MFGOBJ_FIXTURE: obj_action->mfgobj_type = MFGOBJ_FIXTURE; break; case MFGOBJ_OPER: obj_action->mfgobj_type = MFGOBJ_OPER; break; case MFGOBJ_NC_SEQ: obj_action->mfgobj_type = MFGOBJ_NC_SEQ; break; case MFGOBJ_TOOL: obj_action->mfgobj_type = MFGOBJ_TOOL; break; /* Set mfg. action. */ case MFGACT_CREATE: obj_action->mfgobj_action = MFGACT_CREATE; break; case MFGACT_REDEFINE: obj_action->mfgobj_action = MFGACT_REDEFINE; break; case MFGACT_DISPLAY: obj_action->mfgobj_action = MFGACT_DISPLAY; break; case MFGACT_ROUTE: obj_action->mfgobj_action = MFGACT_ROUTE; break; default: break; } ProTestMfgTypeMenuSet(obj_action); ProTestMfgActionMenuSet(obj_action); return(0); } /*====================================================================*\ FUNCTION : ProTestMfgTypeMenuSet PURPOSE : Set menus based on selection and exsisting mfg. objects. \*====================================================================*/ int ProTestMfgTypeMenuSet(MfgMenuChoice *obj_action) { ProError status; /* Set mfg. menu display type. */ switch(obj_action->mfgobj_type) { case MFGOBJ_WKCELL: status = ProMenubuttonUnhighlight("TkMfgNew","-Fixture"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-Operation"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-Tool"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight("TkMfgNew","-Workcell"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfTypeMenuSet", status, status != PRO_TK_NO_ERROR); if(obj_action->mfgobj_list->n_wcell <= 0) { status = ProMenubuttonDeactivate("TkMfgNew","-Operation"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } if(obj_action->mfgobj_list->n_oper <= 0) { status = ProMenubuttonDeactivate("TkMfgNew","-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } status = ProMenubuttonDeactivate("TkMfgAct","-Display"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonDeactivate("TkMfgAct","-Route"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); break; case MFGOBJ_FIXTURE: status = ProMenubuttonUnhighlight("TkMfgNew","-Workcell"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-Operation"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-Tool"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight("TkMfgNew","-Fixture"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfTypeMenuSet", status, status != PRO_TK_NO_ERROR); if(obj_action->mfgobj_list->n_wcell <= 0) { status = ProMenubuttonDeactivate("TkMfgNew","-Operation"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } if(obj_action->mfgobj_list->n_oper <= 0) { status = ProMenubuttonDeactivate("TkMfgNew","-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } if(obj_action->mfgobj_list->n_fixture <= 0) { status = ProMenubuttonDeactivate("TkMfgAct","-Display"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonDeactivate("TkMfgAct","-Redefine"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } else { status = ProMenubuttonActivate("TkMfgAct","-Display"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActivate("TkMfgAct","-Redefine"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } status = ProMenubuttonDeactivate("TkMfgAct","-Route"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); break; case MFGOBJ_OPER: status = ProMenubuttonUnhighlight("TkMfgNew","-Workcell"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-Fixture"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-Tool"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight("TkMfgNew","-Operation"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfTypeMenuSet", status, status != PRO_TK_NO_ERROR); if(obj_action->mfgobj_list->n_oper <= 0) { status = ProMenubuttonDeactivate("TkMfgNew","-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } else { status = ProMenubuttonActivate("TkMfgNew","-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } status = ProMenubuttonDeactivate("TkMfgAct","-Route"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); if(obj_action->mfgobj_list->n_nc_seq <= 0) { status = ProMenubuttonDeactivate("TkMfgAct","-Display"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } else { status = ProMenubuttonActivate("TkMfgAct","-Display"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } break; case MFGOBJ_NC_SEQ: status = ProMenubuttonUnhighlight("TkMfgNew","-Workcell"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-Fixture"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-Operation"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-Tool"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight("TkMfgNew","-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfTypeMenuSet", status, status != PRO_TK_NO_ERROR); if(obj_action->mfgobj_list->n_nc_seq <= 0) { status = ProMenubuttonDeactivate("TkMfgAct","-Display"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonDeactivate("TkMfgAct","-Route"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } else { status = ProMenubuttonActivate("TkMfgAct","-Display"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActivate("TkMfgAct","-Route"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } break; case MFGOBJ_TOOL: status = ProMenubuttonUnhighlight("TkMfgNew","-Workcell"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-Fixture"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-Operation"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgNew","-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight("TkMfgNew","-Tool"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfTypeMenuSet", status, status != PRO_TK_NO_ERROR); if(obj_action->mfgobj_list->n_wcell <= 0) { status = ProMenubuttonDeactivate("TkMfgNew","-Operation"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } if(obj_action->mfgobj_list->n_oper <= 0) { status = ProMenubuttonDeactivate("TkMfgNew","-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } status = ProMenubuttonDeactivate("TkMfgAct","-Display"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); /* Added tool redefine */ /* status = ProMenubuttonDeactivate("TkMfgAct","-Redefine"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR);*/ if(obj_action->mfgobj_list->n_tool<=0) { status = ProMenubuttonDeactivate("TkMfgAct","-Route"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonDeactivate("TkMfgAct","-Redefine"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } else { status = ProMenubuttonActivate("TkMfgAct","-Route"); TEST_CALL_REPORT ("ProMenubuttonactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActivate("TkMfgAct","-Redefine"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } break; default: break; } return(0); } /*====================================================================*\ FUNCTION : ProTestMfgActionMenuSet PURPOSE : Set menus based on selection and exsisting mfg. objects. \*====================================================================*/ int ProTestMfgActionMenuSet(MfgMenuChoice *obj_action) { ProError status; /* Set mfg. menu display type. */ switch(obj_action->mfgobj_action) { case MFGACT_CREATE: status = ProMenubuttonUnhighlight("TkMfgAct","-Redefine"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgAct","-Display"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgAct","-Route"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight("TkMfgAct","-Create"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); break; case MFGACT_REDEFINE: status = ProMenubuttonUnhighlight("TkMfgAct","-Create"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgAct","-Display"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgAct","-Route"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight("TkMfgAct","-Redefine"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); break; case MFGACT_DISPLAY: status = ProMenubuttonUnhighlight("TkMfgAct","-Create"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgAct","-Redefine"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgAct","-Route"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); ProMenubuttonHighlight("TkMfgAct","-Display"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); break; case MFGACT_ROUTE: status = ProMenubuttonUnhighlight("TkMfgAct","-Create"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgAct","-Redefine"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight("TkMfgAct","-Display"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight("TkMfgAct","-Route"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); break; default: break; } return(0); } /*====================================================================*\ FUNCTION : ProTestExecMfgAction PURPOSE : ProTestExecMfgAction \*====================================================================*/ int ProTestExecMfgAction(MfgMenuChoice *obj_action, int opt) { ProMdl model; /* Get mfg. model. */ ProMdlCurrentGet(&model); switch(obj_action->mfgobj_type) { case MFGOBJ_WKCELL: ProTestWkcellAction(obj_action); break; case MFGOBJ_FIXTURE: ProTestFixtureAction(obj_action); break; case MFGOBJ_OPER: ProTestOperationAction(obj_action); break; case MFGOBJ_NC_SEQ: ProTestNcseqAction(obj_action); break; case MFGOBJ_TOOL: ProTestToolAction(obj_action); break; default: break; } return(0); } /*====================================================================*\ FUNCTION : ProTestWkcellAction PURPOSE : ProTestWkcellAction \*====================================================================*/ int ProTestWkcellAction(MfgMenuChoice *obj_action) { switch(obj_action->mfgobj_action) { case MFGACT_CREATE: ProTestWkcellCreate(obj_action); break; case MFGACT_REDEFINE: ProTestWkcellRedefine(obj_action); break; case MFGACT_DISPLAY: break; case MFGACT_ROUTE: break; default: break; } return(0); } /*====================================================================*\ FUNCTION : ProTestFixtureAction PURPOSE : ProTestFixtureAction \*====================================================================*/ int ProTestFixtureAction(MfgMenuChoice *obj_action) { ProError status; switch(obj_action->mfgobj_action) { case MFGACT_CREATE: ProTestFixtureCreate(obj_action); break; case MFGACT_REDEFINE: status = ProTestFixtList( obj_action ); break; case MFGACT_DISPLAY: status = ProTestFixtureDisp( obj_action ); break; case MFGACT_ROUTE: break; default: break; } return(0); } /*====================================================================*\ FUNCTION : ProTestOperationAction PURPOSE : ProTestOperationAction \*====================================================================*/ int ProTestOperationAction(MfgMenuChoice *obj_action) { switch(obj_action->mfgobj_action) { case MFGACT_CREATE: ProTestOperationCreate(obj_action); break; case MFGACT_REDEFINE: break; case MFGACT_DISPLAY: ProTestOperationDisplay( obj_action ); break; case MFGACT_ROUTE: break; default: break; } return(0); } /*====================================================================*\ FUNCTION : ProTestNcseqAction PURPOSE : ProTestNcseqAction \*====================================================================*/ int ProTestNcseqAction(MfgMenuChoice *obj_action) { ProError status; switch(obj_action->mfgobj_action) { case MFGACT_CREATE: status = ProTestNCSequenceCreate(obj_action); break; case MFGACT_REDEFINE: break; case MFGACT_DISPLAY: status = ProTestNcseqToolPathDisplay(); break; case MFGACT_ROUTE: status = ProTestRouteNCseq(); break; default: break; } return(0); } /*====================================================================*\ FUNCTION : ProTestToolAction PURPOSE : ProTestToolAction \*====================================================================*/ int ProTestToolAction(MfgMenuChoice *obj_action) { ProError status; switch(obj_action->mfgobj_action) { case MFGACT_CREATE: status = ProTestCreateTool(obj_action); break; case MFGACT_REDEFINE: status = ProTestToolRedefine (obj_action); break; case MFGACT_DISPLAY: break; case MFGACT_ROUTE: status = ProTestRouteTool(); break; default: break; } return(0); }