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