1.1.交互界面的建立
1.1.1.工程(Workspace)的建立
Step1:在VC“File”菜单中选择“New CAA V5 Workspace…”,出现对话框:
工程路径创建或选定
在工程路径中选择或创建路径,选择“Tool Level”为“V5R16_ B16”,点击Next。
Step2:创建Framework选项。系统提供了4个可用选项,可以不选择或选择第二项。
Framework预定义
Step3:若上面选择了第二项,则显示下面对话框。输入Framework名字和选择其类型。Framework提供两种类型:应用和接口。功能也有三种:运用、测试和教学。
Framework类型选择
Step4:确定Workspace的创建:
Workspace基本情况提示
确定后VC文件视图(File View)如下:
所建立Workspace的文件视图
此时生成了一个带有一个Framework的Workspace。CAA的开发提供了两种模式:批处理模式(Batch Mode)和交互模式(Interactive Mode)。我们开发主要用到的是交互模式。在此模式下,可以创建两种交互界面:Workshop(Workbench)和Addin。前者是创建一个新的模块,在这个模块中除了标准的命令,其余均由用户开发。后者指在已经存在的Workbench中插入新的工具条和命令。下面分别进行示例。
2.1.2.新建工程与CATIA系统接口的连接
在建立工程后,必须先指定CATIA的安装路径,以搜索开发所需要的API资源。点击“CAAV5 Workspace” “Locate Prerequisite Workspace…”,添加CATIA的安装路径。点击“Add”添加,如下图所示:
预定义Workspace路径
注意此路径为Intele_a文件夹的上层路径。在这里,如果要引用其他Workspace的接口(Interface),也可以在这里指定此Workspace的路径。
2.1.3.Workshop或Workbench的创建
下面的例子,我们在MechenicalDesign(机械设计)中插入一个名为“测试工作台”的Workbench。具体步骤如下:
Step1:创建一个New Module:选择“Project” “New Module…”命令:
New Module对话框
输入Module名字后点击OK。
Step2:进入确定界面,显示此Module信息:
新建Module信息
点击OK后,创建了一个新的Module。此时VC中的文件视图(FileView)如下:
创建新Module后文件视图
Step3:右键点击Module1.m,将其设为当前工作Project(Set As Active Project)。选择“Insert” “CATIA Resource” “CATIA Pattern…”,响应如下:
在Module中插入CATIA Pattern
选择Workshop,点击OK。
Step4:Workshop或者Workbench选择。选择创建Workbench,并输入其名称。
Workbench定义
Step5:点击接口浏览按钮,选择与Workbench所连接的Workshop。这里选择PRDWorkshop,即为Product空间。在新创建的Workbench中,会包含Product空间的一些基本标准命令,如插入产品等。如果选择Part空间,则会包含Part空间的一些基本命令。
AssociatedWorkshop定义
Step6:上述步骤结束后点击Next,进入参数设置界面,直接进入NEXT。
代码参数选择
点击Finish,设置完成,如下图。
新创建Workbench基本信息
OK后,生成名为TestWb.m的module及其头文件。
创建Workbench后文件视图
Step7:点击 Build->mkmk ,编译程序。
编译对话框
Step8:点击 Tools->Open Runtime Window ,打开命令框。输入“cnext”打开CATIA R16。
在CATIA中找到新建的工作台:
下面是几个值得注意的地方:
●在文件:MyFrame1/CNext/ msgcatalog /TestWb.CATNIS中,可以定义此Workbench以及其工具条、菜单的所有名字(Title),定义格式为:
TestWb.Title=”测试工作台”;
●在文件:MyFrame1/CNext/ msgcatalog /TestWb.CATRsc中,可以定义此Workbench的图标(Icons)和其放置路径(Category)。前者暂不说明,后者说明如下:
TestWb.Category="Infrastructure";
Category可以为:Infrasturcture,MechanicalDesign,Shape,……。分别对应于已有的Workshop。我们将其改为:MechanicalDesign。
●在文件:MyFrame1.dico中,定义了此Workbench的连接库。
再次编译运行,结果如下:
创建新Workbench后的CATIA运行界面….
2.1.4.Addin的创建
所谓Addin,是在系统已有的Workbench中插入新的工具条或者菜单。下面的例子,我们来在PartDesign中插入一个工具条,名字为“工程管理”。
Step1:新建一个Module,名为PartDesignAddin。
Step2:将此Module设为当前活动Project,选择“Insert” “Component…”命令。
插入组件
输入Component name。点击红框“Add”,如下:选择Implement的接口为:CATIPrtWksAddin。选择窗口如下:
选择Interface
注意Search workspace为你的CATIA安装路径,并将下面的单选框设为空。
Step4:设置完成。
插入组件信息
相应的文件视图如下:
文件视图
Step4:按文件所示,修改.mk与Identitycard.h文件
在.mk文件中:
将
LINK_WITH = $(WIZARD_LINK_MODULES)\
改为
LINK_WITH = $(WIZARD_LINK_MODULES)\
CATConstraintModelerUI\
CATApplicationFrame \
CATDialogEngine \
CATMechanicalModelerUI \
CATObjectSpecsModeler \
CATVisualization \
CATMecModInterfaces \
CATProductStructure1 \
DI0PANV2 \
CATObjectModelerBase \
CATMathematics \
CATGeometricObjects \
CATMathStream \
CATTopologicalObjects \
CATMechanicalModeler \
CATInteractiveInterfaces \
CATDraftingInterfaces\
JS0FM\
DraftingItfCPP\
CATDfiUUID\
JS0GROUP\
CATSketcherInterfaces\
CATGitInterfaces \
KnowledgeItf \
CATUdfInterfaces\
CATCclInterfaces\
CATViz\
CATCGMGeoMath\
CATConstraintModeler\
CATConstraintModelerItf\
CATMechanicalCommands\
CATMmrReplace\
CATMcoModel\
(此工程不需这么多,但这些皆为常用接口,可备用)
将Identitycard.h内容改为:
AddPrereqComponent("System",Protected);
AddPrereqComponent("MechanicalModelerUI",Protected);
AddPrereqComponent("ConstraintModelerUI",Protected);
AddPrereqComponent("ApplicationFrame",Protected);
AddPrereqComponent("DialogEngine",Protected);
AddPrereqComponent("Mathematics",Protected);
AddPrereqComponent("Dialog",Protected);
AddPrereqComponent("ObjectSpecsModeler",Protected);
AddPrereqComponent("Visualization",Protected);
AddPrereqComponent("MecModInterfaces",Protected);
AddPrereqComponent("ProductStructure",Protected);
AddPrereqComponent("ObjectModelerBase",Protected);
AddPrereqComponent("GeometricObjects",Protected);
AddPrereqComponent("NewTopologicalObjects",Protected);
AddPrereqComponent("MechanicalModeler",Protected);
AddPrereqComponent("InteractiveInterfaces",Protected);
AddPrereqComponent("VisualizationBase",Protected);
AddPrereqComponent("ConstraintModeler",Protected);
AddPrereqComponent("ConstraintModelerInterfaces",Protected);
AddPrereqComponent("InfInterfaces",Protected);
AddPrereqComponent("ProductStructureInterfaces",Protected);
AddPrereqComponent("AutomationInterfaces",Protected);
AddPrereqComponent("KnowledgeInterfaces",Protected);
AddPrereqComponent("PartInterfaces",Protected);
AddPrereqComponent("DraftingInterfaces",Protected);
AddPrereqComponent("SketcherInterfaces",Protected);
AddPrereqComponent("GSMInterfaces",Protected);
AddPrereqComponent("MechanicalCommands",Protected);
AddPrereqComponent("ComponentsCatalogsInterfaces",Protected);
(此工程不需这么多,但这些皆为常用接口,可备用)
2.1.5.工具条、菜单的建立和显示
主要是NewAccess, SetAccessCommand, SetAccessChild, SetAccessNext等几个命令的使用。其具体含义可以参看API文档的说明。
按照示例文件,对NewAddin.cpp,NewAddin.h进行修改。
编译运行,在PartDesign模块中如下:
创建菜单工具条
2.2.命令的响应
2.2.1.Command插入
上述界面的建立,只是建立了一个空的界面,所有命令都是无法运行的。下面我们来对创建的命令建立响应。
下面来具体实现这个命令。这个命令的作用是显示一个对话框,上面有一个Label和Editor,Editor中显示“欢迎使用CAA!”。
Step1:将 PartDesignAddin设为当前的Project,选择“Insert” “CATIA Resource” “Command…”,插入一个名位TestCmd的Command:
Command的插入
2.2.2.Dialog的插入
将PartDesignAddin设为当前Project,选择“Insert” “CATIA Resource” “Dialog…”,并将其名字设为TestDialog。
Dialog的插入
然后在TestDialog.CATDlg中添加控件,这里的控件与一般VC程序差不多,不再详述。
按照示例文件,对TestCmd.cpp,TestCmd.h,TestDlg.cpp,TestDlg.h进行修改。
刷新,编译执行,结果如下:
运行结果下载本文