CATIA二次开发-装配技术

装配对齐1

常用的装配方法中有两种,约束装配和坐标装配。约束装配涉及约束条件在开发中不易操做,坐标装配在开发中只需给定装配位置和矢量方向就能达到装配目的。

CAA开发中提供了CATIMovable接口支持开发者对组件的位置进行设置。开发者通过CATMathtransfomation.SetVector可以设置定位组件的原点,CATMath3x3Matrix.SetThridVector可以设置组件矢量方向。CATMath3x3matrix矩阵同时控制着组件的空间位置、比例。

这里我们便可以提出一个问题,已知装配位置CATMathPoint point1, 已知装配矢量CATMathVector vector1,已知目标组件CATIProduct product1.要求把product1装配到point1沿vector1方向摆放。

处理方法:

1.通过product1 获取CATIMobale接口,进而通过该接口获取和设置原点和向量矩阵。

2.需要把point1转为 CATMathVector.这里的CATMathTransformation.SetVector实际上是设置组件原点,也不知道为什么要这么命名这个方法。

3.需要把vector1转为向量矩阵,也就是得到这个矩阵的三个分量设置给CATMath3x3Matrix.

通过以上处理之后我们可以让product1的正Z方向沿vector1摆放。(这里我需要注明螺栓本身不是沿Z向摆放的,需要让螺栓方向与vector1重合还需要做进一步的处理。)

void SetProductPosition(CATIProduct *product1, CATMathPoint point1, CATMathVector vector1)
{
    CATIMovable *pmovable = NULL;
    product1->QueryInterface(IID_CATIMovable, (void **)&pmovable);
    if(NULL != pmovable)
    {
        CATMathTransformation mathtrans;
	    pmovable->GetAbsPosition(mathtrans);
	    CATMath3x3Matrix matrix;
	    mathtrans.GetMatrix(matrix);
   
        vector1.Normalize();
        CATMathVector xvec, yvec;
        CAA_MATH_ask_vertical_vec(vector1, xvec, yvec);

        matrix.SetFirstColumn(xvec);
		matrix.SetSecondColumn(yvec);
		matrix.SetThirdColumn(vector1);	
        
        CATMathVector orgvec(point1.GetX(), point1.GetY(), point1.GetZ());
        mathtrans.SetVector(orgvec);
        mathtrans.SetMatrix(matrix);
        
        pmovable->SetAbsPosition(mathtrans);
        
        pmovable->Release();
    }

}

装配对齐2

沿上。

有时候我们需要设置的对齐方向不是部件的正Z方向而是自己定义的方向。这里我给出我自己总结出来的处理方法。

1. 在product1 中发布一条直线,该直线作为目标设置值计算参考。

2. 实际上要装配的位置是在上一节之后要旋转的位置。

3. 假设向量vector2是螺栓部件中发布直线的向量值。vector1和vector2叉乘可以得到一个新的向量vector3。vector1所在的矩阵沿向量vector3旋转vector2到vector1的角度。新的矩阵matrix2才是该例子中需要的解。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值