首页/文章/ 详情

[CATIA灵魂知识点+二次开发]零部件在装配体中的位置信息--------

5月前浏览10831

摘要

本文介绍了CATIA软件中装配体的概念及其零部件位置信息的表示方法,并探讨了通过二次开发代码处理这些位置信息的策略。文章解释了装配体由具有不同实例名称和位置信息的零部件组成,并阐述了绝对坐标系的应用。装配体文件保存了零件的位置和颜色设置,丢失后需重新装配。作者提供了获取和存储零部件位置信息的二次开发代码示例,并提出了基于这些信息的二次开发思路,如插件和工具的开发,以优化装配体数据的管理和利用。



正文

学习CATIA软件的朋友,肯定都是从零件设计,装配体,工程图这样的一些基础模块开始学起,什么是装配体呢,装配体下面包含一些零部件模型,这些零部件模型堆叠到一起构成了装配体,就跟小盆友玩的积木一样。

但是装配体中的每一个零部件都具有位置信息,您应该知道的吧,就比如一辆汽车上面有很多相同型号的螺栓标准件,但是每个螺栓都紧固到了不同的部位,也就是具有了不同的位置信息,这些螺栓在装配体中是同一个零件数据,因此他们具有相同的零件编号(partnumber),但是他们各自又是独立的个体,被安排到了不同的位置,各司其职,因此我们赋予他们不同的实例名称(instance name)。通常这种情况我们称这些螺栓是相同的零件(编号)在装配体中不同的实例化。

我们再补充一些关于绝对坐标系的知识点,每一个零件在最初创建的时候都会赋予三个绝对坐标平面 XY平面,YZ平面,ZX平面。这三个平面相交构成了零件的绝对坐标系,我们也可以在选项里设置让零件创建伊始就同时创建一个绝对基准轴系(如下图)。

实际上当我们新建一个product文件的时候,同时也会为其赋予一个绝对坐标位置,那么这个位置怎么找到呢,我们只需要在这个空的product文件中插入一个新的零件,那么这个新零件的绝对坐标系位置就是product的绝对坐标位置。如果product文件不是空的,我们也可以通过插入一个零件的方法来确定装这个配体绝对坐标位置,注意,点击插入零件命令后,弹出如下对话框,一定要点击否, 因为窗体上有提示“单击否将装配的原点定义为新零件的原点”,另外我们也可以用罗盘测一下某一个零件的位置,来确定这个零件所在位置是否为装配体的绝对位置。方法前面讲过了如下链接:

[CATIA知识点] 装配体中零部件绝对坐标位置归零的第四种方法, 原来不需要用插件啊!

CATIA装配体中的零部件位置信息是如何体现和存储的?大家都知道吧,product文件中没有具体的零件mastershape信息,但是product中会保存其下一级别零件在本product中的位置信息和颜色设定。如果你采用自底而上的建模方法,创建了一堆零件模型,最后创建了装配体并将这些零件模型进行了装配,但是有一天你不小心将这个装配数据xxx.CATProduct弄丢了,那么不好意思了,你得重新来一遍了,因为零件之间的位置关系信息储存的载体被你弄丢了!

但是事情也并非绝对的,既然product中储存零部件的位置信息,那么我们可以将储存的关于零件位置的这一部分信息导出来到txt中,这样的话即便哪一天我把我的product文件弄丢了,我依然可以找到被导出来的位置信息,再次将这些位置信息对应的应用于每一个子级别零部件即可!

那么问题来了,一个product的下位零部件的位置信息怎么被导出来?这些位置信息是怎么被存储的呢?这个时候就有必要研究一下二次开发的代码了,如下所示,哎,老铁别走,你可以理解的!如下语句是获取装配体下第一个零部件的位置信息的代码,获取之后将位置信息存储到一个大小为12的数组矩阵中!

Sub CATMain()

Dim oAxisComponentsArray(11)

Set oparentproduct = CATIA.ActiveDocument.Product

Set MyObject = oparentproduct.Products.Item(1)

MyObject.Position.GetComponents oAxisComponentsArray

End Sub

如下图所示是获取的这个零件的位置信息存放到命名为oAxisComponentsArray的数组中,数组的大小是12,关于这12个元素中存储的double变量信息,指导文件中是如下解释的(英文),基本上可以理解为前面9个元素存放的是:此零件的绝对坐标系,xyz三个方向上的单位一向量分别在装配体绝对坐标方向上的分量值,后面三个元素存放的是零件的绝对原点相对装配体的绝对原点的三坐标值(这是本篇帖子的核心内容,大家一定要理解啊)。

The array used to store the twelve components retrieved from the objet's position. The first nine represent succcessively the components of the x-axis, y-axis, and z-axis. The last three represent the coordinates of the origin point.


好了,基于以上的知识点,我们可以做一些好玩的小插件了,比如说,我可以做一个小程序,将装配体 位置信息一键存储到txt文档,等装配体 位置信息不小心错乱之后,我们通过插件再来读取txt中的位置信息,批量应用于装配体,以实现位置信息复原,而其实呢,catia软件本身就有了类似的功能,那就是如下的场景功能,我们可以将一个装配体的不同状态(比如一扇门还有打开和关闭两种状态呢)储存到不同的场景中,通过激活不同的场景来获取到不同状态下的装配体模型!学习了catia好多年的你应该知道这个功能的吧。

那么除了这个已经存在的功能之外,我们还能做些什么有用的二次开发功能呢?当我们在装配体中做设计的时候,通常还会有这样的一种需求,就是将两个相同的或者设变前后的零部件重叠到一起进行一下对比,如果这两个零件的绝对坐标系位置是相同的,那么我们可以通过约束他们的轴系将其重叠到一起,但是操作相对麻烦一些,起码我们需要先分别创建这两个轴系吧!另外一种思路肯定就是通过二次开发代码来做个小程序了!首先获取其中一个零件的位置矩阵,即前面长度为12的数组,然后再通过SetComponents方法将位置矩阵应用于另外一个零件,这个思路应该容易理解吧?

代码如下所示(当然我们也可以在装配体中使用这些代码将任意两个零件位置对齐,即两个零件的绝对坐标系对齐):



  


来源:CATIA小蚂蚁
ACT二次开发汽车CATIAUMOrigin螺栓装配工程图
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-06-01
最近编辑:5月前
CATIA专业培训讲师
日拱一卒无有进 功不唐捐终入海
获赞 37粉丝 128文章 64课程 4
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈