找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

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

CATIA&CAA中如何利用零件中发布(Publication)的几何对象进行装配约束?

[复制链接]
跳转到指定楼层
1
发表于 2005-12-25 11:22:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
CATIA&CAA中如何利用零件中发布(Publication)的几何对象进行装配约束?(以前讨论过的问题,一直未解决,请高手门再关注一下!)
将一个螺栓零件中发布的轴线与用户选择的另一个零件上的孔轴线在程序中添加约束.用方式1时,再调用用 CreateConstraint添加约束,装配树

中可以看到约束被添加上了,但是查看约束属性时,螺栓零件的几何对象类型为"Unknown",故约束无效,实际上我已经将GetFinalObject获得的对

象转为CATLine了啊.而用方式2时,获得的pConnectorAxisOnBolt也不为空,但是用 CreateConstraint添加约束时则出现错误.问题的关键是
CATIPrdObjectPublisher对象的GetFinalObject或GetDirectObject获得的对象到底是什么,如何获得所发布几何对象的装配联接对象

CATIConnector*...请各位高手指教!!不胜感激!
       
        CATIPrdObjectPublisher *pDocPublisher=NULL;       
        rc=piInstanceProd->QueryInterface(IID_CATIPrdObjectPublisher, (void**)&pDocPublisher) ;
        //piInstanceProd为零件插入装配体的装配实例
        if( FAILED(rc) )
        {
                cout << "Error, the CATIPrdObjectPublisher is not found!!!!"<< endl;
                return FALSE;
        }       
       
        CATIConnector* pConnectorAxisOnBolt=NULL;
       
        if(pDocPublisher!=NULL)
        {               
                CATBaseUnknown *pAssObjInPub=NULL;
                CATUnicodeString oSubPublicationName;
                CATISpecObject_var pTestvar(NULL_var);
                if((pAssObjInPub=pDocPublisher->GetFinalObject("BOLT_ASS_AXIS"))!=NULL)       
                //“BOLT_ASS_AXIS”为发布的一个轴线对象
                //if((pDocPublisher->GetDirectObject("BOLT_ASS_AXIS",(CATBaseUnknown*&)pAssObjInPub,oSubPublicationName))==1)
                {                       
                        CATLine *axis;
                        //pAssObjInPub->QueryInterface(IID_CATLine,(void**)&axis);

                        //方式1——————————————————————————————————
                        axis=(CATLine*)pAssObjInPub;
                        pTestvar=axis;
                        CATILinkableObject_var  geometry1;
                        geometry1=pTestvar;
                        int iCreation=0;
                        GetProductConnector(geometry1,
                                                                   piInstanceProd,                                          
                                                                   iActiveComponent,
                                                                   0,
                                                                   pConnectorAxisOnBolt,   
                                                                   iCreation); //获取了pConnectorAxisOnBolt
                        //方式2——————————————————————————————————
                        //pConnectorAxisOnBolt=(CATIConnector *)pAssObjInPub;


                        //查看是否能获得装配连接对象pConnectorAxisOnBolt
                        if(pConnectorAxisOnBolt==NULL)//
                                cout<<"不能发现轴线:BOLT_ASS_AXIS装配连接对象!"<< endl;
                        else
                        {
                                cout <<"发现了轴线:BOLT_ASS_AXIS装配连接对象!"<< endl;
                        }
                        //piInstanceBolt=piInstanceProd;                       
                }
                ......
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2005-12-25 11:24:32 | 只看该作者

以前讨论过的问题

以前讨论过的问题,一直未得到解决,还请各位高手再关注一下,提供一些思路,谢谢!!
3
发表于 2005-12-25 11:39:09 | 只看该作者

请指教

acoka、saeba、 cms_nuaa等CAA高手,请指教!
4
发表于 2005-12-27 17:50:23 | 只看该作者
请大家给点意见啊!谢谢了!
5
发表于 2005-12-28 14:44:12 | 只看该作者

终于解决了

终于解决了,原来需要"折腾"一下:
pConnectorAxisOnBolt=(CATIConnector *)pAssObjInPub;
得到的轴线,或装配面不能直接使用,需下面的代码:
CATILinkableObject_var link1(NULL_var);
pConnectorAxisOnBolt=(CATIConnector *)pAssObjInPub;
link1=pConnectorAxisOnBolt->GiveReferenceObject();
pConnectorAxisOnBolt=GetConnectorByLinkableVar(link1,piInstanceProd,iActiveComponent);
GetConnectorByLinkableVar为自定义函数,就是用GetProductConnector获取CATIConnector *
不知为什么获得的pConnectorAxisOnBolt不能直接使用。我用的零件模型是CATIA自带的模型库,不知是否是模型的问题还是CATIA&CAA(V5R11)的问题。自己做的模型,对于发布的轴线来说或得的pConnectorAxisOnBolt可以直接使用,但是对于发布的平面好象还是不行,还需要这样"折腾"一下。不知为什么,如果哪位高手知道,请告之一下,谢谢!!
6
发表于 2012-10-13 21:51:17 | 只看该作者
和你遇到过同样的问题,也是这样解决的,包括圆心的相合约束。想继续请教:你可以通过轴线找到所在的Component或者零件吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2024-12-22 22:56 , Processed in 0.041919 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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