![]() |
【转帖】[转帖]为什么要学arx------金建承
[转帖]为什么要学arx------金建承
[转帖]为什么要学arx------金建承 为什么要学arx 金建承 其实在很多情况下你并不一定要学arx。如果想从事autocad二次开发,lisp及vb(vba)就是很好的选择。话虽如此,arx还是有其优点。 在很多书上,总是要对各种开发语言做比较,对于arx,每一本书上都有一个让我哭笑不得的评价,就是说"arx的程序容易造成死机",天啦,这就是arx的唯一缺点?是的,相对lisp和vb(甚至delphi等)其它语言而言,确实arx是无可挑剔的。然而说"arx的程序容易造成死机"我是永远都不会承认的,真正掌握了arx的人是不会说这话的。arx说到底就是vc,就是面向对象,就是类。其实arx的程序是最不易死机的。 还是autocadr12的时候我就选用ads做开发,当时是在dos下的,为了不造成死机,不得不在编译的时候对内存进行跟踪,如果从程序启动到中间做了各种操作,最后关闭程序后,发现内存没有泄漏,那么就不会造成死机了。特别是使用链表的时候,内存处理是要有耐心的。但是到了r0,由于在vc6.0的环境下进行开发,只要有c++的常识,已经是不用进行任何的内存管理了,容易死机之说在我看来是从来都不成立的。 由于arx要经过严格的编译,在试运行的时候如果有问题是真会出问题的,但是只要试运行通过了,以后也就很稳定了,根本就不会造成系统崩溃。 在很多情况下可以用lisp做开发,可以用vba做开发,然而在有两种情况是不合适的。一种是速度要求很高时、另一种是做高档的软件时。比如说最近有人做分形理论仿真,用vba,结果速度慢得要命,还有人做sql数据库接口,用vba,速度也是不能承受。 假设有以下一个项目:你的老板要你把sql数据库、access数据库同autocad联系起来,很多设计参数要能从数据库里自动查找,设计结果要能在pdm软件上自动流览,(做一个autocad与pdm的接口),很多情况下不许运行autocad软件本身,(因为autocad软件只买了有限的几套不能人人都装的),你打算用什么来做呢? 这样的项目当然也是能用vb做的,然而不可否认,用arx最好。特别是,随着社会的进步,autocad本身不适用了,有一天老板要你把以前的二次开发的软件移植到think3(一套高档的三维cad软件)上,那又怎么办呢?在vc下的arx显然更具有可移植性,如果你写程序时就留有一手的话。 lisp本身有很多局限,速度也是有限的,很多书上都这么说,大家也承认。可是对vba,就不太有人明白了。vba是vb的应用程序接口,在word\excell里也有,autocad的vba接口使用相同的原理。在microsoft应用程序中,所有的vba接口都是通过idispatch::invoke进行数据交换的,所有的数据都用variant来转换,而一次这样的调用要花掉0.5ms,microsoft公司已经意识到了这一点,又推出了一种双接口的变种接口用来提高vba的速度,但是至少在vc6.0中还没有支持这种接口,显然autocad0中也不会有支持。 说了这么多,结论是什么呢?如果只是因为爱好,为了更好地使用autocad,或者给autocad做定制,而且你又没掌握c语言,最好是学vba或lisp,因为易学且足够。如果你志存高远,随时想淘汰autocad或站在管理的角度也站在pdm的角度处理问题而不是局限于设计本身,而且还想做出优质的产品来,最好还是学arx。我想如果一个程序员掌握了一定的机械设计知识,一定的数据库知识,一定的管理知识,再同vc\opengl\directx等技术结合起来处理问题,这个人的力量是无穷的,autocad软件本身也会被你早早地扔到垃圾堆里。 个人看法:金老师从程序的鲁棒性、可移植性和速度等方面对autocad的几种开发语言作了比较。个人认为arx的优点在于直接对autocad核心的操纵能力,这点是决定前述特点的根本,其它的语言要么是在某种封装的更高层上对autocad进行操作,要么就是比较适合作图人员作小量的开发。所以,在autocad的.net封装真正变成主流之前,arx还是很好的选择,使用它,能了解部分autocad的核心机制。 这个帖子就不要隐藏了吧 c#最适合开发autocad,因为它拥有vb容易的特点,却具有vc++的强大功能。 呵呵,好的 更多技术文章,请看本人空间: 本人网上书店:,欢迎大家光临,刚开张,众位多多捧场! 终于体现c 的优越性了 以前在学校的时候学的是c++,现在经常用vc编一些小程序。经常看到别人用vb来操作excel,羡慕的要死啊。不知道用vc怎样操作excel? vb操作excel,也是通过com接口来实现的,vc也同样可以做得到! 更多技术文章,请看本人空间: 本人网上书店:,欢迎大家光临,刚开张,众位多多捧场! 这篇文章好像在哪见过,以前多注意,现在又机会回想起来了,多谢了 |
| 所有的时间均为北京时间。 现在的时间是 12:31 AM. |