明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1934|回复: 1

2004中VisualLISP的一些开发人员信息

[复制链接]
发表于 2003-10-14 22:40:00 | 显示全部楼层 |阅读模式
在 Visual LISP IDE 中,\r 转义字符不能作为回车符使用,文字会紧跟在最后一个打印文字后面显示。解决方法是用 (CHR 13) 代替 \r。
        在某些情况下,一个系统变量更改将触发多次 vlr-sysVarWillChange 和 vlr-sysVarChanged 通知。
        AutoCAD 不再支持未选中对象上的夹点。因此,AutoLISP sssetfirst 函数的 gripset 参数将被忽略,而 ssgetfirst 为第一个返回的选择集返回 nil。

要设置“命令”窗口中的行数,请手动将窗口拉伸到合适的大小,然后再次固定它。不能使用 DockedVisibleLines 特性来设置行数。
        如果完全安装了 AutoCAD,则用于使用“真彩色”的实用程序位于 \Sample\VisualLISP 文件夹中的 color-util.lsp 文件中。这些实用程序用于与真彩色相关的操作,例如获取某个真彩色颜色编号的部件,将颜色索引或颜色名转换为真彩色值,返回 DXF 组码列表,以及使用图元列表。

以下 AutoLISP 函数提供了对“真彩色”用户界面的访问:
        (acad_truecolordlg color [allowbylayer] [currentlayercolor])。通过对话框提示输入颜色。颜色参数是一个说明默认颜色的点对;点对的第一个元素必须是颜色相关 DXF 组码(62、420 或 430)之一。如果 allowbylayer 参数存在且不为 nil,则显示“随层”和“随块”按钮。如果操作成功,该函数返回说明选定颜色的一个或多个点对的列表。列表中最后一个点对指示选定的颜色。如果用户取消对话框,则该函数返回 nil。

(acad_truecolorcli color [allowbylayer] [alternatePrompt])。在命令行提示输入颜色。前两个参数与 acad_truecolordlg 相同,第三个参数是一个可选提示字符串。如果省略此字符串,则默认值为“新颜色”。
        在 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,才能确保所有函数的正确版本输出到当前文档。
        当 MENULOAD 命令在 MDI 中加载局部菜单时,该菜单的 MNL 文件为每个打开的文档加载一次,同时所有用户交互操作都发生在当前文档中。为避免在用 AutoCAD 打开多个图形时出现多余的打印信息或用户提示,建议在设置 MNL LISP 代码时不要包含任何用户交互操作。请使用 MNL 代码为后续的菜单项选择加载任何所需的 LISP 文件。使用 acad.lsp 或 acaddoc.lsp 文件执行打开图形时要处理的 LISP 代码。

如果用单个正斜杠作为分隔符,则使用 vla-unloadDVB 无法将文件名参数传递到 ActiveX UnloadDVB 方法中。调用 vla-loadDVB、
vla-RunMacro 和 vla-unloadDVB 时,建议用双反斜杠作为分隔符来指定文件名参数。
        用于防止文档被标记为“已更新”的函数

两个新函数 acad-push-dbmod 和 acad-pop-dbmod 可用于挂起和恢复 AutoCAD 用于跟踪图形更改的 $DBMOD 记录机制。这些函数使应用程序将更改文档作为其初始化过程的一部分,无需设置 $DBMOD 标志,也不触发不需要的保存图形查询。

(acad-push-dbmod) 将文档的 $DBMOD 系统变量的当前值推入内部堆栈。该函数始终返回 T。

(acad-pop-dbmod) 将 $DBMOD 的值恢复为文档的内部堆栈上最近入栈的值。对于成功的出栈,该函数返回 T;如果堆栈为空,则返回 nil。

acad-push-dbmod 和 acad-pop-dbmod 函数在 acapp.arx 中实现,acapp.arx 默认情况下在 AutoCAD 启动时加载,但是可以禁用(如果需要)。
要使用新函数,请在执行程序操作(该操作应不影响 $DBMOD 值)之前,通过调用使 $DBMOD 值入栈,然后在执行完此操作后将该值出栈。下面是一个简单的 LISP 样例:

   (acad-push-dbmod)
   (setq new_line '((0 ."LINE") (100 ."AcDbEntity") (8 . "0")
                       (100 . "AcDbLine") (10 1.0 2.0 0.0) (11 2.0 1.0 0.0)
                       (210 0.0 0.0 1.0)))
   (entmake new_line)            ; 设置 $DBMOD 1 标志
   (command "_color" "2")        ; 设置 $DBMOD 4 标志
   (command "_-vports" "_SI")    ; 设置 $DBMOD 8 标志
   (command "_vpoint" "0,0,1")   ; 设置 $DBMMOD 16 标志

   (acad-pop-dbmod)    ; $DBMOD 将再次具有调用
                       ; acad-push-dbmod 之前的值
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2004-5-17 21:16:00 | 显示全部楼层
我用LISP加载ET工具中的如下程序却加载失败。
  1. (arxload "H:\\Program Files\\ACETUTIL1.ARX")
  2. ; 错误: ARXLOAD 失败
复制代码
可是用工具菜单中的加载应用程序功能却能顺利加载呀!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 05:47 , Processed in 0.155174 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表