激动人心的AutoCAD .net开发技术

自从了解了vstosc(SmartClient)技术后,对以前Win32的二次开发技术,再也没有一点兴趣。对Office VBA,  AutoCAD lisp, VBA,  PowerBuilder PoserScript, MapInfo MapBasic 的开发,简直室深恶痛绝,希望一切能够想VSTO那样,做的那么简洁优美强大。

第一次接触Excel,是在测量数据处理中。但那时不会用,看着同事进行平差,两下子就搞定了。我摸索了一会儿,感觉到Excel很适合二次开发,就想是在二维表格哈桑进行数组运算。看了一下VBA,我马上便了个平差数据处理和水泥沙石头级配的小程序。再后来虽然一直想继续用VBA开发写使用的计算程序(测量平差数据处理,财务数据处理,以及各种表格计算),但感觉到VBA IDE很呆板,资源稀缺,编程模式别扭,一直没有深入。

再学AutoCAD的时候,很看不起它,就想我一直看不起VisualFoxpro,VBA,JavaScript一样,我找遍了每一个角落,也找不出一点有技术含量的吸引我眼球的模特级东东。花了几天时间,照着一本机械制图书,画了一些漂亮的艺术图案和机械零件图之后,在也没有仔细去研究过AutoCAD。然后学VisualLisp程序设计:我一样的讨厌的脚本技术。但是,不得不说的是:虽然我不肯能大量使用这门语言(除非进行一些改革:例如前缀表达式,因为我搞工程比较多,大部分的时间都是科学计算,用前缀太累了),我还是学到了一些从别的语言那里学不来的思想:表。原来,广义表结构,可以实现所有的数据结构和算法(虽然有开发效率和运行效率的问题),完全不同的编程模型,与传统的Basic,C,C++,Fortran,Pascal,Java.C#思维差别很大,也许,以后搞人工智能,有会用到这门语言(和Prolog)。我在上课的时候跟旁边的同学说,我要编一个程序,改变前缀表示法。我首先想到刚学的编译原理,用语法分析,词法分析技术,应该是比较自然的事情,所以我考虑用C++来编写,采用Tree数据结构,但与lisp调用有麻烦。 我认真看了几天的VisualLisp基本知识。最后决定用Lisp来编写。本来,我认为是一个不算很复杂的程序,(因为学了一点编译原理,数据结构(Stack),算法都相好了),但是最后还是花了一个星期才编完,点那我认为那功能还是算满强大的,不仅可以翻译简答的算术和函数表达式,还可以翻译符合数学规则的所有的缩写形式(例如2在数学上表示2×a的2a,就能正确翻译成(× 2 a),这在我所见任何语言中,都没有这个功能,带点原创性。这个程序编完之后,我感觉到lisp只适合研究,不适合开发,尤其是快速开发,而且我当时想到,我可以自己编写一门语言mylisp,把lisp语言中的一些不完美的地方,全部换成自己的语法。我想假设如果AutoCAD一直不提供一个合适的快速开发环境,仅仅式一些vba,lisp,objectArx,这类的低级技术,在我需要的时候,我会真的自己去开发一门我自己的lisp变种XieLisp。

伴随时间的流逝,历史也在前进。

远在昆山的同学让我给编AutoCAD程序,一个简单的sin函数绘制程序,一个缓和曲线绘制和一个横断面绘制程序。那个缓和曲线绘制程序,我用lisp编了一晚上,也没搞定(也不是搞不定,我只要写lisp语句,心里就很生气,很委屈,很不情愿:妈的,我会十几种语言,却要不得不用我最讨厌的看不起的那个)。最后我想还是用C++或者C#,但是同学说有必须用AutoCAD绘制。没办法,我只好上网下载一个AutoCAD,自己慢慢写,就算式死一回(反正痛苦了好几回了)。那也怪,一下子找到了一个网站,提供AutoCAD2006,那下载速度也太快了,311M,竟然几分钟就down下来了。我还真不敢相信!安装的时候,看见要安装提示要安装组件,一确定,竟然式.net framework,可把我给乐坏了。这说明,AutoCAD2006本省即使不基于.net framework,至少也支持.net 二次开发。我马上上网摆度一下AutoCAD .net,果然找到了这方面的资料:Autodesk官方网站 C#开发资料。

我看了一下,很熟悉,醇正的.net语法,而不是象ESRI吹牛dotnet实际上用的是P/Invoke技术(从那以后,我再也不用ESRI的产品,不去关注这个世界上自我吹嘘的老大,我看不起他)。照着便了一个class library,测试了,太好了,我真是爱死它了。

马上就可以用这项技术,可以大大减轻我的工作量,期待已久的技术,能不激动吗?

原文地址:https://www.cnblogs.com/xiexiaokui/p/208548.html