我尝试使用com4j来获取Catia文件的PartDocument,但是当我得到该对象时,它是一个文档对象,而不是一个PartDocument对象。因此,我无法访问对象的“部分”方法。我试图将文档转换为PartDocument,但系统达到了强制转换异常。我尝试过使用java 7 x86或64,并得到了相同的结果。
java -jar tlbimp.jar -o E:\testcatia\src -p catia InfTypeLib.tlb
java -jar tlbimp.jar -o E:\testcatia\src -p catia SMTypeLib.tlb
java -jar tlbimp.jar -o E:\testcatia\src -p catia PartTypeLib.tlb
java -jar tlbimp.jar -o E:\testcatia\src -p catia CATIAAppTypeLib.tlb
com4j已经构建了类,我们有:文档和PartDocument (PartDocument扩展文档)
Application app = COM4J.createInstance( catia.Application.class, "CATIA.Application" ); Documents docs=app.documents(); PartDocument partdoc = (PartDocument) docs.open(new Holder<>("E:\\test.CATPart")); Part part= partdoc.part();异常: com.sun.proxy.$Proxy9不能转换到catia.PartDocument
以前有没有人遇到过这样的问题,如果是这样的话,我将非常感谢有一个解决办法。
我已经尝试过JACOB,而且它正在工作。文档有一个正确的PartDocument实例,但是代码太难操作了
`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();`发布于 2014-02-19 10:24:10
您必须使用QueryInterface (https://com4j.java.net/runtime-semantics.html)
Document doc = docs.open(new Holder<>("E:\\test.CATPart"));
PartDocument part = doc.queryInterface( PartDocument.class);https://stackoverflow.com/questions/21557625
复制相似问题