Defining the Activated Workbench-使用CATIAfrActivateWorkbench

摘要

本文演示如何使用 CATIAfrActivateWorkbench 接口,定义在对象被UI 激活时需要激活的工作台。
  • 本用例将教会您的内容
  • CAAAfrInitialWorkbench 用例
    • CAAAfrInitialWorkbench 的功能
    • 如何运行 CAAAfrInitialWorkbench
    • CAAAfrInitialWorkbench 代码所在位置
  • 分步实现
  • 小结
  • 参考资料

本用例您将学到的内容

本用例旨在向您演示如何使用 CATIAfrActivateWorkbench 接口,定义在对象被界面激活时需要启动的工作台 [1]。界面激活对象 [2] 可通过分布在各工作台中的命令进行编辑。当最终用户双击该类对象、打开或创建文档时,应用程序需从当前界面激活对象所属的工作台中选定一个工作台。针对指定界面激活对象的选择遵循以下规则:
  • 首次界面激活时,默认选用上一会话中最后使用的工作台,该信息保存在配置文件中。若配置文件不存在,则选用应用程序工作台列表中的第一个工作台。
  • 后续界面激活时,默认选用当前会话中最后使用的工作台。

该接口支持您修改上述规则,您可根据自身判定条件指定需要启用的工作台。

该接口可在以下界面激活对象上实现:

  • 产品文档对应的 ASMProduct
  • 工程图对应的 DrwDrawing
  • 零件对应的 MechanicalPart
  • 分析文档对应的 AnalysisManager

但以下界面激活对象无需实现该接口,因为这类对象不存在专属工作台,仅包含一个工坊 [2]:

  • 草图编辑器对应的 PRTSketch
  • 材料文档对象
  • catalog(库 / 目录)文档对象

注意:针对指定对象,该接口仅能实现一次。

CAAAfrInitialWorkbench 用例

CAAAfrInitialWorkbenchCAAApplicationFrame.edu 框架中的一个用例,用于演示 ApplicationFrame 框架的各项功能。

CAAAfrInitialWorkbench 的功能

本文演示在 MechanicalPart(机械零件)对象上实现 CATIAfrActivateWorkbench 接口的方法。在零件相关工作台中,被激活的工作台指定为零件设计工作台

图片

 

如何运行 CAAAfrInitialWorkbench

要运行 CAAAfrInitialWorkbench,您需要先搭建编译环境,然后将 CAAAfrInitialWorkbench 及其依赖项一起编译,再配置运行环境,最后执行该用例 [3]。
在正式启动运行之前,请先编辑接口字典文件 CAAApplicationFrame.edu.dico,该文件位于 CAAApplicationFrame.edu 框架的 dictionary 目录下:
  • Windows 系统  InstallRootDirectory\CAAApplicationFrame.edu\CNext\code\dictionary\
  • UNIX 系统InstallRootDirectory/CAAApplicationFrame.edu/CNext/code/dictionary/

其中,InstallRootDirectory 为 CAA 光盘资源包的安装目录。

在此文件中,删除以下行前面的 # 字符:

……

#MechanicalPart CATIAfrActivateWorkbench libCAAAfrInitialWorkbench

……

然后运行 mkCreateRuntimeView

然后,在执行 mkrun 命令的窗口中,不要在命令行输入模块名,而是输入 CNEXT

当应用程序启动就绪后,执行以下操作:
  1. 开始 (Start) 菜单中,选择形状 (Shape),然后单击自由风格 (FreeStyle)
  2. 开始 (Start) 菜单中,选择退出 (Exit)
  3. 重新启动 CNEXT
  4. 文件 (File) 菜单中,单击新建 (New)
  5. 在弹出的新建对话框中选择零件 (Part) 并单击确定 (OK),此时您将直接进入零件设计 (Part Design) 工作台
    如果未实现 CATIAfrActivateWorkbench 接口,当前工作台本应是自由风格 (FreeStyle),即配置文件中保存的上一次使用的工作台。
  6. 开始 (Start) 菜单中,选择机械设计 (Mechanical Design),然后单击线框和曲面设计 (Wireframe and Surface Design)
    您已手动指定了一个工作台,该工作台成为当前新的活动工作台。
  7. 新建对话框中选择零件 (Part) 并单击确定 (OK),您仍然会进入零件设计工作台
    如果未实现 CATIAfrActivateWorkbench 接口,当前工作台本应是线框和曲面设计 (Wireframe and Surface Design),即当前会话中最后使用的工作台。
  8. 文件 (File) 菜单中,单击打开 (Open)
  9. 在文件选择对话框中选择 CAAAfrProduct.CATProduct (*) 并单击打开 (Open)
  10. 编辑 Part1,您将直接进入零件设计工作台
    如果未实现 CATIAfrActivateWorkbench 接口,当前工作台本应是线框和曲面设计,即零件上次使用的工作台。
  11. 开始 (Start) 菜单中,选择机械设计 (Mechanical Design),然后单击线框和曲面设计 (Wireframe and Surface Design)
    您已手动指定了一个工作台,该工作台成为当前新的活动工作台。
  12. 编辑 Part2,您仍然会进入零件设计工作台
    如果未实现 CATIAfrActivateWorkbench 接口,当前工作台本应是线框和曲面设计,也就是零件上次使用的工作台。

(*) 该文档位于 CAAApplicationFrame.edu 框架的 InputData 目录下:

  • Windows 系统InstallRootDirectory\CAACATIAApplicationFrm.edu\InputData\
  • Unix 系统InstallRootDirectory/CAACATIAApplicationFrm.edu\InputData\

其中,InstallRootDirectory 为 CAA 安装光盘(CD-ROM)的解压 / 安装目录。

在哪里可以找到 CAAAfrInitialWorkbench 代码

CAAAfrInitialWorkbench 用例仅由一个类构成,即 CAAEAfrActivateWorkbenchOnPart 类,该类位于 CAAApplicationFrame.edu 框架的 CAAAfrInitialWorkbench.m 模块中:
  • Windows 系统  InstallRootDirectory\CAAApplicationFrame.edu\CAAAfrInitialWorkbench.m\
  • Unix 系统InstallRootDirectory/CAAApplicationFrame.edu/CAAAfrInitialWorkbench.m/

其中 InstallRootDirectory 为 CAA 光盘资源包的安装目录。

分步实现

要实现 CATIAfrActivateWorkbench 接口,需完成两个步骤:
  1. 创建头文件
  2. 创建源文件

创建头文件

// System 框架
#include "CATBaseUnknown.h"  
#include "CATString.h"        

class CAAEAfrActivateWorkbenchOnPart: public CATBaseUnknown
{
  CATDeclareClass;

  public:

    CAAEAfrActivateWorkbenchOnPart();
    virtual ~CAAEAfrActivateWorkbenchOnPart();

    CATString & GetInitialWorkbench();

  private:

    CAAEAfrActivateWorkbenchOnPart(const CAAEAfrActivateWorkbenchOnPart &iObjectToCopy);
    CAAEAfrActivateWorkbenchOnPart & operator = (const CAAEAfrActivateWorkbenchOnPart &iObjectToCopy);

  private:

      CATString _WbName ;
};

CAAEAfrActivateWorkbenchOnPart 类继承自 CATBaseUnknownGetInitialWorkbench 方法是 CATIAfrActivateWorkbench 接口的唯一方法。

CATDeclareClass 宏声明 CAAEAfrActivateWorkbenchOnPart 类属于一个组件。

注意:拷贝构造函数和赋值运算符被声明为私有,且在源文件中不实现。这可以避免编译器在您不知情的情况下将其自动生成为公有成员。_WbName 是由 GetInitialWorkbench 方法返回的数据成员。

创建源文件

#include "CAAEAfrActivateWorkbenchOnPart.h"

#include "TIE_CATIAfrActivateWorkbench.h"              
TIE_CATIAfrActivateWorkbench(CAAEAfrActivateWorkbenchOnPart); 

CATImplementClass (CAAEAfrActivateWorkbenchOnPart,DataExtension, 
                   CATBaseUnknown, MechanicalPart);

TIE_CATIAfrActivateWorkbench 宏用于声明 CAAEAfrActivateWorkbenchOnPart 类实现了 CATIAfrActivateWorkbench 接口。

CATImplementClass 宏通过 DataExtension 关键字声明 CAAEAfrActivateWorkbenchOnPart 类为数据扩展类,用于扩展 MechanicalPart 对象。

对于任意类型的扩展,第三个参数必须固定设置为 CATBaseUnknownCATNull

 

// 构造函数
CAAEAfrActivateWorkbenchOnPart::CAAEAfrActivateWorkbenchOnPart()
{
    _WbName = "PrtCfg" ;
}

// 析构函数
CAAEAfrActivateWorkbenchOnPart::~CAAEAfrActivateWorkbenchOnPart()
{
}

// 获取初始工作台
CATString & CAAEAfrActivateWorkbenchOnPart::GetInitialWorkbench()
{
    return _WbName;
}

在该实现中,默认激活的工作台固定为零件设计工作台,该工作台的内部标识名称为 PrtCfg

小结

本用例讲解了如何实现 CATIAfrActivateWorkbench 接口。
posted @ 2026-04-14 11:06  Breadss  阅读(4)  评论(0)    收藏  举报