求助:关于VB.net对AutoCAD进行二次开发的迷茫
<p><font size="3">本人以前采用VB6调用AutoCAD 2004进行二次开发(ActiveX模式),感觉运行速度不快,特别是有一个问题:程序运行过程中用户不能有任何CAD的操作。例如,当程序运行时如果用户使用鼠标对CAD进行缩放或点击时,程序会挂起或者崩溃。</font></p><p><font size="3">最近想针对AutoCAD进行一下二次开发,可能程序的运算工作量会比较大,因此比较在乎运行速度的问题。开发时会使用VB.net 2008针对AutoCAD 2008进行,同时需要兼容AutoCAD 2004版本。</font></p><p><font size="3">在论坛上看到针对AutoCAD开发的工具有很多,很多人反映使用.NET开发是今后的趋势,下载了一些资料和例子初步学习了一下,存在下面的疑惑(本人只关注采用VB.net编程这一方面):<br/>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 二次开发到底有什么区别?是不是同一个东西啊?<br/>2. 网上资料说使用AutoCAD直到2005版本才开始支持VB.net语言+ObjectARX进行二次开发,是否如此?如果是的话,那岂不是我使用vb.net+ObjectARX编的程序不支持AutoCAD 2004了。很是郁闷!<br/>3. 如果实在不行,采用VB.net二次开发又要同时兼容AutoCAD 2008 和2004版本,是不是还得退回到ActiveX模式?<br/>4. 又看到有“.NetARX”,这又是什么东西啊?是可以使用VB.net编程的ObjectArx的缩写?</font></p><p><font size="3">对一些概念不是很懂,也许问题有些凌乱,很抱歉!<br/>非常期待并感谢各位的指点!!!<br/></font></p> <p>.NET API在2005版本开始登场,但2005/6版本的Bug较多,建议从2008版本开始,如果你要开发2004的程序的话,只能选择ObjectArx(C++)或ActiveX接口(VB/VBA/VB.Net)</p><p>AutoCAD .NET API和ObjectARX Managed Wrapper Classes 以及.NetARX 是同一种技术</p><p></p><p></p> <p>用VB操作2004,如果做成DLL的话,速度应该还是可以的,除非程序本身结构不太合理,如果只是显示一个对话框之类的,应该还是很快的。</p><p>ActiveX Dll如果是以模态方式来运行的话,你将无法操作CAD,就跟DCL的对话框一样,如果你用DCL弹出了一个对话框,你也必须先关掉对话框才能操作CAD。</p><p>但如果你对话框也要运行,CAD也要操作,可能要选择非模态方式来运行。当然,这时个你的VB程序就不是CAD窗口的子窗口了,你也可以用SETPARENT这个API来将你的程序设为CAD的子窗口,不过它会遮住CAD的操作窗口,可能会不方便。但一般的来讲,我们都用模态显示就行,运行程序的时候,并不需要去操作CAD。即使用你用。net,速度也并不一定会快(我现在还没有成功的用。net在CAD中运行过可以运行的程序,因为我也是用2004的,可能2004不支持。net。)</p><p>不过楼主说“程序运行过程中用户不能有任何CAD的操作。例如,当程序运行时如果用户使用鼠标对CAD进行缩放或点击时,程序会挂起或者崩溃”,这种情况我倒没有碰到过</p> <p>非常感谢 <font color="#da2549" face="Verdana"><strong>lzh741206</strong><font color="#090909"> 简洁明了的答复!原来如此,豁然开朗啊!</font></font></p><p><font color="#090909" face="Verdana">非常感谢 <font color="#61b713"><strong>英雄无敌 </strong></font><font color="#090909">的热心解答。我在网上看到说</font><font color="#000000">.NetARX是二次开发的趋势,而AutoCAD也在不断升级,由于马上要编的程序在以后很长一段时间都可能会继续修改和修订,所以也想使用发展前景较好的方法来实现。以前使用VB6编了很多程序,但现在我都已经不用VB6而是用VB.NET了。从这个角度而言,我是肯定会使用VB.NET来编程的了。只是,想到要兼容AutoCAD 2004,那岂不是要编制两套程序,晕了晕了! </font></font></p> 楼主能说说什么版本的CAD与.net可以成功配合编程吗?我即便是用AUTOCAD2008与.net 2005,也无法运行一些从网上看到的一些例子,由于无法运行,我也就没有了去学习的兴趣和耐心,所有现在还在采用VB6来做一些程序,我用VB6主要还是做对话框,其它的采用LISP来实现。 <p>可以到Autodesk官方网站下载ObjectArx SDK</p><p><a href="http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=785550">http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=785550</a></p><p>解压后的\samples\dotNet目录下有一些例程,这些例程是可以直接编译运行的</p> <p><font size="3">我从网上(明经论坛和AutoCAD官方站点)下载的一些VB.NET + ObjectARX的例子,运行都没有问题。</font></p><p><font size="3">我用软件是:VS.net 2008(VB.net)(中文版), AutoCAD 2008(英文版)</font></p><p><font size="3">系统是Windows Vista Ultimate x64。 </font></p> <p>谢谢两位,有时间试试,我用的是VS.net 2005 ,或者是版本的问题?</p> <p>按<font face="Verdana" color="#da2549"><strong>lzh741206</strong><font color="#000000">版主的提示下载了一些例子,用VS 2005 +AutoCAD 2008试了试,果然可以运行,非常感谢版主的热心!</font></font></p><p><font face="Verdana">可能是我以前下载的程序都有问题吧,无法通过编译,错误很多,我也不知道怎么去改。</font></p><p><font face="Verdana">终于可以了。</font></p><p><font face="Verdana">也非常感谢楼主,没有你的提问,我也许现在还不知道如何运用呢。不过.net还是比VB要复杂很多,但至少知道如何调用了,以后就慢慢来吧。</font></p><p></p> 你们的讨论对我很有帮助,谢谢
页:
[1]