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中如何快速实现程序设计,有了第一篇的基础后面的内容就简单多了。
【完】- CATIA VBA二次开发(一)快速入门之宏脚本
- CATIA VBA二次开发(二) 快速入门之VBA IDE
- Catia CAA二次开发系列一
- 利用C#进行CATIA自动化二次开发的入门指南
- ArcGIS二次开发入门(一)
- ArcGIS二次开发入门(一)
- Catia 二次开发 资料
- CATIA二次开发资源汇总
- Catia 二次开发 资料
- CATIA 二次开发 C#
- 教你快速入门Excel-宏与VBA(上)
- 教你快速入门Excel-宏与VBA(下)
- 教你快速入门Excel-宏与VBA(续)
- ArcGIS二次开发方式之VBA
- 想入门CATIA二次开发CAA的盆友看过来(谈谈开发经验,或许对你有帮助!)
- VBA学习1_教你快速入门Excel-宏与VBA(上)
- VBA学习2_教你快速入门Excel-宏与VBA(下)
- VBA学习3_教你快速入门Excel-宏与VBA(续)
- atoi函数实现
- requireJs
- 使用nodejs开发树莓派远程控制小车
- Jenkins使用(五)shell软件的使用
- CVP认证学习笔记--李天宇008Node的父子关系
- CATIA VBA二次开发(一)快速入门之宏脚本
- CVP认证学习笔记--李天宇009节点的缩放和旋转
- [主席树 Kruscal] BZOJ 3545 [ONTAK2010]Peaks & 3551 [ONTAK2010]Peaks加强版
- PAT乙级练习题B1017. A除以B
- CVP认证学习笔记--李天宇010节点的计划任务
- 【json】jsoncpp函数接口
- Android Studio com.android.dex.DexException: Multiple dex files define(重复引用包)
- 2016年年中计划
- [dfs] BZOJ 4602 [Sdoi2016]齿轮