AutoLisp程序编(biān)写工(gōng)具LispLink是基于(yú)CAD的(de)一款非常优秀的autolisp程序编写工具,具(jù)有匹(pǐ)配括号(hào)、自动缩进、优化程序格式、语法高亮等(děng)功能,不(bú)仅可以独(dú)立于CAD运行(háng),还可(kě)与lsp文件(jiàn)相关联,方便用(yòng)户进(jìn)行(háng)程序的编辑,是一款操作方便(biàn),功能非常强大的(de)编程工具。
LispLink(AutoLisp程(chéng)序(xù)编写工(gōng)具) LispLink 是一款可独立于 CAD 运行的 AutoLisp 程序编写工(gōng)具,好像也是唯一的一款可与CAD自带的Visual LISP媲(pì)美的工具。它能如(rú)同VL一(yī)样可以将函数、变量、字(zì)符串等(děng)以(yǐ)不同颜色显(xiǎn)示,匹配(pèi)括号,自(zì)动(dòng)缩进,优化程序格式(shì)等,并(bìng)有许(xǔ)多VL没(méi)有的功能:输(shū)入某函(hán)数后,状态栏(lán)上会提示(shì)该函(hán)数的参数的情况,如个(gè)数、类型等,自(zì)定义函(hán)数也可以做到这点,可对lsp文件(jiàn)进行保护,也能打开由其(qí)他软(ruǎn)件加密过的lsp文件,并可以很方(fāng)便的转至每个定义(yì)函(hán)数,这项功能对那些包含多个子函数的程序(xù)文(wén)件特别有用。
1、AutoLISP语(yǔ)言是(shì)在普通的LISP语言基础上,又(yòu)扩(kuò)充了许多适用于CAD应(yīng)用的功(gōng)能(néng)而形成的一种程序设(shè)计语言。它是一(yī)种解释性(xìng)求值语言(yán),速度较(jiào)慢,难以保密(mì),可用任何文字编辑软件编(biān)辑,用纯文本(běn)的格式保存。例如:
(setq i 1);就是代码i值是1
(command "CIRCLE" '(0 0) 100);命令在坐标原点绘制半径100的圆。
2、AutoLISP语言中的一(yī)切成分都是以函数形(xíng)式给出的,它没有语句概念(niàn)或其他语法(fǎ)结(jié)构。执行(háng)AutoLISP程序就是(shì)执行一些函(hán)数,再调用其它函数。例如:
(setq pt1 (getpoint "\n请选择圆心插入点(diǎn)"))
(command "CIRCLE" pt1 100);命(mìng)令(lìng)这个插入点绘(huì)制(zhì)圆,半径为100
3、AutoLISP把数据和程序统一表(biǎo)达为表结构,故可把程(chéng)序当作数据来(lái)处(chù)理,也可(kě)把(bǎ)数据当作(zuò)程序(xù)来执行(háng)。
例如:一条(tiáo)直线,起点坐标'(0 0),端点坐标'(1000 0),图层为0层,颜色为1【红色(sè)】这个是一条(tiáo)直线的一些数(shù)据,怎么执行(háng)变为(wéi)程序代码如(rú)下:
(entmake (list '(0 . "LINE") '(8 . "0") '(62 . 1) '(10 0 0) '(11 1000 0)))
以上(shàng)可以直观的看数据(jù),也可(kě)以(yǐ)粘贴(tiē)到AutoCAD的命令行,就绘制出以上要(yào)求的直线。
4、AutoLISP语言中程序运行过(guò)程就是对函数求值的过(guò)程,是在对函数(shù)求值的过程中(zhōng)实现(xiàn)函数的功能。在(zài)AutoCAD里(lǐ)面,所有的对(duì)象可以看(kàn)成是(shì)由无数的点构成,每(měi)个点都(dōu)有自己(jǐ)的坐标(biāo),函数的运行就是计算出这些(xiē)点的数值,根据(jù)得到的数值进(jìn)行(háng)判断。
5、AutoLISP语(yǔ)言的(de)主(zhǔ)要(yào)控制结构是采用递归方式。递(dì)归方(fāng)式的使(shǐ)用,使(shǐ)得程序设(shè)计简单易懂(dǒng)。例如:
(setq &k1 (entsel));选(xuǎn)择对象
(setq &k1 (car &k1));提取图元
(setq #g1 (entget &k1));取得属(shǔ)性列表
(setq c0 (cdr (assoc 0 #g1)));取(qǔ)得(dé)图元名称
以上是一个个的写下来,可以写成以下:
(setq c0 (cdr (assoc 0 (entget (car (entsel))))));简单易懂
6、由于autolisp简(jiǎn)单,容易,所(suǒ)以上手很快。编写(xiě)程序(xù)后,可(kě)以大大的提高绘图(tú)效率,有名的【天正】插件,就是绘图的好帮手。
7、autolisp程(chéng)序(xù)也有不足的地(dì)方,如提取坐标,这个只能在图元(yuán)属性里面提(tí)取(qǔ),这(zhè)样的话(huà)会有局(jú)限(xiàn)性,法向(xiàng)坐标1与(yǔ)-1的坐标值相同,但是图形的位置不同,造成(chéng)计算坐标的困难,所以提取坐标值,最好使用VLAX函数(shù)来提取。
由于LispLink可独立(lì)与CAD运行,故可与(yǔ)lsp文件相关联,随(suí)时方便对程序(xù)的(de)编辑,这也(yě)是本人一(yī)直使用它的原因。与CAD自家的VL相比,其(qí)不足之处(chù)主要在于其(qí)调试功能,因为AutoLisp最终要在(zài)CAD下使用(yòng)的。可LL与VL结合(hé)使(shǐ)用,平时查看、编写程序时(shí)用LL,最终调试(shì)时则用VL,使两者互补(bǔ)。
