/*====================================================================*\ FILE : TestProcstep.c PURPOSE : Test all ProProcstep routines HISTORY.. DATE BUILD AUTHOR MODIFICATIONS 13-Jul-97 H-03-17 Pavel $$1 Created 06-oct-97 H-03-25 Pavel $$2 More includes 30-Jan-98 H-03-38 Pavel $$3 Updated 13-Feb-98 H-03-39 aab $$4 Fixed some bugs 01-Jul-98 I-01-13 akh $$5 Fix for PT/Modeler 07-Dec-98 I-01-27 akh $$6 Update ProSelectionModelitemGet TEST_CALL_REPO. 01-Jun-99 I-03-11 mka $$7 Delete unused variable \*====================================================================*/ /*--------------------------------------------------------------------*\ Pro/TOOLKIT includes \*--------------------------------------------------------------------*/ #include #include #include #include #include #include #include /*--------------------------------------------------------------------*\ C System includes \*--------------------------------------------------------------------*/ #include #include /*--------------------------------------------------------------------*\ Application includes \*--------------------------------------------------------------------*/ #include "TestError.h" #include "TestFiletypes.h" #include "UtilFiles.h" #include "UtilMessage.h" #include "UtilCollect.h" #include "UtilTree.h" #include "UtilMenu.h" /*--------------------------------------------------------------------*\ Application macros \*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*\ Application data types \*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*\ Application global/external data \*--------------------------------------------------------------------*/ /*====================================================================*\ Function : ProUtilProcstepDataGet Purpose : Get value data \*====================================================================*/ ProError ProUtilProcstepDataGet ( ProProcstep *procstep, /* Pointer on ProProcstep type element */ int element_id, /* id_elem */ ProValueData **valuedata) /* ProArray */ { ProValue *p_values; ProElement elem_tree, p_element; ProElempathItem elempathitem; int path_size = 1, multi_size, i; ProError err; ProValueData pval_data; /*-------------------------------------------------------------------------*\ Get tree element \*-------------------------------------------------------------------------*/ elempathitem.type = PRO_ELEM_PATH_ITEM_TYPE_ID; elempathitem.path_item.elem_id = element_id; err = ProFeatureElemtreeCreate ((ProFeature*)procstep, &elem_tree); TEST_CALL_REPORT("ProFeatureElemtreeCreate()", "ProUtilProcstepDataGet", err, err != PRO_TK_NO_ERROR); err = ProUtilElemtreeElementGet (elem_tree, &elempathitem, path_size, &p_element); if (err != PRO_TK_NO_ERROR) return (err); /*-------------------------------------------------------------------------*\ Get element values \*-------------------------------------------------------------------------*/ err = ProArrayAlloc (0, sizeof(ProValue), 1, (ProArray*)&p_values); TEST_CALL_REPORT("ProArrayAlloc()", "ProUtilProcstepDataGet", err, err != PRO_TK_NO_ERROR); err = ProElementValuesGet (p_element, &p_values); TEST_CALL_REPORT("ProElementValuesGet()", "ProUtilProcstepDataGet", err, err != PRO_TK_NO_ERROR); err = ProArraySizeGet ((ProArray)p_values, &multi_size); TEST_CALL_REPORT("ProArraySizeGet()", "ProUtilProcstepDataGet", err, err != PRO_TK_NO_ERROR); for (i=0; in_steps) return (0); /*-------------------------------------------------------------------------*\ Init procstep \*-------------------------------------------------------------------------*/ if (sel0); ProUtilMenubuttonActivate ("-Step Regen", "Next step", i+1=0; i--) { err = ProSelectionModelitemGet (valuedata[i].v.r, &model_item); TEST_CALL_REPORT("ProSelectionModelitemGet()", "ProTestInfo", err, err != PRO_TK_NO_ERROR && err != PRO_TK_BAD_INPUTS); strcpy(sname, "*"); if (err == PRO_TK_NO_ERROR) { err = ProMdlNameGet (model_item.owner, mdl_wname); TEST_CALL_REPORT("ProModelitemNameGet()", "ProTestInfo", err, err != PRO_TK_NO_ERROR); ProWstringToString (sname, mdl_wname); } fprintf (pfile, " %s\n", sname); } } else fprintf(pfile, " None\n"); err = ProArraySizeSet((ProArray*)&valuedata, 0); TEST_CALL_REPORT("ProArraySizeSet()", "ProTestInfo", err, err != PRO_TK_NO_ERROR); /*-------------------------------------------------------------------------*\ Get Abreviated Description \*-------------------------------------------------------------------------*/ err = ProUtilProcstepDataGet (&procstep, PRO_E_DESCRIPTION, &valuedata); status = ProArraySizeGet ((ProArray)valuedata, &size_array); TEST_CALL_REPORT("ProArraySizeGet()", "ProTestInfo", status, status != PRO_TK_NO_ERROR); if (err == PRO_TK_NO_ERROR && size_array != 0) { ProWstringToString (s_description, valuedata[size_array-1].v.w); if (size_array > 1) strcat (s_description, "..."); } else strcpy (s_description, "No description"); fprintf (pfile, "\n ABREVIATED DESCRIPTION\n %s\n", s_description); err = ProArraySizeSet ((ProArray*)&valuedata, 0); TEST_CALL_REPORT("ProArrayObjectRemove()", "ProTestInfo", err, err != PRO_TK_NO_ERROR); /*-------------------------------------------------------------------------*\ Get Time Estimate \*-------------------------------------------------------------------------*/ err = ProUtilProcstepDataGet (&procstep, PRO_E_TIME_ESTIMATE, &valuedata); status = ProArraySizeGet ((ProArray)valuedata, &size_array); TEST_CALL_REPORT("ProArraySizeGet()", "ProTestInfo", status, status != PRO_TK_NO_ERROR); if ((err == PRO_TK_NO_ERROR) && (valuedata[0].v.d > 0.0) && size_array != 0) fprintf (pfile, "\n TIME ESTIMATE\n %f HOURS\n", valuedata[0].v.d); else fprintf (pfile, "\n TIME ESTIMATE\n No assigned\n"); err = ProArraySizeSet ((ProArray*)&valuedata, 0); TEST_CALL_REPORT("ProArraySizeSet()", "ProTestInfo", err, err != PRO_TK_NO_ERROR); /*-------------------------------------------------------------------------*\ Get Cost Estimate \*-------------------------------------------------------------------------*/ err = ProUtilProcstepDataGet (&procstep, PRO_E_COST_ESTIMATE, &valuedata); status = ProArraySizeGet ((ProArray)valuedata, &size_array); TEST_CALL_REPORT("ProArraySizeGet()", "ProTestInfo", status, status != PRO_TK_NO_ERROR); if ((err == PRO_TK_NO_ERROR) && (valuedata[0].v.d != 0.0) && size_array != 0) fprintf (pfile, "\n COST ESTIMATE\n %f\n", valuedata[0].v.d); else fprintf (pfile, "\n COST ESTIMATE\n Not Assigned\n"); err = ProArraySizeSet ((ProArray*)&valuedata, 0); TEST_CALL_REPORT("ProArraySizeSet()", "ProTestInfo", err, err != PRO_TK_NO_ERROR); /*-------------------------------------------------------------------------*\ Get Simplfd Rep \*-------------------------------------------------------------------------*/ err = ProUtilProcstepDataGet (&procstep, PRO_E_SIMPLFD_REP,&valuedata); status = ProArraySizeGet ((ProArray)valuedata, &size_array); TEST_CALL_REPORT("ProArraySizeGet()", "ProTestInfo", status, status != PRO_TK_NO_ERROR); #ifndef PT_PRODUCTS_BUILD if (err == PRO_TK_NO_ERROR && size_array != 0 && valuedata[0].v.i != -1) { err = ProSimprepInit (NULL, valuedata[0].v.i, solid, &simp_rep); TEST_CALL_REPORT("ProSimprepInit()", "ProTestInfo", err, err != PRO_TK_NO_ERROR); err = ProModelitemNameGet ((ProModelitem*)&simp_rep, mdl_wname); TEST_CALL_REPORT("ProModelitemNameGet()", "ProTestInfo", err, err != PRO_TK_NO_ERROR); ProWstringToString (strout, mdl_wname); } else #endif strcpy (strout, "No Assigned"); fprintf (pfile, "\n SIMPLIFIED REPRESENTATION\n %s\n", strout); err = ProArraySizeSet((ProArray*)&valuedata, 0); TEST_CALL_REPORT("ProArraySizeSet()", "ProTestInfo", err, err != PRO_TK_NO_ERROR); /*-------------------------------------------------------------------------*\ Get Explode State \*-------------------------------------------------------------------------*/ err = ProUtilProcstepDataGet (&procstep, PRO_E_EXPLODE_STATE,&valuedata); status = ProArraySizeGet ((ProArray)valuedata, &size_array); TEST_CALL_REPORT("ProArraySizeGet()", "ProTestInfo", status, status != PRO_TK_NO_ERROR); if (err == PRO_TK_NO_ERROR && size_array != 0) { ProExpldstateActiveGet (solid, &expld_state); err = ProModelitemNameGet ((ProModelitem*)&expld_state, mdl_wname); TEST_CALL_REPORT("ProModelitemNameGet()", "ProTestInfo", err, err != PRO_TK_NO_ERROR); ProWstringToString (strout, mdl_wname); } else strcpy (strout, "No Explode"); fprintf (pfile, "\n EXPLODE STATE\n %s\n", strout); err = ProArraySizeSet ((ProArray*)&valuedata, 0); TEST_CALL_REPORT("ProArraySizeSet()", "ProTestInfo", err, err != PRO_TK_NO_ERROR); /*-------------------------------------------------------------------------*\ Get Full Description \*-------------------------------------------------------------------------*/ err = ProUtilProcstepDataGet (&procstep, PRO_E_DESCRIPTION, &valuedata); status = ProArraySizeGet ((ProArray)valuedata, &size_array); TEST_CALL_REPORT("ProArraySizeGet()", "ProTestInfo", status, status != PRO_TK_NO_ERROR); strcpy (s_description, ""); if (err == PRO_TK_NO_ERROR && size_array != 0) for (i=size_array-1; i>=0; i--) { ProWstringToString (strout, valuedata[i].v.w); strcat (s_description, strout); strcat (s_description, "\n"); } else strcpy (s_description, "No description"); fprintf (pfile, "\n FULL DESCRIPTION\n %s\n", s_description); /*-------------------------------------------------------------------------*\ Display Info \*-------------------------------------------------------------------------*/ fclose (pfile); err = ProArrayFree ((ProArray*)&valuedata); TEST_CALL_REPORT("ProArrayFree()", "ProTestInfo", err, err != PRO_TK_NO_ERROR); ProStringToWstring (msgfile, messagefile); err = ProInfoWindowDisplay(msgfile, NULL, NULL); TEST_CALL_REPORT("ProInfoWindowDisplay()", "ProTestInfo", err, err != PRO_TK_NO_ERROR); return (0); } /*====================================================================*\ Function : ProTestProcstep Purpose : \*====================================================================*/ int ProTestProcstep() { ProProcstep *p_steps, active; ProSolid solid; ProError err; int n_steps, menu_id, action; const int prev = 0, next = 1; err = ProMdlCurrentGet((ProMdl*)&solid); TEST_CALL_REPORT("ProMdlCurrentGet()", "ProTestProcstep", err, err != PRO_TK_NO_ERROR); /*-------------------------------------------------------------------------*\ Find all process steps in the model \*-------------------------------------------------------------------------*/ err = ProUtilCollectProcstep(solid, &p_steps); if (err != PRO_TK_NO_ERROR) return (0); err = ProArraySizeGet((ProArray)p_steps, &n_steps); TEST_CALL_REPORT("ProArraySizeGet()", "ProTestProcstep", err, err != PRO_TK_NO_ERROR); if (n_steps <= 0) return (0); /*-------------------------------------------------------------------------*\ Add -Step#Regen menu \*-------------------------------------------------------------------------*/ ProMenuPush(); ProMenuFileRegister ("-Step Regen", "playstep.mnu", &menu_id); ProMenubuttonActionSet ("-Step Regen", "Set step", (ProMenubuttonAction)ProTestSetStep, &solid, 0); ProMenubuttonActionSet ("-Step Regen", "Previous step", (ProMenubuttonAction)ProTestStep, &solid, prev); ProMenubuttonActionSet ("-Step Regen", "Next step", (ProMenubuttonAction)ProTestStep, &solid, next); ProMenubuttonActionSet ("-Step Regen", "Info", (ProMenubuttonAction)ProTestInfo, &solid, 0); ProMenubuttonActionSet ("-Step Regen", "Tk done -Step Regen", (ProMenubuttonAction)ProMenuDelete, NULL, 0); ProMenubuttonActionSet ("-Step Regen", "-Step Regen", (ProMenubuttonAction)ProMenuDelete, NULL, 0); err = ProMenuCreate (PROMENUTYPE_MAIN,"-Step Regen", &menu_id ); err = ProProcstepActiveGet (solid, &active); TEST_CALL_REPORT("ProProcstepActiveGet()", "ProtestSetStep", err, err != PRO_TK_NO_ERROR); ProUtilMenubuttonActivate ("-Step Regen","Previous step", p_steps[0].id != active.id && err == PRO_TK_NO_ERROR); ProUtilMenubuttonActivate ("-Step Regen", "Next step", p_steps[n_steps-1].id != active.id); ProUtilMenubuttonActivate ("-Step Regen", "Info", err == PRO_TK_NO_ERROR); ProMenuProcess ("-Step Regen", &action); ProMenuPop(); return (0); }