我的程序现在通过Automation的方式(我用的C++,不是
VB),能够启动CATIA,并且能依次得到Catia的各级Automation对象:CATIAApplication->CATIADocuments
->CATIADocument->CATIAPart。这些Automation的C++对象不同于CAA C++ API里提供的对象,比如说在CAA C++ API文档里我能
看到的是CATDocument类而不是CATIADocument(在Catia的安装目录下,"CATDocument.h"位于
B13\ObjectModelerBase\PublicInterfaces目录下,而"CATIADocument.h"位B13\InfInterfaces
\PublicGenerated\intel_a目录下),同样对应零件的类CAA C++ API文档里是CATIPrtPart而不是
CATIAPart(在Catia的安装目录下,"CATIPrtPart.h"位于B13\MecModInterfaces\PublicInterfaces
目录下,而"CATIAPart.h"位B13\MecModInterfaces\PublicGenerated\intel_a目录下)。
现在我需要从那些我已经得到的Automation对象中得到CAA C++ API提供的对象:CATDocument或者CATIPrtPart。我试过用CATIADocument和CATIAPart的QueryInterface(IID_CATIPrtPart,...)方法,看上去都没有成功。不知道大家有什么高见?
大家说得有道理,我也发现Automation的 API(C++)和CAA C++ API 不能混用,因为Automation的对象都集成了com对象的特征。看来要在Automation中调用CAA C++ API 写的dll,只能为这些dll编写Automation接口了。不知道大家有没有这方面的经验。