CATIA CAA关于workbench和adding的二次开发

CATIA CAA关于workbench和adding的二次开发
CATIA CAA关于workbench和adding的二次开发

本文介绍的实例将在MechenicalDesign(机械设计)中插入一个名为“测试工作台”的Workbench,内容非常基础,每个步骤尽可能描述的非常详细,供初学者参考。具体步骤如下:

1. 准备工作

参照前面的步骤,创建一个解决方案和一个Framework,并将解决方案与CATIA的系统接口建立连接。该过程参见《CATIA二次开发CAA培训课件》

2. 新建Workbench

3.1 选择“文件->Add CAAV5 Item->CATIA Resources->CATIA Pattern”命令:

在弹出对话框中选择“Workshop”并点击OK按钮:

3.2 在新弹出的对话框中选择对象的类型为Workbench,在Work Object Name栏输入Workbench的名称。然后点击Associated Workshop输入框后面的“…”按钮,这里选择PRDWorkshop,即为Product空间。在新创建的Workbench中,会包含Product空间的一些基本标准命令,如插入产品等。如果选择Part空间,则会包含Part空间的一些基本命令。

设置完成后点击OK,最终状态如下:

3.3 点击Next:

3.4 该设置界面保持默认即可,点击Next,进入参数设置界面:

也保持默认,点击Finish,在最后弹出的信息确认对话框中直接点击OK。

3.5 选择“项目->Select CAA V5 Projects …”:

在弹出的窗口中将刚才新建立的TestWb模块载入到开发环境中:

将MyTestWbk.m设置成当前启动项目:

现在的目录结构如下图所示:

Workbench的资源文件保存在下图所示的位置:

3. 编译(mkmk)工程

点击“生成->mkmk”,编译新建的Module。

4. 运行CNEXT查看效果

点击Tools->Open Runtime Window ,打开命令框。输入“cnext”打开CATIA。

这里输入cnext后按回车键就可以,下面一行是自动生成的

在CATIA中找到新建的工作台:

在其中无法发现刚才新建的工作台!!!这是因为资源没有被载入运行目录!

5. 更新运行环境(Create/Update Runtime View...)

点击Create/Update Runtime View…命令,如下所示:

在弹出的对话框中保持默认:

点击OK按钮,消息窗口输出如下信息:

再次启动CAA V5 Runtime Window,输入CNEXT启动CATIA:

现在可以发现我们新建的工作台已经集成到了CATIA环境中。

6. 要点回顾

不要忘记使用Create/Update Runtime View...命令,否则在CATIA集成环境中将不会出现上面定义的工作台。

工作台的相关的资源文件如下:

1)在文件MyTestWkb.CATNIS中,在其中定义此Workbench以及其工具条、菜单的所有名字(Title),如下所示:

// DO NOT EDIT :: THE CAA2 WIZARDS WILL ADD CODE HERE

// Title of the workshop

MyTestWkb.Title="MyTestWkb title";

// END WIZARD EDITION ZONE

2)在文件MyTestWkb.CATRsc中定义了工作台(Workbench)使用的非本地化资源,比如图标(Icons)、父类(Category),如下所示:

// Category of the workshop

MyTestWkb.Category="Infrastructure";

// END WIZARD EDITION ZONE

Category可以为:Infrasturcture,MechanicalDesign,Shape,……。分别对应于已有的Workshop。如果将其改为MechanicalDesign,则可以将其归类到机械设计。

3)在文件HelloWorld.dico中,定义了此Workbench的链接库。

# COPYRIGHT DassaultSystemes 2013

#======================================================================

# Dictionary HelloWorld.dico

# associated with framework HelloWorld

#======================================================================

#

# Apr 2013 Creation: Code generated by the CAA wizard Administrator

#======================================================================

# DO NOT EDIT :: THE CAA2 WIZARDS WILL ADD CODE HERE

#======================================================================

# Dictionary MyTestWkb.dico

# These are necessary dictionary declarations for a workshop

#====================================================================== CATApplicationFrameCATIMyTestWkbWorkbenchFactorylibMyTestWkb MyTestWkbCATIPRDWorkshopConfigurationlibMyTestWkb

Adding的创建

所谓Addin,是在系统已有的Workbench中插入新的工具条或者菜单。CAA开发创建workshop/workbench应用程序的详细步骤详细介绍了CAA开发workshop/workbench程序的基本步骤,本文的例子,我们实现一个在PartDesign中插入一个名字为“MyCenterLine”工具条的应用程序。

1. 准备工作

参照前面的步骤,创建一个解决方案和一个Framework,并将解决方案与CATIA的系统接口建立连接。

2. 新建Module

2.1 选择“文件->Add CAAV5 Project->New Module…”命令:

2.2 在弹出的对话框中输入Module名称为PartDesignAddin并设置对应的编译方式为Shared Object,如下所示:

在弹出的信息确认对话框中点击OK。右键点击刚才新建的Module,将其设置成当前工作项目(如果已经是活动项目,则可以省略此步骤):

3. 新建Component

选择“文件->Add CAAV5 Item->Component”

在弹出的对话框中输入Component的名称NewAddin,在TIE mode栏点击Add:

在弹出的对话框中点击“…”

在Serach workspace栏选择CATIA的安装路径,在下方的Interface(s) to implement栏选择CATIPrtWksAddin:

不要勾选下方的Search in prerequisite frameworks only!设置完成的状态如下图:

点击OK。解决方案的目录结构如下:

如果现在进行编译(mkmk),会提示如下错误:

4. 添加CreateCommands和CreateToolbars方法

1). NewAddin.h头文件

“NewAddin.h”头文件最终完成如下:

// COPYRIGHT DassaultSystemes 2013

//=================================================================== //

// NewAddin.h

// Provide implementation to interface

// CATIPrtWksAddin

//

//=================================================================== //

// Usage notes:

//

//=================================================================== //CAA2 Wizard Generation Report

//IMPLEMENTATION

// TIE: CATIPrtWksAddin

//End CAA2 Wizard Generation Report

//

// Apr 2013 Creation: Code generated by the CAA wizard Administrator

//=================================================================== #ifndefNewAddin_H

#define NewAddin_H

#include "CATBaseUnknown.h"

#include "CATCmdContainer.h" //黄底为代码中添加的语句,以下相同

//-----------------------------------------------------------------------

/**

* Class representing xxx.

*

*
Role: Provide the basic class function...

*

* It implements the interfaces :

*

    *

  1. @hrefCATIPrtWksAddin

    *

*

* @hrefClassReference, Class#MethodReference, #InternalMethod... */

classNewAddin: public CATBaseUnknown

{

CATDeclareClass;

public:

// Standard constructors and destructors for an implementation class // -----------------------------------------------------------------

NewAddin ();

virtual ~NewAddin ();

voidCreateCommands();

CATCmdContainer * CreateToolbars();

private:

// The copy constructor and the equal operator must not be implemented

// -------------------------------------------------------------------

NewAddin (NewAddin&);

NewAddin& operator=(NewAddin&);

};

//-----------------------------------------------------------------------

#endif

在其中:

●添加了CreateCommands和CreateToolbars两个方法的声明;

●添加头文件包含语句:#include "CATCmdContainer.h";

2). NewAddin.cpp源文件

在“NewAddin.cpp”最终完成的代码如下:

// COPYRIGHT DassaultSystemes 2013

//=================================================================== //

// NewAddin.cpp

// Provide implementation to interface

// CATIPrtWksAddin

//

//===================================================================

//

// Usage notes:

//

//=================================================================== // Apr 2013 Creation: Code generated by the CAA wizard Administrator

//=================================================================== #include "NewAddin.h"

#include "CATCreateWorkshop.h"

#include "CATCommandHeader.h"

CATImplementClass(NewAddin,

Implementation,

CATBaseUnknown,

CATnull );

//-----------------------------------------------------------------------------

// NewAddin : constructor

//-----------------------------------------------------------------------------

NewAddin::NewAddin():

CATBaseUnknown()

{

}

//-----------------------------------------------------------------------------

// NewAddin : destructor

//-----------------------------------------------------------------------------

NewAddin::~NewAddin()

{

}

// Link the implementation to its interface

// ---------------------------------------

//TIE or TIEchain definitions

#include "TIE_CATIPrtWksAddin.h"

TIE_CATIPrtWksAddin(NewAddin);

//Methods implementation

voidNewAddin ::CreateCommands(){

//new CAADrwHeader("CenterLine","CAADrwCenterLine","VCICenterLineCmd",(void *)NULL);

}

CATCmdContainer *NewAddin::CreateToolbars(){

NewAccess(CATCmdContainer, pCAADrwTlb, MyCenterLine);

NewAccess(CATCmdStarter, pCenterLineStr, CenterLineStr );

SetAccessCommand(pCenterLineStr, "CenterLine" );

SetAccessChild(pCAADrwTlb, pCenterLineStr );

AddToolbarView(pCAADrwTlb, 1, UnDock);

returnpCAADrwTlb;

在其中:

●添加了头文件包含语句:

#include "CATCreateWorkshop.h"

#include "CATCommandHeader.h"

●完成了用于实现工具命令的CreateCommands函数;

●完成了用于添加工具栏的CreateToolbars函数;

3). Framework的“IdentityCard.h”文件:

// COPYRIGHT DassaultSystemes 2013

//=================================================================== //

// IdentityCard.h

// Supplies the list of prerequisite components for framework HelloWorld

//

//=================================================================== //

// Usage notes:

// For every prereq framework FW, use the syntax:

// AddPrereqComponent ("FW", Public);

//

//=================================================================== //

// Apr 2013 Creation: Code generated by the CAA wizard Administrator

//=================================================================== // DO NOT EDIT :: THE CAA2 WIZARDS WILL ADD CODE HERE

AddPrereqComponent("System",Protected);

AddPrereqComponent("ApplicationFrame",Protected);

AddPrereqComponent("Dialog",Public);

AddPrereqComponent("ObjectModelerBase",Protected);

AddPrereqComponent("ProductStructureUI",Protected);

AddPrereqComponent("MechanicalModelerUI",Protected);

// END WIZARD EDITION ZONE

}

如果需要使用其他Framework的资源,在这里进行引入。实际使用时可以使用向导完成,点击Define Prerequsite Frameworks...命令:

在弹出的对话框中添加你需要使用到的Framework,如下所示:

4). imakfile.mk文件

相关主题
相关文档
最新文档