• 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://1001night.blogbus.com/logs/2622227.html

         从我第一次考虑CAD二次开发这件事到现在小有成果,居然消耗了三年的时间,真是惭愧之极。从这件事上,可以清楚的看出我是个懒惰的家伙。
            起先是三年前,某一次公司同事外出活动。因为已经工作一段日子,大家对我会编程的事有所耳闻(其实是我自己吹出去的),于是在饭桌上有同事就说,小杨你不是会编程嘛,能不能做几个工具,让我们画图快一点,提高些效率。接着就讨论起如果程序做好了,能有怎样的好处。一伙人扯啊,什么科技进步奖啊,青年人才啊,伯乐啊,论文啊,仿佛东西已经在眼前,可以享受成果了。我受了鼓动,想想自己也号称会编程。学了这么多年了,除了照着书上的例子,什么也没编出来过,名声都快臭了。怎么着我也是生产第一线的同志,熟悉操作流程。要是对熟悉的流程加以改进,结合专业搞点东西出来,利人利己啊,于是就点头答应了。不过我也知道自己不是那种每日代码3万行的牛人,所以预先声明,由于难度比较高,又是一个人搞,所以请大家不要着急。同志们点头称是,皆表示可以耐心等待。
        接着,就开始了。第一步是要知道要做什么。当然是做个程序啦,什么功能呢,最迫切的一个功能是要统计材料。我们平常的工作之一是画施工图,其中统计最终所需要的材料是个重头戏。如果材料统计不准确,会直接影响后续的费用招标等多项工作。因此,不论是设计还是校对,都要仔细的检查统计数量。统计也就成为最消耗时间的环节之一,如果能用程序完成的话,绝对可以大大提高效率。
     接下来,做独立的程序还是做CAD的二次开发呢。独立程序就是平常的应用程序,制作很方便。我花了点时间制作了一个Demo,虽然不是完全版,但主要功能也算齐全,试用之后发现不合适。你想,画着画着突然从CAD跳出来,用计算器来算点什么,再回到CAD,着实让人不爽。使用习惯还是其次,数据传送更让人头痛。Demo是依靠人工输入的,如果要做自动化,势必要从CAD读取数据,之后可能还要写回,这里面涉及数据的格式传递安全性等很多细节。仔细权衡之后,我试着做CAD的二次开发。二次开发是指在程序已有的基础上再次开发。那些后开发的程序,不能独立运行,必须在原程序的环境中动作,共享他的指令、界面和数据,输入输出都依靠原程序,你可以称他们为插件也可以叫MOD包。目前越来越多的程序仿效了这种主程序加插件的方式,比如AutoCAD、firefox等等,连IE也学这招,而最著名的插件莫过于半条命的MOD包——反恐精英CS了。可见这确实是杰出而有效的设计。Autodesk公司的AutoCAD系列产品其强大之处就在于,除了本身强大的功能,他还提供强大的二次开发能力,使得各种各样特殊的行业应用都可以和CAD整合在一起。例如著名的天正系列软件,那就是在CAD上进行的二次开发,是CAD的功能专业化扩充,充分利用CAD的功能,也照顾用户的习惯,在市场上受到极大的欢迎。 考虑到二次开发既可以照顾用户习惯,又能在数据传输、指令获得和结果表示等方面快速实现,我决定用它。
        接下来就是决定怎么实现。查阅资料后知道,AutoCAD为了让不同程度的用户能够充分的使用,自如的开发自己想要的功能,提供了很多方案。既有容易上手的,也有很难学习的,既有速度缓慢功能低下的,也有运行如飞无所不能的。但是一个原则,容易学习的,功能就比较弱,越是困难的不好掌握的,功能越强大。这很容易明白,正因为强大,才难以掌握。CAD提供的几种开发方式有,AutoLisp、VisualLisp、ADS、VB、ActiveX、ObjectARX等等。其中ObjectARX使用C++语言,功能最强大,但也最难以掌握。考虑到我还算了解C++,再加上想要挑战自己,于是我决定,就用ObjectARX。其实到后来我还是发现对于我的简单应用,直接用VisualLisp要方便的多
        然后就是找资料。开发工具、开发包、帮助的文档、示例程序,在那段身边还没有宽带的日子里,找齐这些东西还真花了我不少时间,大概是小半年吧。
        之后,就开始了所谓的开发。

    收藏到:Del.icio.us