/* Copyright (c) 2024 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved. */ /*--------------------------------------------------------------------*\ Pro/Toolkit includes -- include this first \*--------------------------------------------------------------------*/ #include <ProToolkit.h> #include <ProMenu.h> /*--------------------------------------------------------------------*\ 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((char*)"TkMfgNew",(char*)"tkmfgnew.mnu", &id); TEST_CALL_REPORT ("ProMenuFileRegister", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgNew",(char*)"TkMfgNew", (ProMenubuttonAction)ProMenuHold,NULL,0); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgNew",(char*)"-Workcell", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGOBJ_WKCELL); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgNew",(char*)"-Fixture", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGOBJ_FIXTURE); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgNew",(char*)"-Operation", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGOBJ_OPER); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgNew",(char*)"-NC Sequence", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGOBJ_NC_SEQ); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgNew",(char*)"-Tool", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGOBJ_TOOL); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgNew",(char*)"-Collection", (ProMenubuttonAction)ProTestCollection, &model, 0 ); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgNew",(char*)"-CLcmds", (ProMenubuttonAction)ProTestTkClcmdsAct, &model, 0 ); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR) status = ProMenuDatamodeSet((char*)"TkMfgNew", (ProBoolean)0); TEST_CALL_REPORT ("ProMenuDatamodeSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenuFileRegister((char*)"TkMfgAct",(char*)"tkmfgact.mnu", &id); TEST_CALL_REPORT ("ProMenuPush", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgAct",(char*)"TkMfgAct", (ProMenubuttonAction)ProMenuHold,NULL,0); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgAct",(char*)"-Create", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGACT_CREATE); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgAct",(char*)"-Redefine", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGACT_REDEFINE); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgAct",(char*)"-Display", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGACT_DISPLAY); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgAct",(char*)"-Route", (ProMenubuttonAction)ProTestChooseMfgAction, &obj_action, MFGACT_ROUTE); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenuDatamodeSet((char*)"TkMfgAct", (ProBoolean)0); TEST_CALL_REPORT ("ProMenuDatamodeSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenuFileRegister((char*)"TkMfgDQ",(char*)"tkmfgdq.mnu", &id); TEST_CALL_REPORT ("ProMenuFileRegister", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgDQ",(char*)"TkMfgDQ", (ProMenubuttonAction)ProMenuHold,NULL,0); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgDQ",(char*)"Done", (ProMenubuttonAction)ProTestExecMfgAction, &obj_action,0); TEST_CALL_REPORT ("ProMenubuttonActionSet", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet((char*)"TkMfgDQ",(char*)"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((char*)"TkMfgNew",(char*)"-Workcell"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight((char*)"TkMfgAct",(char*)"-Create"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); if(mfgobj_list->n_wcell <= 0) { status = ProMenubuttonDeactivate((char*)"TkMfgNew",(char*)"-Operation"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); } if(mfgobj_list->n_oper <= 0) { status = ProMenubuttonDeactivate((char*)"TkMfgNew",(char*)"-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); } if(mfgobj_list->n_wcell <= 0) { status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Display"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgNew", status, status != PRO_TK_NO_ERROR); } status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-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((ProMfg)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((ProMfg)model, &mfg_asm); TEST_CALL_REPORT("ProMfgAssemGet()", "ProTestMfgObjectsCollect", status, status!=PRO_TK_NO_ERROR); status = ProMfgTypeGet((ProMfg)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 ((ProMfg)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((ProError)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 = (MfgObjList*)app_data; status = ProFeatureTypeGet(feature, &type); TEST_CALL_REPORT("ProFeatureTypeGet()", "ProTestMfgFeatVisitAction()", (ProError)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()", (ProError)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()", (ProError)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()", (ProError)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()", (ProError)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 = (MfgObjList*)app_data; status = ProArrayObjectAdd((ProArray*)&(mfgobj_list->tool), -1, 1, (ProTool *) tool); TEST_CALL_REPORT("ProArrayObjectAdd()", "ProTestWcellVisitAction()", (ProError)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 : 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((char*)"TkMfgAct",(char*)"-Redefine"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgAct",(char*)"-Display"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgAct",(char*)"-Route"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight((char*)"TkMfgAct",(char*)"-Create"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); break; case MFGACT_REDEFINE: status = ProMenubuttonUnhighlight((char*)"TkMfgAct",(char*)"-Create"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgAct",(char*)"-Display"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgAct",(char*)"-Route"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight((char*)"TkMfgAct",(char*)"-Redefine"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); break; case MFGACT_DISPLAY: status = ProMenubuttonUnhighlight((char*)"TkMfgAct",(char*)"-Create"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgAct",(char*)"-Redefine"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgAct",(char*)"-Route"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); ProMenubuttonHighlight((char*)"TkMfgAct",(char*)"-Display"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); break; case MFGACT_ROUTE: status = ProMenubuttonUnhighlight((char*)"TkMfgAct",(char*)"-Create"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgAct",(char*)"-Redefine"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgAct",(char*)"-Display"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight((char*)"TkMfgAct",(char*)"-Route"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); break; default: break; } 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((char*)"TkMfgNew",(char*)"-Fixture"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Operation"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Tool"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight((char*)"TkMfgNew",(char*)"-Workcell"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfTypeMenuSet", status, status != PRO_TK_NO_ERROR); if(obj_action->mfgobj_list->n_wcell <= 0) { status = ProMenubuttonDeactivate((char*)"TkMfgNew",(char*)"-Operation"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } if(obj_action->mfgobj_list->n_oper <= 0) { status = ProMenubuttonDeactivate((char*)"TkMfgNew",(char*)"-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Display"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Route"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); break; case MFGOBJ_FIXTURE: status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Workcell"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Operation"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Tool"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight((char*)"TkMfgNew",(char*)"-Fixture"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfTypeMenuSet", status, status != PRO_TK_NO_ERROR); if(obj_action->mfgobj_list->n_wcell <= 0) { status = ProMenubuttonDeactivate((char*)"TkMfgNew",(char*)"-Operation"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } if(obj_action->mfgobj_list->n_oper <= 0) { status = ProMenubuttonDeactivate((char*)"TkMfgNew",(char*)"-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } if(obj_action->mfgobj_list->n_fixture <= 0) { status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Display"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Redefine"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } else { status = ProMenubuttonActivate((char*)"TkMfgAct",(char*)"-Display"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActivate((char*)"TkMfgAct",(char*)"-Redefine"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Route"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); break; case MFGOBJ_OPER: status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Workcell"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Fixture"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Tool"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight((char*)"TkMfgNew",(char*)"-Operation"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfTypeMenuSet", status, status != PRO_TK_NO_ERROR); if(obj_action->mfgobj_list->n_oper <= 0) { status = ProMenubuttonDeactivate((char*)"TkMfgNew",(char*)"-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } else { status = ProMenubuttonActivate((char*)"TkMfgNew",(char*)"-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Route"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); if(obj_action->mfgobj_list->n_nc_seq <= 0) { status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Display"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } else { status = ProMenubuttonActivate((char*)"TkMfgAct",(char*)"-Display"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } break; case MFGOBJ_NC_SEQ: status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Workcell"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Fixture"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Operation"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Tool"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight((char*)"TkMfgNew",(char*)"-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfTypeMenuSet", status, status != PRO_TK_NO_ERROR); if(obj_action->mfgobj_list->n_nc_seq <= 0) { status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Display"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Route"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } else { status = ProMenubuttonActivate((char*)"TkMfgAct",(char*)"-Display"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActivate((char*)"TkMfgAct",(char*)"-Route"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } break; case MFGOBJ_TOOL: status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Workcell"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Fixture"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-Operation"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonUnhighlight((char*)"TkMfgNew",(char*)"-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonUnhighlight", "ProTestMfgActionMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonHighlight((char*)"TkMfgNew",(char*)"-Tool"); TEST_CALL_REPORT ("ProMenubuttonHighlight", "ProTestMfTypeMenuSet", status, status != PRO_TK_NO_ERROR); if(obj_action->mfgobj_list->n_wcell <= 0) { status = ProMenubuttonDeactivate((char*)"TkMfgNew",(char*)"-Operation"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } if(obj_action->mfgobj_list->n_oper <= 0) { status = ProMenubuttonDeactivate((char*)"TkMfgNew",(char*)"-NC Sequence"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Display"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); /* Added tool redefine */ /* status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Redefine"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR);*/ if(obj_action->mfgobj_list->n_tool<=0) { status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Route"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonDeactivate((char*)"TkMfgAct",(char*)"-Redefine"); TEST_CALL_REPORT ("ProMenubuttonDeactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } else { status = ProMenubuttonActivate((char*)"TkMfgAct",(char*)"-Route"); TEST_CALL_REPORT ("ProMenubuttonactivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActivate((char*)"TkMfgAct",(char*)"-Redefine"); TEST_CALL_REPORT ("ProMenubuttonActivate", "ProTestMfgTypeMenuSet", status, status != PRO_TK_NO_ERROR); } break; default: break; } 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 : 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 = (ProError)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; 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); } /*====================================================================*\ 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); }