最近查阅CAADoc时发现了一种用XML语言描述创建按钮的方式,即创建XML语言格式的Declarative File(声明式afr文件),这种创建按钮的方式有如下优势:
其中比较有趣的一点是并不需要重启CATIA即可修改按钮并及时生效,遂进行深入研究。
若想进行上述创建方法,首先请确保自己的CATIA、 CAA API、RADE均已在r2016x的FP1629修正补丁等级之上,因为只有在此补丁版本才正式推出了MkDAfrTool工具。

需要添加一行启用工具的代码
<toolPrerequisite name="MkDAfrTool"/>
把mk文件修改为如下内容
BUILT_OBJECT_TYPE=RUNTIME DATA SCRAMBLING_KEY=2声明性文件必须在一个特定的 文件夹 层次结构中定义,这个层次结构应该严格遵守,因为它包含了创建新应用程序所需的所有信息。
FrameworkName||-------- ModuleName | | -------------- Imakefile.mk | | -------------- src | | ------ resources | | -----ApplicationFrameApplicationFrame | | ----------- AfrWorkshop | | ------- PrtWks | | ----- AfrAddin
声明文件描述了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文件的主要内容由两部分组成:
<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>CATCommandHeader标记通过提供以下 信息 来声明命令头:
AvailabilityMode:为每种模式指定命令头的可用性。此属性采用以下语法作为参数“模式1 =是模式2 =否模式3= ...”。请注意,如果您没有为特定模式指定可用性,该模式将使用其默认可用性。可用性可定制的不同模式如下:
<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>定义CATNls和CATRsc方法与通过Component组件方式创建按钮方式相同,这里不多赘述。
这种数据 模型 的文件可以在CATIA运行过程中修改生效,比DLL方式更加方便调试,适合新版本的二次开发使用。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删