【发布时间】:2014-02-04 16:15:14
【问题描述】:
我尝试使用 com4j 获取 Catia 文件的 PartDocument,但是当我获取对象时,它是 Document 对象而不是 PartDocument 对象。因此,我无法访问对象的“部分”方法。我尝试将 Document 转换为 PartDocument,但系统遇到了转换异常。 我尝试过使用 java 7 x86 或 64 并得到相同的结果。
- 我用 生成java代码
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 已构建类,我们有:Document 和 PartDocument(PartDocument 扩展 Document)
-
我的程序代码
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 API,它正在工作。 Document 有一个正确的 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();`
【问题讨论】: