明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3550|回复: 9

求助:关于VB.net对AutoCAD进行二次开发的迷茫

[复制链接]
发表于 2010-1-16 13:43:00 | 显示全部楼层 |阅读模式

本人以前采用VB6调用AutoCAD 2004进行二次开发(ActiveX模式),感觉运行速度不快,特别是有一个问题:程序运行过程中用户不能有任何CAD的操作。例如,当程序运行时如果用户使用鼠标对CAD进行缩放或点击时,程序会挂起或者崩溃。

最近想针对AutoCAD进行一下二次开发,可能程序的运算工作量会比较大,因此比较在乎运行速度的问题。开发时会使用VB.net 2008针对AutoCAD 2008进行,同时需要兼容AutoCAD 2004版本。

在论坛上看到针对AutoCAD开发的工具有很多,很多人反映使用.NET开发是今后的趋势,下载了一些资料和例子初步学习了一下,存在下面的疑惑(本人只关注采用VB.net编程这一方面):
1. 使用VB.net语言,在二次开发手段上好像可以采用ActiveX模式、AutoCAD .NET API和ObjectARX Managed Wrapper Classes。我现在的目标放在AutoCAD .NET API和ObjectARX这两个上面。使用ObjectARX Managed Wrapper Classes 时需要引用acdbmgd.dll和acmgd.dll这两个DLL。但我下载的Autodesk官网ObjectArx2010 Sdk的.Net API例子中也是引用了上述两个DLL。因此问题是:使用VB.net语言利用AutoCAD .NET API和ObjectARX Managed Wrapper Classes 二次开发到底有什么区别?是不是同一个东西啊?
2. 网上资料说使用AutoCAD直到2005版本才开始支持VB.net语言+ObjectARX进行二次开发,是否如此?如果是的话,那岂不是我使用vb.net+ObjectARX编的程序不支持AutoCAD 2004了。很是郁闷!
3. 如果实在不行,采用VB.net二次开发又要同时兼容AutoCAD 2008 和2004版本,是不是还得退回到ActiveX模式?
4. 又看到有“.NetARX”,这又是什么东西啊?是可以使用VB.net编程的ObjectArx的缩写?

对一些概念不是很懂,也许问题有些凌乱,很抱歉!
非常期待并感谢各位的指点!!!

发表于 2010-1-16 13:55:00 | 显示全部楼层

.NET API在2005版本开始登场,但2005/6版本的Bug较多,建议从2008版本开始,如果你要开发2004的程序的话,只能选择ObjectArx(C++)或ActiveX接口(VB/VBA/VB.Net)

AutoCAD .NET API和ObjectARX Managed Wrapper Classes 以及.NetARX 是同一种技术

发表于 2010-1-16 16:35:00 | 显示全部楼层

用VB操作2004,如果做成DLL的话,速度应该还是可以的,除非程序本身结构不太合理,如果只是显示一个对话框之类的,应该还是很快的。

ActiveX Dll如果是以模态方式来运行的话,你将无法操作CAD,就跟DCL的对话框一样,如果你用DCL弹出了一个对话框,你也必须先关掉对话框才能操作CAD。

但如果你对话框也要运行,CAD也要操作,可能要选择非模态方式来运行。当然,这时个你的VB程序就不是CAD窗口的子窗口了,你也可以用SETPARENT这个API来将你的程序设为CAD的子窗口,不过它会遮住CAD的操作窗口,可能会不方便。但一般的来讲,我们都用模态显示就行,运行程序的时候,并不需要去操作CAD。即使用你用。net,速度也并不一定会快(我现在还没有成功的用。net在CAD中运行过可以运行的程序,因为我也是用2004的,可能2004不支持。net。)

不过楼主说“程序运行过程中用户不能有任何CAD的操作。例如,当程序运行时如果用户使用鼠标对CAD进行缩放或点击时,程序会挂起或者崩溃”,这种情况我倒没有碰到过

 楼主| 发表于 2010-1-16 20:11:00 | 显示全部楼层

非常感谢 lzh741206 简洁明了的答复!原来如此,豁然开朗啊!

非常感谢 英雄无敌 的热心解答。我在网上看到说.NetARX是二次开发的趋势,而AutoCAD也在不断升级,由于马上要编的程序在以后很长一段时间都可能会继续修改和修订,所以也想使用发展前景较好的方法来实现。以前使用VB6编了很多程序,但现在我都已经不用VB6而是用VB.NET了。从这个角度而言,我是肯定会使用VB.NET来编程的了。只是,想到要兼容AutoCAD 2004,那岂不是要编制两套程序,晕了晕了! 

发表于 2010-1-17 09:05:00 | 显示全部楼层
楼主能说说什么版本的CAD与.net可以成功配合编程吗?我即便是用AUTOCAD2008与.net 2005,也无法运行一些从网上看到的一些例子,由于无法运行,我也就没有了去学习的兴趣和耐心,所有现在还在采用VB6来做一些程序,我用VB6主要还是做对话框,其它的采用LISP来实现。
发表于 2010-1-17 10:17:00 | 显示全部楼层

可以到Autodesk官方网站下载ObjectArx SDK

http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=785550

解压后的\samples\dotNet目录下有一些例程,这些例程是可以直接编译运行的

 楼主| 发表于 2010-1-17 12:46:00 | 显示全部楼层

我从网上(明经论坛和AutoCAD官方站点)下载的一些VB.NET + ObjectARX的例子,运行都没有问题。

我用软件是:VS.net 2008(VB.net)(中文版), AutoCAD 2008(英文版)

系统是Windows Vista Ultimate x64。

发表于 2010-1-18 08:06:00 | 显示全部楼层

谢谢两位,有时间试试,我用的是VS.net 2005 ,或者是版本的问题?

发表于 2010-1-18 08:54:00 | 显示全部楼层

lzh741206版主的提示下载了一些例子,用VS 2005 +AutoCAD 2008试了试,果然可以运行,非常感谢版主的热心!

可能是我以前下载的程序都有问题吧,无法通过编译,错误很多,我也不知道怎么去改。

终于可以了。

也非常感谢楼主,没有你的提问,我也许现在还不知道如何运用呢。不过.net还是比VB要复杂很多,但至少知道如何调用了,以后就慢慢来吧。

发表于 2010-4-10 06:25:00 | 显示全部楼层
你们的讨论对我很有帮助,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 20:46 , Processed in 0.158566 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表