第一篇 初级定制 2
第1章 定制基础 2
1.1 概述 3
1.2 基本需求 4
AutoCAD环境 4
1.3 系统参数文件 8
1.3.1 定义外部命令 8
1.3.2 命令别名 10
1.4 自定义联机文档 11
1.4.1 Windows帮助文件 11
1.4.2 HTML文件 13
1.5 AutoCAD的最优化 15
1.5.1 使用命令行开关 15
1.5.2 使用环境变量 17
1.5.3 系统故障后的恢复 18
1.6 小结 20
1.7 思考与练习 20
第2章 定制图形模板 21
2.1 建立图形模板 22
2.2 标准的图形模板 22
2.2.2 使用Units命令 24
2.2.1 使用对话框 24
2.3 根据打印尺寸和绘图比例定制图形 25
2.4 小结 28
2.5 思考与练习 28
第3章 定制菜单系统 30
3.1 使用菜单文件 31
3.1.1 菜单文件类型 31
3.1.2 位图资源DLL 32
3.1.3 加载菜单文件 32
3.1.4 基本和局部菜单 33
3.2 菜单文件结构 34
3.3 菜单项语法 35
3.3.1 名称标记 35
3.3.2 标签 35
3.3.3 菜单宏 36
3.4 菜单组 44
3.5 按钮和辅助菜单 44
3.5.1 创建按钮和辅助菜单 44
3.5.2 实例说明:按钮和辅助菜单的交换 45
3.6.1 实例说明:下拉菜单的创建 47
3.5.3 反斜杠的特殊用法 47
3.6 下拉菜单和快捷菜单 47
3.6.2 创建快捷菜单 49
3.6.3 下拉菜单栏标题 49
3.6.4 级联子菜单 50
3.6.5 菜单项标签的显示控制 50
3.6.6 引用下拉菜单和快捷菜单 52
3.6.7 下拉菜单的交换和插入 53
3.7.1 创建工具栏 55
3.7 工具栏 55
3.7.2 引用工具栏 57
3.8 图像控件菜单 57
3.8.1 图像控件菜单项 57
3.8.2 显示图像控件菜单 58
3.8.3 实例说明:样板图像控件菜单 58
3.9 实例说明:面向菜单的帮助 60
3.10 加速键 60
3.11 小结 61
3.12 思考与练习 62
第4章 定制线型和填充文件 64
第二篇 中级定制 64
4.1 定义线型文件 65
4.1.1 定义线型 65
4.1.2 简单线型 65
4.1.3 复杂线型 66
4.1.4 加载线型 69
4.2 创建填充图案 70
4.2.1 AutoCAD图案文件acad.pat 70
4.2.2 如何构造填充图案 70
4.2.3 虚线图案 71
4.3 实例:奇怪的杯 73
4.4 小结 74
4.5 思考与练习 74
第5章 形、字体和PostScript支持 76
5.1 使用形文件 77
5.2 编译形或字体文件 77
5.3 创建形定义文件 78
5.3.1 形说明 78
5.3.2 字体说明 84
5.3.3 大字体说明 85
5.3.4 Unicode字体说明 88
5.3.5 高级形定义技术 89
5.4 PostScript支持 90
5.4.1 AutoCAD PostScript的支持文件 90
5.4.2 高级PostScript处理 94
5.4.3 输入PostScript图像 95
5.5 小结 96
5.6 思考与练习 96
第6章 DIESEL表达式语言的应用 97
6.1 状态栏配置 98
6.1.1 MODEMACRO变量 98
6.1.2 定义MODEMACRO 99
6.1.3 用AutoLISP设置MODEMACRO定义 100
6.2 DIESEL表达式在菜单中的应用 102
6.3 DIESEL表达式在AutoLISP中的应用 104
6.4 错误信息 105
6.5 小结 105
6.6 思考与练习 105
第7章 编程接口 106
7.1 命令脚本 107
7.1.1 加载AutoCAD时调用脚本 107
7.1.2 创建幻灯片演示 110
7.2.2 实例:从菜单中启动应用程序 111
7.2 ActiveX Automation 111
7.2.1 从命令行中启动Automation应用程序 111
7.3 AutoCAD VBA 113
7.3.1 用AutoCAD VBA进行开发 114
7.3.2 使用AutoCAD VBA应用程序 114
7.3.3 自动加载和执行VBA工程 115
7.4 ObjectARX 116
7.4.1 使用ObjectARX应用程序 116
7.5 小结 117
7.6 思考与练习 117
7.4.2 自动加载ObjectARX应用程序 117
第三篇 AutoCAD的二次开发 120
第8章 AutoCAD的语言开发环境 120
8.1 语言开发环境概述 121
8.2 AutoLISP语言 121
8.2.1 AutoLISP程序的结构特点 122
8.2.2 AutoLISP的内存分配 123
8.2.3 AutoLISP程序的执行过程 124
8.3 Visual LISP 125
8.4 ObjectARX语言 126
8.6 思考与练习 127
8.5 小结 127
第9章 AutoLISP基础 128
9.1 AutoLISP的表达式和数据类型 129
9.1.1 AutoLISP的表达式 129
9.1.2 AutoLISP的数据类型 130
9.2 加载和运行AutoLISP程序 136
9.3 AutoLISP变量 137
9.3.1 显示变量的值 138
9.3.2 编号处理 138
9.3.3 字符串的处理 139
9.5 思考与练习 140
9.4 小结 140
第10章 AutoLISP语言的相关函数 141
10.1 AutoLISP的赋值与运算函数 142
10.1.1 赋值函数 142
10.1.2 数学运算 143
10.1.3 三角函数 145
10.1.4 逻辑运算 146
10.2 程序分支与循环函数 150
10.2.4 循环函数 151
10.2.3 重复函数 151
10.2.2 分支函数 151
10.2.1 条件函数 151
10.2.5 求多个表达式值的函数 152
10.3 字符串与类型转换函数 152
10.3.1 字符串函数 152
10.3.2 类型转换函数 153
10.4 表处理函数 154
10.4.1 表元素提取函数 154
10.4.2 表的测量、连接与替换函数 155
10.4.3 表元素搜索函数 156
10.5.1 消息的显示 158
10.5 基本输出函数 158
10.5.2 AutoLISP的控制字符 159
10.6 AutoLISP自定义函数 160
10.6.1 defun函数 160
10.6.2 用defun函数定义AutoCAD的新函数 161
10.6.3 lambda函数 161
10.6.4 C:函数 162
10.6.5 添加命令 162
10.7.1 getxxx函数 163
10.7 交互数据输入函数和相关的计算函数 163
10.7.2 表求值函数 167
10.8 与文件有关的函数 169
10.8.1 AutoLISP应用程序加载函数 169
10.8.2 程序函数 169
10.9 其它函数 171
10.9.1 command函数 171
10.9.4 setvar函数 172
10.9.6 type函数 172
10.9.5 osnap函数 172
10.9.3 getenv函数 172
10.9.2 menucmd函数 172
10.9.7 redraw函数 173
10.9.8 error函数 173
10.10 小结 174
10.11 思考与练习 174
第11章 AutoLISP对AutoCAD对象的控制 176
11.1 选择集 177
11.2 选择集函数 178
11.2.1 创建选择集 178
11.2.2 选择集过滤表 179
11.2.3 过滤器表中的通配模式 180
11.2.4 过滤扩展数据 180
11.2.5 过滤器测试的逻辑分组 181
11.2.6 关系测试 182
11.2.7 选择集操作 183
11.2.8 在AutoLISP和ObjectARX应用程序之间传递选择集 184
11.3 对象的处理 184
11.3.1 实体名称函数 184
11.3.2 实体数据函数 189
11.3.3 实体数据函数和图形屏幕 195
11.3.4 老式多段线和优化多段线 196
11.3.5 处理非图形对象 196
11.4 扩展数据xdata 197
11.4.1 组织扩展数据 198
11.4.2 注册应用 200
11.4.3 获取扩展数据 200
11.4.4 在实体上附着扩展数据 201
11.4.5 管理扩展数据使用的内存 202
11.4.6 扩展数据中的句柄 202
11.5.1 符号表 203
11.5 访问符号表和词典 203
11.5.2 词典条目 204
11.6 小结 205
11.7 思考与练习 205
第12章 使用Visual LISP开发程序 206
12.1 控制台的使用 207
12.1.1 理解控制台的工作 207
12.1.2 对多个图形使用控制台窗口 209
12.1.4 记录控制台窗口动作 210
12.1.3 使用控制台快捷菜单 210
12.2 文本编辑器的使用 211
12.2.1 编辑文件 211
12.2.2 使用文本编辑器快捷菜单 212
12.2.3 使用键盘快捷键 212
12.2.4 移动和复制文本 214
12.2.5 查找文本 215
12.2.6 文本书签 217
12.3 使用控制台和编辑器的编码辅助工具 218
12.3.1 Visual LISP代码的语法着色 218
12.3.2 自动匹配的使用 219
12.3.3 VisualLISP的完词功能 221
12.4.1 VisualLISP的代码格式 224
12.4 用Visual LISP设置代码格式 224
12.4.2 应用格式设置选项 227
12.4.3 应用VisualLISP注释样式 228
12.4.4 代码格式编排程序所受的限制 229
12.5 检查语法错误 229
12.5.1 括号匹配检测 229
12.5.2 利用代码着色检测语法错误 231
12.5.3 使用检查命令检查语法错误 231
12.7 思考与练习 232
12.6 小结 232
第13章 应用程序的调试 234
13.1 Visual LISP调试功能 235
13.2 通过实例学习程序调试 235
13.2.1 设置断点中断程序执行 236
13.2.2 单步调试程序 237
13.2.3 监视表达式的求值结果 238
13.2.4 程序的继续执行和自动执行 240
13.3 使用Visual LISP调试功能 240
13.3.3 使用断点 241
13.3.2 理解中断循环 241
13.3.1 开始调试任务 241
13.4 使用Visual LISP数据查看工具 243
13.4.1 使用“Watch”窗口 244
13.4.2 理解“Trace Stack”窗口 245
13.4.3 查看AutoCAD图形实体 249
13.5 小结 252
13.6 思考与练习 252
第14章 编译与维护VisualLISP应用程序 253
14.1.2 通过文件编译程序 254
14.1 程序的编译和连接 254
14.1.1 使用编译器 254
14.1.3 编译实例学习 256
14.1.4 加载和运行已编译程序 257
14.1.5 链接函数调用 258
14.2 创建应用程序模块 258
14.2.1 创建新的应用程序 258
14.2.2 修改应用程序选项 263
14.2.4 更新应用程序 264
14.3 管理多个LISP文件 264
14.2.3 重新编译应用程序 264
14.3.1 理解Visual LISP工程 265
14.3.2 Visual LISP的文件类型 265
14.4 定义工程 266
14.4.1 指定工程属性 266
14.4.2 利用“Project”窗口操作工程文件 269
14.5 使用已存在的工程 270
14.5.1 打开工程 270
14.5.2 在工程源文件中查找字符串 271
14.5.3 在Visual LISP应用程序中包含工程 272
14.6 优化应用的代码 273
14.6.1 定义编译选项 273
14.6.2 选择编译模式 274
14.6.3 选择链接模式 275
14.6.4 理解安全优化 275
14.7 小结 277
14.8 思考与练习 277
第15章 设计对话框 278
15.1 对话框部件 279
15.2.1 base.dcl和acad.dcl文件 280
15.2.2 引用DCL文件 280
15.2 用DCL定义对话框 280
15.2.3 DCL的语法 281
15.3 用VisualLISP显示对话框 283
15.3.1 预览错误处理 285
15.3.2 对DCL文件的语义核查 285
15.4 调整对话框的布局 285
15.4.1 在控件组中分配控件 286
15.4.2 调整控件间距 287
15.4.3 调整右端和底部的空间 287
15.4.5 自定义退出按钮文本 288
15.4.4 调整加框行和列周围的空间 288
15.5 设计指导 290
15.5.1 美观和功效 290
15.5.2 用户控制 290
15.5.3 容错处理 291
15.5.4 单词字母的大写 291
15.5.5 对话框的嵌套和隐藏 292
15.5.6 键盘输入的处理 292
15.5.7 错误处理 292
15.6 实例:对话框的设计 293
15.8 思考与练习 296
15.7 小结 296
第16章 管理对话框 297
16.1 AutoLISP程序控制对话框 298
16.2 动作表达式与回调 300
16.2.1 动作表达式 300
16.2.2 回调原因 301
16.2.3 缺省值与DCL动作 301
16.3 处理控件 302
16.3.1 初始化控件模式和值 302
16.3.2 在回调时改变控件模式和值 302
16.3.3 处理单选控件组 303
16.3.4 处理滑块 304
16.3.5 处理编辑框 304
16.4 嵌套和隐藏对话框 305
16.5 列表框和弹出式列表 308
16.5.1 列表操作 308
16.5.2 处理列表元素 309
16.5.3 特定应用数据 310
16.6 DCL错误处理 310
16.7 实例:用AutoLISP管理对话框 311
16.8 小结 328