前言
本文是基于初步掌握vs进行caa二次开发而写,并且使用vs2008,2012都有写。故没有具体的图文,只有简短的文字,给自己新创建时提供便利。
正文
以下内容以2008为例子,但2012类似,并且有加以说明
新建 workspace
新建 frame TestFrm
新建 module TestMdu
载入Api
加到解决方案
//vs2012要编辑idcard Edit ID Card 添加System public
新建 component TestAddin
TIE MODE选择 CATIPrtCfgAddin
// CATIAssemblyAddin/CATIPRDWokshopAddin是装配
新建commend TestCmd
style选择basic command
// vs2012是3DS Command
TestAddin.Cpp添加
// 如果文件名不一样,修改TestAddin,TestMdu,TestCmd
#include "CATCmdContainer.h"
#include "CATCreateWorkshop.h" // 包含管理Access 的一系列宏
#include "CATCommandHeader.h"
MacDeclareHeader(TestAddinHdr);
void TestAddin::CreateCommands()//**此处修改TestAddin,TestMdu,TestCmd
{
new TestAddinHdr ( "Generate",// command header标识符(也用于定义显示的文本或图标等资源)
"TestMdu", // 所关联command的代码在哪个模块/库/DLL里,module名字
"TestCmd", // 所关联的command名(即类名)
(void *)NULL); // 可选的传递参数(传递给command,确定不同的操作)
}
CATCmdContainer* TestAddin::CreateToolbars()//**此处修改TestAddin
{
NewAccess( CATCmdContainer, pWorkblankTlb, AddinToolbar );//AddinToolbar为窗口名字
// 参数:工具栏是CATCmdContainer的实例
// 参数:指向该工具栏的句柄指针
// 参数:该工具栏的标识符
// 2和自己命名,保证标识符唯一
NewAccess( CATCmdStarter, pWorkblankStr, WorkblankStr );
// 按钮是CATCmdStarter的实例,后两个同上
SetAccessCommand( pWorkblankStr, "Generate" ); // 关联(按钮句柄,Command Header标识符)
SetAccessChild( pWorkblankTlb , pWorkblankStr );
// 设置父子关系(父句柄,子句柄)
// 若在该工具栏上再添加一个按钮,则第三行改为设置邻接关系:
// SetAccessNext (WorkblankStr, 按钮句柄);
AddToolbarView ( pWorkblankTlb , 1 , Right );
// 参数:工具栏句柄
// 参数:工具栏可见,-1(默认) 不可见
// 参数:工具栏固定在右边
return pWorkblankTlb;
}
TestAddin.h添加
class CATCmdContainer;
//vs2012还要添加下行
#include "CATIPrtCfgAddin.h"
public类中添加
void CreateCommands();
CATCmdContainer * CreateToolbars();
mk添加
CATApplicationFrame
//vs2012多添加
CATPartInterfaces
identity添加
AddPrereqComponent("ApplicationFrame",Protected);
//vs2012多添加
PartInterfaces
Cmd.cpp中Activate函数添加
MessageBox(NULL,L"Hello World!",L"成功",MB_OK | MB_SYSTEMMODAL);
RequestDelayedDestruction();
//vs2012多添加
#include "CATCreateExternalObject.h"
CATCreateClass(TestCmd);
设置属性
mkmk
update runtime view
开始执行
备注
添加到装配设计如下修改
Addin.h中添加:
#include "CATIAssyWorkBenchAddin.h"//添加到装配设计
.cpp中添加:
#include "TIE_CATIAssyWorkBenchAddin.h"
TIE_CATIAssyWorkBenchAddin(TestAddin);
.dico中添加:
TestAddin CATIAssyWorkBenchAddin libTestMdu
idcard中添加:
<prerequisite name="CATAssemblyInterfaces" access="Public" />
mk中添加:
CATWkAssyInterface
vs2008,vs2012好像这两个都是添加到装配设计(有待考察):
#include "CATIPRDWORKshopAddin.h"
#include "TIE_CATIPRDWorkshopAddin.h"
TIE_CATIPRDWorkshopAddin(TestAddin);
TestAddin CATIPRDWORKshopAddin libTestAddinMdu
prerequisite name="ProductStructureUI" access="Public" />
CATPrsWksPRDWorkshop
修改标识符
窗口名 AddinToolbar
按钮名 Generate
本文到此结束。