本文内容为作者原创,拒绝以任何形式转载。
CATIA宏(Macro)是CATIA向用户提供的一种记录 、重放用户操作的工具(CATIAVBAProject也属于宏,本书中把VBAProject放在CATIA VBA一节中讲,本节重点讲宏脚本)。当用户激活录制宏操作时,系统把用户操作历史录制成脚本代码。
CATIA宏脚本具有两种语法,分别是CATScript和CATVbs。在CATIA V5R7之后的UNIX系统下已经不再使用CATScript语法,取代它的是CATVbs。系统在CATVbs语法中取消了原有的类型声明代码,使得宏代码更加精简。在Windows系统中仍保留CATScript,是为了向下兼容早期版本宏代码。
在CATIA中录制宏时,如果使用者没有指明宏目录,则宏被保存在系统临时目录或CATIA文档中,当文档被移除后,则可能失去已经录制或编辑的宏。建议读者在CATIA中设置默认目录并指向本地硬盘路径,保证所有录制的宏不会因为文档关闭而丢失。设置默认目录的方法如下:
点击“工具->选项...”,弹出CATIA选项卡,选择常规->宏,在“默认宏库”下拉框中选择“目录”,点击浏览文件夹,添加默认目录。
在CATIA窗口中点击“工具->宏->启动录制…”,如下图:
弹出用户界面如下:
可以选择默认宏目录,以方便宏文件的管理和维护。或新建宏目录,方法是点击右上角“宏库…”按钮,在“库类型”中选择“目录”,然后点击右侧“创建新库”按钮,在弹出的窗口中设置宏文件存放目录。如下图所示:
“使用语言”选择MS VBScript(即CATVbs),用户可以自定义宏名称,设置完成后点击“开始”,CATIA开始记录用户操作。此时用户界面出现宏录制停止按钮。
创建一个新零件,并进入“创成式曲面设计”模块。在零件中插入几何图形集,创建任意3个点,并创建样条曲线,如下图所示:
用文本编辑器或CATIA宏编辑器打开刚才操作所录制的宏文件,可以发现操作历史被记录在CATMain()函数体中,以End Sub结束。其结构如下:
Language="VBSCRIPT"
Sub CATMain()`
…
End Sub
说明: CATIA宏脚本需要有一个入口函数,即CATMain()。在入口函数之外,用户也可以添加自定义子函数,子函数可以被其他函数调用。
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 ‘更新零件显示
如果用户要在零件中创建线框和曲面几何元素,首先要获得HybridShapeFactory(“混合形状工厂”)对象。然后调用创建坐标点的方法AddNewPointCoord(x,y,z)创建几何点,最后用hybridBody1.AppendHybridShape方法用来把坐标点添加到几何图形集中。
Set hybridShapeFactory1 = part1.HybridShapeFactory‘获得HybridShapeFactory对象
Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(0.000000, 0.000000, 0.000000)
hybridBody1.AppendHybridShape hybridShapePointCoord1
part1.InWorkObject = hybridShapePointCoord ‘定义当前工作对象,此行代码可以不要
part1.Update
‘创建第二个几何点
Set hybridShapePointCoord2 = hybridShapeFactory1.AddNewPointCoord(0.000000, 100.000000, 0.000000)
hybridBody1.AppendHybridShape hybridShapePointCoord2
part1.InWorkObject = hybridShapePointCoord2
part1.Update
‘创建第三个几何点
Set hybridShapePointCoord3 = hybridShapeFactory1.AddNewPointCoord(0.000000, 100.000000, 100.000000)
hybridBody1.AppendHybridShape hybridShapePointCoord3
part1.InWorkObject = hybridShapePointCoord3
part1.Update
(4)创建样条线
宏文件中使用AddNewSpline方法创建样条线,并定义了样条线格式:第一个参数SetSplineType选择样条线类型,0表示选择三次样条曲线;SetClosing方法用来设置样条曲线是否首尾相接,0表示首尾端点不相接。然后分别为样条曲线指定型值点,即上一步中创建的三个几何点。
Set hybridShapeSpline1 = hybridShapeFactory1.AddNewSpline()
hybridShapeSpline1.SetSplineType 0
hybridShapeSpline1.SetClosing 0
‘指定样条曲线的型值点
Set reference1 = part1.CreateReferenceFromObject(hybridShapePointCoord1)
hybridShapeSpline1.AddPointWithConstraintExplicit reference1, Nothing, -1.000000, 1, Nothing, 0.000000
Set reference2 = part1.CreateReferenceFromObject(hybridShapePointCoord2)
hybridShapeSpline1.AddPointWithConstraintExplicit reference2, Nothing, -1.000000, 1, Nothing, 0.000000
Set reference3 = part1.CreateReferenceFromObject(hybridShapePointCoord3)
hybridShapeSpline1.AddPointWithConstraintExplicit reference3, Nothing, -1.000000, 1, Nothing, 0.000000
hybridBody1.AppendHybridShape hybridShapeSpline1 ‘添加样条曲线到几何图形集中
part1.InWorkObject = hybridShapeSpline1
part1.Update
参考CATIA Automation中关于对象属性和方法的定义,并依照VBScript语法可以对录制出的宏文件进行编辑,以扩展或增强宏文件功能。对于上节中的宏文件,我们简单编辑一下,可以实现在CATIA零件中用样条曲线模拟正弦曲线。
为了用样条曲线模拟正弦曲线,需要创建多个正弦曲线离散点作为样条曲线控制点。控制点越密,生成的样条曲线越接近于正弦曲线。
假设我们用含有100个控制点点的样条曲线模拟正弦曲线,我们已知控制点的坐标规律(按照正弦规则变化),创建点的过程可以在循环中实现。这里提到的循环是指某个变量在一个范围内变化时,多次执行循环体内的代码,直到满足循环结束条件。VBScript中常用的循环语法是Do循环和For循环。例如计算0+2+4+6+…+100的算法可以写成如下代码:
Dim sum
sum = 0
For i = 0 to 100 step 2 ‘step 2表示循环时i每次自加2。当省略step关键字时默认step = 1
sum = sum + i
Next
创建单个几何点和样条曲线的方法可以参考已经录制宏中的代码。每个创建完成的几何点,都在循环过程中依次指定样条曲线的控制点。为了节省代码,我们每创建一个点,直接指定它为样条曲线控制点,这样我们可以把在一个循环中完成两件事情。假设正弦曲线所在的平面为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.Update
End Sub
运行结果如下图:
如果希望周期T是可变的,用户可以用简单的输入框实现用户数据输入。在VBscript语法中,输入数据可以用InputBox实现,例如把上述宏程序中给T赋值的语句改成下面的代码:
T = InputBox("请输入正弦曲线周期,实数类型","正弦曲线程序")
执行时弹出对话框如下图所示。当用户输入实数时,程序按照用户输入的周期绘制曲线。(对应的代码见sincurve2.catvbs)
当用户熟悉CATIA V5 Automation的语法之后,也可以在宏目录中新建宏,并手动编辑调试。如图,点击“宏”对话框右侧的“创建”按钮,弹出“创建新宏”对话框。在窗体中可以输入新建宏的文件名。
点击确定,在宏列表中出现并默认选中了刚才创建的宏文件,此时点击右侧的“编辑”按钮,在弹出的“宏编辑器”窗口中可以看到自动生成CATMain()函数结构,其内容为空,用户可以在其中编辑自己的代码。
CATIA工具条是具有一定功能的图标按钮组合,一般停靠在用户窗口周围或浮动在界面上。用户可以通过工具条快捷调用特定操作,使用起来比较方便。
CATIA提供了自定义工具条机制,可以把CATIA宏或VBA项目添加到指定模块的工具条中,供用户随时的调用。假设需要将前面讲到的创建正弦曲线的宏文件在创成式曲面设计(GSD)模块下添加工具条,其操作步骤如下:
(1)打开“定制…”菜单
先把当前CATIA环境切换到创成式曲面设计(创建完成后的工具条在当前模块中出现),然后点击“工具->定制…”(或“工具->自定义…”,不同版本汉化时有差异),弹出对话框如下图:
选择“命令”选项卡,在左侧列表“类别”中选择“宏”,此时右侧可见当前宏库中的宏文件。我们选择sincurve2.catvbs,在“显示属性…”中为此命令选择图标并设定快捷键。
选择“工具栏”选项卡,单击右侧“新建…”按钮,在弹出的对话框中输入工具栏名称,如“正弦曲线”,则左侧列表中出现正弦曲线条目。
点击“添加命令…”按钮,在命令列表中选择sincurve2.catvbs,操作完成,在CATIA窗口中出现新工具条。点击此工具条,则系统开始执行sinecurve2.vbs,完成正弦曲线的创建。
关于宏的入门内容就介绍到这里了,因为是第一篇介绍,有些地方说的很细,导致篇幅太大。下一篇博客将介绍VBA IDE中如何快速实现程序设计,有了第一篇的基础后面的内容就简单多了。
【完】