我经常需要将 3D 点(x、y、z 数据)导入 CAD 软件 CATIA。目前,我通过使用 java 库创建一个 excel 电子表格来做到这一点,然后从 excel 中执行一个 Visual Basic 宏以将数据添加到 CATIA。现在我不是一个 VB 人,这就是为什么我想跳过 excel 步骤并直接将数据发送到 CATIA。有没有办法做到这一点?也许是一个允许我调用 VB 代码的 java 库?或者也许有一个我可以使用的 CATIA 的 java api?
亲切的问候, MHOOO
除非您有幸拥有 CAA 许可证,否则 CATIA V5 公开的唯一 API 是 VB。好消息是这实际上是一个 COM 接口,您不仅可以从 VBA 调用它,还可以从支持该协议的各种语言调用它。(C++、Python、Java 等)。
对于 Java,您需要一个用于访问 COM 和 CATIA API 的库。对我来说最简单的是 Jacob ( http://danadler.com/jacob/ )。
下面是一些使用 Jacob 的示例代码:
import java.net.UnknownHostException;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
import com.jacob.activeX.ActiveXComponent;
class TestMacroInvocation
{
public static void main( String [] args ) throws Exception
{
ActiveXComponent catia = new ActiveXComponent("CATIA.Application");
catia.setProperty("Visible", new Variant(true));
Dispatch oDocuments = catia.getProperty("Documents").toDispatch();
Dispatch oDocument = Dispatch.call(oDocuments, "Open", "C:\\Users\\Me\\Desktop\\TestRib.CATPart").toDispatch();
Dispatch.call(catia, "StartCommand", "MyMacro");
Dispatch.call(catia, "Quit");
}
这只是使用 CATIA VBA API 的另一种方式,您必须依赖 Dassault Sytèmes 提供的文档。
希望这可以帮助。