利用C#进行CATIA自动化二次开发的入门指南

来源:互联网 发布:相关系数矩阵怎么求 编辑:程序博客网 时间:2024/04/19 14:38

本文包括以下内容:

  • Automation(以下简称自动化)与CAA的区别
  • 用C#创建Automation根对象的代码
  • Automation文档的使用方法

    以下是正文

Automation(以下简称自动化)与CAA的区别

相比CAA开发,COM自动化接口的好处在于

  1. 不需要购买安装CAA
  2. 因为是基于COM组件调用进行开发,所以可以用任何(高)版本VS进行开发,有更好的智能感知和代码提示
  3. CAA开发中涉及大量复杂的设计模式,而且必须用C++开发,编译环境也必须是达索提供的编译环境,而自动化开发可以基于C++,也可以使用CLR语言如C#、http://VB.NET,开发难度大大降低,可以非常非常顺手的写图形化程序,可以在同一个工程中同时用C#、VB、C++/CLI开发,这非常酷
  4. 开发前准备只需要安装CATIA和IDE如VS2015、而且接口一定程度上能够实现跨版本。

相比CAA开发,COM自动化接口的不足在于

  1. 自动化只能实现CATIA本身各个模块能够做到的工作,比如你有一万个法兰需要批量打孔,甚至根据不同大小的法兰和受力打不通数量的孔,自动化接口都可以胜任。但如果你想要在一个曲面上求空间上从一个点出发经过曲面反射到另一个点的所有反射点,因为这样的工作CATIA本身做不到,自动化就难以胜任了。
  2. 自动化开发还有个缺点是:不能像CAA一般,开发嵌入CATIA的可交互的程序(感谢题主补充)。合理的使用自动化提供的select方法可以实现简单的选择或选择集交互,更复杂的拖动乃至子视图树状图什么的开发只能靠CAA

所以自动化接口能够胜任80%的自动化工作,其他的只能靠CAA。

用C#创建Automation根对象的代码

贴一段C#的代码,这段代码用于获得CATIA对象,是每个自动化程序最初的一步,之后都是按部就班的创建和操作CATIA的子类就可以了。

INFITF.Application CATIA;try{    CATIA=(INFITF.Application)Marshal.GetActiveObject("CATIA.Application");}catch{   Type oType = System.Type.GetTypeFromProgID("CATIA.Application");   CATIA = (INFITF.Application)Activator.CreateInstance(oType);   CATIA.Visible = true;}

上述代码获得到的CATIA.Application对象就是下面的Application对象了

这里写图片描述

Automation文档的使用方法

达索原来是有在线文档的,但两年前关闭了不给访问了,或者链接改了,反正我没有再找到,这是很可惜的。

如果你安装了CAA的话,自动化文档的内容同样可以在任何版本的CAADoc目录中找到,如果你没有安装CAA,可以下载我提供的文档原件压缩包,密码为csq6

关于Doc,可以看到是分为三个目录
这里写图片描述
不过我比较常用的是第二个和第三个,因为够用了

Generated文档
generated文件夹下的是传统的interface document,里面朴素的列出了所有的类、公有方法原型、类继承关系,是我见过的API手册里面组织的比较清晰的。里面有两个文件夹,interface是给自动化开发用的,refman是给CAA开发用的,两者文档结构相似,内容不同,这里只表interface。

打开\Doc\generated\interfaces_index\main.htm,首页显示的是Framework list,每个Framework对应一个COM组件,就是说如果你的程序调用了Partinterface,你就要引用Partinterface对应的COM组件(一般和framework名字很像),然后在代码中impore(VB)或using(C#) PARTITF(它的命名空间,具体什么名字在vs中引用后可以通过双击引用查看到)
这里写图片描述
第二列是类继承关系
这里写图片描述
第三列是比较好用的各类索引,需要什么方法直接进master之后find之类的,小技巧很多,要靠自己摸索这里写图片描述

online文档

达索原来的线上文档就是这个online文档,基本一样的,相比上面的,这个更像是Guiding、Tutorial之类的东西,讲解怎么使用一些接口,展示一些例子等等。
打开/Doc/online/CAACenV5Title.htm

这里写图片描述

第一个是CAA开发的,第二个是自动化开发的,下面的那些对象目录都是在这个文档里面找到的。比如零件设计(PartDesign)->
这里写图片描述

Shape Automation Objects->
这里写图片描述

就可以看到
这里写图片描述

最后附上我的一个插件源码https://github.com/Lentil1016/LTB

0 0
原创粉丝点击