内容简介
《AutoLISP语言程序设计》主要介绍了AutoCAD内部的编程语言AutoLISP,系统而详细地介绍了AutoLISP的各类函数和语法规则。从AutoLISP的数据类型和程序结构入手,循序渐进地介绍了AutoLISP的基本函数、AutoLISP绘图功能、AutoLISP建筑设计制图程序范例等内容。
《AutoLISP语言程序设计》列举了丰富的程序实例,图文并茂,清晰易懂。
《AutoLISP语言程序设计》可作为高等院校建筑学及相关专业的教材,也可供其他从事设计绘图工作、学习AutoLISP语言的有关人员参考,还可作为AutoLISP培训学习的教材。目录
第1章AutoLISP语言概述
1.1AutoLISP语言简介
1.1.1开发AutoCAD的重要工具
1.1.2AutoLISP的特点
1.2AutoLISP数据类型
1.2.1原子(ATOM)
1.2.2表和点对
1.3AutoLISP的程序结构
1.4AutoLISP的运行环境
1.5AutoLISP的内存分配
1.6AutoLISP程序的执行过程
练习题
第2章数值函数
2.1计算函数
2.1.1(+…)
2.1.2(-…)
2.1.3(1+)和(1-)
2.1.4(*…)
2.1.5(/…)
2.1.6(REM…)
2.1.7(GCD)
2.1.8(MAX…)(MIN…)
2.1.9(EXP)
2.1.10(EXPT)
2.1.11(LOG)
2.1.12(SQRT)
2.1.13(ABS)
2.1.14(MINUSP)
2.1.15(ZEROP)
2.1.16(NUMBERP)
2.1.17(FLOAT)
2.1.18(FIX)
2.2布尔运算函数
2.2.1(LOGAND…)
2.2.2(LOGIOR…)
2.2.3(LSH)
2.3三角函数
2.3.1(SIN)
2.3.2(COS)
2.3.3(ATAN[])
2.4综合举例
练习题
第3章表处理函数
3.1提取表中数据的函数
3.1.1(CAR)
3.1.2(CDR)
3.1.3(LAST)
3.1.4(NTH)N=0,1,2,…
3.1.5(LENGTH)
3.2构造和修改表的函数
3.2.1(LIST…)
3.2.2(APPEND…)
3.2.3(CONS)
3.2.4(REVERSE)
3.3提取并修改表中数据的函数
3.3.1(ASSOC)
3.3.2(SUBST)
3.4表的循环处理函数
3.4.1(FOREACH…)
3.4.2(MAPCAR…)
3.5其他表处理函数
3.5.1(MEMBER)
3.5.2(LISTP)
3.6综合举例
练习题
第4章符号和函数处理函数
4.1符号处理函数
4.1.1赋值函数
4.1.2禁止求值函数与再求值函数
4.1.3其他符号处理函数
4.2函数处理函数
4.3综合举例
练习题
第5章AutoCAD函数
5.1GET类输入函数
5.2图形处理函数
5.2.1(POLAR)
5.2.2(DISTANCE)
5.2.3(ANGLE)
5.2.4(INTERS[])
5.2.5目标捕捉函数OSNAP
5.3COMMAND函数
5.4坐标系转换及单位变换函数
5.4.1(TRANSFROMTO[位移量])
5.4.2(CVUNITVALUEFROM-UINTTO-UNIT)
5.5查询和设置系统状态的函数
5.5.1(SETVAR)
5.5.2(GETVAR)
5.5.3(GETENV)
5.5.4(SETCFGCFGNAMEEFGVALUE)
5.5.5(GETCFGCFGNAME)
5.5.6(ACAD_COLORDLGcolornum[flag])
5.5.7(VER)
5.6显示控制函数
5.6.1(GRAPHSCR)
5.6.2(TEXTSER)
5.6.3(TEXTPAGE)
5.6.4(PRIN1[[]])
5.6.5(PRINT[[]])
5.6.6(PRINC[[]])
5.6.7(TERPRI)
5.6.8(MENUCMD)
5.6.9(GRVECSVLIST[TRANS])
5.6.10(VPORTS)
5.7综合举例
练习题
第6章字符串处理函数
6.1字符与ASCII码互换函数
6.1.1(ASCII)
6.1.2(CHR)
6.2数串互换函数
6.2.1(ITOA)
6.2.2(ATOI)
6.2.3(ATOF)
6.2.4(RTOS[[]])
6.2.5(DISTOF[模式])
6.2.6(ANGTOS[模式[精度]])
6.2.7(ANGTOF[模式])
6.3字符串处理函数
6.3.1(STRCAT…)
6.3.2(SUBSTR)
6.3.3(STRCASE[])
6.3.4(STRLEN[字符串]…)
6.3.5(WCMATCH)
6.4尺寸标注方式
6.5综合举例
练习题
第7章判断函数
7.1相等验证函数
7.1.1关系运算函数
7.1.2逻辑运算函数
7.2条件函数
7.2.1(IF是——[])
7.2.2(PROGN…)(该函数也称顺序执行函数)
7.2.3(COND()
7.3循环函数
7.3.1(WHILE[…])
7.3.2(REPEAT…)
7.4函数递归定义
7.4.1递归的概念
7.4.2递归模型
7.4.3递归算法的设计
7.5综合举例
练习题
第8章文件处理函数
8.1搜索、获得文件的函数
8.1.1(FINDFILE)
8.1.2(GETFILED$quot$对话框标题$quot$$quot$文件名$quot$$quot$扩展名$quot$标志值)
8.2打开、关闭文件的函数
8.2.1(OPEN)
8.2.2(CLOSE)
8.3用于文件的输入输出函数
8.3.1(READ[符串])
8.3.2(READ-LINE)
8.3.3(WRITE-LINE)
8.3.4(READ-CHAR)
8.3.5(WRITE-CHAR)
8.4综合举例
练习题
第9章实体和设备访问函数
9.1基本概念
9.1.1实体
9.1.2实体名
9.1.3选择集
9.2选择集操作函数
9.2.1(SSGETstrPtlPt2)
9.2.2(SSGET$quot$x$quot$[])
9.2.3(SSLENGTHs)
9.2.4(SSNAMEn)n=0,1,2,…
9.2.5(SSADD)
9.2.6(SSDEL)
9.3实体名操作函数
9.3.1(ENTNEXT)
9.3.2(ENTLAST)
9.3.3(SSNAME)
9.3.4(NAMEDOBJEICT)
9.3.5(HANDENTHANDLE)
9.3.6(ENTSEL[])
9.4实体数据函数
9.4.1获得实体定义数据函数ENTGET
9.4.2(ENTMOD)
9.4.3(ENTUPD)
9.4.4(ENTMAKE)
9.5对符号表的访问
9.5.1(TBLNEXT[])
9.5.2(TBLSEARCH)
9.6对图形屏幕和输入设备的访问
9.6.1(GRCLEAR)
9.6.2(GRTEXT[])
9.6.3(GRREAD[track][allkeys[curtype]])
9.7综合举例
9.7.1实体名和选择集在开发CAD程序中的实际应用
9.7.2生成局部放大视图的简便方法
9.7.3求圆或圆弧中心线
练习题
第10章建筑设计制图的AutoLISP程序范例
10.1常用建筑设计AutoLISP程序
10.1.1建筑符号设计AutoLISP程序
10.1.2双线墙插门窗AutoLISP程序
10.2墙体设计AutoLISP程序
10.2.1单线墙AutoLISP程序
10.2.2双线墙AutoLISP程序
10.3楼梯设计AutoLISP程序
10.3.1绘制平面楼梯AutoLISP程序
10.3.2剖面楼梯AutoLISP程序
练习题
第11章AutoCAD基本命令
11.1基本图形的绘制
11.1.1绘制直线
11.1.2构造线
11.1.3多线
11.1.4多段线
11.1.5矩形
11.1.6正多边形
11.1.7圆
11.1.8弧线
11.1.9椭圆
11.1.10圆环
11.2基本图形的编辑
11.2.1复制图形
11.2.2移动图形
11.2.3偏移图形
11.2.4旋转图形
11.2.5比例缩放图样
11.2.6图形镜像
11.2.7阵列图形
11.2.8修剪图形
11.2.9延伸和拉伸
11.2.10倒角和圆角
11.2.11分解图块
附录A图形绘制与编辑各命令中英文及简捷命令一览表
附录B联机程序错误代码
附录C标准ASCII码表
附录DAutoLISP函数概要
参考文献精彩书摘
第1章AutoLISP语言概述
1.1AutoLISP语言简介
1.1.1开发AutoCAD的重要工具
LISP(ListProcessingLanguage)是一种计算机的表处理语言,是在人工智能学科领域广泛应用的一种程序设计语言。AutoLISP语言是嵌于AutoCAD内部的计算机语言,它是AutoCAD开放式体系结构的具体表现,它是LISP语言和AutoCAD有机结合的产物。使用AutoLISP可直接调用几乎全部的AutoCAD命令。AutoLISP语言既具备一般高级语言的基本结构和功能,又具有一般高级语言所没有的强大图形处理功能,是当今世界上CAD软件中被广泛采用的语言之一。
美国AutoDesk公司在AutoCAD内部嵌入AutoLISP的目的是让用户充分利用AutoCAD进行二次开发,实现直接增加和修改AutoCAD命令,扩大图形编辑功能,建立图形库和数据库,并对当前图形进行直接访问和修改,开发CAD软件包等。在AutoCAD为用户提供的AutoLISP、ARX、VBA等开发工具中,AutoLISP是一种简便易学的解释性语言,具有很强的数据表处理功能,是开发AutoCAD的一种重要手段。
AutoLISP语言最典型的应用之一是实现参数化绘图程序设计,包括尺寸驱动程序,鼠标拖动程序等。尺寸驱动是指通过改变实体标注的尺寸值来实现图形的自动修改;鼠标拖动即利用AutoLISP语言提供的(GRREAD[])函数,让用户直接读取AutoCAD的输入设备(如鼠标),任选项追踪光标移动存在且为真时,通过鼠标移动光标,调整所需的参数值而达到自动改变屏幕图形大小和形状。
到目前为止,大多数参数化程序都是针对二维平面图编制的。实际上,立体图同样可以实现参数化绘图,在AutoCAD中编制实体的立体图参数化程序比其平面三视图程序更简单,而且立体图生成后,可以很方便地生成三视图、剖面图和轴侧图等。
AutoLISP语言还能够利用PDB函数驱动DCL(DialogControlLanguage)文件创建自己的对话框。