问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

CATIA VBA:面向工程师的设计效率提升利器(上篇)

创作时间:
作者:
@小白创作中心

CATIA VBA:面向工程师的设计效率提升利器(上篇)

引用
1
来源
1.
https://www.tecwin.com/yanfasheji/314.html

随着工业设计的复杂度不断提高,工程师们对设计软件的功能需求也越来越高。CATIA作为一款广泛应用于航空航天和汽车等高精尖行业的三维设计软件,其强大的二次开发能力为工程师们提供了极大的便利。通过VBA脚本开发、C++/C#开发、EKL、CATScript和CAA等开发方式,工程师们可以实现批量处理任务、构建复杂定制功能等自动化操作,让CATIA真正成为设计师手中的"万能工具"。

CATIA 二次开发介绍

CATIA是一款强大的三维设计软件,广泛应用于航空航天和汽车等高精尖行业。而在实际工作中,标准的功能有时难以满足企业的特定需求,这时候“二次开发”就派上用场了。

想象一下,CATIA就像是一座高效的工厂,而二次开发则是为这座工厂定制的一条专属生产线。通过编写脚本或开发插件,我们可以让CATIA更加智能、自动化,不论是批量处理任务,还是构建复杂的定制功能,二次开发让CATIA真正成为设计师手中的“万能工具”!


图. CATIA主界面

主要的二次开发方式

  1. VBA脚本开发:使用VBA(Visual Basic for Applications)编写脚本,进行简单的任务自动化,例如批量处理、参数化建模等。
  2. C++/C#开发:CATIA提供了丰富的API,可以使用C++或C#等编程语言开发插件或独立应用程序,来扩展CATIA的功能。
  3. EKL(Engineering Knowledge Language):这是CATIA中的一种高级脚本语言,用于编写知识模板和规则,以实现基于知识的工程自动化。
  4. CATScript:类似于VBA,用于编写脚本以实现一些自动化任务。
  5. CAA(Component Application Architecture)开发:这是CATIA中最强大的二次开发方式,允许开发者直接访问和扩展CATIA的内核功能,通常使用C++进行开发。

相比之下,CAA语言需要较高的门槛,作为一名“攻城狮”,几乎不会有机会和时间进行代码的系统学习,如果只是平常写一些小功能帮助自己提高重复工作的效率,那VBA是不二之选!

本次推文将介绍如何以VBA二次开发的方式,在CATIA中开展开发工作,让“攻城狮”也可以为自己量身定制一套专属武器!( •̀ ω •́ )✧

如何在CATIA中使用VBA宏

宏工具

  1. 在「工具」工具条中,展开可找到和VBA有关的常用命令:


图. 宏工具

  1. 「宏」:可在界面中新建或添加一个系统中已有的宏文件;
  2. 「启动录制」:可将客户端中的操作录制到宏文件中,以vba语句的方式展示(请注意,并非所有的操作都可以录制下来),使用这个功能通常用来参数某个功能操作的接口用法;
  3. 「Visual Basic 编辑器」:CATIA内置的VBA编辑器,在编辑器中创建GUI界面,编写代码,调试程序(使用VB6.0的语法);

创建第一个宏程序

  1. 在编辑器的宏文件中创建一个「Moudle」对象,在其中输入:
sub
    catmain        'CATIA运行宏程序的main方法,运行命令的必要写法
    msgbox("Hello World!")
end sub


图. 编辑器截图

  1. 点击「运行」按钮,在CATIA主界面中弹出弹窗,弹窗中显示内容:“Hello World!”;


图. Hello World弹窗

  1. 如果想要在运行时,打开一个窗体(Form),则可写入如下语句:
sub
    catmain        'CATIA运行宏程序的main方法,运行命令的必要写法
    UserForm1.show 0     'UserForm1为要运行窗体的name;
    '0 代表窗体运行模式,即在运行时,仍然可以编辑CATIA;
end sub


图. 弹出Form

将宏命令添加到工具条中

  1. 先确保「宏」命令界面中,选择了要添加命令的宏文件;


图. 宏命令界面示意

  1. 在「自定义」中,找到“宏”选项,在其中会显示宏文件中的“Moudle”(命令的名称=Moudle的name),利用工具条自定义模式,将命令拖拽添加到工具条中(在自定义的界面中可对宏命令设置图标);


图. 自定义界面宏命令添加

  1. 此时,可像CATIA OOTB(默认)的命令,点击即运行;

Automation帮助文档

  1. CATIA的安装路径中,有一个“开发用百科全书”,其中提供了丰富的二次开发接口,以及接口方法的使用样例,我们可以通过查阅这个帮助文档,来获取相关命令的接口API,快速上手;
  2. Automation帮助文档路径在CATIA的安装路径下:
    例如:“C:\Program Files\Dassault Systemes\B426\win_b64\code\bin”;
    名称为:“DSYAutomation”
  3. 双击打开帮助文档,其中显示了CATIA Automation的架构,不同的层级内展示了不同模块、功能、命令的接口方法;


图. Automation架构部分截图

  1. 通过点击到不同的Object页面,可以发现不同的类型对象的方法,以及具体的API,点击每个API链接,可以查询其使用方法与样例;


图. Sheet页的API示意

VBA进阶VB.NET

使用CATIA中内置的VBA编辑器,几乎可以完成日常设计中大部分开发需求,但是老版的6.0编辑器在编写代码和设计界面时存在很多不便,例如:

  1. 编写代码时没有联想,没有自动排版,没有折叠等;
  2. Form缺少部分高级控件,可用控件较为基础;
  3. 必须将代码保存在宏文件中,宏文件需要保存在3DE数据库里,并且运行时若出现报错会看到所有的过程代码;
  4. 对UI有较高要求的朋友,6.0的界面显得太过老旧;

了解开发的朋友都知道,作为一款地表最强的编辑器之一的 Visual Studio 是由微软开发的一款功能强大的集成开发环境 (IDE),广泛用于软件开发。


图. Visual Studio界面

那么,有没有可能CATIA也可以使用这个编辑器来进行二次开发呢?答案是可以[]( ̄▽ ̄)*

VB.NET 作为 Visual Basic 的进化版本,运行在 .NET 框架之上。VB.NET 提供了与其他 .NET 编程语言(如 C#)一致的强大功能,同时保持了 Visual Basic 的简单易学特点。

接下来,下文中将以“创建标题栏”的开发实例,系统的介绍如何在Visual Studio创建项目、查询添加COM库、编写代码、编译可执行文件及在CATIA中运行命令。

*开发实例有如下要求:
a. 点击命令后按照样式一键生成标题栏;
b. 自动适配当前图纸幅面;
c. 相关标题栏文本自动从图纸或关联数模中取值;


图. 案例标题栏示意

VB.NET实战演练

  1. 创建项目

PS.这里以Visual Studio 2022 版本示例

  1. 运行 Visual Studio,进入开始使用界面,选择「创建新项目」;
  2. 在项目模板界面,选择“控制台应用(.NET Framework)”模板,点击「下一步」;
    PS.这里实战的例子并不需要窗体交互,所以我们选择“控制台应用(.NET Framework)”,如果需要做窗体交互,则选择“Windows窗体应用(.NET Framework)”;
  3. 输入项目名称,例如“CreateFrameTitle”,勾选“将解决方案和项目放在同一目录中”,框架选择默认的“.NET Framework 4.7.2”的选项,点击「创建」;

  1. 进入主界面,自动创建了一个module语句,并内置了一个main方法;
  2. 此时,点击「启动」按钮,在运行期间,会弹出一个黑窗体,一直持续到结束;

  1. 如何取消黑窗口的显示呢?其实很简单( •̀ ω •́ )✧
  2. 选中项目,点击「属性」按钮,在弹出的属性页面中,应用程序类型选择“Windows窗体应用程序”,重新点击「启动」按钮,此时程序运行时,不会再弹出黑窗口;

添加引用

  1. 和直接在CATIA中使用内置的编辑器写vba代码有所不同的是,VB.NET中引用是没有自动添加3DE CATIA的 COM库的,所以在新建项目后,需要手动将3DE CATIA的COM库勾选添加;
  2. 点击上方菜单“项目”,选择“添加引用”;
  3. 弹出引用管理器,找到其中为CATIA开头的库文件,可选择将其全部勾选,这样该项目中就可调用所有的可用API接口(前缀为CATIA V5的库文件是CATIA V5的API);
  4. 如果要追求精简极致的话,在写某个功能时,可能只需要用到几个库文件,那么我只需要针对性的添加这几个库文件到我的项目中就可以;
  5. 想做到这一步就需要了解什么样的接口方法对应是哪一个库文件,在下文的示例代码中将展示方法;

代码部分

3.1 初始化Application

  1. 使用VB.Net需要获取进程中的3DEXPERIENCE(CATIA),借助「GetObject」接口完成;
  2. 「GetObject」的方法在「Application」中,进入Applcation的详情页;
  3. 点击“This Framwork”按钮,显示出当前「Application」方法对应的后台库文件;
  4. 在添加引用中找到“CATIA Inflnterfaces Framework”这一个COM,勾选,点击确定;
  5. 在Module上方,添加这条库引用「Imports INFITF」,即完成库的引用,接下来属于这个库内的所有接口即可使用;
  6. 接下来创建变量,写获取进程的代码(此项为必备代码,若在CATIA中直接运行exe,则可考虑不加入启动CATIA的代码逻辑):
Module
    Module1
    Sub Main()
        CUS_3DEStart()
    End Sub

    Sub CUS_3DEStart()
        On Error Resume Next
        CATIA = GetObject(,
        "CATIA.Application")        '获取进程中的CATIA
        If Err.Number <> 0 Then
            CATIA =
        CreateObject("CATIA.Application")   '若CATIA未启动,则自动启动CATIA
        End If
        On Error GoTo 0
    End Sub
End Moudule
  1. 注意增加的过程需要添加到module的main过程中(后续所有自定义的过程需要在运行时响应的都需要添加到main过程下)

3.2 分析内容

分析一下要创建的图纸标题栏不难发现,整个标题栏共有三部分组成:外框线+标题栏框线+标题栏文本,那么我们只需要通过代码依次创建出这些对象出来即可,梳理一下程序处理的整个逻辑过程:

由于篇幅过长,本期内容就暂告一段落。下一期,本文将深入解析「创建标题栏」实例的完整编码过程及其背后的逻辑思路,敬请期待!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号