CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2024 开发者帮助

关于重新定义 AutoCAD 命令 (AutoLISP)

2024-5-18 19:03| 发布者: admin| 查看: 17| 评论: 0|原作者: admin|来自: AutoCAD

关于重新定义 AutoCAD 命令 (AutoLISP)

使用 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 命令,以在创建图形后和终止编辑会话之前将计费信息写入日志文件。


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-6-27 16:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部