/*
Copyright (c) 2019 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
/*====================================================================*\
FILE : PTMechExmpleMain.c
PURPOSE : Test Pro/TOOLKIT functions for Mechanica
\*====================================================================*/
/*--------------------------------------------------------------------*\
Pro/Toolkit includes -- include this first
\*--------------------------------------------------------------------*/
#include <ProToolkit.h>
#include <ProMdl.h>
#include <ProMenuBar.h>
#include <ProMechItem.h>
#include <ProMechConstraint.h>
#include <ProMechLoad.h>
#include <ProMechMaterialOrient.h>
#include <ProUtil.h>
#include <ProMessage.h>
#include <ProMechValue.h>
#include <ProModelitem.h>
#include <PTMechExamples.h>
/*--------------------------------------------------------------------*\
FUNCTION : TestAccessMechCmd()
PURPOSE : enable access to the menu contents
\*--------------------------------------------------------------------*/
static ProError status;
static ProCharLine msgbuf;
static ProFileName msgfile;
static uiCmdAccessState TestAccessMechCmd (uiCmdAccessMode access_mode)
{
ProBoolean mechanica_active;
ProMdl current_model;
ProMdlType type;
status = ProMdlCurrentGet (¤t_model);
if (status != PRO_TK_NO_ERROR)
return (ACCESS_REMOVE);
status = ProMdlTypeGet (current_model, &type);
if (type != PRO_MDL_PART && type != PRO_MDL_ASSEMBLY)
return (ACCESS_REMOVE);
status = ProMechanicaIsActive (&mechanica_active);
if (status == PRO_TK_NO_ERROR && mechanica_active)
return (ACCESS_AVAILABLE);
else
return (ACCESS_REMOVE);
}
/*====================================================================*\
FUNCTION : user_initialize()
PURPOSE :
\*====================================================================*/
int user_initialize(
int argc,
char *argv[],
char *version,
char *build,
wchar_t errbuf[80])
{
uiCmdCmdId cmd_id;
ProStringToWstring(msgfile,"pt_mech_examples.txt");
/*---------------------------------------------------------------------*\
Add "MechanicaTest" after info button to the menu bar
\*---------------------------------------------------------------------*/
status = ProMenubarMenuAdd ("PTMechanicaTest", "PTMechanicaTestLabel", "Applications",
PRO_B_TRUE, msgfile);
PT_TEST_LOG("ProMenubarMenuAdd()", status, status != PRO_TK_NO_ERROR);
/*---------------------------------------------------------------------*\
Add "PTMechExLoadCreate" button to the menu bar
\*---------------------------------------------------------------------*/
status = ProCmdActionAdd("PTTest.TestMechLoadCreate", (uiCmdCmdActFn)PTMechExLoadOper,
uiProe2ndImmediate, TestAccessMechCmd,
PRO_B_TRUE, PRO_B_TRUE, &cmd_id);
PT_TEST_LOG_SUCC ("ProCmdActionAdd");
status = ProMenubarmenuPushbuttonAdd("PTMechanicaTest","PTMechExLoadOper",
"PTMechExLoadOperLabel",
"PTMechExLoadOperLabelHelp",NULL,
PRO_B_TRUE, cmd_id, msgfile);
PT_TEST_LOG_SUCC("ProMenubarmenuPushbuttonAdd");
/*---------------------------------------------------------------------*\
Add "PTMechExDelete" button to the menu bar
\*---------------------------------------------------------------------*/
status = ProCmdActionAdd("PTTest.TestMechItemDelete", (uiCmdCmdActFn)PTMechExDelete,
uiProe2ndImmediate, TestAccessMechCmd,
PRO_B_TRUE, PRO_B_TRUE, &cmd_id);
PT_TEST_LOG_SUCC ("ProCmdActionAdd");
status = ProMenubarmenuPushbuttonAdd("PTMechanicaTest","PTMechExDelete",
"PTMechExDeleteLabel",
"PTMechExDeleteLabelHelp",NULL,
PRO_B_TRUE, cmd_id, msgfile);
PT_TEST_LOG_SUCC("ProMenubarmenuPushbuttonAdd");
/*---------------------------------------------------------------------*\
Add "PTMechExMagChange" button to the menu bar
\*---------------------------------------------------------------------*/
status = ProCmdActionAdd("PTTest.TestMechItemMagChange", (uiCmdCmdActFn)PTMechExMagChange,
uiProe2ndImmediate, TestAccessMechCmd,
PRO_B_TRUE, PRO_B_TRUE, &cmd_id);
PT_TEST_LOG_SUCC ("ProCmdActionAdd");
status = ProMenubarmenuPushbuttonAdd("PTMechanicaTest","PTMechExMagChange",
"PTMechExMagChangeLabel",
"PTMechExMagChangeLabelHelp",NULL,
PRO_B_TRUE, cmd_id, msgfile);
PT_TEST_LOG_SUCC("ProMenubarmenuPushbuttonAdd");
/*---------------------------------------------------------------------*\
Add "PTMechExConstrCopy" button to the menu bar
\*---------------------------------------------------------------------*/
status = ProCmdActionAdd("PTTest.TestMechItemConstrCopy", (uiCmdCmdActFn)PTMechExConstrCopy,
uiProe2ndImmediate, TestAccessMechCmd,
PRO_B_TRUE, PRO_B_TRUE, &cmd_id);
PT_TEST_LOG_SUCC ("ProCmdActionAdd");
status = ProMenubarmenuPushbuttonAdd("PTMechanicaTest","PTMechExConstrCopy",
"PTMechExConstrCopyLabel",
"PTMechExConstrCopyLabelHelp",NULL,
PRO_B_TRUE, cmd_id, msgfile);
PT_TEST_LOG_SUCC("ProMenubarmenuPushbuttonAdd");
/*---------------------------------------------------------------------*\
Add "PTMechExMatOrient" button to the menu bar
\*---------------------------------------------------------------------*/
status = ProCmdActionAdd("PTTest.TestMechItemMatOrient", (uiCmdCmdActFn)PTMechExMatOrient,
uiProe2ndImmediate, TestAccessMechCmd,
PRO_B_TRUE, PRO_B_TRUE, &cmd_id);
PT_TEST_LOG_SUCC ("ProCmdActionAdd");
status = ProMenubarmenuPushbuttonAdd("PTMechanicaTest","PTMechExMatOrient",
"PTMechExMatOrientLabel",
"PTMechExMatOrientLabelHelp",NULL,
PRO_B_TRUE, cmd_id, msgfile);
PT_TEST_LOG_SUCC("ProMenubarmenuPushbuttonAdd");
/*---------------------------------------------------------------------*\
Add "PTMechExItemInfo" button to the menu bar
\*---------------------------------------------------------------------*/
status = ProCmdActionAdd("PTTest.TestMechItemInfoe", (uiCmdCmdActFn)PTMechExItemInfo,
uiProe2ndImmediate, TestAccessMechCmd,
PRO_B_TRUE, PRO_B_TRUE, &cmd_id);
PT_TEST_LOG_SUCC ("ProCmdActionAdd");
status = ProMenubarmenuPushbuttonAdd("PTMechanicaTest","PTMechExItemInfo",
"PTMechExItemInfoLabel",
"PTMechExItemInfoLabelHelp",NULL,
PRO_B_TRUE, cmd_id, msgfile);
PT_TEST_LOG_SUCC("ProMenubarmenuPushbuttonAdd");
return (0);
}
/*====================================================================*\
FUNCTION : user_terminate()
PURPOSE : To handle any termination actions
\*====================================================================*/
void user_terminate()
{
}