CATIA VBA二次开发(一)快速入门之宏脚本

来源:互联网 发布:怎么提升淘宝店铺排名 编辑:程序博客网 时间:2024/03/28 20:04

       本文内容为作者原创,拒绝以任何形式转载。



      CATIA宏(Macro)是CATIA向用户提供的一种记录 、重放用户操作的工具(CATIAVBAProject也属于宏,本书中把VBAProject放在CATIA VBA一节中讲,本节重点讲宏脚本)。当用户激活录制宏操作时,系统把用户操作历史录制成脚本代码。

       CATIA宏脚本具有两种语法,分别是CATScript和CATVbs。在CATIA V5R7之后的UNIX系统下已经不再使用CATScript语法,取代它的是CATVbs。系统在CATVbs语法中取消了原有的类型声明代码,使得宏代码更加精简。在Windows系统中仍保留CATScript,是为了向下兼容早期版本宏代码。

       在CATIA中录制宏时,如果使用者没有指明宏目录,则宏被保存在系统临时目录或CATIA文档中,当文档被移除后,则可能失去已经录制或编辑的宏。建议读者在CATIA中设置默认目录并指向本地硬盘路径,保证所有录制的宏不会因为文档关闭而丢失。设置默认目录的方法如下:

       点击“工具->选项...”,弹出CATIA选项卡,选择常规->宏,在“默认宏库”下拉框中选择“目录”,点击浏览文件夹,添加默认目录。


1.录制第一个宏文件

      在CATIA窗口中点击“工具->宏->启动录制…”,如下图:


      弹出用户界面如下:


       可以选择默认宏目录,以方便宏文件的管理和维护。或新建宏目录,方法是点击右上角“宏库…”按钮,在“库类型”中选择“目录”,然后点击右侧“创建新库”按钮,在弹出的窗口中设置宏文件存放目录。如下图所示:


       “使用语言”选择MS VBScript(即CATVbs),用户可以自定义宏名称,设置完成后点击“开始”,CATIA开始记录用户操作。此时用户界面出现宏录制停止按钮。

     创建一个新零件,并进入“创成式曲面设计”模块。在零件中插入几何图形集,创建任意3个点,并创建样条曲线,如下图所示:


2.宏代码解释

(1)宏文件结构

    用文本编辑器或CATIA宏编辑器打开刚才操作所录制的宏文件,可以发现操作历史被记录在CATMain()函数体中,以End Sub结束。其结构如下:

Language="VBSCRIPT"

Sub CATMain()`…End Sub

        说明: CATIA宏脚本需要有一个入口函数,即CATMain()。在入口函数之外,用户也可以添加自定义子函数,子函数可以被其他函数调用。

(2)新建Part文档,并添加几何图形集

        CATIA宏是进程内程序,可以直接引用“CATIA”对象(CATIA二次开发根对象)。几何图形集(Geometrical Set)对应的对象为HybridBody,从HybridBodies(Collection类型)中创建。我们录制的宏代码的前几行是这样的(英文字符单引号后面为注释内容):

Set documents1 = CATIA.Documents            ‘获取CATIA中文档集合Set partDocument1 = documents1.Add("Part") ‘添加一个新的零件文档Set part1 = partDocument1.Part            ‘获取part对象。Part对象是零件操作根对象Set hybridBodies1 = part1.HybridBodies   ‘获取Part中的几何图形集集合对象Set hybridBody1 = hybridBodies1.Add()    ‘添加一个几何图形集part1.Update                                  ‘更新零件显示

(3)创建3个坐标点

       如果用户要在零件中创建线框和曲面几何元素,首先要获得HybridShapeFactory(“混合形状工厂”)对象。然后调用创建坐标点的方法AddNewPointCoord(x,y,z)创建几何点,最后用hybridBody1.AppendHybridShape方法用来把坐标点添加到几何图形集中。

Set hybridShapeFactory1 = part1.HybridShapeFactory‘获得HybridShapeFactory对象Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(0.000000, 0.000000, 0.000000)hybridBody1.AppendHybridShape hybridShapePointCoord1part1.InWorkObject = hybridShapePointCoord        ‘定义当前工作对象,此行代码可以不要part1.Update ‘创建第二个几何点Set hybridShapePointCoord2 = hybridShapeFactory1.AddNewPointCoord(0.000000, 100.000000, 0.000000)hybridBody1.AppendHybridShape hybridShapePointCoord2part1.InWorkObject = hybridShapePointCoord2part1.Update ‘创建第三个几何点Set hybridShapePointCoord3 = hybridShapeFactory1.AddNewPointCoord(0.000000, 100.000000, 100.000000)hybridBody1.AppendHybridShape hybridShapePointCoord3part1.InWorkObject = hybridShapePointCoord3part1.Update

(4)创建样条线

        宏文件中使用AddNewSpline方法创建样条线,并定义了样条线格式:第一个参数SetSplineType选择样条线类型,0表示选择三次样条曲线;SetClosing方法用来设置样条曲线是否首尾相接,0表示首尾端点不相接。然后分别为样条曲线指定型值点,即上一步中创建的三个几何点。

Set hybridShapeSpline1 = hybridShapeFactory1.AddNewSpline()hybridShapeSpline1.SetSplineType 0hybridShapeSpline1.SetClosing 0‘指定样条曲线的型值点Set reference1 = part1.CreateReferenceFromObject(hybridShapePointCoord1)hybridShapeSpline1.AddPointWithConstraintExplicit reference1, Nothing, -1.000000, 1, Nothing, 0.000000Set reference2 = part1.CreateReferenceFromObject(hybridShapePointCoord2)hybridShapeSpline1.AddPointWithConstraintExplicit reference2, Nothing, -1.000000, 1, Nothing, 0.000000Set reference3 = part1.CreateReferenceFromObject(hybridShapePointCoord3)hybridShapeSpline1.AddPointWithConstraintExplicit reference3, Nothing, -1.000000, 1, Nothing, 0.000000hybridBody1.AppendHybridShape hybridShapeSpline1 ‘添加样条曲线到几何图形集中part1.InWorkObject = hybridShapeSpline1part1.Update

3.编辑宏

       参考CATIA Automation中关于对象属性和方法的定义,并依照VBScript语法可以对录制出的宏文件进行编辑,以扩展或增强宏文件功能。对于上节中的宏文件,我们简单编辑一下,可以实现在CATIA零件中用样条曲线模拟正弦曲线。

       为了用样条曲线模拟正弦曲线,需要创建多个正弦曲线离散点作为样条曲线控制点。控制点越密,生成的样条曲线越接近于正弦曲线。

       假设我们用含有100个控制点点的样条曲线模拟正弦曲线,我们已知控制点的坐标规律(按照正弦规则变化),创建点的过程可以在循环中实现。这里提到的循环是指某个变量在一个范围内变化时,多次执行循环体内的代码,直到满足循环结束条件。VBScript中常用的循环语法是Do循环和For循环。例如计算0+2+4+6+…+100的算法可以写成如下代码:

Dim sumsum = 0For i = 0 to 100 step 2   ‘step 2表示循环时i每次自加2。当省略step关键字时默认step = 1   sum = sum + iNext 

       创建单个几何点和样条曲线的方法可以参考已经录制宏中的代码。每个创建完成的几何点,都在循环过程中依次指定样条曲线的控制点。为了节省代码,我们每创建一个点,直接指定它为样条曲线控制点,这样我们可以把在一个循环中完成两件事情。假设正弦曲线所在的平面为XZ平面,编辑之后代码如下(对应的代码见sincurve1.catvbs):

Sub CATMain()    Pi = 3.1415926  '定义圆周率常量    T = 2.5      'T是正弦曲线周期    A = 100       'A是放大量,适当增大纵坐标比例,使得曲线看起来协调    N = 100       'N是控制点数量    Set documents1 = CATIA.Documents    Set partDocument1 =documents1.Add("Part")    Set part1 = partDocument1.Part    Set hybridBodies1 = part1.HybridBodies    Set hybridBody1 = hybridBodies1.Add()    part1.Update    Set oHSF = part1.HybridShapeFactory    Set hybridShapeSpline1 =oHSF.AddNewSpline()    hybridShapeSpline1.SetSplineType 0    hybridShapeSpline1.SetClosing 0    '通过循环完成多个点的创建    for i = 0 to N-1   '假设用N个点模拟样条曲线        '在ZX平面创建曲线,Y坐标为0        Set CtrPt = oHSF.AddNewPointCoord(A*Pi*i/N,0.0,A*Sin(T * (2* Pi)* i/N))        hybridBody1.AppendHybridShape CtrPt        Set reference1 =part1.CreateReferenceFromObject(CtrPt)        hybridShapeSpline1.AddPointWithConstraintExplicitreference1, Nothing, -1.000000, 1, Nothing, 0.000000    Next    hybridBody1.AppendHybridShapehybridShapeSpline1    part1.UpdateEnd Sub

       运行结果如下图:




       如果希望周期T是可变的,用户可以用简单的输入框实现用户数据输入。在VBscript语法中,输入数据可以用InputBox实现,例如把上述宏程序中给T赋值的语句改成下面的代码:

<span style="font-size:10px;font-weight: normal;">T = InputBox("请输入正弦曲线周期,实数类型","正弦曲线程序")</span>

       执行时弹出对话框如下图所示。当用户输入实数时,程序按照用户输入的周期绘制曲线。(对应的代码见sincurve2.catvbs)


4.创建宏

    当用户熟悉CATIA V5 Automation的语法之后,也可以在宏目录中新建宏,并手动编辑调试。如图,点击“宏”对话框右侧的“创建”按钮,弹出“创建新宏”对话框。在窗体中可以输入新建宏的文件名。



    点击确定,在宏列表中出现并默认选中了刚才创建的宏文件,此时点击右侧的“编辑”按钮,在弹出的“宏编辑器”窗口中可以看到自动生成CATMain()函数结构,其内容为空,用户可以在其中编辑自己的代码。 

5.添加宏到工具条

    CATIA工具条是具有一定功能的图标按钮组合,一般停靠在用户窗口周围或浮动在界面上。用户可以通过工具条快捷调用特定操作,使用起来比较方便。

    CATIA提供了自定义工具条机制,可以把CATIA宏或VBA项目添加到指定模块的工具条中,供用户随时的调用。假设需要将前面讲到的创建正弦曲线的宏文件在创成式曲面设计(GSD)模块下添加工具条,其操作步骤如下:

(1)打开“定制…”菜单

先把当前CATIA环境切换到创成式曲面设计(创建完成后的工具条在当前模块中出现),然后点击“工具->定制…”(或“工具->自定义…”,不同版本汉化时有差异),弹出对话框如下图:

选择“命令”选项卡,在左侧列表“类别”中选择“宏”,此时右侧可见当前宏库中的宏文件。我们选择sincurve2.catvbs,在“显示属性…”中为此命令选择图标并设定快捷键。



    选择“工具栏”选项卡,单击右侧“新建…”按钮,在弹出的对话框中输入工具栏名称,如“正弦曲线”,则左侧列表中出现正弦曲线条目。

     

     点击“添加命令…”按钮,在命令列表中选择sincurve2.catvbs,操作完成,在CATIA窗口中出现新工具条。点击此工具条,则系统开始执行sinecurve2.vbs,完成正弦曲线的创建。

     关于宏的入门内容就介绍到这里了,因为是第一篇介绍,有些地方说的很细,导致篇幅太大。下一篇博客将介绍VBA IDE中如何快速实现程序设计,有了第一篇的基础后面的内容就简单多了。

    【完】









1 0