/* Copyright (c) 2024 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved. */ /*--------------------------------------------------------------------*\ Pro/TOOLKIT includes \*--------------------------------------------------------------------*/ #include <ProModelitem.h> #include <ProNcseq.h> #include <ProMfgoper.h> #include <ProWcell.h> #include <ProTool.h> #include <UtilFiles.h> #include <ProTKRunTime.h> #include <PTApplsUnicodeUtils.h> #include <ProUtil.h> /*--------------------------------------------------------------------*\ Application includes \*--------------------------------------------------------------------*/ #include "TestMfgNew.h" #include "UtilString.h" #include "UtilGeom.h" #include "TestError.h" #include "UtilMessage.h" /*--------------------------------------------------------------------*\ Function prototypes \*--------------------------------------------------------------------*/ ProError ProUtilToolChoose(ProMfg *p_mfg, ProTool *p_sel_tool); /*====================================================================*\ FUNCTION : ProTestRouteTool() PURPOSE : Create info for Tool \*====================================================================*/ ProError ProTestRouteTool() { ProMfg mfg_model; ProAsmcomppath comp_path; ProSolid mfg_solid; ProError status; ProTool sel_tool; status = ProTestGetModels( &mfg_model, &mfg_solid, &comp_path); status = ProUtilToolChoose(&mfg_model, &sel_tool); if (status != PRO_TK_E_NOT_FOUND) { ProTestGetToolInfo(&sel_tool); } else ProUtilMsgPrint((char*)"gen", (char*)"TEST %0s",(char*)"No Tools available"); return ((ProError)0); } /*====================================================================*\ FUNCTION : ProTestToolParamGet() PURPOSE : Read tool parameter (only double) and write to file. \*====================================================================*/ ProError ProTestToolParamGet ( FILE *fp, ProTool *p_tool, ProCharName tl_param_name) { ProParamvalue param_val; ProError status; double param_value; status = ProToolParamGet(p_tool, tl_param_name, ¶m_val); TEST_CALL_REPORT("ProToolParamGet()", "ProTestGetToolInfo()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_E_NOT_FOUND); if (status != PRO_TK_NO_ERROR) return status; status = ProParamvalueValueGet (¶m_val, PRO_PARAM_DOUBLE, ¶m_value); TEST_CALL_REPORT("ProParamvalueValueGet()", "ProTestGetToolInfo()", status, (status != PRO_TK_NO_ERROR)); if (status != PRO_TK_NO_ERROR) return status; ProTKFprintf(fp, (char*)"\n%s parameter's value is %f", tl_param_name, param_value); return status; } /*====================================================================*\ FUNCTION : ProTestGetToolInfo() PURPOSE : Get Information about Nc sequence \*====================================================================*/ ProError ProTestGetToolInfo(ProTool *p_tool) { FILE *fp; char tool_name[PRO_LINE_SIZE]; char tool_name_u[PRO_LINE_SIZE]; ProToolType r_tool_type; wchar_t w_filename[PRO_LINE_SIZE]; ProCharName tool_cutter_diam = "CUTTER_DIAM"; ProCharName tool_length = "LENGTH"; ProError status; /*--------------------------------------------------------------------*\ Open info file \*--------------------------------------------------------------------*/ ProWstringToString (tool_name_u, (wchar_t*) p_tool->tool_id); ProUtilStringLower( tool_name_u, tool_name); ProUtilstrcat(tool_name, ".inf"); fp = PTApplsUnicodeFopen(tool_name,"w"); ProTKFprintf(fp, (char*)"\tInformation about \"%s\" tool", tool_name_u); /*--------------------------------------------------------------------*\ Get the tool type \*--------------------------------------------------------------------*/ status = ProToolTypeGet (p_tool, &r_tool_type); TEST_CALL_REPORT("ProToolTypeGet()", "ProTestGetToolInfo()", status, (status != PRO_TK_NO_ERROR)); switch (r_tool_type) { case PRO_TOOL_NONE: ProTKFprintf(fp, (char*)"\nTool type: not defined"); break; case PRO_TOOL_TURN: ProTKFprintf(fp, (char*)"\nTool type: Turning"); break; case PRO_TOOL_DRILL: ProTKFprintf(fp, (char*)"\nTool type: Drilling"); break; case PRO_TOOL_MILL: ProTKFprintf(fp, (char*)"\nTool type: Milling"); break; case PRO_TOOL_SIDE_MILL: ProTKFprintf(fp, (char*)"\nTool type: Side Milling"); break; case PRO_TOOL_SAW: ProTKFprintf(fp, (char*)"\nTool type: Saw"); break; case PRO_TOOL_GROOVE: ProTKFprintf(fp, (char*)"\nTool type: Groove"); break; case PRO_TOOL_BORE: ProTKFprintf(fp, (char*)"\nTool type: Bore"); break; case PRO_TOOL_TAP: ProTKFprintf(fp, (char*)"\nTool type: Tap"); break; case PRO_TOOL_CSINK: ProTKFprintf(fp, (char*)"\nTool type: Counter sink"); break; case PRO_TOOL_REAM: ProTKFprintf(fp, (char*)"\nTool type: Ream"); break; case PRO_TOOL_CENTER_DRL: ProTKFprintf(fp, (char*)"\nTool type: Center drilling"); break; case PRO_TOOL_TURN_GRV: ProTKFprintf(fp, (char*)"\nTool type: Turn groove"); break; case PRO_TOOL_MILL_THREAD: ProTKFprintf(fp, (char*)"\nTool type: Mill thread"); break; case PRO_TOOL_TURN_THREAD: ProTKFprintf(fp, (char*)"\nTool type: Turn thread"); break; } /*--------------------------------------------------------------------*\ Get the tool parameters \*--------------------------------------------------------------------*/ ProTestToolParamGet(fp, p_tool, tool_cutter_diam); ProTestToolParamGet(fp, p_tool, tool_length); ProTestToolParamGet(fp, p_tool, (char*)"NOSE_RADIUS"); ProTestToolParamGet(fp, p_tool, (char*)"SIDE_ANGLE"); ProTestToolParamGet(fp, p_tool, (char*)"END_ANGLE"); ProTestToolParamGet(fp, p_tool, (char*)"TOOL_WIDTH"); ProTestToolParamGet(fp, p_tool, (char*)"CORNER_RADIUS"); ProTestToolParamGet(fp, p_tool, (char*)"CUTTER_WIDTH"); ProTestToolParamGet(fp, p_tool, (char*)"POINT_ANGLE"); ProTestToolParamGet(fp, p_tool, (char*)"CHAMFER_LENGTH"); ProTestToolParamGet(fp, p_tool, (char*)"DRILL_DIAMETER"); ProTestToolParamGet(fp, p_tool, (char*)"DRILL_LENGTH"); ProTestToolParamGet(fp, p_tool, (char*)"CUTTING_OFFSET"); ProTestToolParamGet(fp, p_tool, (char*)"BODY_DIAMETER"); ProTestToolParamGet(fp, p_tool, (char*)"INSERT_LENGTH"); ProTestToolParamGet(fp, p_tool, (char*)"SIDE_WIDTH"); ProTestToolParamGet(fp, p_tool, (char*)"SHANK_DIAM"); fclose(fp); status = ProInfoWindowDisplay(ProStringToWstring(w_filename, tool_name), NULL,NULL); TEST_CALL_REPORT ("ProInfoWindowDisplay", "ProTestGetToolInfo", status, status != PRO_TK_NO_ERROR); return PRO_TK_NO_ERROR; }