手把手教你开发Pro/TOOLKIT应用程序(三)

请先阅读:
手把手教你开发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有打开零件档、组立档或工程图的情况下才是可见并可选的,否则菜
单项会变灰

展开阅读全文

没有更多推荐了,返回首页