请先阅读:
手把手教你开发Pro/TOOLKIT应用程序(一)
手把手教你开发Pro/TOOLKIT应用程序(二)
这篇主要讲解第一篇中Pro/TOOLKIT代码的具体含义。
Line 1~12
包含Pro/TOOLKIT常用的头文件。
Line 15~24
函数声明。
Line 26~55 user_initialize
user_initialize为Pro/TOOLKIT程序的初始化函数,每个Pro/TOOLKIT程序(DLL)都必
须定义该函数。一般在该函数中添加菜单和菜单项。
Line 30~32
定义了宽字符数组变量MsgFile用于存储信息文件的名称:Test_Msg.txt。
ProFamilyName为宽字符(wchar_t)数组。
ProStringToWstring函数将char字符串转换为wchar_t字符串。
Line 35
在Pro/E【帮助】菜单之后添加菜单【TestMenu】。
ProError ProMenubarMenuAdd(
ProMenuItemName menu_name,
ProMenuItemLabel untranslated_menu_label,
ProMenuItemName neighbor,
ProBoolean add_after_neighbor,
ProFileName filename);
- menu_name:菜单名称,必须唯一。
- untranslated_menu_label:菜单文本,该文本用于匹配信息文件中的内容。
- neighbor:相邻的菜单名。”Help”为【帮助】菜单。
- add_after_neighbor:是否位于相邻菜单的右侧。PRO_B_TRUE表明位于右侧,否则位于左侧。
- filename:信息文件名。
Line 39~41
添加命令:Test。
ProError ProCmdActionAdd(
char *action_name,
uiCmdCmdActFn action_cb,
uiCmdPriority priority,
uiCmdAccessFn access_func,
ProBoolean allow_in_non_active_window,
ProBoolean allow_in_accessory_window,
uiCmdCmdId *action_id);
- action_name:命令名称,必须唯一。
- action_cb:命令的响应函数。
- priority:命令的优先级,一般为uiCmdPrioDefault。
- access_func:命令的访问权限函数。该函数的返回值关系到和命令关联的菜单项的状态,具体如下:
typedef enum
{
ACCESS_REMOVE = 1, // 移除菜单项
ACCESS_INVISIBLE, // 菜单项不可见
ACCESS_UNAVAILABLE, // 菜单项灰化不可选
ACCESS_DISALLOW, // 菜单项不可选
ACCESS_AVAILABLE // 菜单项可选
} uiCmdAccessState;
- allow_in_non_active_window:是否在非激活窗口中显示命令关联的菜单项,一般为PRO_B_FALSE。
- allow_in_accessory_window:是否在附属窗口中显示命令关联的菜单项,一般为PRO_B_FALSE。
- action_id:命令ID。
Line 42~43
添加菜单按钮:Test。
ProError ProMenubarmenuPushbuttonAdd(
ProMenuItemName parent_menu,
ProMenuItemName push_button_name,
ProMenuItemLabel push_button_label,
ProMenuLineHelp one_line_help,
ProMenuItemName neighbor,
ProBoolean add_after_neighbor,
uiCmdCmdId action_id,
ProFileName filename);
- parent_menu:父菜单名。
- push_button_name:菜单按钮名。
- push_button_label:菜单按钮文本,用于匹配信息文件中的内容。
- one_line_help:菜单按钮提示文本,用于匹配信息文件中的内容。
- neighbor:相邻菜单项名,若为NULL,则添加到父菜单的最后。
- add_after_neighbor:是否位于相邻菜单项的后面。PRO_B_TRUE表明位于后面,否则位于前面。
- action_id:关联的命令ID。
- filename:信息文件名。
Line 46~51
添加命令和菜单按钮:获取当前模型的名称并弹窗显示。
同前,略。
Line 57~59 user_terminate
user_terminate函数为Pro/TOOLKIT应用程序退出时被执行的函数,每个Pro/TOOLKIT程序(DLL)都必须定义该函数。
Line 62~68
命令响应函数:弹出测试对话框。
Line 71~92
命令响应函数:获取当前模型的名称并弹出显示。
ProMdlCurrentGet:获取当前模型,Pro/E中的任何模型,例如:零件档、组立档、工程图、钣金件等,都可以用ProMdl类型来表示。
ProMdlNameGet:获取模型的名称。
Line 96~119
命令访问权限函数。该函数始终返回ACCESS_AVAILABLE,所以菜单项【Test】始终是可
见并可执行的。
Line 123~143
命令访问权限函数。
首先通过ProModeCurrentGet获取当前Pro/E的模式,后面的语句表明只有在零件档、组
立档或工程图模式下才返回ACCESS_AVAILABLE;也就是说菜单项【ShowCurrModelN
ame】只有在Pro/E有打开零件档、组立档或工程图的情况下才是可见并可选的,否则菜
单项会变灰