catscript格式的宏开头必须是sub CATMain(),而vba格式的宏开头可以不是CATMAin()
进入IDE:
新建一个module
File
写的代码module或者form下的窗体都可以导出。在另一个项目里,导入,进行使用。
退出VBA到catia界面:
Edit
一个编程小栗子
查找和缩进
编辑提示设置
补全的提示(忘了单词怎么拼写时用)
打开帮助文档,在鼠标点在变量名字后面,快捷键F1,就会打开这个变量的对应文档。(注意,截图软件的快捷方式也是F1,所以可能会冲突,记得退出截图软件)
验证文档中的
快捷变量介绍
自动补全
添加书签
View
查看form窗体对应的代码,双击窗体或选择view中的code
点击object,就又从代码切换到窗体中。
或者用双击窗体进入code,点击form文件,进入窗体。
查看对象的父级介绍等
右键,用insert来新建文件
产看对应的库
点击绿色的库名,可以显示存放的位置
很常用的库
一些窗口,比如debug中分步执行的话会有调试信息
可以右键修改part名,使其与文件名不一样
分步执行会看到一些信息
在view的Immediate windows中显示。如果是比较复杂的程序,可以通过这种显示来进行简单调试
结构树的窗口
属性窗口
小工具窗口
点击Tab键时,会按顺序选到各个控件,Tab Order可以调整被选中的顺序,
vba和catia界面切换
insert
项目里插入一个窗体
放一个按钮
双击按钮进入点击按钮的代码
修改名字,对应的响应代码也会变
name1的控件过程
通用过程,可以写道userForm里也可以写道module里
整个窗体也是可以双击产生响应代码的
选到响应代码里,右侧是对应的响应事件
sub和function都可以带输入参数。但sub不带返回参数,function是带返回参数的过程。他们都是通用过程。
sub后面的子过程名不能与属性,变量冲突
调用子过程
public是公用过程,其他module里可以调用。
private是私有过程,其他module里不可以调用
没有指明public和private,则默认是public过程。
property用得很少,之后讲。
新建一个类模块。稍后将
导出module
其他项目中可以导入并使用这个module
Format
主要针对的是userForm的窗体
Align对齐方式。按住control,多选部件,然后设置
调整尺寸相同
调整控件到与字体内容合适的尺寸
使控件和界面的小点点对齐
设置水平或竖直间距。decrease使间距变小
中间位置
移动窗体到最下侧或最右侧
设置几个控件为一个group,整体,可以一起移动等
控件重叠时,可以选中其中一项,设置放在最上面等
Debug
分步执行step into。函数也会执行到函数内部的每一个语句
step over。会直接把下一个语句执行完成,不会再分步到函数内部
run to cursor 执行到光标所在位置,停下。再点step out 就会执行结束。
工具栏右键,勾选Debug等小工具栏是否显示
单独监控某个变量
可以在语句前点击一些,就会创建一个断点,Debug执行遇到断点会停下。
set next statment分部执行时,跳过黄色箭头指向的,和鼠标之间的,所有语句,直接执行到鼠标所在的语句。
reference和窗体部件的模态
showModal属性是false是可以在有弹窗时,点击其他的东西。
是true是有弹窗时,就只能点击弹窗内的东西。
reference 是二次开发要用到的库,必要时其他库也在这里勾上
Addition control添加其他控件。默认的控件在Toolbox里
显示当前项目含有的过程
修改项目名称,添加密码(在修改项目代码时就会验证密码)
option
Auto Syntax Check自动检测错误,鼠标点到其他行后,会提示刚刚编辑的那一行的错误
Require variable Declaration需要对变量进行声明,即必须对变量Dim。如果勾选上。插入一个新的module后,首段会有一个Option Explicit,即变量都需要进行声明。不然会报错:Variable not defined.
Auto List Members:自动列举出成员类型方法
Auto indent 自动缩进
编写的字体等:
Userform的网格点的间距等
勾选是否显示这些窗口:
补充
批量注释和取消注释
示例代码
Sub jk()
Set opartdoc = CATIA.ActiveDocument '获取当前激活的文件
MsgBox CATIA.ActiveDocument.name '获取当前激活文件的名称
Set Part = opartdoc.Part '对应于文件打开后的根目录的part
Set body1 = Part.Bodies.Item(1) 'body集合中的第一个Body
MsgBox Part.name
MsgBox body1.name
If 3 > 2 Then
MsgBox "i love you", vbYesNo
MsgBox "i love you", vbCritical
End If
End Sub
Sub jk()
Dim opartdoc As PartDocument '也可以不定义变量,但是如果不定义变量,
'后续输入时opartdoc.后就不会有提示它的成员变量
Dim opart '后续opart.就不会提示
Dim obodies As Bodies, obody As body '定义两个,中间用逗号
Set opartdoc = CATIA.ActiveDocument
MsgBox opartdoc.Path '显示当前文件的路径
Set opart = opartdoc.Part
Set obodies = opart.Bodies
Set obody = obodies.Item(2)
Debug.Print obody.name
End Sub
Sub name1()
MsgBox "litte"
End Sub
Sub calculate1(R)
s = 3.14 * R * R
MsgBox s
End Sub
Function calculate2(R)
s = 3.14 * R * R
calculate2 = s 'Function可以返回变量
End Function
Sub name1()
MsgBox "litte"
End Sub
Sub calculate1(R)
s = 3.14 * R * R
MsgBox s
End Sub
Function calculate2(R)
s = 3.14 * R * R
calculate2 = s 'Function可以返回变量
End Function