/*
Copyright (c) 2019 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
#include <ProToolkit.h>
#include <ProMfg.h>
#include <ProMdl.h>
#include <ProTool.h>
#include <ProToolinput.h>
#include <ProToolElem.h>
#include <ProParamval.h>
#include <TestError.h>
/*===========================================================*\
Function : UserSolidToolCreate
Purpose : Creates a tool from a tool part.
\*===========================================================*/
ProErr UserSolidToolCreate (
ProMfg mfg_model,
ProToolType tool_type,
wchar_t *tool_id,
wchar_t *part_name,
ProTool *tool)
{
ProToolElem tool_elem;
ProToolinputPtr tool_input;
ProMdl tool_part;
ProMdlfileType mdl_type = PRO_MDLFILE_PART;
ProErr status;
ProErrorlist errors;
status = ProMdlnameRetrieve (part_name, mdl_type, &tool_part);
ERROR_CHECK("UserSolidToolCreate", "ProMdlnameRetrieve", status);
if (status != PRO_TK_NO_ERROR)
return status;
status = ProToolinputAlloc (&tool_input);
ERROR_CHECK("UserSolidToolCreate", "ProToolinputAlloc", status);
if (status == PRO_TK_NO_ERROR)
{
/*--------------------------------------------------------------------*\
Set the tool type.
\*--------------------------------------------------------------------*/
status = ProToolinputTypeSet (tool_input, tool_type);
ERROR_CHECK("UserSolidToolCreate", "ProToolinputTypeSet",status);
if (status == PRO_TK_NO_ERROR)
return status;
/*--------------------------------------------------------------------*\
Allocate the space for the tool model and to the tool_input.
\*--------------------------------------------------------------------*/
status = ProElementAlloc(PRO_E_TOOL_MODEL, &tool_elem);
ERROR_CHECK("UserSolidToolCreate", "ProElementAlloc",status);
if (status == PRO_TK_NO_ERROR)
{
status = ProToolElemModelSet (tool_elem, &tool_part);
ERROR_CHECK("UserSolidToolCreate", "ProToolElemModelSet",status);
}
if (status == PRO_TK_NO_ERROR)
{
status = ProToolinputElemAdd (tool_input, tool_elem);
ERROR_CHECK("UserSolidToolCreate", "ProToolinputElemAdd",status);
}
/*--------------------------------------------------------------------*\
Create the tool.
\*--------------------------------------------------------------------*/
if (status == PRO_TK_NO_ERROR)
{
status = ProToolInit (tool_id, mfg_model, tool);
ERROR_CHECK("UserSolidToolCreate", "ProToolInit",status);
if (status == PRO_TK_NO_ERROR)
{
status = ProToolCreate (tool, tool_input, &errors);
ERROR_CHECK("UserSolidToolCreate","ProToolCreate",status);
}
}
/*--------------------------------------------------------------------*\
Free the input structure
\*--------------------------------------------------------------------*/
status = ProToolinputFree (&tool_input);
ERROR_CHECK("UserSolidToolCreate","ProToolinputFree",status);
}
return status;
}