1. CATIA中的旋转平移操作:
在CATIA中可以用CATIA的Move属性来改变组件的空间位置,其旋转操作平移操作通过长度12的数组来表示,前9个数值组成的3×3的矩阵描述了物体的旋转信息,后三个数值描述了物体的原点位置,用于平移。该数组结构如下所示:
ux,uy,uz描述了u轴在(o,x,y,z)坐标系中的各个分量(一长度单位投影)。
vx,vy,vz描述了v轴在(o,x,y,z)坐标系中的各个分量(一长度单位投影)。
wx,wy,wz描述了w轴在(o,x,y,z)坐标系中的各个分量(一长度单位投影)。
Tx,Ty,Tz描述了T点在(o,x,y,z)坐标系中的位置。
1.1 绕X、Y、Z轴的旋转矩阵:
绕X、Y、Z轴旋转矩阵如下所示,其对应矩阵为:
1.2 坐标系统
整个坐标系描述了一个相对于绝对坐标的三维坐标系统(T,u,v,w)。
2. python的pycatia包实现装配体旋转平移操作:
遍历CATIA中已打开装配体的所有组件,将其整体沿x轴旋转90,并沿x轴正方向平移10mm。
from pycatia import catia
from pycatia.product_structure_interfaces.product_document import ProductDocument
from math import sin, cos, radians
def rotation(arr0, arr1, arr2, arr3, arr4, arr5, arr6, arr7, arr8, arr9, arr10, arr11):
caa = catia()
documents = caa.active_document # 激活窗口
doc_com = ProductDocument(documents.com_object) # 接口
product = doc_com.product # 定义对象
# 循环查找装配体下所有组件
for part_ind in range(0, product.products.count):
part_obj = product.get_child(part_ind) # 通过索引获取各个product下各个组件
rotation_obj = part_obj.move.movable_object # 设置旋转对象
# 元组赋值进行夹具单元旋转
rotation_obj.apply(i_transformation_array=(arr0, arr1, arr2, arr3, arr4, arr5, arr6, arr7,
arr8, arr9, arr10, arr11)) # 元组数据类型输入
if __name__ == '__main__':
rotation(1, 0, 0, 0, cos(radians(90)), sin(radians(90)), 0, -sin(radians(90)), cos(radians(90)), 10, 0, 0)