修改以下命令或系统变量可能会影响已存在的脚本
ADCNAVIGATE - 如果使用 ADCNAVIGATE 打开设计中心,则不必再按 ENTER 键或 ESC 键显示“输入路径名”提示。此修改可能会影响已存在的脚本。
EXTEND - 对于 EXTEND 命令,如果在“选择要延伸的对象”提示下不选择对象,那么现在程序将提示您指定窗交窗口的对角点。此修改可能会影响已存在的用于调用 EXTEND 并提供未选择对象的拾取点的脚本。通过忽略未选择对象的点可以修复传统脚本。
INSERT - 如果您使用“块定义”对话框中新的“按统一比例缩放”选项,则在使用 -INSERT 命令插入块时,不再提示您为 X,Y,Z 坐标分别输入比例因子。此修改可能会影响已存在的使用此命令的脚本。
MENULOAD - 默认情况下,MENULOAD 命令仅将 CUI 文件加载到 AutoCAD 2006。要在 AutoCAD 2006 中执行 MNU 或 MNS 文件的菜单加载,必须在文件名中明确包含扩展名,如下例所示:
(command "menuload" "myMenu.mnu")
但是,除了修改代码之外,还强烈建议您在运行使用代码的应用程序之前,在 AutoCAD 2006 中打开传统菜单文件。AutoCAD 会自动将其转换为 CUI 文件,CUI 文件将通过现有代码加载,现有代码使用不包含扩展名的文件名。
应修改用于指定 MNU、MNS 或 MNC 扩展名的传统代码以参照 CUI 文件,基于 AutoCAD 2006 的应用程序应附带 CUI 文件,而不是 MNU、MNS 或 MNC 文件。
TRIM - 对于 TRIM 命令,如果在“选择要修剪的对象”提示下不选择对象,那么现在程序将提示您指定窗交窗口的对角点。此修改可能会影响已存在的用于调用 TRIM 并提供未选择对象的拾取点的脚本。通过忽略未选择对象的点可以修复传统脚本。
Visual LISP
AutoCAD 进程的可见性
启动时运行的 AutoLISP® 脚本应检查 AutoCAD 进程是否可见。如果进程不可见,则不应执行脚本,因为该进程可能在执行后台打印或后台发布操作。要检查 AutoCAD 进程是否可见,可以使用 AutoCAD 对象模型中 Application 对象的 Visible 特性。
回车符
在 Visual LISP® IDE 中,\r 转义字符不能用作回车符。相反,文字会紧跟在最后一个打印文字的后面显示。解决方法是用 (CHR 13) 代替 \r。
通知
在某些情况下,一个系统变量的更改会触发多次 vlr-sysVarWillChange 和 vlr-sysVarChanged 通知。
夹点
AutoCAD 不再支持未选定对象上的夹点。因此,AutoLISP sssetfirst 函数的 gripset 参数将被忽略,ssgetfirst 将为第一个返回的选择集返回 nil。
真彩色
如果完全安装了 AutoCAD,则使用“真彩色”的实用程序位于 \Sample\VisualLISP 文件夹中的 color-util.lsp 文件中。这些实用程序用于与真彩色相关的操作,例如获取真彩色编号的部件,将颜色索引或颜色名转换为真彩色值,返回 DXF 组码列表,以及使用图元列表。
使用以下 AutoLISP 函数可以访问“真彩色”用户界面
(acad_truecolordlg color [allowbylayer] [currentlayercolor])。
通过对话框提示输入颜色。颜色参数是一个说明默认颜色的点对;点对的第一个元素必须是颜色相关 DXF 组码(62、420 或 430)之一。如果 allowbylayer 参数存在且不为 nil,则显示“随层”和“随块”按钮。如果操作成功,该函数返回说明选定颜色的一个或多个点对的列表。列表中最后一个点对指示选定的颜色。如果用户取消对话框,则该函数返回 nil。
entmod 和 entmake 函数
在 AutoCAD 2004 以及更高版本中,entmod 和 entmake 函数在颜色操作方面中具有新的行为。DXF 组码 62 保留 AutoCAD 颜色索引 (ACI) 值,而组码 420 保留真彩色值。如果真彩色值与 ACI 值冲突,AutoCAD 将使用 420 值,因此在试图使用组码 62 值之前应删除组码 420 值。有关详细信息,请完整安装 AutoCAD 并参见 \Sample\VisualLISP 文件夹中的 color-util.lsp 文件。
关闭关联应用程序
当 AutoLISP 例程不再使用 AutoCAD 以外的对象(如 Microsoft Excel 对象)时,请调用 (vlax-release-object) 函数以确保关联的应用程序已正确关闭。使用 (vlax-release-object...) 释放的对象不会立即释放。直到下一个自动空闲内存收集发生时才会进行实际的释放。可以在代码中的特定位置直接调用 (gc) 以强制发生空闲内存收集。然而,调用 (gc) 可能会降低性能,并且建议避免将对 (gc) 的调用放在可能被多次调用的位置,例如循环内。
如果在调用 (gc) 函数之后与对象关联的应用程序没有关闭,则表明没有为 AutoCAD 以外的所有对象调用 (vlax-release-object) 函数。
加载错误
如果 LOAD 加载独立名称空间 VLX 时出现错误,某些函数可能在检测到错误之前已输出到当前的文档名称空间中。必须确保修复此错误、重新编译并重载 VLX,才能确保所有函数的正确版本输出到当前文档。
使用 CUILOAD 命令在 MDI 中加载部分菜单时,该菜单的 MNL 文件将为每个打开的文档加载一次,同时所有用户交互操作都发生在当前文档中。为避免在用 AutoCAD 打开多个图形时出现多余的打印信息或用户提示,建议在设置 MNL LISP 代码时不要包含任何用户交互操作。而使用 MNL 代码为后续菜单项选择加载任何所需的 AutoLISP 文件。使用 acad.lsp 或 acaddoc.lsp 文件执行打开图形时要处理的
AutoLISP 代码
如果用单个正斜杠作为分隔符,则使用 vla-unloadDVB 无法将文件名参数传递到 ActiveX UnloadDVB 方法中。建议在调用 vla-loadDVB、vla-RunMacro 和 vla-unloadDVB 时,使用双反斜杠作为分隔符来指定
文件名参数
“多文档设计环境”对话框的显示
“多文档设计环境”对话框使用户可以更改 AutoLISP 环境初始化的默认功能。此对话框在以下情况下显示:
AcadLspAsDocDlg 注册键的“Do Not Show”值设置为 0。
未运行任何脚本,并且未运行 AutoLISP 或 ActiveX 应用程序。
ACADLSPASDOC 系统变量设置为 0。
AutoCAD 搜索路径中存在 acad.lsp 文件。
AutoCAD 搜索路径中不存在 acaddoc.lsp 文件。
SDI 系统变量设置为 0。
如果所有这些条件都为真,则在每个任务中首次打开第二个文档时,将显示“多文档设计环境”对话框。
显示乱码打印序列
打印包含超过 4000 个字符的列表时,在缓冲区大小固定的情况下将导致循环溢出,联机查看时,输出显示乱码。解决方法是修改 AutoLISP 应用程序的代码,使每次打印的信息少于 4000 个字符。这意味着将打印输出分成多个 print 语句。
ActiveX 和 VBA
AutoCAD 进程的可见性
启动时运行的 VBA 脚本应检查 AutoCAD 进程是否可见。如果进程不可见,则不应执行脚本,因为该进程可能在执行后台打印或后台发布操作。要检查 AutoCAD 进程是否可见,可以使用 AutoCAD 对象模型中 Application 对象的 Visible 特性。
AcadOle 对象
要使用 VBA 将其他应用程序中的信息插入到 AutoCAD,请使用 AcadOle 对象。有关 AcadOle 对象的附加信息可以在 VBA 对象浏览器中找到。


