如何使用com4j for java检索CATIA零件对象
我曾尝试使用com4j获取Catia文件的PartDocument,但当我获取对象时,它是一个Document对象,而不是PartDocument对象。因此,我无法访问对象的“部分”方法。我试图将文档转换为PartDocument,但系统出现转换异常。 我尝试过使用Java7x86或64,最终得到了相同的结果如何使用com4j for java检索CATIA零件对象,java,jacob,com4j,catia,Java,Jacob,Com4j,Catia,我曾尝试使用com4j获取Catia文件的PartDocument,但当我获取对象时,它是一个Document对象,而不是PartDocument对象。因此,我无法访问对象的“部分”方法。我试图将文档转换为PartDocument,但系统出现转换异常。 我尝试过使用Java7x86或64,最终得到了相同的结果 我使用 java-jar-tlbimp.jar-OE:\testcatia\src-p catia InfTypeLib.tlb java-jar-tlbimp.jar-OE:\testc
java-jar-tlbimp.jar-OE:\testcatia\src-p catia InfTypeLib.tlb
java-jar-tlbimp.jar-OE:\testcatia\src-p catia-SMTypeLib.tlb
java-jar-tlbimp.jar-OE:\testcatia\src-p catia PartTypeLib.tlb
java-jar-tlbimp.jar-OE:\testcatia\src-p catia CATIAAppTypeLib.tlb
com4j构建了类,我们有:Document和PartDocument(PartDocument扩展Document)
Application-app=COM4J.createInstance(catia.Application.class,“catia.Application”);
Documents docs=app.Documents();
PartDocument partdoc=(PartDocument)docs.open(新持有者(“E:\\test.CATPart”);
Part Part=partdoc.Part();
`ActiveXComponent app =new ActiveXComponent("CATIA.Application");
app.setProperty("Visible", new Variant(true));
Dispatch oDocuments = app.getProperty("Documents").toDispatch();
Dispatch oDocument = Dispatch.call(oDocuments, "Open", "E:\\test.CATPart").toDispatch();
Dispatch oPart = Dispatch.get(oDocument,"Part").toDispatch();
Dispatch oBody = Dispatch.get(oPart,"MainBody").toDispatch();`
您必须使用QueryInterface()
Document doc=docs.open(新的持有者(“E:\\test.CATPart”);
PartDocument part=doc.queryInterface(PartDocument.class);
Document doc = docs.open(new Holder<>("E:\\test.CATPart"));
PartDocument part = doc.queryInterface( PartDocument.class);