/*
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);
}