iCAx开思工具箱

标题: 创建的重心点 不跟着平移面移动? [打印本页]

作者: zsong22    时间: 2012-11-27 15:32
标题: 创建的重心点 不跟着平移面移动?
CATIGSMTranslate_var  gsmTranslate=NULL_var;
        gsmTranslate = pIGSMFactory->CreateTranslate (iSOTranslate2,iGSMDirection,iDistance);//对镜面进行平移;
        CATISpecObject_var iSOTranslate=gsmTranslate;
    iSOTranslate->Update();
    CATIGSMProceduralView_var pvTranslate = iSOTranslate;
    pvTranslate->InsertInProceduralView();
         
//对平移后的镜面进行重心提取   
         CATIGeometricalElement_var spRefFillofGE=iSOTranslate;//传递的是平移面进来         CATBody_var spRefFillbodyofGE=spRefFillofGE->GetBodyResult();
     CATDynMassProperties3D* cFillDynCreateMassProperties3D;  
         CATTopData(cFillTopData);
     cFillDynCreateMassProperties3D=CATDynCreateMassProperties3D(&cFillTopData,spRefFillbodyofGE);
       if(NULL==cFillDynCreateMassProperties3D)
        {
                cout<<"Failed in getting interface CATDynMassProperties3D !"<<endl;
        }
        CATMathPoint Gravity=cFillDynCreateMassProperties3D->GetCenterOfGravity();//获取重心
        double GravCoords[3];
        GravCoords[0]=Gravity.GetX();
        GravCoords[1]=Gravity.GetY();
        GravCoords[2]=Gravity.GetZ();

//显示刚才找到的重心点
                CATIGSMPoint_var gsmGravity= pIGSMFactory->CreatePoint(GravCoords);
                CATISpecObject_var iSOGravity= gsmGravity;
                iSOGravity->Update();
                CATIGSMProceduralView_var pvGravity = iSOGravity;
                pvGravity->InsertInProceduralView();

问题就是  我以这种方式创建的重心点,初始显示是对的  。  但是我在catia里面调整平移面的距离时,这个重心没有跟着过来,还在原地不动。
为什么呢?
依然 谢谢 亲们关注与帮助!{:soso_e176:}
作者: zsong22    时间: 2012-11-27 15:50
就是这样不联动。
作者: linlily0925    时间: 2012-11-27 16:12
CATIGSMPoint_var gsmGravity= pIGSMFactory->CreatePoint(GravCoords);这里就决定了你的点不会跟着变,你新创建的点需要与你的Translate之间产生关联
作者: zsong22    时间: 2012-11-27 16:27
linlily0925 发表于 2012-11-27 16:12
CATIGSMPoint_var gsmGravity= pIGSMFactory->CreatePoint(GravCoords);这里就决定了你的点不会跟着变,你新 ...

我想 GravCoords[3]  这个三维坐标 就是根据  Translate的重心来的,而重心毫无疑问是跟Translate关联的。这样创建的新点就与Translate关联上了 。   
Translate一变化  重心必然变化   重心的坐标一变 GravCoords[3]也就变了  新创建的点也就变了。   

这逻辑似乎有些问题。
但是,我也就会通过坐标创建与驱动一个点   而要把这个点直接与Translate关联,还真不会。
作者: linlily0925    时间: 2012-11-27 16:33
简单来说,你可以创建三个参数表示坐标,这三个参数与重心点关联,~~~然后你再用这三个参数创建一个点
GravCoords[3]是double类型的数组,你是用三个定值创建的点,所以自然不会跟着变
作者: zsong22    时间: 2012-11-27 22:04
linlily0925 发表于 2012-11-27 16:33
简单来说,你可以创建三个参数表示坐标,这三个参数与重心点关联,~~~然后你再用这三个参数创建一个点
Gr ...

CATMathPoint Gravity=cFillDynCreateMassProperties3D->GetCenterOfGravity();//获取重心
CATICkeParm_var iGravX = fact ->CreateReal("X",Gravity.GetX());         
CATICkeParm_var iGravY = fact ->CreateReal("Y",Gravity.GetY());
CATICkeParm_var iGravZ = fact ->CreateReal("Z",Gravity.GetZ());

CATIGSMPointCoord_var gsmGravity= pIGSMFactory->CreatePoint(iGravX,iGravY,iGravZ); 创建点

我不知道 这种方式算不算 你说的用三个参数创建点。   最后测试还是联动不了。10x
作者: linlily0925    时间: 2012-11-28 10:35
你这样也不行,因为你的重心点不会随着图形的改变而改变,邮箱给你发了一个Part文件,你看完文件就明白了~~




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3