在Excel中修改指定单元格的数值,CATIA模型里对应的参数值与模型便可随之更新。这一功能是CATIA自带的设计表即可实现的,我们在之前的文章中也有过讲解。
但很多小伙伴表示,设计表的数值变化后,CATIA那边的模型更新会有一个延迟。今天,我们就来使用Automation二次开发的方式,通过在Excel VBA里写一些代码,来消除这个延迟。
基于小编多年来一直叨逼叨的一句话:“点动成线,线动成面,面动成体”,我们先简单搭一个下面的模型:用三组点连成三根样条线,然后再通过这些样条线做一个多截面曲面。
接下来看一张动图,即我们本篇文章最后即将实现的效果:通过修改Excel里单元格的点坐标值,来控制这个三维模型。
然后我们来说原理与做法。
首先,要明确一件事:CATIA的VBA里可以操作Excel,Excel的VBA里也可以操作CATIA。
第一步,在Excel VBA的编译界面,通过菜单栏Tools--References,找到引用项目。
然后添加如下三个引用:Interface、Mecmod、GSM。
(注意这三个库只是本文实例所用到的,其他功能所需要引用的库,可通过API所在的手册页面的顶端,点击This Frame Work查看)。
这样,我们在Excel的VBA里写代码时,就可以像在CATIA VBA中一样,将变量定义为CATIA Automation Object类型。
好处是,写代码时可以自动联想出对象的属性和方法。
接下来,我们就开始在Excel里VBA里写代码。在vb或者说vba里,代码都是些在一个函数里,函数以sub / end sub或function / end function起止。
另外,函数里的代码不会无缘无故地自己运行。通常,我们会通过一个事件,来触发。简单说就是“当发生什么时,运行这段代码”。常见的比如Button的Click函数,也就是当我们点击按钮时,会触发执行里面的代码。
一个对象,或者我们叫一个控件,比如按钮,它有哪些事件函数,这个并不是手动一个字母一个字母敲上去的。我们可以在编译器上部的左边选择对象, 右边下拉列表里就是该对象可以使用的事件函数。
而今天这个例子,我们要把代码写在Sheet的Change事件函数中,意味着一旦Sheet里某个单元格的值有变化,就会执行我们所写的代码,从而实现实时联动。
反映到具体的操作,就是打开Excel的VBA编辑截面(快捷键是Alt+F11),然后双击左侧树上的Sheet对象,再选择右侧下拉列表中的Change。此时编译器将为我们自动创建一个函数。
至于二开操作CATIA模型这一部分,可以说是老生常谈了。我们最后直接给出完整的带注释的代码供参考。
需要说明一下,本文的内容,仅作为各位学习CATIA及Excel VBA二次开发的参考练习,实际工作中未必有实用价值,尤其模型很复杂,更新一次需要耗时很久的情况。
但又不能说完全没有意义,CATIA / Excel二者联动,给了我们更多的可能。比方说:
可以在导出的Excel格式的BOM中编辑装配体各节点的属性,再写入CATIA
可以在Excel中编辑图纸的标题栏,再写回到CATIA Drawing中
……
以下是实现文章开头动图的完整代码及注释。