马上注册,结交更多同行朋友,交流,分享,学习。
您需要 登录 才可以下载或查看,没有帐号?注册
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;
}
...... |