/*====================================================================*\ FILE : TestMeasure.c PURPOSE : Test Geomitem...Eval functions HISTORY.. DATE BUILD AUTHOR MODIFICATIONS 19-Jan-97 H-01-21 Pavel $$1 Created 23-Jun-97 H-03-15 Pavel $$2 Updated \*====================================================================*/ /*--------------------------------------------------------------------*\ Pro/TOOLKIT includes \*--------------------------------------------------------------------*/ #include "ProToolkit.h" #include "ProGeomitem.h" #include "ProMenu.h" #include "ProMdl.h" #include "ProSelection.h" #include "ProUtil.h" /*--------------------------------------------------------------------*\ C System includes \*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*\ Application includes \*--------------------------------------------------------------------*/ #include "TestError.h" #include "TestFiletypes.h" #include "UtilFiles.h" #include "UtilMessage.h" /*--------------------------------------------------------------------*\ Application macros \*--------------------------------------------------------------------*/ #define USER_ANGLE_EVAL 0 #define USER_DISTANCE_EVAL 1 #define USER_DIAMETER_EVAL 2 /*====================================================================*\ FUNCTION : ProTestMeasureMenu() PURPOSE : Commands for testing Geomitem...Eval in Pro/TOOLKIT \*====================================================================*/ int ProTestMeasureMenu() { ProMdl model; ProError status; int action, menu_id; int ProTestMeasure(ProAppData, int); status = ProMdlCurrentGet(&model); TEST_CALL_REPORT("ProMdlCurrentGet()", "ProTestMeasureMenu()", status, status != PRO_TK_NO_ERROR); status = ProMenuFileRegister("TkMeasure", "tkmeasure.mnu", &menu_id); TEST_CALL_REPORT("ProMenuFileRegister()", "ProTestMeasureMenu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMeasure", "Angle", ProTestMeasure, model, USER_ANGLE_EVAL); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestMeasureMenu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMeasure", "Distance", ProTestMeasure, model, USER_DISTANCE_EVAL); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestMeasureMenu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMeasure", "Diameter", ProTestMeasure, model, USER_DIAMETER_EVAL); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestMeasureMenu()", status, status != PRO_TK_NO_ERROR); status = ProMenubuttonActionSet("TkMeasure", "TkMeasure", (ProMenubuttonAction)ProMenuDelete, NULL, 0); TEST_CALL_REPORT("ProMenubuttonActionSet()", "ProTestMeasureMenu()", status, status != PRO_TK_NO_ERROR); /* Display Menu and set it into action. */ status = ProMenuCreate(PROMENUTYPE_MAIN, "TkMeasure", &menu_id); TEST_CALL_REPORT("ProMenuCreate()", "ProTestMeasureMenu()", status, status != PRO_TK_NO_ERROR); status = ProMenuProcess("TkTkMeasure", &action); TEST_CALL_REPORT("ProMenuProcess()", "ProTestMeasureMenu()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_E_FOUND); return(1); } /*====================================================================*\ FUNCTION : ProTestMeasure PURPOSE : Commands for testing Geomitem...Eval in Pro/TOOLKIT \*====================================================================*/ int ProTestMeasure(ProAppData app_data, int option) { ProMdl model = (ProMdl) app_data; ProError status; int allow, p_count; ProCharLine string; char *ch; double dist, diam; ProSelection *p_sel_arr; ProModelitem mod_item; ProSurface surf; ProUvParam uv_par; ProCharLine fname; FILE *fp; ProTestQcrName(&model, ".msr", fname); if ( (fp = fopen(fname,"a")) == NULL ) return(-1); dist = 0.0; switch(option) { case USER_ANGLE_EVAL: ch = "edge"; allow =2; break; case USER_DISTANCE_EVAL: ch ="surface,point,axis"; allow = 2; break; case USER_DIAMETER_EVAL: ch = "surface"; allow = 1; break; default: return (-1); } /* Get the user's selection */ ProUtilMsgPrint("gen", "TEST %0s", "Select a geometry"); status = ProSelect(ch, allow, NULL, NULL, NULL, NULL, &p_sel_arr, &p_count); TEST_CALL_REPORT("ProSelect()", "ProTestMeasure()", status, status != PRO_TK_NO_ERROR); if (status != PRO_TK_NO_ERROR || p_count < allow) return (0); switch (option) { case USER_ANGLE_EVAL: status = ProGeomitemAngleEval(p_sel_arr[0], p_sel_arr[1], &dist); TEST_CALL_REPORT("ProGeomitemAngleEval()", "ProTestMeasure()", status, status != PRO_TK_NO_ERROR); ch = "Angle"; break; case USER_DISTANCE_EVAL: status = ProGeomitemDistanceEval(p_sel_arr[0], p_sel_arr[1], &dist); TEST_CALL_REPORT("ProGeomitemDistanceEval()", "ProTestMeasure()", status, status != PRO_TK_NO_ERROR); ch = "Distance"; break; case USER_DIAMETER_EVAL: status = ProSelectionModelitemGet(p_sel_arr[0], &mod_item); TEST_CALL_REPORT("ProSelectionModelitemGet()", "ProTestMeasure()", status, status != PRO_TK_NO_ERROR); status = ProSelectionUvParamGet(p_sel_arr[0], uv_par); TEST_CALL_REPORT("ProSelectionUvParamGet()", "ProTestMeasure()", status, status != PRO_TK_NO_ERROR); status = ProGeomitemToSurface((ProGeomitem*)&mod_item, &surf); TEST_CALL_REPORT("ProGeomitemToSurface()", "ProTestMeasure()", status, status != PRO_TK_NO_ERROR); status = ProSurfaceDiameterEval(surf, uv_par, &diam); TEST_CALL_REPORT("ProSurfaceDiameterEval()", "ProTestMeasure()", status, status != PRO_TK_NO_ERROR); status = ProGeomitemDiameterEval(p_sel_arr[0], &dist); TEST_CALL_REPORT("ProGeomitemDiameterEval()", "ProTestMeasure()", status, status != PRO_TK_NO_ERROR); if (dist != diam) fprintf(fp, "Error: ProSurfaceDiameterEval and " "ProGeomitemDiameterEval return different value!\n"); ch = "Diameter"; break; } sprintf(string, "%s = %7.3f", ch, dist); ProUtilMsgPrint("gen", "TEST %0s", string); fprintf(fp, "%s\n", string); fclose(fp); return (0); }