目录 1
第一篇 AutoCAD R12开发指南 1
第1讲 AutoCAD的开放式体系结构 1
1.1 用户化内容 1
1.2 图形数据交换能力 3
1.3 AutoLISP程序设计语言 3
1.4 AutoCAD开发系统(ADS) 4
1.5 外部命令与AutoCAD应用程序的区别 4
1.6 实体句柄和扩充实体数据 4
第2讲 AutoCAD R12新增的开发工具 6
2.1 对话框控制语言(DCL) 6
2.2 光栅图象文件输入输出 .. 7
2.3 ASE数据库接口技术 9
第二篇 AutoCAD R12标准库文件开发工具 12
第3讲 怎样设定AutoCAD环境 12
3.1 AutoCAD目录及环境变量 12
3.1.1 ACAD环境变量 13
3.1.2 ACADDRV环境变量 13
3.1.3 ACADCFG环境变量 13
3.1.4 AVECFG环境变量 14
3.2 用户自定义库 14
3.3 如何使用样图及其目录 15
3.4 求助文件用户化 15
3.5 信息文件用户化 16
3.6 出图配置参数文件 16
3.6.2 PCP文件自定义 17
3.6.1 建立PCP文件 17
3.7 程序参数文件和命令重新定义 19
3.8 命令重新定义 21
第4讲 AutoCAD库文件用户化 22
4.1 线型和剖面线定义 22
4.1.1 线型库的建立或修改 22
4.1.2 剖面线库的建立 23
4.2 符号和字型库定义 24
4.2.1 符号和字型库的使用 24
4.2.2 形文件的定义格式及其编制 25
4.2.3 如何定义汉字、创建中文字体库 26
4.3 用户菜单设计 29
4.3.1 菜单项定义语法 30
4.3.2 按钮菜单和辅助菜单 34
4.3.3 屏幕菜单 35
4.3.4 下拉/光标菜单 37
4.3.5 图标菜单 41
4.3.6 AutoLISP在菜单中应用 43
4.3.7 如何建立幻灯片库 43
4.3.8 编制一张电路图设计用的菜单 45
4.4 Script命令组文件 47
4.4.1 DELAY命令 47
4.4.2 RESUME命令 48
4.4.3 Graphscr和Textscr命令 48
4.4.4 RSCRIPT命令 48
4.5.1 状态行配置 49
4.5 DIESEL—字串表达式语言 49
4.5.2 DIESEL菜单应用 51
4.5.3 DIESEL调试方法 52
4.5.4 DIESEL函数 52
第5讲 怎样设计和开发你自己的对话框 56
5.1 对话框的成分及属性 57
5.1.1 何谓“控件(Tile)”和“集控(Cluster)” 58
5.1.2 控件属性(Attributes) 60
8.5.2 文字框函数 (1 64
5.1.3 预定义控件/属性及其设计原则 65
5.2 DCL对话框定义文件的编制方法 76
5.2.1 DCL文件的组织 77
5.2.2 DCL语法 78
5.2.3 DCL对话框设计技术 81
5.2.4 对话框设计的一般性原则 86
5.3 AutoCAD PDB可编程对话框工具 91
5.3.1 对话框管理函数一览表 93
5.4 AutoLISP和ADS对话框管理程序设计技术 103
5.4.1 一个处理对话框的编程实例 103
5.4.2 对话框管理函数的使用规则 105
5.4.3 关于对话框的ADS定义和说明 115
5.4.4 如何处理控件 117
5.5 用户对话框设计举例 129
5.5.1 实例:块定义对话框 129
6.1.1 支持文件 130
6.1.2 acad.psf文件格式 130
第6讲 外部图形文件支持 130
6.1 PostScript(打印机页面描述语言)文件 130
6.1.3 PSOUT命令的实体表示 134
6.1.4 高级的PostScript操作 135
6.1.5 PostScript解释程序 135
6.1.6 字体映像文件 136
6.1.7 PostScript字体编译 136
6.1.8 颜色转换 137
6.1.9 出错信息 137
6.2 IGES(初始图形交换规范)文件 137
6.2.1 实体转换概述 138
6.2.2 IGESOUT命令 142
6.2.3 IGESIN命令 148
7.1.1 符号 152
7.1.2 表 152
第7讲 AutoLISP基本知识 152
7.1 AutoLISP数据类型 152
第三篇 AutoLISP R12编程方法及实例 152
7.1.3 字符串 153
7.1.4 整数 153
7.1.5 实数 153
7.1.6 文件描述符 153
7.1.7 实体名 153
7.1.8 选择集 153
7.1.9 子程序和外部子程序 154
7.1.10 AutoLISP表达式 154
7.2 AutoLISP程序文件结构 156
8.1.2 暂停等待输入 157
8.1.1 命令方式输入 157
第8讲 AutoLISP一般函数及其使用 157
8.1 有关AutoCAD命令的函数 157
8.1.3 系统变量的存取 158
8.1.4 目标捕捉函数 158
8.2 用户交互输入函数 158
8.2.1 用户输入函数 158
8.2.2 用户输入控制函数 160
8.3 数据类型转换函数 161
8.3.1 串/数转换函数 161
8.3.2 世界单位转换函数 163
8.4 文件操作函数 163
8.4.1 FINDFILE函数 163
8.4.2 GETFILED函数 163
8.5 几何实用函数 164
8.5.1 几何计数函数 164
8.6 坐标系统变换 165
8.7 屏幕操作函数 166
8.7.1 高级屏幕函数 166
8.7.2 低级屏幕函数 167
8.8 显示控制函数 167
8.8.1 屏幕输出函数 167
8.8.2 menucmd函数 167
8.9 函数定义与加载 169
8.10 自编一个交线绘图程序 170
9.1.1 选择集的构造方式 172
9.1 选择集操作函数 172
第9讲 专用AutoLISP函数介绍 172
9.1.2 选择集处理函数 173
9.2 实体处理函数 174
9.2.1 实体名处理函数…………………………………………… 174
9.2.2 实体名处理函数扩充部分 175
9.2.3 实体数据处理函数 175
9.3 实体句柄及用途 177
9.4 扩展实体数据 177
9.4.1 扩展实体数据的组织 178
9.4.2 扩展实体数据登记 178
9.4.4 扩展实体数据加入 179
9.4.5 扩展实体数据内存管理 179
9.4.3 扩展实体数据存取 179
9.4.6 扩展实体数据句柄 180
9.5 符号表存取 180
9.6 定义一个SCISSORS(剪刀)命令 181
第四篇 怎样用C语言开发ADS应用程序 183
第10讲 何谓“ADS” 183
10.1 开发ADS应用程序的环境要求 183
10.1.1 ADS的高度兼容性 184
10.1.2 ADS目标库和头文件 184
10.1.3 标准外部应用程序的可编程接口 185
10.2 ADS应用程序的启动、运行及退出 185
10.2.1 ADS应用程序的编译和链接 185
10.2.2 加载ADS应用程序 187
10.2.4 卸载ADS应用程序 188
10.2.5 在AutoCAD初始化时自动加载ADS应用程序 188
10.2.3 运行ADS函数 188
10.3 ADS调用与AutoLISP调用的异同 189
10.3.1 LISP和C的参数表 189
10.3.2 关于内存的考虑 189
10.3.3 ADS与AutoLISP调用之间的比较 190
10.4 AutoCAD R12版ADS功能增强 190
第11讲 ADS应用程序设计方法 192
11.1 ADS应用程序框架 192
11.2 ADS与AutoLISP之间的通信机制 194
11.2.1 AUTOLISP请求码 194
11.2.2 ADS应用程序的结果码 195
11.3.2 引用外部函数 196
11.3.1 定义外部函数 196
11.3 外部函数 196
11.4 出错处理 197
11.5 应用程序之间的联系 198
11.6 处理外部应用程序 201
11.7 函数返回值与函数结果参数 202
11.8 ADS中定义的变量、类型和代码 203
11.8.1 一般类型和定义 203
11.8.2 有关结果缓冲区有关的定义和代码 207
11.8.3 请求码、结果码和库函数返回码 210
11.8.4 有关ADS的全程变量 211
11.8.5 ADS中的表和动态数据 212
12.1 从访问AutoCAD系统资源谈起 218
12.1.1 直接执行AutoCAD命令 218
第12讲 举例分析ADS图形函数功能 218
12.1.2 获取或修改系统变量 219
12.1.3 文件搜索功能 220
12.1.4 存取AutoLISP符号值 221
12.1.5 目标捕捉功能 222
12.1.6 获取视窗描述表 222
12.2 如何获取常用的几何量 223
12.3 检索文本对话框坐标 223
12.4 交互式数据及其初始化 226
12.4.1 ads_getxxx()用户输入函数 226
12.4.2 ads_initget的输入选项 227
12.4.3 用户中断查询 230
12.6.1 字符串转换 231
12.6 数据类型和单位转换函数 231
12.5 将ADS函数值回送给AutoLISP 231
12.6.2 单位转换 233
12.7 字符处理函数 233
12.8 坐标系变换 234
12.9 图形设备控制功能 235
12.9.1 屏幕提示信息 235
12.9.2 对菜单显示的控制 236
12.9.3 对图形和文本屏幕的控制 237
12.9.4 对底层图形和用户输入的控制 237
12.9.5 校正数字化仪 238
12.10 通配符处理函数 239
第13讲 怎样访问图形数据库 241
13.1 选择集操作函数 241
13.1.1 选择集过滤表 243
13.1.2 选择集操作 247
13.1.3 选择集转换 248
13.2 实体名及数据操作函数 250
13.2.1 实体名获取 250
13.2.2 实体句柄的用法 252
13.2.3 实体坐标变换 252
13.2.4 实体数据操作 256
13.2.5 建立复杂实体 261
13.2.6 实体数据更新 264
13.3 扩展实体数据处理 265
13.3.1 扩展实体数据的结构 266
13.3.2 登记一个应用程序 267
13.3.3 获取扩展实体数据 268
13.3.4 管理扩展实体数据占用的内存 269
13.3.5 扩展实体数据处理 269
13.4 符号表访问函数 270
第14讲 ADS应用程序开发示范 272
14.1 ADS应用程序开发技巧 272
14.1.1 传递指针以取代数据结构 272
14.1.2 释放选择集时出现的错误 273
14.1.3 用Long长型整数作为选择集编码时出现的错误 273
14.1.4 释放结果缓冲区时出现的错误 273
14.1.5 以共享方式打开文件时的错误 274
14.2 一个完整的ADS应用程序实例 274
15.1 AutoLISP—API应用编程接口函数库 290
15.1.1 AutoLISP—API函数分类 290
第15讲 AME API函数使用说明 290
15.1.2 AutoLISP—API的支持函数 294
15.1.3 AutoLISP—API的数据类型 295
15.1.4 AutoLISP—API函数一览表 299
15.2 C—API应用编程接口函数库 311
15.2.1 使用C—API时的注意事项 311
15.2.2 C—API的有关文件 314
15.2.3 C—API的数据类型 314
15.2.4 C—API函数一览表 321
第16讲 AutoCAD Render API函数使用说明 343
16.1 AutoCAD Render API命令的用法 343
16.2 FINISH(润饰操作)命令 345
16.3 LIGHT(光源操作)命令 348
16.6 RENDSCR(着色屏幕)命令 352
16.7 REPLAY(重显图象)命令 352
16.4 RCONFIG(重新配置)命令 352
16.5 RENDER(着色)命令 352
16.8 RPREF(着色优先选择)命令 353
16.9 SAVEIMG(保存图象)命令 355
16.10 SCENE(场景操作)命令 356
16.11 STATS(统计信息)命令 359
第五篇 AutoCAD SQL数据库操作及接口技术 361
第17讲 ASE入门及其使用方法 361
17.1 数据库概念 362
17.2 ASE功能综述 363
17.2.1 定义关键字 364
17.2.2 控制数据库 364
17.3 系统配置和ASE文件 365
17.2.3 同步化 365
17.4 ASE命令综合使用实例 367
17.4.1 准备使用ASE 368
17.4.2 启动ASE 369
17.4.3 从AutoCAD中存取和修改外部数据 373
17.4.4 连接外部数据至AutoCAD实体 376
17.4.5 使用链式数据 380
17.4.6 怎样使用SQL和ASESQLED 383
17.4.7 报告(Report) 384
17.4.8 数据完整性及管理 386
17.5 小结 386
18.1 ASE命令分类及其格式 388
第18讲 ASE数据库操作命令集 388
18.2 ASE命令集 390
18.2.1 ASEADDROW——加入一行至表中 390
18.2.2 ASECLOSEDB——关闭已选数据库 391
18.2.3 ASEDELLINK——删去与实体相关的连接 391
18.2.4 ASEDELROW——从表中删去当前行 393
18.2.5 ASEEDITLINK——编辑与实体相关的连接 393
18.2.6 ASEEDITROW——编辑表中的当前行 396
18.2.7 ASEERASEALL——删除整个控制数据库 398
18.2.8 ASEERASEDB——从控制数据库中删除数据库引用 398
18.2.9 ASEERASEDBMS——从控制数据库中删除DBMS引用 399
18.2.10 ASEERASETABLE——从控制数据库中删除表引用 400
18.2.11 ASEEXPORT——输出数据库的连接信息 401
18.2.13 ASEMAKEDA——建立当前行的可显示属性 403
18.2.12 ASEINIT——初始化ASE 403
18.2.14 ASEMAKELINK——连接被选实体至当前行 404
18.2.15 ASEMAKEREP——产生一份报告 405
18.2.16 ASEPOST——使图形与数据库同步 406
18.2.17 ASEQEDIT——设置和编辑当前行 407
18.2.18 ASEQLINK——设置当前行并连接被选实体 407
18.2.19 ASEQMAKEDA——设置当前一行并建立它的可显示属性 408
18.2.20 ASEQVIEW——设置和观看当前行 408
18.2.21 ASERELOADDA——重新生成可显示属性 409
18.2.22 ASESELECT——以图形或文本方式选择实体 409
18.2.23 ASESETDB——设置当前数据库名 410
18.2.24 ASESETDBMS——设置当前DBMS种类 411
18.2.25 ASESETROW——设置表中的当前行 412
18.2.26 ASESETTABLE——设置当前表名 414
18.2.27 ASESQLED——SQL语句执行程序 416
18.2.28 ASETERM——终止ASE 418
18.2.29 ASEERMDBMS——终止对已选DBMS的访问 419
18.2.30 ASEVIEWLINK——观看被选实体的连接 420
18.2.31 ASEVIEWROW——观看表中的当前行 420
第19讲 AutoCAD SQL接口编程 422
19.1 ASI入门 422
19.2 ASI体系结构 423
19.3 ASI编程要求 423
19.4 ASI文件及其使用 423
19.5 ASI应用程序开发环境 424
第20讲 ASI函数描述 425
20.1 一般数据类型和句柄 426
20.2 ASI函数目录 427
20.2.1 asi_bnd(定义输入缓冲区)函数 428
20.2.2 asi_cds(获得一列描述)函数 429
20.2.3 asi_cex(编译并执行SQL语句)函数 431
20.2.4 asi_cfgdrv(配置驱动程序)函数 431
20.2.5 asi_chdl(关闭数据库句柄)函数 432
20.2.6 asi_cmt(委托事务)函数 432
20.2.7 asi_colsdsc(获得列描述符表)函数 432
20.2.8 asi_com(编译SQL语句)函数 432
20.2.9 asi_currow(获得当前行号)函数 433
20.2.10 asi_cvl(获得列值)函数 434
20.2.11 asi_del(删去当前行)函数 434
20.2.15 asi_exe(执行SQL语句)函数 436
20.2.14 asi_errmsg(获得出错信息)函数 436
20.2.13 asi_err(获得出错代码)函数 436
20.2.12 asi_dupl_colsdsc(复制列描述符表)函数 436
20.2.16 asi_fbk(反向取数)函数 437
20.2.17 asi_fbr(取出底部行)函数 437
20.2.18 asi_fet(正向取数)函数 437
20.2.19 asi_ftr(取出顶部行)函数 437
20.2.20 asi_gettable(得到查询结果表)函数 437
20.2.21 asi_initdrv(初始化驱动程序)函数 438
20.2.22 asi_initspl(初始设置ASI环境) 439
20.2.23 asi_1of(撤销数据库)函数 439
20.2.24 asi_lon(数据库注册)函数 439
20.2.25 asi_ohdl(打开数据库句柄)函数 439
20.2.29 asi_rlstable(释放查询结果表)函数 440
20.2.28 asi_rls_col_dsc(释放列描述符表)函数 440
20.2.27 asi_rbk(重算事务)函数 440
20.2.26 asi_opr(获得SQL语句处理阶段)函数 440
20.2.30 asi_rowpty(获得行数)函数 441
20.2.31 asi_sob(设置输出缓冲区)函数 441
20.2.32 asi_stm(获得SQL语句类型)函数 442
20.2.33 asi_synerrpos(获得语法出错位置)函数 443
20.2.34 asi_termalldrv(终止所有驱动程序)函数 443
20.2.35 asi_termdrv(终止驱动程序)函数 443
20.2.36 asi_termsql(终止ASI接口)函数 443
20.2.37 asi_upd(更新当前行)函数 444
20.2.38 asi_xerr(获得扩展出错代码)函数 444
20.3 范例程序 444
20.4.1 ASIHANDLE(ASI句柄)结构 447
20.4 ASI数据结构 447
20.4.2 CREATE(建立)结构 448
20.4.3 TABLECRT(表建立)结构 448
20.4.4 INDEXCRT(索引建立)结构 448
20.4.5 VIEWCRT(视图建立)结构 448
20.4.6 REFSPEC(参考规格)结构 448
20.4.7 COLDSC(列描述符)结构 449
20.4.8 COLDFL(列缺省值)结构 449
20.4.9 COLCNS(列限制)结构 449
20.4.10 COLDEF(列定义)结构 449
20.4.11 TABCNS(表限制)结构 449
20.4.18 PRV(特权)结构 450
20.4.17 LOGON(注册)结构 450
20.4.16 SETCOL(设置列)结构 450
20.4.15 CURSPEC(光标规格)结构 450
20.4.14 CURSOR(光标)结构 450
20.4.13 SELECT(选择)结构 450
20.4.12 TABCNSLST(表限制列表)结构 450
20.4.19 GRT(被授者)结构 451
20.4.20 GRANT(授权)结构 451
20.4.21 REVOKE(撤销特权)结构 451
20.4.22 ALTER(变更)结构 451
20.4.23 DELETE(删去)结构 451
20.4.24 INSERT(插入)结构 451
20.4.30 COLDATA(列数据)结构 452
20.4.29 COLSPEC(列规格)结构 452
20.4.28 BINDLST(结合列表)结构 452
20.4.27 BINDDATA(结合数据)结构 452
20.4.26 UPDATE(更新)结构 452
20.4.25 DROP(去)结构 452
20.4.31 NODE(语法树节点)结构 453
20.4.32 SELLST(选择列表)结构 453
20.4.33 TBLLST(表的列表)结构 453
20.4.34 COLLST(列的列表)结构 453
20.4.35 VAL(值)和VALLST(值列表) 453
20.4.36 OUTBUFFER(输出缓冲区)结构 454
20.4.37 COLDSCLST(列描述符表)结构 454
20.4.38 ROWLST(行的列表)结构 454
20.4.39 TABDATA(表数据)结构 454
附录A 应用程序用的DXF组码 455
A.1 DXF组码表 455
A.2 实体组码 457
A.3 图块和符号表组码 461
附录B AutoLISP R12内部函数一览表及出错信息 465
B.1 AutoLISP函数一览表 465
B.1.1 专用AutoLISP函数 465
B.1.2 通用AutoLISP函数 469
B.2 对较难的AutoLISP函数详解 474
B.3 可编程对话框函数 481
B.4 ADS定义的AutoLISP函数 483
B.5 AutoLISP错误代码表 486
B.6 AutoLISP出错信息 488
附录C ADS库函数详细 490
C.1 ADS库函数一览表 490
C.2.1 外部定义的AutoCAD函数 545
C.2 几种ADS扩充函数的说明 545
C.2.2 与AutoCAD命令交互的接口函数 547
C.2.3 可编程对话框函数 551
C.3 ADS错误代码表 553
附录D 关于AutoCAD SQL扩展(ASE)的参考信息 556
D.1 ASE命令一览表 556
D.2 ASE SQL语法标准 557
D.2.1 语法符号记法 557
D.2.2 ASE SQL标准 557
D.2.3 ANSI扩展格式 564
D.3 ASE和ASI出错代码 565
D.3.1 ASE出错代码表 565
D.3.2 ASI出错代码表 568