找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 15110|回复: 6
打印 上一主题 下一主题

[原创] 创建的重心点 不跟着平移面移动?

[复制链接]
跳转到指定楼层
1
发表于 2012-11-27 15:32:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
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:}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2012-11-27 15:50:43 | 只看该作者
就是这样不联动。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
3
发表于 2012-11-27 16:12:11 | 只看该作者
CATIGSMPoint_var gsmGravity= pIGSMFactory->CreatePoint(GravCoords);这里就决定了你的点不会跟着变,你新创建的点需要与你的Translate之间产生关联
4
发表于 2012-11-27 16:27:48 | 只看该作者
linlily0925 发表于 2012-11-27 16:12
CATIGSMPoint_var gsmGravity= pIGSMFactory->CreatePoint(GravCoords);这里就决定了你的点不会跟着变,你新 ...

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

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

我不知道 这种方式算不算 你说的用三个参数创建点。   最后测试还是联动不了。
7
发表于 2012-11-28 10:35:41 | 只看该作者
你这样也不行,因为你的重心点不会随着图形的改变而改变,邮箱给你发了一个Part文件,你看完文件就明白了~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-27 14:06 , Processed in 0.031594 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表