在用.net进行AutoCAD、SolidWorks、SolidEdge等的二次开发过程中,通过程序连接这些设计软件时可能会出现如下错误:“无法创建ActiveX组件”。至于出现此错误的原因,还有待于进一步研究(也希望前辈能指点一二)。
解决方法:还没有从根本上解决此问题的方法
1、通过进程启动法
a)通过进程启动模板法
大家都知道,打开模板时必定会同时打开此应用程序,所以,先找到应用程序的安装目录,找到Template子文件夹,里面一般会有一个Normal模板,通过程序打开此模板即可打开此应用程序。
程序如下:
If Err.Number Then
Err.Clear()
Try
'定义一个进程
Dim cadprocess As New Process
'进程启动模板
cadprocess.Start("D:/Program Files/AutoCAD 2006/Temlate/acadiso.dwt")
'创建应用程序进程
'cadApp = CreateObject("AutoCAD.AcadApplication")
Catch ex As Exception
If Err.Number Then
MsgBox("不能启动AutoCAD,请检查是否安装!或文件路径是否正确!")
End If
End Try
End If
(从朋友拜秋哪里获悉,感谢之。。。)
b)通过进程打开可执行文件
找到安装目录下,查看.exe可执行文件。记录下此目录,运行下面的程序即可。
If Err.Number Then
Err.Clear()
Try
'定义一个进程
Dim cadprocess As New Process
'进程启动可执行文件
cadprocess.Start("D:/Program Files/AutoCAD 2006/acad.exe")
'创建应用程序进程
'cadApp = CreateObject("AutoCAD.AcadApplication")
Catch ex As Exception
If Err.Number Then
MsgBox("不能启动AutoCAD,请检查是否安装!或文件路径是否正确!")
End If
End Try
End If
2、正常启动应用软件的方法
Dim cadApp As AcadApplication
'获得应用程序进程
cadApp = GetObject(, "AutoCAD.AcadApplication")
If Err.Number Then
Err.Clear()
Try
'定义一个进程
Dim cadprocess As New Process
'进程启动可执行文件
'cadprocess.Start("D:/Program Files/AutoCAD 2006/acad.exe")
'创建应用程序进程
cadApp = CreateObject("AutoCAD.AcadApplication")
Catch ex As Exception
If Err.Number Then
MsgBox("不能启动AutoCAD,请检查是否安装!或文件路径是否正确!")
End If
End Try
'软件可见
cadApp.Visible = True
'软件成最大化状态
cadApp.WindowState = Common.AcWindowState.acMax
'显示软件界面
AppActivate(cadApp.Caption)
End If
但此方法会出现“无法创建ActiveX组件”错误,有人提示说是防火墙和杀毒软件作怪,我试过,未果。有何良策请与我联系。qq:35894842
至于solidworks、solidedge等软件,方法类似。
当然连接应用软件之前,必须先引用其Com组件,如AutoCAD的二次开发中,需要引用AutoCAD 200x Type Library和AutoCAD ObjectDBX Common 16.0 Type Library。并在程序的开头“imports AutoCAD” (VB.net)或者“Using AutoCAD”(C#.net)
2006-5-31添加:在AutoCad二次开发中出现“无法创建ActiveX组件”错误的原因在于GetObject方法参数不正确的原因,而直接用Create("AutoCAD.Application")(在AutoCad2000中)则可以创建并打开CAD,GetObject方法中的类名参数该如何选取,还正在进一步研究之中。。。