选择AutoLISP还是VBAWord格式文档下载.docx
《选择AutoLISP还是VBAWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《选择AutoLISP还是VBAWord格式文档下载.docx(5页珍藏版)》请在冰豆网上搜索。
如果你懂,那幺VBA
学起来会更快一些;
如不懂BASIC,那幺你学过其它的编程语言吗?
如果
你学的正好是FORTRAN或PASCAL的话,那也很好。
因为如果你已掌握了
这两种语言,则VBA的学习将十分简单。
如果你一点儿也不懂程序设计语
言,那幺AutoLISP将会是适合你学习的语言。
如果你正好没有程序设计的知识和经验,那幺在AutoCAD里你应当学习
什幺语言?
这个问题很难回答。
这取决于你希望完成什幺样的工作?
每种
语言都有其优点和缺点,AutoLISP擅长建立新命令和产生已有命令的连接。
VBA擅长执行包括在其他应用程序中的组件,如Microsoft的Excel和
Access。
AutoLISP是基于表处理的编程体系,它允许程序员随意地存储和
操作传送信息,然而VBA部件包括数据和对复杂情况的各种有效操作,这
就是问题变得复杂的地方,除非你已真正懂得这些工具的好处,否则,很
难回答你应该选择哪一个,但你应当知道你想完成什幺和允许完成什幺,
因为它将引导你向正确的解决方法前进。
专注下一代成长,为了孩子
稍后,你会发现这一简洁的回答是恰当的,你将会学习两种语言,你要
做的一些事,可以在AutoLISP中用十分简单的几行代码来解决。
另一方
面,你会发现VBA提供了一些最简捷的应用程序解决方案。
例如,建立一
个复杂的包括许多对话框的应用,AutoLISP支持对话框,但是不如VBA支
持的程度强,同时,在AutoCAD中一个任务的情况下,VBA提供在对象级
别上访问AutoCAD系统,但它对AutoCAD的一些基本命令的支持性并不是
很好,而AutoLISP在这一点上却做的很好。
这两种语言不具有很好的兼容性,这种情况是必然的,就是说,你不能
把在AutoLISP中写的东西放到VBA中随意使用,反之亦然。
我并不是说
这种情况不可能的,但却是很难以实现。
最低限度是,一但你选择了一种
语言来设计程序,你就不可能中途又用另一种语言来解决程序中的问题,
你不得不继续使用你最初选择的语言。
建立个词汇表
那幺,让我们从学术角度讨论一些两种语言间的不同之处。
前面提到的
AutoLISP是综合了逻辑结构与传统AutoLISP命令的一个完美工具,你能
组合AutoCAD命令并放在一个有条件的逻辑脚本里,而产生强有力的自定
义命令,这些命令能被用于自动操作通常的任务,也能解决计算问题而得
到一个结果。
基于命令种类的思想比目标角度的思想更简单,一个清楚直
接指出不同点的例子:
在一个多义线对象里打断编辑方法。
如果你要打断
一条多义线,你必须先计算并重新更新这个物体,Extend和Trim命令也
一样。
这些命令现在还并不包含在AutoCAD对象系统的实体对象编辑方法
中。
在不久它们会随时出现,这就是对象的好处。
在许多情况下,对象级的处理比命令方式更高级。
当你执行一个命令时,
你有可能可以也有可能不可以直接操作你所选取的对象。
因为你必须依赖
于AutoCAD的对象选择机制。
对象不是模糊不清的。
当你专门指定一个对
象时,对你要操作的对象,它是很清楚的。
对象级别的处理在VisualLISP也可实现。
使用VisualLISP中的(VL)
扩展,你能改变对象的参数且在需要时调用对象的方法。
你不得不使用对
象引用,它可以从已有的实体名或直接产生的对象中生成,在大多数情况
下,一个有经验的AutoLISP程序员不需要使用这些对象,但迟早它们会
派上用场。
VisualLISP的另一优点是比VBA更接近AutoCAD系统。
VBA不是由
AutoCAD产生的,它是在其它的环境下同样工作的一个附加的语言,象
Microsoft的Word和Excel一样。
它也类似于在AutoCAD中用
VB(Visualbasic)语言编制程序的方法。
VisualLISP仅在AutoCAD里运
行,它的优势是软件间有着密切的工作关系。
当在命令行里提示用户时,
你能发现一个不同点的例子。
在VisualLISP里,你可以使用PROMPT或
PRINT语句。
在VBA里,你必须使用Prompt方法,这是优化对象的一部分,
也是绘制对象的一部分,下面的几行代码将对AutoCAD命令行发出一个提
示。
第一行为VisualLISP语言;
第二行用的是VBA。
(Prompt“\nstarting.”)
thisDrawing.Utility.PromptCh$(10)&
“starting”
有两件事显而易见,在VisualLISP里,在命令行窗口中,“\n”使光标
跳到新的一行。
VBA使用Chr$(10)功能,必需把它放在使用“&
”操作
符的提示字符串前才可以运行。
其次是当类型数量相对实用对象的提示方
法接近时,才会使用这个。
在AutoLISP中,可使用PRINT语句,在生成值前,“\n”使顺序转到新
的一行开始。
PRINT的另一个特点是可以输出任何数据类型,而PROMPT功
能只能处理字符串。
在VBA里,对于优化对象的方法和AutoLISP里的“GET×
×
”函数一
样,你必须一直使用字符串。
AutoLISP包括几种不同的把你要使用的数据
类型转化成字符串型的函数。
RTOS把数值型转化成字符串型;
ITOA把数
值型转化成整数型。
VBA提供两个数据转换函数:
STR和FORMAT。
当转化
一个非负数时,STR函数返回一个精确的字符串,即在字符串前加上一个
空格。
这就是,str(-1.1)返回字符串“-1.1”,str(1.1)结果是
“1.1”。
FORMAT允许你设立特别的转换格式。
对正在学习VBA的人,可利
用在线帮助查看有关该函数的帮助,它提供了大量的例子来演示数据是怎
样被转化产生的。
衡量的尺度
对于AutoCAD的定制来说,由于AutoLISP语言是以命令的标准建立的,
这促进了偏向于支持AutoLISP的尺度。
你能使用AutoLISP中带“C:
”
作为新命令名称的头两个字符的方式来定义函数,该命令就像AutoCAD命
令一样使用。
“C:
”函数被叫做“命令函数”。
VBA有宏,你必须从程序管
理器里运行宏。
从命令提示(或普通的macro菜单)里运行不了宏,这就
存在着一个重要问题。
用户可以使用AutoLISP启动VBA程序管理,然后
以相同的方式执行宏。
使用命令行语句时,你应该确信在语句前加了“-”,
格式如下:
command“-VBALOAD”“mymacros”“-VBARUN”“mymacro”
如果你未用此负号,将会出现一个对话框,提示用户装载VBA和运行宏。
在多数情况下用户并不想出现这个对话框。
取而代之的是在命令行装载宏
并用一个VBA模块来运行它,这样,首先出现的是在AutoLISP中很强列
关注的东西,不再仅仅只是一个倾向。
一但一个错误和漏洞发生,就会有
其他相关问题出现,这在编程中并不寻常。
另外一点,VBA允许一个经由AutoLISP启动的过程,VBA还有一个反应
绘图及同时处理多个图形的优良机制。
在VisualLISP里,你能做这些工
作,但在VBA里就不是如此容易了。
其反应的事物与图形连系在一起,甚
至嵌入图形模板中,有多种原因允许你所编程绘制图形。
VisualLISP没有
一些灵活的运行程序或操作菜单,因此它没有这些能力。
VBA与
VisualLISP争夺的另一领域为数据种类。
VBA的数据种类多于
VisualLISP,它包括了一些有用的如Date、Time的数据类型。
在
VisualLISP里日期和时间是用字符串或是数值存储的。
在一张图形里,当
你通过系统变量存取系统日期信息时,你会得到纯数字而不是日历天数。
在VBA中操作日期和时间是非常容易的,Format函数可以产生几乎任一