1) msg_aces.txt contains (note not all of the entries are needed) ...
USER %0d
%0d
#
#
USER %0s %1f
%0s %1f
#
#
USER %0f
%0f
#
#
USER %0f,%1f
%0f,%1f
#
#
USER %0f,%1f,%2f
%0f,%1f,%2f
#
#
USER %0f,%1f,%2f,%3f
%0f,%1f,%2f,%3f
#
#
USER %0s
%0s
#
#
USER -ACES
-ACES
#
#
USER -UserMenu
-UserMenu
#
#
USER -MainBtn1
-MainBtn1
#
#
USER New Button help.
New Button help.
#
#
USER -HoleHilite
-HoleHilite
#
#
USER -Hilite
-Hilite
#
#
USER -LoadData
-LoadData
#
#
USER -HiliteEdges
-HiliteEdges
#
#
USER -TotWeld
-TotWeld
#
#
USER -ToleranceCheck
-ToleranceCheck
#
#
2) Main file whatever.cpp contains ...
#include <string>
#include <fstream>
#include <iostream>
#include <vector>
using namespace std ;
extern "C"{
#define PRO_USE_VAR_ARGS
#include "ProToolkit.h"
#include <ProMenu.h>;
#include <ProMenuBar.h>
#include <ProWstring.h>
#include <ProModelitem.h>
#include <ProMessage.h>
#include <ProSolid.h>
#include <ProUtil.h>
#include <ProEdge.h>
#include <ProWindows.h>
#include <ProGeomitemdata.h>
int user_initialize();
void user_terminate();
}
ProFileName UserMsg;
ProMdl curobj;
static uiCmdAccessState TestAccessDefault(uiCmdAccessMode access_mode)
{
return (ACCESS_AVAILABLE);
}
int HiliteAction()
{
// some code ....
return 0;
}
int HiliteEdges()
{
// some code ....
return 0;
}
int TotWeld()
{
// some code ....
return 0;
}
int LoadAction()
{
// some code ....
return 0;
}
/*====================================================================*\
FUNCTION : user_initialize()
PURPOSE : Pro/DEVELOP standard initialize - define menu button
\*====================================================================*/
int user_initialize()
{
uiCmdCmdId cmd_solve_id,cmd_display_id,cmd_hiliteedges_id,cmd_totweld_id;
ProStringToWstring(UserMsg,"msg_aces.txt");
ProMessageDisplay(UserMsg,"USER %0s","ACES add-ins loaded.");
/*----------------------------------------------------------------*\
Add a new menu to the menu bar (to the left of Help).
\*----------------------------------------------------------------*/
ProMenubarMenuAdd ("UserACES", "USER -ACES",
"Help", PRO_B_FALSE, UserMsg);
/*----------------------------------------------------------------*\
Add a sub menu to the new menu.
\*----------------------------------------------------------------*/
ProMenubarmenuMenuAdd ("UserACES", "ToleranceCheck",
"USER -ToleranceCheck",NULL, PRO_B_TRUE, UserMsg);
/*----------------------------------------------------------------*\
Fill in the buttons.
\*----------------------------------------------------------------*/
// button 1 (Hilite) in ToleranceCheck submenu
ProCmdActionAdd ("UserHiliteAction",
(uiCmdCmdActFn)HiliteAction,uiCmdPrioDefault, TestAccessDefault, PRO_B_TRUE,
PRO_B_TRUE, &cmd_solve_id);
ProMenubarmenuPushbuttonAdd ("ToleranceCheck", "Hilite",
"USER -Hilite", "USER New Button help.", NULL, PRO_B_TRUE, cmd_solve_id,
UserMsg);
// button 2 (LoadData) in ToleranceCheck submenu
ProCmdActionAdd ("UserLoadDataAction",
(uiCmdCmdActFn)LoadDataAction,uiCmdPrioDefault, TestAccessDefault, PRO_B_TRUE,
PRO_B_TRUE, &cmd_display_id);
ProMenubarmenuPushbuttonAdd ("ToleranceCheck", "LoadData","USER -LoadData",
"USER New Button help.", NULL, PRO_B_TRUE, cmd_display_id, UserMsg);
/*----------------------------------------------------------------*\
Add a button bellow TolernaceCheck which is ...
Hilite edges that are bellow some critical edge (HiliteEdges)
\*----------------------------------------------------------------*/
// create actions id
ProCmdActionAdd ("UserHiliteEdges",
(uiCmdCmdActFn)HiliteEdges,uiCmdPrioDefault, TestAccessDefault, PRO_B_TRUE,
PRO_B_TRUE, &cmd_hiliteedges_id);
// add this id to button
ProMenubarmenuPushbuttonAdd ("UserACES", "HiliteEdges","USER -HiliteEdges",
"USER New Button help.", NULL, PRO_B_TRUE, cmd_hiliteedges_id, UserMsg);
/*----------------------------------------------------------------*\
Add a button bellow HiliteEdges which is ...
Select weldlines and return the total lenght (TotWeld)
\*----------------------------------------------------------------*/
// create actions id
ProCmdActionAdd ("UserTotWeld",
(uiCmdCmdActFn)TotWeld,uiCmdPrioDefault, TestAccessDefault, PRO_B_TRUE,
PRO_B_TRUE, &cmd_totweld_id);
// add this id to button
ProMenubarmenuPushbuttonAdd ("UserACES", "TotWeld","USER -TotWeld",
"USER New Button help.", NULL, PRO_B_TRUE, cmd_totweld_id, UserMsg);
return (0);
}
/*====================================================================*\
FUNCTION : user_terminate()
PURPOSE : To handle any termination actions
\*====================================================================*/
void user_terminate()
{
}