CATIA-CAA二次开发:利用MkDAfrTool创建声明式应用程式

最近查阅CAADoc时发现了一种用XML语言描述创建按钮的方式,即创建XML语言格式的Declarative File(声明式afr文件),这种创建按钮的方式有如下优势:

  1. 声明式应用程序框架可以隐藏创建应用程序或插件的所有C++代码,只需定义想要公开的命令以及可以访问它们的位置。
  2. 声明性语法比C++代码灵活得多,XML语言可以很容易地描述层次模型。
  3. 声明性文件是一种资源,它可以在不停止运行应用程序的情况下被修改。

其中比较有趣的一点是并不需要重启CATIA即可修改按钮并及时生效,遂进行深入研究。

若想进行上述创建方法,首先请确保自己的CATIA、CAA API、RADE均已在r2016x的FP1629修正补丁等级之上,因为只有在此补丁版本才正式推出了MkDAfrTool工具。

如何使用

第一步:修改Framework的IdentityCard文件

需要添加一行启用工具的代码

<toolPrerequisite name="MkDAfrTool"/>

第二步:创建单独的声明式Module并修改Imakefile.mk文件

把mk文件修改为如下内容

BUILT_OBJECT_TYPE=RUNTIME DATA 
SCRAMBLING_KEY=2

第三步:创建必要的文件结构

声明性文件必须在一个特定的文件夹层次结构中定义,这个层次结构应该严格遵守,因为它包含了创建新应用程序所需的所有信息。

FrameworkName
|
|
-------- ModuleName
              |
              |
              -------------- Imakefile.mk
              |
              |
              -------------- src
                              |
                              |
                              ------ resources
                                         |
                                         |
                                         -----ApplicationFrame
  • 在src文件夹下,必须有一个名为resources的文件夹,在其文件夹下必须有另一个名为ApplicationFrame的文件夹(此命名和层次结构是必需的)。
ApplicationFrame
  |
  |
  ----------- AfrWorkshop
                   |
                   |
                   ------- PrtWks
                                 |
                                 |
                                 ----- AfrAddin
  • ApplicationFrame是我们之前在模块的src文件夹中创建的文件夹。
  • AfrWorkshop意味着我们正在为一个数据模型添加一个声明性文件,也称为Workshop。
  • PrtWks是我们正在扩展的几何模型的WorkShopId。该文件夹必须具有Id的准确名称。具体ID可以通过CATIA的Command命令查到,如下图。

  • AfrAddin表示我们正在创建一个Addin。

第四步:创建声明文件

声明文件描述了Addin的具体内容。它必须有afr扩展名,以便被mkmk正确处理。

<?xml version="1.0" encoding="utf-8"?>
<Styles xmlns:syp = "http://www.3ds.com/xsd/SYP">

   <Template syp:name = "TSTAddinHeaders" Target = "CATCmdHeadersList">
      <!-- Define here the command headers of your addin -->
      <CATCmdHeadersList>         
         <CATCommandHeader
            ID = "BasicCmd" ClassName = "TSTCommand" SharedLibraryName = "TSTModule"  ResourceFile = "TSTAddinHeader"  Available = "1"/>
      </CATCmdHeadersList> 
   </Template>


   <Template syp:name = "TSTAddinAccess" Target = "CATCmdAddin">
      <!-- Define here the layout of your commands. -->
      <CATCmdAddin>       
         <!-- Commands visible in a new section -->
         <CATCmdContainer Name = "TSTSection">
            <CATCmdContainer Name = "TSTToolbar">
               <CATCmdStarter Name = "BasicCmdStr" Command = "BasicCmd"/>
            </CATCmdContainer>
         </CATCmdContainer>   
      </CATCmdAddin>
   </Template>

</Styles>

第一行添加了一个基本的XML标记,表明该文件是XML文件。接下来添加XML文件的根节点:Styles节点。该节点向解析器表明,它必须将该文件作为声明性文件进行分析。

XML文件的主要内容由两部分组成:

  • CATCmdHeadersList部分:允许定义命令绑定的command
  • CATCmdAddin部分:允许定义命令的布局

第五步:创建命令头(CATCmdHeadersList部分)

   <Template syp:name = "TSTAddinHeaders" Target = "CATCmdHeadersList">
      <!-- Define here the command headers of your addin -->
      <CATCmdHeadersList>         
         <CATCommandHeader
            ID = "BasicCmd" ClassName = "TSTCommand" SharedLibraryName = "TSTModule"  ResourceFile = "TSTAddinHeader"  Available = "1"/>
      </CATCmdHeadersList> 
   </Template>
  • 描述命令头的部分由一个以syp:name属性为值的名称引用。这个名称必须遵循一个命名约定:xxxHeaders,其中xxx是addin的名称(与XML文件的名称相同)。
  • Target属性的值必须为CATCmdHeadersList。
  • CATCmdHeadersList标记可以有任意多个子标记,可以为addin声明命令头。

CATCommandHeader标记通过提供以下信息来声明命令头:

  • ID:该ID用于引用命令头(例如,在定义框架中命令的布局时引用特定的命令头)。
  • ClassName:该属性是要实例化以启动命令的类(该类应该使用CATCreateClass宏)。
  • SharedLibraryName:该属性对应于包含命令代码的共享库的名称。
  • ResourceFile:该属性对应于与命令相关联的资源文件的名称。
  • Available:该属性表示命令在正常模式下是否可用(1表示可用,0表示隐藏)。最好使用属性AvailabilityMode,它允许为每个模式定义命令头可用性(Available="1 "类似于AvailabilityMode="Normal=YES ")。

AvailabilityMode:为每种模式指定命令头的可用性。此属性采用以下语法作为参数“模式1 =是模式2 =否模式3= ...”。请注意,如果您没有为特定模式指定可用性,该模式将使用其默认可用性。可用性可定制的不同模式如下:

  • Normal
  • Editability
  • SmallScale
  • LargeScale
  • Offline

第六步:创建命令布局(CATCmdAddin部分)

   <Template syp:name = "TSTAddinAccess" Target = "CATCmdAddin">
      <!-- Define here the layout of your commands. -->
      <CATCmdAddin>       
         <!-- Commands visible in a new section -->
         <CATCmdContainer Name = "TSTSection">
            <CATCmdContainer Name = "TSTToolbar">
               <CATCmdStarter Name = "BasicCmdStr" Command = "BasicCmd"/>
            </CATCmdContainer>
         </CATCmdContainer>   
      </CATCmdAddin>
   </Template>
  • 这个部分的syp:name属性必须遵循一个命名约定:xxxAccess,其中xxx是您的应用程序的名称(与XML文件的名称相同)。T
  • arget属性的值必须为CATCmdAddin。 模板的唯一子级必须有一个CATCmdAddin标记。
  • CATCmdAddin标记可以有许多子CATCmdContainer标记来定义容器的层次结构。
  • 按照层级需要依次定义Section、Toolbar、Addin。
  • 在容器的最后一级,CATCmdStarter标签允许声明容器的命令。这个标记需要两个属性,一个name属性和一个包含命令头Id的command属性。

第七步:定义资源文件

定义CATNls和CATRsc方法与通过Component组件方式创建按钮方式相同,这里不多赘述。

总结

这种数据模型的文件可以在CATIA运行过程中修改生效,比DLL方式更加方便调试,适合新版本的二次开发使用。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CATIA CAA(Computer-Aided Three-Dimensional Interactive Application)是一款基于CATIA V5平台的二次开发工具包。它提供了一系列API(Application Programming Interface),用于开发插件、自定义功能以及集成外部应用程序。 CATIA CAA的二次开发源码是指通过CATIA CAA开发的插件、功能或应用程序的源代码。这些源代码可以被开发者使用、修改、扩展或进一步开发。 通过CATIA CAA的二次开发源码,开发者可以将CATIA V5平台的功能与外部应用程序无缝集成,定制化开发符合自己需求的行业解决方案。二次开发源码提供的API包括了CATIA V5的核心功能,如几何建模、装配设计、零部件设计等。开发者可以利用这些API创建自己的工具、快捷键或自动化流程,提高工作效率,简化设计过程。 CATIA CAA的二次开发源码还可以用于开发CATIA应用程序的用户界面交互。通过源码,开发者可以自定义CATIA界面、菜单、工具栏以及对话框,使其更符合自己的设计习惯和工作流程。 总之,CATIA CAA的二次开发源码为开发者提供了丰富的开发工具和资源,使他们能够自定义、扩展和集成CATIA V5平台,实现更高效、更个性化的设计和工程解决方案。 ### 回答2: CATIA CAA(Computer Aided Three-dimensional Interactive Application)是Dassault Systèmes公司开发的一种基于CATIA二次开发工具。它允许用户通过编写代码来自定义和扩展CATIA软件的功能。 CATIA CAA的二次开发源码提供了开发者所需的代码和,使他们可以编写插件、宏或其他定制化的工具来满足特定的需求。开发者可以使用CATIA CAA的二次开发源码来实现与CATIA软件交互的功能,如创建新的几何体、修改模型的属性、自动化一系列操作等。 CATIA CAA的二次开发源码是基于C++语言的,开发者可以使用CATIA CAA SDK(Software Development Kit)来编写代码,并使用CATIA API(Application Programming Interface)来与CATIA软件进行通信。 通过CATIA CAA的二次开发源码,开发者可以定制和扩展CATIA软件的功能,以满足不同行业和应用领域的需求。它为用户提供了更多的灵活性和自由度,使他们能够根据自己的工作流程和业务需求进行定制。 总之,CATIA CAA的二次开发源码是一种强大的工具,它提供了丰富的功能和灵活性,使开发者能够根据自己的需求对CATIA软件进行个性化定制和扩展。 ### 回答3: CATIA CAA是一种用于CATIA软件二次开发的工具包,其中包含了用于编写插件、宏和定制功能的源码。CATIA是由达索系统公司开发的一个三维计算机辅助设计软件,用于制造业和机械工程,而CAA则是其应用编程接口(API)。 CATIA CAA的二次开发源码包含了各种模块和函数,以及与CATIA软件进行交互的接口。通过使用这些源码,开发人员可以创建自己的定制工具和功能,以满足特定的设计和制造需求。例如,可以开发用于生成报告、执行自动化任务、优化设计等的插件。 源码中涵盖了各种开发语言和技术,如C++、COM(组件对象模型)、VBScript等。开发人员可以根据自己的需求选择适用的语言和技术,进行二次开发CATIA CAA提供了丰富的文档和示例代码,以帮助开发人员快速上手和理解如何使用源码进行开发。 CATIA CAA的二次开发源码使得用户有了更多的自由和灵活性,可以根据自己的需求进行定制化开发,从而提高工作效率和产品质量。此外,CATIA CAA还提供了与其他软件和系统的集成能力,方便用户在设计和制造过程中进行协同工作和数据交换。 总之,CATIA CAA的二次开发源码为CATIA软件的扩展和定制提供了丰富的资源和工具,使得用户可以根据自己的需求进行自定义开发,以满足特定的设计和制造要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值