iCAx开思工具箱

标题: saeba、 acoka兄等CAA高手,请指教! [打印本页]

作者: chengongcumt    时间: 2005-9-5 10:53
标题: saeba、 acoka兄等CAA高手,请指教!
CAA中如何使用Publication(发布)的几何对象来定义装配约束?  
已经获取了CATIPrdObjectPublisher对象,并通过它用GetFinalObject方法获得了装配几何对象,约束也定义成了,但是CATIA中查看约束时,发布对象的类型为“UNKnown”,但是查看对象时已经是那个相应的几何元素了,约束不成功。试图转换GetFinalObject方法所得到的CATBaseUnknown型变量,但是不成功。请各位高手指教!不胜感激!!
作者: xyzhu    时间: 2005-9-5 18:41
你把GetFinalObject方法所得到的CATBaseUnknown型变量转换成什么了?应该是CATIConnector.
作者: chengongcumt    时间: 2005-9-6 08:11
非常感谢!我试试去!
作者: chengongcumt    时间: 2005-9-6 09:44
Publication中GetFinalObject方法所得到的CATBaseUnknown型变量转换成CATIConnector如何实现啊?我用了强制类型转换和QueryInterface方法,好象都不行啊!急!请xyzhu兄解答。谢谢!
作者: acoka    时间: 2005-9-6 13:11
CAADocR15/CAADoc/Doc/online/CAAAuiUseCases/CAAAuiCreateCstOnParts.htm
作者: chengongcumt    时间: 2005-9-6 14:44
acoka兄,CAADocR15/CAADoc/Doc/online/CAAAuiUseCases/CAAAuiCreateCstOnParts.htm中没有关于对Publication中的发布几何对象进行约束的代码啊?
作者: xyzhu    时间: 2005-9-6 15:00
CATIConnector_var spConn = spPub->GetFinalObject(publicationName);
  
应该这样就可以了呀.检查一下Publish或Valuate是否成功
作者: acoka    时间: 2005-9-6 16:14
你CATIPrdObjectPublisher里公开的几何,应该可以看作书签一样,
点spectree上的任何一个,另一个都会一起亮(即使是SubElement)
为了设计上的管理方便,实际业务上使用的时候一般会在option里限制外部autolink限制在被public的范围内
上头那个例子里应该有如何从某个part的面获取CATIConnector的source,
不行可以再参考
C:\CATIAV5R15\CAADoc\CAAAssemblyUI.edu\
里的东西
作者: chengongcumt    时间: 2005-9-6 17:39
我想从CATIPrdObjectPublisher获取几何的,获取了几何就可以获取CATIConnector了,关键好象不好获取CATIPrdObjectPublisher中的几何。谢谢acoka兄。
xyzhu 兄,也谢谢你不耐其烦的为我解答!CATIConnector_var spConn = spPub->GetFinalObject(publicationName); 执行后好象获得的spConn为空啊?
作者: chengongcumt    时间: 2005-9-6 19:54
现在通过GetFinalObject(publicationName)可以得到CATIConnector_var spConn 了,spConn 就可以直接用于装配约束吗?如下例:
  CATIAConstraint *pCst = NULL;
  CATLISTV (CATBaseUnknown_var) ConnectorList;
  ConnectorList.Append(spConn1);
  ConnectorList.Append(spConn2);
  HRESULT rc;
  rc = CreateConstraint(catCstTypeOn,ConnectorList,NULL,iActiveComponent,pCst);
  
其中spConn1、spConn2 为GetFinalObject所得到的两个CATIConnector_var,检测到变量也不为空,但是好象定义约束不成功啊,不知为什么? 请xyzhu 等 帮忙解决!谢谢
   
兄等高手帮忙解决!谢谢!
作者: acoka    时间: 2005-9-6 23:20
你看了上面的从某个part的面获取CATIConnector例子?
  
里头有个.cpp就是从2个part各取1个CATPlane的面,然后建装配约束
你把这2个面替换成你要的东西稍微改一点应该就好用的呀
  
你怎么绕到用automation的interface了?
作者: chengongcumt    时间: 2005-9-7 08:26
acoka兄,我开始是想从CATIPrdObjectPublisher获取几何的,比如平面,获取了几何就可以很容易获取CATIConnector了。关键好象不好获取CATIPrdObjectPublisher中的几何。 CATIPrdObjectPublisher对象的GetFinalObject获得的到底是装配的几何还是xyzhu 兄说的CATIConnector_var 呢?只要能将其转换成其中的一种就可以了。
作者: chengongcumt    时间: 2005-9-7 08:29
而直接从零件模型中找如何找到Publication中发布过的几何对象(如平面、轴线等)呢?
作者: xyzhu    时间: 2005-9-7 21:37
CATIConnector::GiveReferenceObject() --> CATILinkableObject --> QI: CATISpecObject.
建议而已, 我也没试过.
作者: chengongcumt    时间: 2005-12-25 11:36
标题: CAA中如何使用Publication(发布)的几何对象来定义装配约束?
CAA中如何使用Publication(发布)的几何对象来定义装配约束.......
作者: chengongcumt    时间: 2005-12-28 14:45
标题: 终于解决了,原来需要"折腾"一下:
终于解决了,原来需要"折腾"一下:
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可以直接使用,但是对于发布的平面好象还是不行,还需要这样"折腾"一下。不知为什么,如果哪位高手知道,请告之一下,谢谢!!




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