第一章 简介 1
1.1 为什么要采用LISP 1
1.2 AutoLISP中的数据类型 1
1.3 AutoLISP的求值程序 2
1.4 词法规则 3
1.5 记号约定 4
1.6 最新修改与补充 5
1.7 出错处理 5
第二章 AutoLISP的安装 6
2.1 发行格式 6
2.2 标准的AutoLISP 6
2.2.1 配置 6
2.2.2 环境变量 6
2.3 扩展AutoLISP(Extended AutoLISP) 6
2.3.1 配置 7
2.3.2 环境变量 7
2.3.3 使用扩展AutoLISP 7
2.4 文件“acad.lsp”—自动装入功能 7
第三章 通过绘制花园路径的PATH命令来介绍AutoLISP 8
3.1 预备知识 8
3.2 目标 8
3.3 开始 9
3.4 开始输入 10
3.5 方位输入 12
3.6 绘制砖块 13
3.7 给AutoCAD填加命令 16
3.8 清理显示屏幕 18
3.9 总结 19
第四章 AutoLISP函数 20
4.1 FLATLAND系统变量-与老版本的兼容性 20
4.2 (+<数><数>…) 20
4.3 (-<数><数>…) 20
4.4 (*<数><数>…) 21
4.5 (/<数><数>…) 21
4.6 (=<原子><原子>…) 21
4.7 (/=<原子1><原子2> 21
4.8 (<<原子><原子>…) 22
4.9 (<=<原子><原子>…) 22
4.10 (><原子><原子>…) 22
4.11 (>=<原子><原子>…) 22
4.12 (~<数>) 23
4.13 (1+<数>) 23
4.14 (1-<数>) 23
4.15 (abs<数>) 23
4.16 (and<表达式>…) 23
4.17 (angle<点1><点2>) 24
4.18 (angtos<角>[<方式>[<精度>]]) 24
4.19 (append<表达式>…) 25
4.20 (apply<函数><表>) 25
4.21 (ascii<字符串>) 25
4.22 (assoc<项><关联表>) 25
4.23 (atan<数1>[<数2>]) 26
4.24 (atof<字符串>) 26
4.25 (atoi<字符串>) 26
4.26 (atom<项>) 27
4.27 (Boole<函数><整数1><整数2>…) 27
4.28 (boundp<原子>) 28
4.29 caar、cadr、cddr、cadar等等 28
4.30 (car<表>) 29
4.31 (cdr<表>) 29
4.32 (chr<表>) 29
4.33 (close<文件描述符>) 30
4.34 (command<变元>…) 30
4.35 (cond(<测试1><结果1>)…) 31
4.36 (cons<新的第一个元素><表>) 32
4.37 (cos<角度>) 32
4.38 (defun<符号><变元表><表达式>…) 32
4.38.1 函数库和自动装入 33
4.38.2 C:XXX函数-增加AutoCAD的命令 34
4.38.3 S:XXX函数-自动执行 34
4.39 (distance<点1><点2>) 35
4.40 (eq<表达式1><表达式2>) 35
4.41 (equal<表达式1><表达式2>[<误差量>]) 36
4.42 (eval<表达式>) 36
4.43 (exp<数>) 37
4.44 (expt<底数><幂>) 37
4.45 (findfile<文件名>) 37
4.46 (fix<数>) 37
4.47 (float<数>) 38
4.48 (foreach<名称><表><表达式> 38
4.49 (gcd<数1><数2>) 38
4.50 (getangle[<点>][<提示>]) 38
4.51 (getcorner[<点>][<提示>]) 39
4.52 (getdist[<点>][<提示>]) 39
4.53 (getenv[<变量名>]) 40
4.54 (getint[<提示>]) 40
4.55 (getkword[<提示>) 40
4.56 (getorient[<点>][<提示>]) 41
4.57 (getpoint[<点>][<提示>]) 41
4.58 (getreal[<提示>]) 42
4.59 (getstring[<cr>][<提示>]) 42
4.60 (getvar<变量名>) 42
4.61 (graphscr) 42
4.62 (if<测试表达式><then表达式>[<else表达式>]) 42
4.63 (initget[<字位>][<串>]) 43
4.64 (inters<点1><点2><点3> <点4>[<在线段上>]) 45
4.65 (itoa<整数>) 45
4.66 (lambda<变元><表达式>…) 45
4.67 (last<表>) 46
4.68 (length<表>) 46
4.69 (list<表达式>…) 46
4.70 (listp<项>) 46
4.71 (load<文件名>[<失败时>]) 47
4.72 (log<数>) 48
4.73 (logand<数><数>…) 48
4.74 (logior<数><数>…) 48
4.75 (lsh<数1><位数>) 48
4.76 (mapcar<函数><表1>…<表n>) 48
4.77 (max<数><数>…) 49
4.78 (member<表达式><表>) 49
4.79 (menucmd<串>) 50
4.80 (min<数><数>…) 51
4.81 (minusp<项>) 51
4.82 (not<项>) 51
4.83 (nth<n><表>) 51
4.84 (null<项>) 51
4.85 (numberp<项>) 52
4.86 (open<文件名><方式>) 52
4.87 (or<表达式>…) 53
4.88 (osnap<点><方式串>) 53
4.89 pi 54
4.90 (polar<点><角><距离>) 54
4.91 (prinl<表达式>[(文件描述符>]) 54
4.92 (princ<表达式>[<文件描述符>]) 55
4.93 (print<表达式>[<文件描述符>]) 55
4.94 (progn<表达式>…) 55
4.95 (prompt<信息>) 56
4.96 (quote<表达式>) 56
4.97 (read<字符串>) 56
4.98 (read-char[<文件描述符>]) 56
4.99 (read-line[<文件描述符>]) 57
4.100 (redraw[<实体名>[<方式>]]) 57
4.101 (rem<数1><数2>…) 58
4.102 (repeat<数><表达式>…) 58
4.103 (reverse<表>) 58
4.104 (rtos<数>[<方式>][<精度>]) 58
4.105 (set<符号><表达式>) 59
4.106 (setq<符号1><表达式1>[<符号2><表达式2>]…) 59
4.107 (setvar<变量名><值>) 60
4.108 (sin<角>) 61
4.109 (sqrt<数>) 61
4.110 (strcase<字符串>[<哪一种>]) 61
4.111 (strcat<串1><串2>…) 61
4.112 (strlen<字符串>) 61
4.113 (subst<新项><旧项><表>) 62
4.114 (substr<字符串><起点>[<长度>]) 62
4.115 (terpri) 62
4.116 (textscr) 63
4.117 (trace<函数>…) 63
4.118 (trans<点><从><到>[<位移>]…) 63
4.119 (type<项>) 65
4.120 (untrace<函数>…) 66
4.121 (ver) 66
4.122 (vports) 66
4.123 (while<测试表达式><表达式>…) 67
4.124 (write-char<数>[<文件描述符>]) 67
4.125 (write-line<字符串>[<文件描述符>]) 67
4.126 (zerop<项>) 68
4.127 (*error*<字符串>) 68
第五章 实体和设备的访问 69
5.1 特殊数据类型 69
5.2 选择集操作函数 69
5.2.1 (ssget[<方式>][<点1>[<点2>]]) 69
5.2.2 (sslength<选择集>) 71
5.2.3 (ssname<选择集><索引>) 71
5.2.4 (ssadd[<实体名>[<选择集>]]) 71
5.2.5 (ssdel<实体名><选择集>) 72
5.2.6 (ssmemb<实体名><选择集>) 72
5.3 实体名称函数 72
5.3.1 (entnext[<实体名>]) 72
5.3.2 (entlast) 73
5.3.3 (entsel[<提示>]) 73
5.3.4 (handent<实体标号>) 74
5.4 实体数据函数 74
5.4.1 (entdel<实体名>) 74
5.4.2 (entget<实体名>) 74
5.4.3 (entmod<实体表>) 77
5.4.4 (entupd<实体名>) 78
5.4.5 限制 79
5.5 将实体名称和选择集与AutoCAD一起使用 79
5.6 对处理曲线拟合和样条拟合多义线的说明 79
5.7 符号表访问函数 79
5.7.1 (tblnext<表名称>[<第一个>]) 80
5.7.2 (tblsearch<表名称><符号>[<顺序状态>) 81
5.8 对图形屏幕和输入设备的访问 81
5.8.1 (grclear) 82
5.8.2 (grdraw<起点><终点><颜色>[<加亮>1) 82
5.8.3 (grtext[<框区><文本>[<加亮>]) 82
5..8.4 (grread[<跟踪>]) 83
第六章 内存管理 84
6.1 AutoLISP的内存调整方法 84
6.2 恢复结点空间 86
6.3 页式虚拟存储功能 87
6.4 技术性注释 87
6.4.1 节点空间 87
6.4.2 字符串空间 88
6.4.3 符号存贮 88
6.4.4 人为分配 88
6.4.5 内存统计 90
6.4.6 页式虚存功能 90
符录A 提供的程序 92
A.1 装入程序 92
A.2 运行程序 92
A.3 实用程序 93
A.3.1 3D-Constructing 3D Objects(构造三维物体) 93
A.3.1.1 BOX(盒子)-3D Box or cube(三维盒子或正方体) 94
A.3.1.2 CONE(圆锥体) 94
A.3.1.3 DOME(圆顶)/DISH(圆盘)-多边形网状半球面 95
A.3.1.4 MESH(网格)-Potygon Mesh Hemisphere(简单的平面网格) 96
A.3.1.5 PYRAMID(棱椎体) 96
A.3.1.6 SPHERE(球体) 97
A.3.1.7 TORUS(圆环面) 97
A.3.1.8 WEDGE 98
A.3.2 3DARRAY-三维矩形阵列和环形阵列 98
A.3.3 AFKINET,AFLIX,AFWALK-更新的AutoFlix文件 100
A.3.4 ASCTEXT-从一个ASCII文件中插入文字 101
A.3.5 ASHADEF-更新的“ashade.lsp”文件 101
A.3.6 ATTREDEFF-修改和重新定义属性 102
A.3.7 CHGTEXT-字搜索与替换 102
A.3.8 DELLAYER-删除某一层上的所有实体 102
A.3.9 EDGE-改变 3维面的边界的可见性 102
A.3.10 LEXPLODE-修改过的EXPLODE命令 103
A.3.11 REF-取参考点 103
A.3.12 SETUP-确定绘图比例和范围 103
A.3.13 SSX-简便的(ssgeg″x″) 104
A.4 程序设计举例 105
A.4.1 AXROT-绕某一坐标轴旋转实体 105
A.4.2 CHFACE-移动三维面顶点 105
A.4.3 CL-构造中心点 105
A.4.4 DRAWMAN-关于实体标号的例子 105
A.4.5 FACT-计算阶乘 106
A.4.6 FCOPY-拷贝文本文件 106
A.4.7 FPLOT-画双变量的函数图形 106
A.4.8 FPRINT-在屏幕上显示文本文件 108
A.4.9 PROJECT-三维模型在用户坐标系(ucs)上的投影 108
A.4.10 RPOLY-修整多边形 108
A.4.11 SLOT-构造槽和洞 108
A.4.12 SPIRAL-构造二维螺旋线 109
A.4.13 SQR-计算平方根 109
A.4.14 TABLES-显示/分类符号表 110
附录B:错误信息 111
B.1 用户程序错误 111
B.2 内部错误 115