linpao00915 发表于 2012-9-12 09:07:00

.net使用ActiveX外部操作AutoCAD,引用不同CAD版本有没有解决办法

本帖最后由 linpao00915 于 2012-9-12 09:22 编辑

但用到AutoCAD2008或者其它版本就有问题,有没有通用的解决办法
主要是解决2个文件的引用acax17enu.tlb,axdb17enu.tlb
引用CAD2009上面2个文件在CAD2008运行就出现对象未实例化

以下摘自AutoCAD2009帮助文件《ActiveX和VBA开发人员手册》
使用 Microsoft .NET Framework

要通过 Microsoft Visual Studio® .NET 完全访问 AutoCAD Automation 对象,请创建以下文件的引用:



[*]AutoCAD 2009 类型库“acax17enu.tlb”,位于“C:\Program Files\Common Files\Autodesk Shared”目录中。
[*]AutoCAD/ObjectDBX Common 17.0 类型库“axdb17enu.tlb”,位于“C:\Program Files\Common Files\Autodesk Shared”目录中。
这些引用将提供以下主要交互操作部件:Autodesk.AutoCAD.Interop.dll(用于 AutoCAD 专用类型)和 Autodesk.AutoCAD.Interop.Common.dll(用于 ObjectDBXTM 宿主应用程序共享的类型)。Interop 程序集位于全局程序集缓存中,它们会将 Automation 对象映射到 .NET 的对等对象。
引用了类型库之后,可以在 Microsoft Visual Studio .NET 中声明基于 AutoCAD 的变量,如下例所示:
Dim objAcad As Autodesk.AutoCAD.Interop.AcadApplicationDim objLine As Autodesk.AutoCAD.Interop.Common.AcadLine
可以在 AutoCAD 中使用 NETLOAD 命令加载 .NET 应用程序。
要获得有关与 AutoCAD 配合使用 .NET 应用程序的详细信息,请访问 Autodesk 网站的开发人员中心专区。

linpao00915 发表于 2012-9-21 15:47:13

这个问题已经解决:

VB.NET AutoCAD ActiveX Automation外部应用程序控制AutoCAD,使用高版本开发可以用到低版本CAD中,如AutoCAD2009开发,可用到AutoCAD2008使用
使用说明:

[*]新建vb.net windows应用程序项目;
[*]添加引用2个程序集(类库)文件:acax17enu.tlb、axdb17enu.tlb,文件位置在:“C:\Program Files\Common Files\Autodesk Shared”;或者使用下面提供的文件,这里提供的是AutoCAD2009版的。具体详见“使用 Microsoft .NET Framework”一节,引用方法 和“移植工程的方法”。
[*]在“解决方案管理器“==选中”AutoCAD、AXDBLib“两个文件==”嵌入互操作类型“设置为False,”复制本地“设置为True。

      
有关说明:
      嵌入互操作类型:设置为True时,Visual Studio编译时,不打包被引用应用程序项目的类库,即各个独立,利用两都相互通信。这样AutoCAD换台电脑就说没有注册错误。所以必须设置成False,即将AutoCAD类库引用的文件打包到程序中,并复制到本地设置为True,这样高版本开发程序理论里可以兼容低版本的CAD。复制到本地的2文件(Autodesk.AutoCAD.Interop.Common.dll,Autodesk.AutoCAD.Interop.dll)也要同时打包才能用低版本CAD。

lwd899 发表于 2012-10-30 10:12:51

本帖最后由 lwd899 于 2012-10-30 10:27 编辑

可以解决版本限制的问题?这是真的吗,我找这方面的资料时间很长了,楼主有没有示例啊?
另外,我在vs2008里面怎么没有召见“嵌入式互操作”这一项啊?


fubinary 发表于 2014-9-26 21:30:29

我按照楼上方法实施了 一下 行不通 如果改回来就可以
页: [1]
查看完整版本: .net使用ActiveX外部操作AutoCAD,引用不同CAD版本有没有解决办法