24小时热门版块排行榜    

查看: 11685  |  回复: 6

zenbom

铁杆木虫 (正式写手)

[交流] 如何用VB,Python,或Matlab等语言做CATIA的二次开发 已有5人参与

用程序语言 如 Visual Basic,Python,或Matlab 操作CATIA 等绘图软件,其最重要的就是对API的理解。当然,对于程序猿来说,本帖就可以无视了。本帖重要面向 做工程的人,普及一下非常浅的程序知识。

相信,用catia 的童鞋们,对catia macro(宏) 有一定的了解。当然,这些都可以在 你安装文件夹下搜 V5Automation.chm 找到非常详细的指导。该文件主要是 catia 基于VB的 api。

我们先看第一个通过catia -> tool->macro->VB例子:
1. 看官方例子
打开 V5Automation.chm -> Content ->Getting Started with CAA V5 Visual Basic -> working with infrastructure -> use cases -> A script sample (其实很多中文的二次开发,就只是翻译这个帮助文件的例子而已)
2. 读懂程序
根据上面创建的顺序,会有如下的code:
Dim documents1 As Documents  (Dim 表示定义,这是VB的语法,此句为:定义documents1 是一个文件类型。读者可以百度 VB 语法)
Set documents1 = CATIA.Documents (set 对对象赋值,VB 语法。此句为:把CATIA的属性Documents值 赋给documents1。Documents 就是CATIA提供的api)
一下是 其余部分程序:
Dim part1 As Part
Set part1 = partDocument1.Part

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("PartBody"

Dim sketches1 As Sketches
Set sketches1 = body1.Sketches

Dim originElements1 As OriginElements
Set originElements1 = part1.OriginElements

Dim reference1 As AnyObject
Set reference1 = originElements1.PlaneXY

Dim sketch1 As Sketch
Set sketch1 = sketches1.Add(reference1)

程序主体理解完毕(其余的 如 sub, module,等语法  请自行百度)

Python例子:
1. 外部连接 :
由于CATIA 中的vb代码是在 catia中运行,所以省了 vb与catia连接的code(代码)。因此,我们需要先把python与catia连接起来。第一件事就是下载相应版本的pywin,再import win32com.client. 也可以根据这个文章http://win32com.goermezer.de/content/view/29/291/
所以,在python调用windows api前,需要写如下代码:
import win32com.client
catia = win32com.client.Dispatch('catia.application')
如果看不见 catia窗口 可以 再输入 catia.visible = 1

相应的VB 接口代码 在  V5Automation.chm -> Content ->Getting Started with CAA V5 Visual Basic -> working with infrastructure -> General Information -> Invoking CATIA from a scripting language 里面找到。
2.用Python 仿写VB代码:
在仿写之前,请笔者注意python语法。
一下为仿写代码:
documents1 = CATIA.Documents
partDocument1 = documents1.Add("Part"
part1 = partDocument1.Part
bodies1 = part1.Bodies
body1 = bodies1.Item("PartBody"
sketches1 = body1.Sketches
originElements1 = part1.OriginElements
reference1 = originElements1.PlaneXY
sketch1 = sketches1.Add(reference1)

运行成功,没有错误。catia 正常打开,并且定义了 reference。
附图:

VB,Python,Matlab,连接CATIA <wbr>原理,二次开发。


Matlab例子:
1. 外部连接:
读者可以根据这个文章来 帮助理解matlab与catia的连接。http://www.mathworks.com/matlabc ... ink-catia-to-matlab
连接代码如下:

catia = actxserver('catia.application');
set(catia,'visible',1);

    2.仿写代码:

在matlab中,使用invoke进行属性定义,get把属性值付给变量。matlab代码不做演示。请读者自行解决。




总结:只要理解了api的意义,理论上来说可以使用任何语言对 caita等3维软件操作。如何用VB,Python,或Matlab等语言做CATIA的二次开发
0026nWu7gy6IRXHsWhHe1&690.jpg
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 0026nWu7gy6IRXHsWhHe1&690.jpg
  • 2015-12-17 23:00:52, 36.96 K

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

JacquesChan

铜虫 (初入文坛)


小木虫: 金币+0.5, 给个红包,谢谢回帖
做过solidworks的二次开发,原理都是用API

发自小木虫Android客户端
搞科研
2楼2015-12-17 23:06:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zenbom

铁杆木虫 (正式写手)

引用回帖:
2楼: Originally posted by JacquesChan at 2015-12-17 23:06:17
做过solidworks的二次开发,原理都是用API

对的。这是自己几年前本科做的,怕自己忘记 在新浪博客上面写过一篇帖子。现在工作刚好要用,又拿出来看看。目前用python做二次开发的比较少,所以拿来这里分享一下。
3楼2015-12-17 23:13:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ToBeAWinner

铜虫 (正式写手)

4楼2015-12-20 20:08:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhuoyu0103

铁杆木虫 (小有名气)

5楼2015-12-20 23:07:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Dear Song

铁虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
CATIA开发还是用CAA好一些。
6楼2018-02-01 20:43:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

科汗淮

银虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
二次开发有什么用途?还望解惑。

发自小木虫Android客户端
7楼2018-02-02 10:51:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zenbom 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿中国海洋大学,生物学,301分,求调剂 +3 1孙悟空 2026-03-17 3/150 2026-03-18 10:28 by macy2011
[考研] 0703化学调剂 +3 pupcoco 2026-03-17 6/300 2026-03-18 10:11 by macy2011
[考研] 085601专硕,总分342求调剂,地区不限 +4 share_joy 2026-03-16 4/200 2026-03-17 21:32 by hmn_wj
[考研] 344求调剂 +4 knight344 2026-03-16 4/200 2026-03-17 17:27 by ruiyingmiao
[考研] 考研化学学硕调剂,一志愿985 +4 张vvvv 2026-03-15 6/300 2026-03-17 17:15 by ruiyingmiao
[考研] 本人考085602 化学工程 专硕 +16 不知道叫什么! 2026-03-15 18/900 2026-03-17 17:05 by ruiyingmiao
[考研] 332求调剂 +6 Zz版 2026-03-13 6/300 2026-03-17 17:03 by ruiyingmiao
[考研] 一志愿苏州大学材料工程(085601)专硕有科研经历三项国奖两个实用型专利一项省级立项 +6 大火山小火山 2026-03-16 8/400 2026-03-17 15:05 by 无懈可击111
[考研] 一志愿,福州大学材料专硕339分求调剂 +3 木子momo青争 2026-03-15 3/150 2026-03-17 07:52 by laoshidan
[考研] 0703一志愿211 285分求调剂 +5 ly3471z 2026-03-13 5/250 2026-03-16 16:16 by 哦哦123
[考研] 0703化学调剂,求各位老师收留 +8 秋有木北 2026-03-14 8/400 2026-03-16 15:21 by 哦哦123
[考研] 327求调剂 +6 拾光任染 2026-03-15 11/550 2026-03-15 22:47 by 拾光任染
[考研] 材料080500调剂求收留 +3 一颗meteor 2026-03-13 3/150 2026-03-14 10:54 by peike
[考研] 学硕285求调剂 +13 Wisjxn 2026-03-12 46/2300 2026-03-14 10:33 by JourneyLucky
[考研] 336求调剂 +6 Iuruoh 2026-03-11 6/300 2026-03-13 22:06 by JourneyLucky
[考研] 四川大学085601材料工程专硕 初试294求调剂 +4 祝我们好在冬天 2026-03-11 4/200 2026-03-13 21:39 by peike
[考研] (081700)化学工程与技术-298分求调剂 +12 11啦啦啦 2026-03-11 35/1750 2026-03-13 21:25 by JourneyLucky
[考研] 一志愿211化学学硕310分求调剂 +8 努力奋斗112 2026-03-12 9/450 2026-03-13 15:41 by JourneyLucky
[考研] 314求调剂 +7 无懈可击的巨人 2026-03-12 7/350 2026-03-13 15:40 by JourneyLucky
[考博] 福州大学杨黄浩课题组招收2026年专业学位博士研究生,2026.03.20截止 +3 Xiangyu_ou 2026-03-12 3/150 2026-03-13 09:36 by duanwu655
信息提示
请填处理意见