使用 AutoLISP,可以取消定义和替换内置 AutoCAD 命令的功能。 UNDEFINE 命令允许您禁用内置的 AutoCAD 命令,然后使用 AutoLISP 可以通过定义与该函数同名的用户定义命令来替换它。仅对当前编辑会话未定义命令。可以使用 REDEFINE 命令恢复命令的内置定义。defun 在取消定义命令后,可以通过指定以句点 (.) 为前缀的名称来执行命令的内置定义。例如,如果取消定义 QUIT,则可以通过在 AutoCAD 命令提示符下输入 .quit 来访问该命令。这也是 AutoLISP 命令函数中应使用的语法,以确保用户定义的函数和命令可以预期地工作,即使内置命令未定义也是如此。 建议您使用所有命令的句点前缀形式来保护菜单、脚本和 AutoLISP 程序。这可确保应用程序使用内置命令定义,而不是重新定义的命令。 请看以下示例。每当使用LINE命令时,您都希望AutoCAD提醒您使用PLINE命令。您可以定义AutoLISP函数来替换普通的LINE命令,如下所示:C:LINE (defun C:LINE ( ) (princ "Shouldn't you be using PLINE?\n") (command ".LINE") (princ) ) C:LINE 在此示例中,该函数旨在发出其消息,然后执行标准 LINE 命令(使用 .带有命令功能的LINE)。在AutoCAD可以使用LINE命令的定义之前,必须取消定义内置LINE命令。输入以下内容以取消定义内置的LINE命令:C:LINE (command ".undefine" "line") 取消定义命令并在 AutoCAD 命令提示符下输入行后,AutoCAD 将使用 AutoLISP 函数:C:LINE 命令:line 你不应该使用PLINE吗? .LINE 指定第一点: 指定第一点: 前面的代码示例假定 CMDECHO 系统变量设置为 1 (On)。如果 CMDECHO 设置为 0(关闭),则 AutoCAD 在函数调用期间不会回显提示。以下代码使用 CMDECHO 系统变量来防止 LINE 命令提示符重复出现:command (defun C:LINE ( / cmdsave ) (setq cmdsave (getvar "cmdecho")) (setvar "cmdecho" 0) (princ "Shouldn't you be using PLINE?\n") (command ".LINE") (setvar "cmdecho" cmdsave) (princ) ) C:LINE 现在,如果在AutoCAD命令提示符下输入行,则会显示以下文本: 你不应该使用PLINE吗? 指定第一点: 例如,您可以取消定义和重新定义命令以创建图形管理系统。您可以重新定义 NEW、OPEN 和 QUIT 命令,以在创建图形后和终止编辑会话之前将计费信息写入日志文件。 |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-7 20:06
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.