专题栏目
相关文章
没有相关教程
您现在的位置: 数控调查网 >> 软件教程 >> 辅助设计 >> Auto CAD >> 正文
选择AutoLISP还是VBA?
作者:佚名 文章来源:数控调查网 点击数: 更新时间:2007-2-12 2:18:40

LISP没有一些灵活的运行程序或操作菜单,因此它没有这些能力。VBA与VisualLISP争夺的另一领域为数据种类。VBA的数据种类多于VisualLISP,它包括了一些有用的如Date、Time的数据类型。在VisualLISP里日期和时间是用字符串或是数值存储的。在一张图形里,当你通过系统变量存取系统日期信息时,你会得到纯数字而不是日历天数。

在VBA中操作日期和时间是非常容易的,Format函数可以产生几乎任一种描述的格式,你可以用基本的数值来完成比较和区别。你能以某种自定义的格式存储或操作时间信息,方法简单。我听说顽固的AutoLISP程序员声称VBA不支持表处理而LISP支持,这是事实。但VBA不支持Variants类型,Variants与LISP库中的一些数据种类标志十分相似。Variants允许VBA使用不同类型的数据和结构,但不如LISP中的表处理功能强大。表能存储许多种类型的数据且用几行基于MAPCAR、FOREACH、APPLY的代码就可以快速操作它们。但是这些程序设计体系需要时间去掌握,许多程序设计的新手在使用VBA时,将不会遗漏结构的存取。

坦白的说,表处理进程并不像对象操作那样令人感兴趣。在VBA(和VisualLISP)中你能连接其它系统支持的对象。对程序员而言,ActiveX是面向Windows的一个面向对象的过程到过程的通信编程系统,它允许你的VBA程序运行在AutoCAD里,并且可借用Excel或其它一些支持自动操作的程序。因为Excel支持VBA,所以你能在一个Excel工作表中驱动AutoCAD。当你试着思考它时,多自动进程处理有着某些让人敬畏的潜力。

在下载部分的链接里,你会发现两个程序:

一个是在VBA(带有DVB扩展)里的,另一个在VisualLISP(带有LSP扩展)里,这些函数完成相同的事:他们提示用户输入一些定义一个铣槽的参数,并画出这个铣槽,这个铣槽可以放在任何角落且有一个90°的圆角或一个完整的半圆帽。这些例子表明了VBA与VisualLISP运行程序的风格的几个不同点,或许这就是最明显的产生lightweight多义线的的方法,在VBA里,该对象由一系列点确定,雏形产生后,拐点也相应产生了,VisualLISP的例子简单使用PLINE命令去产生点和弧,因为他们可以从命令行提示中配置。从运行程序这一点而言,VisualLISP版本很容易产生,因为你不必知道任何拐点和他们怎样在多义线中使用,在VisualLISP我用EntMake语句,在一个实体列表中确定拐点,这个版本的基本命令很容易编译代码。如果你更深入地学习,你会发现VisualLISP和VBA是十分平衡的,这个的弱项正是另一个的强项。然而VBA支持一些新的理论,对于AutoLISP程序员而然,他的缺点是把一个简单问题复杂化。在大多数情况下,我倾向于VisualLISP,因为它提供了更多的自由度。对于AutoCAD的定制我有许多经验,但有些时候,根据客户需求,我会用VBA,因为对客户而言,其更容易维护。它提供了一些面向自动生成的模板。我的许多客户在定制AutoCAD时,并没有广博的经验,但他们有Basic语言基础,因为这点,他们使用我推荐的VBA。对于不久将需改变的元素的操作,他们感到很轻松。

上面所有的原因,就是我为什么推荐VisualLISP和VBA二者都学的缘故。话又说回来,这还要依据你所使用的工具而定,学会其一,已可以了,但你会错过向另一个方向发展的时间,这是必然的冲突。第一步,你可能从VBA中学习怎样运行LISP语句或者从VisualLISP中学习运行传统VBA的方法。谁知道下一个将会是什么?

从哪里开始

为了决定先学哪一个语言,让我们做一些自我评价:如果你很好地了解了AutoCAD的命令并希望自动使用它们,那么VisualLISP将是你的首选;如果你不懂AutoCAD,但你是一名知道对象是如何工作的计算机程序员,你可以学习VBA;如果你是一名C++程序员,你可以通过学习VBA而了解对象集是怎么结合在一起的,然后花一点时间学习ObjectARX(一个DLLs结构的C++库,运行于AutoCAD自身相同的内存映像),在这篇文章中没有讨论ObjectARX,是因为你必须使用外部的C++编译器,且必须从Autodesk公司获得开发工具包,而AutoCAD2000中直接配有VisualLISP和VBA编译器。

给想学习AutoCAD的人最后一点建议:

寻找那些有范例的书和杂志。

上网查询这些内容,甚至是例子。VisualLISP和VBA的在线帮助常令初学者感到困惑,因为一些函数从VBA中引证,而另一些从VisualLISP中引证。无论你使用哪一个语言,你都有可能有从其它语言里偶然得到帮助的好机遇,因为它们是相关的。因此我强烈推荐看一本或两本书。你有大量选择的自由,多存些好书。

[编者注:有关这些内容推荐两本好书,BillKramer的《AutoLispTreasureChest》;BillKramer和JohnGibb的《UsingVisualBasicwithAutoCAD》(第二版)]

存在着许多选择,每一个都有其优点。无论你先学什么,在某一时间你应当学习所有的东西,为了去追寻更多的知识,这就意味着要不停的编制程序。BillCramer——有着二十多年的运用CAD/CAM/CAE系统的经验,对于代码的更新,可到下载处下载。

上一页  [1] [2] 


免责声明:作品版权归所属媒体与作者所有!!本站刊载此文不代表同意其说法或描述,仅为提供更多信息。如果您认为我们侵犯了您的版权,请告知!本站立即删除。有异议请联系我们。
教程录入:admin    责任编辑:admin 
  • 上一篇教程:
  • 下一篇教程: 没有了
  • 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    |  设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 |