首页 > 程序开发 > 软件开发 > Vb > 正文
CATIA VBA二次开发(一)快速入门之宏脚本
2016-06-25       个评论    来源:dockerVBA的博客  
收藏    我要投稿

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 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

3.编辑宏

 

参考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)

\

4.创建宏

 

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

\

\

 

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

5.添加宏到工具条

 

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

 

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

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

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

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

\

 

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

\

 

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

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

【完】
点击复制链接 与好友分享!回本站首页
相关TAG标签 脚本
上一篇:VB.net学习笔记(三十)认识线程池
下一篇:[VB] VB实现一个窗体的增删改查的demo
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做实用的IT技术学习网站