分享免费的编程资源和教程

网站首页 > 技术教程 正文

基于世界坐标系下的零件设计方法 世界坐标的作用

goqiw 2024-10-30 03:42:23 技术教程 17 ℃ 0 评论

数星期前,有人问说,如何才能保证零件可基于世界坐标系进行设计,而又不影响建模

恰巧是昨晚,吾之小伙伴check一个坐标系变换功能有出入,我随便推导下,分享一番,还望少批评多鼓励。

【背景】

存在即是合理的,在装配时,零部件自身的坐标系和世界坐标系默认是重合的,因此,若产品是基于世界坐标系进行设计的,由于基准一致,装配在一块就无须再进行约束操作。当然,搞事情难免有所束缚,也就是会影响到建模效率,不能忍也。因而,才会衍生出开发需求,吾之其一方案:基于零件内部轴系进行设计,按照固有方式进行装配约束(会更改零件局部坐标系),最后程序计算零件姿态,将零件局部坐标系和世界坐标系重合,仅由更改轴系参数保证位置位姿。

推导书稿

【原理】

在CATIA中,涉及多个坐标系,有世界坐标系、局部坐标系、和零件内的轴系。一般而言,世界坐标系是顶级参考,局部坐标系基于父层甚至世界坐标系来表征的,而轴系是创建在零件体内部,是相对于零件自身坐标系而言的。装配的本质就是坐标系的构造,搭建了立体的产品。

轴系图、装配结构图

直奔此本目的,对问题进行抽象有:轴系A在坐标系B下的表示为P,坐标系B在世界坐标系C下的表示为Q,求取轴系A在C下的表示M。有结论:M=Q*P

  • Q通过GetAbsPosition,直接获取其在世界坐标系下的表示

  • P通过CATIMf3DAxisSystem接口,间接构建其在轴系B下的表示

【验证】

通过程序进行了结论验证,执行前后效果如下图所示。

执行前,局部坐标系未与世界坐标系重合

执行后,两坐标系重合,轴系参数发生变化

【Reference】

1. 坐标系表征

坐标系A在坐标系B下的表征用4阶齐次矩阵表示:

矩阵表征

其中, X轴向量为(ax,ay,az)、Y轴向量为(bx,by,bz)、Z轴向量为(cx,cy,cz)、原点坐标P为(px,py,pz)

2. 求取坐标系值

上述坐标系是个4×4的矩阵,在CAA中对应着专门的数据类型: CATMathTransformation,通过该类可以对矩阵进行求逆、点乘、叉乘等操作。通过CATMathTransformation::SetCoef()和CATMathTransformation::GetCoef()可以设置和获取一个坐标系矩阵的值。该数据从CATIProduct的接口获取而来的,其中如SetAbsPosition操作的则是当前对象相对于世界坐标系的值,SetPosition则需要给定参考对象。读写关系具体如下图所示。

装配关系变换

3. 求取轴系对象

轴系的值可以通过CATIMf3DAxisSystem(GetOrigin、GetVectors)接口进行操作。具体使用方法见CAA Help Viewer和Encyclopedia。不赘述。

欢迎关注: CAA二次开发 (微信公众号)

开发深似海、疑义相与析!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表