前言
CATIA二次开发请参考:CATIA二次开发简介,注意:引用Catia COM组件的时候勾选所有的CATIA开头的组件即可
一、场景描述
获取已经打开的catia,并调用其保存命令打开保存窗口:
public void OpenCommand()
{
INFITF.Application catiaApp = (INFITF.Application)Marshal.GetActiveObject("CATIA.Application");
catiaApp.StartCommand("保存");
}
报错如下:
若报如下错误则是因为catia未被打开,先手动打开catia即可
二、过程分析
1、通过调试发现执行Marshal.GetActiveObject("CATIA.Application")
报错,那么先排查注册表中有没有名为CATIA.Application的项,win+R输入regedit
打开注册表编辑器,在HKEY_CLASSES_ROOT
项按下键盘字母“C”查找
2、上图所示,注册表没有找到CATIA.Application
项,所以调用com组件的时候找不到命令值,因此需要修复注册表。
三、解决过程
1、在catia安装目录的bin目录下以管理员权限打开cmd,执行cnext /regserver
命令,若安装有多个版本的catia则任选一个版本,这里以catia V5 R18 64位为例:(先关闭所有打开的catia)
2、再重复步骤1查看注册表,已经可以看到CATIA.Application项
3、打开Catia 新建一个装配,启动二次开发测试程序,弹出保存窗口即运行成功。