本书是讨论基于Visual LISP for AutoCAD 2000/2000i/2002的程序设计技术,帮助专业设计用户进行专业辅助设计程序的制作和使用,达到精通Visual LISP程序设计,使AutoCAD真正成为自己的专业设计软件的目的。\r\n\r\n 本书详细讨论了Visual LISP程序设计的基本方法和应用技巧,并提供了大量的专题应用范例,侧重于专业应用的方法、实际应用中的难点和解决方案的讨论,还补充和修正了Visual LISP在线帮助中的若干问题。本书既可以作为高等院校的有关教材、高级应用培训教材,也适合作为专业程序设计用户的参考用书。\r\n\r\n 本书按照由浅入深、循序渐进的原则编写。力争做到初学者能够看懂,程序设计的老手也能得到启发,真正成为工程师自学程序设计的好朋友。\r\n
\r\n
第1章 Visual LISP概况 1 \r\n\r\n 1.1 启动Visual LISP 1 \r\n\r\n 1.2 Visual LISP界面概述 1 \r\n\r\n 1.2.1 菜单区 1 \r\n\r\n 1.2.2 工具栏区 2 \r\n\r\n 1.2.3 控制台窗口 3 \r\n\r\n 1.2.4 状态栏 4 \r\n\r\n 1.2.5 跟踪窗口 4 \r\n\r\n 1.2.6 文本编辑器 4 \r\n\r\n 1.2.7 Visual LISP 的其他窗口 5 \r\n\r\n 1.3 加载和运行AutoLISP程序 5 \r\n\r\n 1.3.1 打开一个AutoLISP程序 5 \r\n\r\n 1.3.2 加载并运行程序片断 5 \r\n\r\n 1.3.3 加载并运行整个程序 6 \r\n\r\n 1.4 使用扩展的AutoLISP函数 7 \r\n\r\n 1.5 关闭Visual LISP 7 \r\n\r\n 第2章 使用Visual LISP文本编辑器 8 \r\n\r\n 2.1 文本编辑器概要 8 \r\n\r\n 2.2 文本编辑器快捷菜单 8 \r\n\r\n 2.3 文本编辑器的快捷键 9 \r\n\r\n 2.3.1 修改文本 9 \r\n\r\n 2.3.2 选定文本 10 \r\n\r\n 2.3.3 浏览 11 \r\n\r\n 2.3.4 格式化 11 \r\n\r\n 2.3.5 移动和复制 12 \r\n\r\n 2.4 查找. 替换与书签 13 \r\n\r\n 2.4.1 查找和替换 13 \r\n\r\n 2.4.2 书签 14 \r\n\r\n 2.5 语法结构分色和匹配 15 \r\n\r\n 2.5.1 语法分色 16 \r\n\r\n 2.5.2 匹配 17 \r\n\r\n 2.5.3 使用自动匹配搜寻结果 18 \r\n\r\n 2.5.4 按历史匹配 18 \r\n\r\n 2.5.5 按系统匹配 20 \r\n\r\n 2.6 程序代码格式化 20 \r\n\r\n 2.6.1 Visual LISP程序格式样式 21 \r\n\r\n 2.6.2 Visual LISP的注释 22 \r\n\r\n 2.7 语法检查 22 \r\n\r\n 2.7.1 检查括号匹配 22 \r\n\r\n 2.7.2 用语法分色检查拼写错误 23 \r\n\r\n 2.7.3 使用检查命令检查其他语法错误 23 \r\n\r\n 第3章 调试程序 25 \r\n\r\n 3.1 Visual LISP的调试器功能 25 \r\n\r\n 3.2 调试器使用方法 25 \r\n\r\n 3.2.1 调试准备 25 \r\n\r\n 3.2.2 试验跟踪和分步调试过程 26 \r\n\r\n 3.2.3 试验动态跟踪调试 27 \r\n\r\n 3.3 使用Visual LISP调试功能 28 \r\n\r\n 3.3.1 调试功能概况 28 \r\n\r\n 3.3.2 VLISP中程序中断的基本概念 31 \r\n\r\n 3.3.3 关于可继续中断循环 32 \r\n\r\n 3.3.4 关于进入可继续中断循环后的调试方法 33 \r\n\r\n 3.3.5 关于不可继续中断循环 34 \r\n\r\n 3.3.6 断点操作 34 \r\n\r\n 3.4 数据检验工具 36 \r\n\r\n 3.4.1 打开和关闭日志文件 37 \r\n\r\n 3.4.2 使用监视窗口 37 \r\n\r\n 3.4.3 使用跟踪堆栈窗口 39 \r\n\r\n 3.4.4 使用符号服务对话框 44 \r\n\r\n 3.4.5 使用检验窗口 45 \r\n\r\n 3.5 访问AutoCAD图形对象 48 \r\n\r\n 第4章 AutoLISP程序设计 53 \r\n\r\n 4.1 AutoLISP程序设计初步 53 \r\n\r\n 4.1.1 AutoLISP比较容易学会和使用 54 \r\n\r\n 4.1.2 AutoLISP适于给专业用户作开发工具 54 \r\n\r\n 4.1.3 AutoLISP程序语法特点 57 \r\n\r\n 4.1.4 AutoLISP程序与AutoCAD应用开发 58 \r\n\r\n 4.2 编写AutoLISP专业用户功能的一般过程 59 \r\n\r\n 4.2.1 专业应用程序设计的一般过程 60 \r\n\r\n 4.2.2 专业应用程序设计的质量要求 62 \r\n\r\n 4.2.3 专业应用程序设计的辅助手段 63 \r\n\r\n 4.3 在命令行使用AutoLISP表达式 65 \r\n\r\n 4.3.1 建立和引用AutoLISP变量响应命令提示 65 \r\n\r\n 4.3.2 用AutoLISP表达式响应命令提示 66 \r\n\r\n 4.4 在其他定制文件中使用Visual LISP表达式 67 \r\n\r\n 4.4.1 在脚本文件中使用表达式 67 \r\n\r\n 4.4.2 在菜单文件中使用表达式 68 \r\n\r\n 4.4.3 AutoCAD.LSP. *.MNL和AutoCADDOC.LSP 69 \r\n\r\n 4.4.4 将AutoLISP 表达式放在某个图形对象中 70 \r\n\r\n 4.5 给AutoCAD添加用户命令 70 \r\n\r\n 4.5.1 用户自定义函数之一 70 \r\n\r\n 4.5.2 (Command)(VL-CmdF)函数 71 \r\n\r\n 4.5.3 在程序中引用AutoCAD命令时的注意事项 72 \r\n\r\n 4.5.4 实例I 74 \r\n\r\n 4.5.5 实例II 75 \r\n\r\n 4.5.6 怎样描述关于点位的响应 76 \r\n\r\n 4.5.7 简单响应'选择对象'的提示 78 \r\n\r\n 4.5.8 向AutoCAD注册用户命令 79 \r\n\r\n 4.5.9 重新定义AutoCAD原有命令 83 \r\n\r\n 4.5.10 怎样描述关于长度数据输入的程序段 84 \r\n\r\n 4.5.11 程序中数据的表达 84 \r\n\r\n 4.5.12 数据与字串的转换问题 85 \r\n\r\n 4.6 怎样在AutoLISP程序中组织和使用对象选择集 86 \r\n\r\n 4.6.1 选择集过滤器的使用实例 86 \r\n\r\n 4.6.2 在程序中对象选择集组建和对象的响应 88 \r\n\r\n 4.7 给AutoLISP添加用户函数 90 \r\n\r\n 4.7.1 Defun 函数的再认识 90 \r\n\r\n 4.7.2 形式参数和实际参数 91 \r\n\r\n 4.7.3 自定义函数的必要性 91 \r\n\r\n 4.7.4 制造自定义函数的返回值 93 \r\n\r\n 4.7.5 自定义函数的变量表写法 94 \r\n\r\n 4.8 Visual LISP 程序可能的运行模式 96 \r\n\r\n 4.9 在程序中使用DCL作界面 99 \r\n\r\n 4.9.1 概论 99 \r\n\r\n 4.9.2 DCL 程序的语法 100 \r\n\r\n 4.9.3 对话框的使用 101 \r\n\r\n 4.9.4 察看对话框 101 \r\n\r\n 4.9.5 制作第一个DCL 102 \r\n\r\n 4.9.6 使用图像控件 104 \r\n\r\n 4.9.7 DCL支持程序 108 \r\n\r\n 4.9.8 DCL的检验和出错处理 108 \r\n\r\n 4.9.9 DCL程序的简单控制和使用 113 \r\n\r\n 4.9.10 用DCL查设计参数表和默认值控制 115 \r\n\r\n 4.9.11 图像按钮的控制和使用 117 \r\n\r\n 4.9.12 DCL结束的控制方法 120 \r\n\r\n 4.9.13 自定义图像按钮集 121 \r\n\r\n 4.9.14 列表盒与用户对有限参数的选择输入 123 \r\n\r\n 4.9.15 列表盒内容设置的几个技术要点 124 \r\n\r\n 4.9.16 不确定值的输入问题 130 \r\n\r\n 4.9.17 关于DCL的自我动作描述问题 137 \r\n\r\n 4.10 对象数据库的访问与数据使用 137 \r\n\r\n 4.10.1 传统的数据库访问方法 138 \r\n\r\n 4.10.2 找到要分析对象的图元名的方法 142 \r\n\r\n 4.10.3 多段线对象数据的使用 143 \r\n\r\n 4.10.4 用ActiveX 数据结构访问数据库 146 \r\n\r\n 4.10.5 CAGD在专业设计程序中的应用 148 \r\n\r\n 第5章 AutoLISP应用程序设计技巧集锦 158 \r\n\r\n 5.1 理解和正确使用AutoLISP 的条件函数 158 \r\n\r\n 5.2 正确理解和使用AutoCAD的数据库 160 \r\n\r\n 5.3 对象描述双元表及其使用 166 \r\n\r\n 5.4 利用绘图时建立的条件进行尺寸标注 169 \r\n\r\n 5.5 永久型选择集和(HandEnt)函数 171 \r\n\r\n 5.6 在AutoLISP中定义和使用多维数组 173 \r\n\r\n 5.7 使用外部参数文件 174 \r\n\r\n 5.7.1 其他应用程序生成的参数文件 175 \r\n\r\n 5.7.2 AutoLISP 程序专用的外部数据文件 176 \r\n\r\n 5.7.3 读入外挂数据文件的结束处理 177 \r\n\r\n 5.7.4 外挂数据文件与VLX程序包编译 177 \r\n\r\n 5.8 设计手册查找的自动化 180 \r\n\r\n 5.9 建立和使用非图形数据 185 \r\n\r\n 5.9.1 属性格式的非图形数据结构 186 \r\n\r\n 5.9.2 扩展的对象数据库 189 \r\n\r\n 5.9.3 词典中的非图形数据 195 \r\n\r\n 5.9.4 图形词典 197 \r\n\r\n 5.10 自定义出错处理 201 \r\n\r\n 5.10.1 设置公用的自定义出错处理功能 201 \r\n\r\n 5.10.2 在自定义函数中, 函数实参的检验和出错退出功能 203 \r\n\r\n 5.10.3 在函数的定义中处理出错 205 \r\n\r\n 5.11 参数化的. 柔性的图形库 206 \r\n\r\n 5.12 在Get族函数中使用关键词 208 \r\n\r\n 5.13 怎样编写设计过程模拟程序 210 \r\n\r\n 5.14 正确使用AutoCAD的系统变量 215 \r\n\r\n 5.15 在程序中使用 Fillet 功能 216 \r\n\r\n 5.16 怎样在一个程序中处理多个图形文件 218 \r\n\r\n 5.17 根据图文件自动加载应用程序 222 \r\n\r\n 5.18 自定义工具栏图标丢失问题 224 \r\n\r\n 5.19 Read函数的灵活使用 225 \r\n\r\n 5.20 Eval函数的用法 228 \r\n\r\n 5.21 Set函数的用法 233 \r\n\r\n 5.22 SsGet函数的用法 233 \r\n\r\n 5.23 从另外一个图形数据库中获取对象信息 235 \r\n\r\n 5.24 Boundarygon功能在程序中引用时的问题 235 \r\n\r\n 5.25 LWPolyLine在程序中处理的问题和性能评价 238 \r\n\r\n 5.26 沿圆或弧写字 246 \r\n\r\n 5.27 在程序中控制文本字行的格式 248 \r\n\r\n 5.28 AutoCAD 2000之后的VLISP中, 输入对话框的控制问题 252 \r\n\r\n 5.29 VLISP程序中DOS功能的引用 253 \r\n\r\n 5.30 已有块的更新处理问题 260 \r\n\r\n 5.31 *.MNL程序设计概要 269 \r\n\r\n 5.32 =/Eq/Equal函数的区别 278 \r\n\r\n 5.33 Not/Null/BoubdP函数的区别 280 \r\n\r\n 5.34 曲线的任意点坐标的探测和曲线的转换 282 \r\n\r\n 5.35 外部参照修剪的特殊用法和功能修补 284 \r\n\r\n 5.36 在程序中字体高度设置问题 288 \r\n\r\n 5.37 程序间公用数据的处理方法 290 \r\n\r\n 5.38 图线遮挡的产生方法 297 \r\n\r\n 5.39 组(Group)的数据分析 301 \r\n\r\n 5.40 点选轮廓中间点得到轮廓索引名 304 \r\n\r\n 第6章 工程--应用程序集的管理和编译 305 \r\n\r\n 6.1 管理多个程序文件 305 \r\n\r\n 6.1.1 Visual LISP 的工程 305 \r\n\r\n 6.1.2 工程中涉及到的文件类型 305 \r\n\r\n 6.2 使用 Visual LISP 工程 306 \r\n\r\n 6.2.1 创建一个新的工程 307 \r\n\r\n 6.2.2 确定工程中 AutoLISP 源程序 308 \r\n\r\n 6.2.3 调入文件的次序 308 \r\n\r\n 6.2.4 选择编译器选项 309 \r\n\r\n 6.3 工程文件的操作 311 \r\n\r\n 6.3.1 在工程中查找源文件中的内容 313 \r\n\r\n 6.3.2 将工程放在应用程序包中 314 \r\n\r\n 第7章 应用程序包的编译 315 \r\n\r\n 7.1 程序包的编译和链接 315 \r\n\r\n 7.1.1 VLISP的编译器 316 \r\n\r\n 7.1.2 用(VLisp-Compile)函数编译程序 316 \r\n\r\n 7.1.3 加载和运行已编译程序 317 \r\n\r\n 7.1.4 编译后的函数调用问题 318 \r\n\r\n 7.2 制作应用程序包 318 \r\n\r\n 7.2.1 生成一个新的应用程序包 319 \r\n\r\n 7.2.2 应用程序包的更新和修改 323 \r\n\r\n 7.3 关于多图档下的程序设计与编译 324 \r\n\r\n 7.3.1 变量空间 324 \r\n\r\n 7.3.2 使函数在全部图档中有效 325 \r\n\r\n 7.3.3 应用程序的独立变量空间 325 \r\n\r\n 7.3.4 使具有独立变量空间的非C:函数对外部引用有效 326 \r\n\r\n 7.3.5 在其他VLX程序中引用独立变量空间的函数 327 \r\n\r\n 7.3.6 在独立变量空间的VLX中使用图档变量空间中的变量 328 \r\n\r\n 7.3.7 使图档变量空间中的变量在所有图档中都有效 328 \r\n\r\n 7.3.8 在各个变量空间之间进行数据共享 329 \r\n\r\n 7.3.9 在多图档环境中的自定义错误处理 329 \r\n\r\n 第8章 ActiveX的使用 331 \r\n\r\n 8.1 ActiveX对象概论 332 \r\n\r\n 8.2 AutoCAD的对象模型构架 332 \r\n\r\n 8.2.1 对象的属性 332 \r\n\r\n 8.2.2 对象的方法 332 \r\n\r\n 8.3 ActiveX对象访问概论 333 \r\n\r\n 8.3.1 访问应用程序对象 333 \r\n\r\n 8.3.2 生成和访问图形对象 334 \r\n\r\n 8.4 使用ActiveX方法的VLISP函数 338 \r\n\r\n 8.4.1 查找所需要的函数 339 \r\n\r\n 8.4.2 确定函数的参数 340 \r\n\r\n 8.4.3 将数据转换为ActiveX类型 342 \r\n\r\n 8.4.4 使用变体类型数据 343 \r\n\r\n 8.4.5 使用安全数组 344 \r\n\r\n 8.4.6 转换其他AutoLISP数据类型, 为ActiveX方法准备数据 347 \r\n\r\n 8.4.7 实例分析 348 \r\n\r\n 8.4.8 确定方法或属性是否适用于某对象 350 \r\n\r\n 8.4.9 使用集合(Collections)对象 350 \r\n\r\n 8.4.10 释放对象和空出内存 357 \r\n\r\n 8.4.11 转换对象的引用 358 \r\n\r\n 8.4.12 ActiveX方法出错的处理 359 \r\n\r\n 8.5 ActiveX与其他应用程序的交互 362 \r\n\r\n 8.5.1 引入一个类型库 363 \r\n\r\n 8.5.2 与应用程序建立联系 364 \r\n\r\n 8.5.3 应用程序实例 366 \r\n\r\n 8.5.4 不引入类型库使用 ActiveX 方法 369 \r\n\r\n 8.5.5 访问和更新图形对象属性 371 \r\n\r\n 8.5.6 使用参数带回返回值的 ActiveX 方法 373 \r\n\r\n 8.6 ActiveX应用评价和定位 374 \r\n\r\n 第9章 反应器的使用 390 \r\n\r\n 9.1 反应器 391 \r\n\r\n 9.1.1 反应器类型 391 \r\n\r\n 9.1.2 反应器的回调事件 392 \r\n\r\n 9.1.3 反应器的回调函数 393 \r\n\r\n 9.2 生成反应器 395 \r\n\r\n 9.2.1 生成对象反应器 395 \r\n\r\n 9.2.2 给反应器添加应用数据 397 \r\n\r\n 9.2.3 在多图档中使用反应器 397 \r\n\r\n 9.2.4 查询. 修改和删除反应器 398 \r\n\r\n 9.3 临时或永久的反应器 401 \r\n\r\n 9.4 对象反应器支持程序的自动加载 401 \r\n\r\n 9.5 反应器应用注意事项 404 \r\n\r\n 第10章 Visual LISP函数详解 406 \r\n\r\n 10.1 AutoLISP数据类型 406 \r\n\r\n 10.2 AutoLISP基本函数 408 \r\n\r\n 10.2.1 应用程序管理函数 408 \r\n\r\n 10.2.2 数学计算函数 410 \r\n\r\n 10.2.3 等式和条件函数 413 \r\n\r\n 10.2.4 出错处理函数 416 \r\n\r\n 10.2.5 函数处理函数 417 \r\n\r\n 10.2.6 表操作函数 421 \r\n\r\n 10.2.7 字串处理函数 426 \r\n\r\n 10.2.8 符号操作函数 429 \r\n\r\n 10.3 AutoLISP实用函数 432 \r\n\r\n 10.3.1 转换函数 432 \r\n\r\n 10.3.2 设备访问函数 436 \r\n\r\n 10.3.3 显示控制函数 437 \r\n\r\n 10.3.4 文件操作函数 439 \r\n\r\n 10.3.5 几何函数 443 \r\n\r\n 10.3.6 命令与查询函数 444 \r\n\r\n 10.3.7 用户输入函数 448 \r\n\r\n 10.4 AutoLISP选择集和符号表函数 451 \r\n\r\n 10.4.1 扩展的数据库操作函数 451 \r\n\r\n 10.4.2 对象操作函数 451 \r\n\r\n 10.4.3 选择集操作函数 454 \r\n\r\n 10.4.4 符号表操作函数 458 \r\n\r\n 10.5 AutoLISP内存管理函数 460 \r\n\r\n 10.6 Visual LISP 的扩展函数 461 \r\n\r\n 10.6.1 ActiveX集合操作函数 461 \r\n\r\n 10.6.2 ActiveX数据转换函数 462 \r\n\r\n 10.6.3 ActiveX方法调用函数 467 \r\n\r\n 10.6.4 ActiveX对象处理函数 467 \r\n\r\n 10.6.5 ActiveX属性处理函数 470 \r\n\r\n 10.6.6 应用程序对象处理函数 471 \r\n\r\n 10.6.7 Visual LISP反应器函数 472 \r\n\r\n 10.6.8 VLX变量空间函数 493 \r\n\r\n 10.6.9 VLX变量空间通信函数 494 \r\n\r\n 10.6.10 系统注册表函数 495 \r\n\r\n 10.7 DCL操作函数 495 \r\n\r\n 10.7.1 对话框打开与关闭控制函数 495 \r\n\r\n 10.7.2 控件和属性操作函数 496 \r\n\r\n 10.7.3 列表类控件操作函数 497 \r\n\r\n 10.7.4 图像控件操作函数 498 \r\n\r\n 10.8 DCL预定义控件 498 \r\n\r\n 10.8.1 DCL控件的预定义属性 498 \r\n\r\n 10.8.2 DCL控件的自定义属性 502 \r\n\r\n 10.8.3 DCL的预定义动作控件 502 \r\n\r\n 10.8.4 DCL的预定义控件簇 505 \r\n\r\n 10.8.5 DCL的预定义修饰和提示性控件 507 \r\n\r\n 10.8.6 DCL的预定对话框结束和出错处理控件 509 \r\n\r\n 10.9 AutoLISP 程序分析器 509 \r\n\r\n 10.9.1 用分析器分析程序的操作过程 509 \r\n\r\n 10.9.2 程序分析 511 \r\n\r\n 10.9.3 主对话框中的有关功能 511 \r\n\r\n 10.9.4 '选项'对话框中的有关功能 512 \r\n\r\n 10.9.5 一些说明 512 \r\n\r\n 10.9.6 程序分析规则文件 513 \r\n\r\n 第11章 用户化和系统定制 514 \r\n\r\n 11.1 概论 514 \r\n\r\n 11.2 AutoCAD 2002运行参数设置 514 \r\n\r\n 11.2.1 '文件'选项卡的设置 514 \r\n\r\n 11.2.2 '打开和保存'选项卡下的设置 517 \r\n\r\n 11.2.3 AutoCAD启动条件的设置 520 \r\n\r\n 11.3 操作系统参数设置和日常维护 521 \r\n\r\n 11.4 几个操作系统的比较 524 \r\n\r\n 11.5 线型库的定义与使用 525 \r\n\r\n 11.5.1 在命令行生成线形库 525 \r\n\r\n 11.5.2 直接编辑. 生成带有文字片段的线形库文件 526 \r\n\r\n 11.5.3 直接编辑生成带有形定义的线性库文件 527 \r\n\r\n 11.6 多线样式库的定义与使用 528 \r\n\r\n 11.6.1 多线样式命令 528 \r\n\r\n 11.6.2 在命令交互中生成用户多线样式 528 \r\n\r\n 11.6.3 多线样式库文件 530 \r\n\r\n 11.7 AutoCAD.PGP文件的用户化 531 \r\n\r\n 11.7.1 加入DOS 命令 531 \r\n\r\n 11.7.2 加入Windows命令的方法 532 \r\n\r\n 11.7.3 定义常用命令的缩写 532 \r\n\r\n 11.8 脚本文件设计与使用 533 \r\n\r\n 11.9 形定义生成与字体文件 533 \r\n\r\n 11.9.1 Shape的特点 533 \r\n\r\n 11.9.2 形定义的生成 534 \r\n\r\n 11.9.3 大字库字体文件格式介绍 535 \r\n\r\n 11.10 自定义填充图案库 537 \r\n\r\n 11.10.1 填充图案库文件的格式 537 \r\n\r\n 11.10.2 生成自定义填充图案库 537 \r\n\r\n 11.10.3 使用自定义填充图案库 539 \r\n\r\n 11.10.4 特殊填充图案的处理 540 \r\n\r\n 11.11 自定义符号库 540 \r\n\r\n 11.12 实时助手的运行条件设置 542 \r\n\r\n 11.13 几个限制 546 \r\n\r\n 11.14 菜单定制于应用 547 \r\n\r\n 11.14.1 菜单文件的加载和组合 547 \r\n\r\n 11.14.2 单文件的基本构成 550 \r\n\r\n 11.14.3 单项的基本语法 551 \r\n\r\n 11.14.4 下拉菜单段(pull-down menus) 551 \r\n\r\n 11.14.5 光标菜单(cursor menu) 554 \r\n\r\n 11.14.6 关联菜单(following shortcut menu) 554 \r\n\r\n 11.14.7 菜单组名段 557 \r\n\r\n 11.14.8 按钮和辅助菜单段 557 \r\n\r\n 11.14.9 工具栏段 558 \r\n\r\n 11.14.10 图像控件菜单段 562 \r\n\r\n 11.14.11 菜单的帮助 566 \r\n\r\n 11.14.12 加速键设置菜单段 566 \r\n\r\n 第12章 AutoCAD 2002新增功能和函数 569 \r\n\r\n 12.1 关联标注 569 \r\n\r\n 12.2 文字处理新功能 571 \r\n\r\n 12.3 图形标准的设置与使用 573 \r\n\r\n 12.4 属性处理新功能 577 \r\n\r\n 12.5 新的Visual LISP函数 579 \r\n\r\n 第13章 因特网上的问与答 581 \r\n\r\n 13.1 议论 581 \r\n\r\n 13.2 命令使用 620 \r\n\r\n 13.3 程序设计 649 \r\n\r\n 第14章 DXF组码参考 683 \r\n\r\n 14.1 DXF基本概念 683 \r\n\r\n 14.2 DXF通用组码 683 \r\n\r\n 14.3 TABLET(符号表)中的DXF组码 686 \r\n\r\n 14.4 BLOCKS(块定义表)中的DXF组码 696 \r\n\r\n 14.5 ENTITIES(图形实体表)中的DXF组码 697 \r\n\r\n 14.6 OBJECTS(命名对象表)中的DXF组码 714 \r\n
\r\n
尊敬的读者:
感谢你打开并翻阅这本书.
参考书的价值在于能解决自己工作中的问题, 如果你查看VLISP的在线帮助或者VLISPDEV.PDF文件, 有不清楚的地方, 看了这本书就会一目了然.
既然CAD(Computer Aided Design)叫做“计算机辅助设计”, 那么, 首先就要搞清楚设计是什么, 再讨论怎样辅助. 设计, 是要完成一个创新的构造方案, 满足一个应用需求的过程. 在这个过程中, 可以借用人类已有的知识, 同时又在创建新的知识. 在设计中参考已有的同类设计方案是必然的动作, 这区别于照抄, 是借用这个方案的思路进一步发挥, 以便满足自己设计中的要求.
在这样的创新和参照过程中, 反复对比不同的方案. 进行设计参数求解. 机构动作的讨论, 甚至进行局部重要结构的试制, 乃至台架试验, 都是设计过程中常见的组成部分. 可见, 绘图只是设计过程中的一种辅助手段.
计算机, 是一种“因为创造而产生需求”的独特发明. 尤其是“软件”这个东西出现以后, 由计算机的发明而引发的需求正在极大地扩张. 有人用一句话精辟地概括了计算机应用的目的:“我们已知如何做的事情的自动化”. 这样, 辅助设计的最终目标就是:我们已知如何设计的设计自动化. 其结果就像计算机控制的电喷汽车发动机一样, 能够以最佳的工况运行, 比任何一个独立的司机, 都能更好地控制发动机的参数, 使这个发动机的性能达到极限.
但是, 从总体上说, CAD永远不能替代工程师. 这是因为, 人类的设计能力是一种不断扩展. 不断创新的能力, 这种“创造”的能力, 是计算机永远不能跟上的. 随着对这个问题认识的深入, 将有新的思维模式产生, 而且永无尽头.
实际上, 我们仍然有许多的设计过程, 目前是可以做到“已知”的. 例如:按要求生成凸轮从动滚子的运动曲线, 再通过一系列确定的处理生成凸轮轮廓, 这个设计就可以最终“自动化”了. 自动化的结果是以极快的速度和极完美的数据处理精度自动完成这个设计. 这样, 工程师就没必要再掌握这个设计求解过程的细节, 也能在计算机上完成设计. 这就是CAD系统的主要特点:可靠的知识传递与保存手段.
就目前来讲, 在PC机上进行CAD可以实现的目标就是:设计过程模拟和局部设计过程的自动化. 在个别设计部门, 也实现了典型产品的一体化自动设计.
作为CAD系统, 通常由以下三个层次的软件组合而成.
(1)设计软件的底台:提供界面. 环境. 核心算法. 数据库等基础设施. 现在我们是在AutoCAD 2002这个底台上进行工作.
(2)设计支持软件, 提供与设计需要相关的. 较专业的支持软件, 如:国标图库. 通用设计工具. 设计手册等. 这些软件多数是由增值软件开发商完成的.
(3)专业设计软件, 提供窄范围. 大深度的专业设计自动化或者辅助系统, 如:发动机装配工具设计. 胶印机控制凸轮设计. 组合机主轴箱设计等.
实际上, CAD系统能否真正体现出它的存在价值, 最明显的标志就是上述专业设计软件.
这些软件真正起到了“设计”的作用. 实践证明, 在某个专业性很强的设计领域, 它确实能够替代工程师!
对于(1)和(2), 可以由一些不必很了解设计, 而软件知识较多的人来写. 当然, 应当由现场工程师进行测评, 防止写成“学院派”的设计支持软件. 而对于(3), 就只能由设计师自己来写, 这样的题目几乎是软件开发商永远的“盲区”. 由于专业性太强, 知识结构太偏, 对于工科大学毕业而没有在这个行业里做过真正设计的人, 连听懂专业设计师的叙述都很难, 要求他完成这个程序, 就更过分了. 可见, 必须找到能够被专业设计师掌握, 又能够充分发挥他们的长处(熟悉设计). 避开短处(软件知识较少)的专业设计程序开发手段. 这就是本书介绍的Visual LISP.
在V1sual贝SP的协助下, 从对AutoCAD进行操作功能上的讨论, 发现仅比ARX少了两类功能: 自定义AutoCAD对象和多图档交叉操作. 从目前的情况看, Visual LISP是AutoCAD中几乎所有的应用程序的“大管家”. 内嵌于AutoCAD 2000版本之后的Visual LISP, 比起传统的AutoLISP和Visual LISP R14, 从各个方面都有了较大地增强, 这也是Autodesk重视这种程序设计方法并不断加强开发力度的结果.
目前只有LISP表达式可以添加在脚本文件. 对话框和菜单之类的其他用户定制文件描述中, 直接用在AutoCAD的命令行中响应几乎所有的命令, 甚至将专业设计程序放在某图线中, 随时激活这个程序. 连VBA程序中也能够使用LISP表达式.
实际上, 对计算机专业知识的掌握并不是开始进行应用程序设计最必要的东西, 对此, 可用“急用先学, 立杆见影, 在用字上报下工夫”的原则, CAD技术是一套包罗万象的综合技术, 不能指望像在校学习那样按步就班地学习, 总原则是在已有的专业知识基础上延伸和扩展, 突破几点. 联点成线. 组线成网. 网密到一定程度, 就会产生质变, 成为完整的知识面. 对AutoCAD/Visual LISP的理解越深, 使用就越加准确自如, 效率才会表现出来. 仅按AutoCAD手册资料上说的去用, 会有很大的局限性. AutoCAD是“干”会的, 不是“学”会的. 我的一个朋友告诉我他的体会:“不管什么程序设计语言, 只要你真的玩透了, 都能够写出漂亮的东西”. 我信, 浅尝辄止. 道听途说都是应避免的. “操千曲而后晓声, 观千剑而后识器”则充分说明了下功夫的必要性.
尊敬的读者, 这本书是笔者在十几年从事AutoCAD应用. 开发和推广中积累的经验和体会. 相信这些经验一定能够对你应用中遇到的难题有所帮助. 这本书将从学会Visual LISP开始, 到用好这个工具, 解决自己设计中的难题, 这就是写这本书的目的. 当你有了这样的体会, 千万别忘了告诉我一声, 让我们一起分享成功的快乐.
在本书的编写过程中, 笔者得到了单适南. 谭孟恩. 张朝阳. 孙红梅等先生以及互联网上许多朋友的指教, 笔者在此向他们以及其他给予笔者帮助和支持的朋友表示衷心的感谢, 这本书里的许多内容也包含了他们的智慧.
本书的内容包括:
全部Visual LISP和AutoLISP函数解释,
全部DCL控件和属性解释,
VLISP/DCL程序设计基础知识和应用技巧,
给AutoCAD添加用户命令,
给AutoLISP添加用户函数,
专业应用程序设计中典型问题的解决方案和例程分析:
Visual LISP中的集成开发环境的功能和用法解释,
Visual LISP中的ActiveX功能及其应用,
Visual LISP中的反应器功能及其应用,
程序包的编译和调试,
程序设计辅助工具,
主要的系统定制技术方法:
因特网上的问与答,
DXF组码详细资料,
VLISP函数详细资料.
本书所附光盘内容包括:
书中全部例程的源代码:
由笔者编写. 赠给读者使用的AutoCAD 2000/2000i/2002配套应用程序集.
使用方法建议:
1)将光盘\Support文件夹下的内容复制到AutoCAD安装路径的同名文件夹之中,
2)在AutoCAD中, 用MenuLoad命令加载User2002. MNU(方法详见第12章),
3)每个章节在光盘中均有自己的相应文件夹, 其内容是学习中需参考的程序源代码.
关于User2002菜单和函数库:
MenuLoad进入User2002. MNU之后, 将自动出现相关的工具栏, 其中有许多有用的功能, 请读者自己试验.
点选“C”图标, 将弹出一个菜单(见图0), 其中罗列了全部附加功能.
点选“V”图标, 将打开VLISP编辑器.
在这本书中, 将反复提到“Tools工具集”