CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

关于重定义 AutoCAD 命令(AutoLISP)

2023-1-6 13:15| 发布者: admin| 查看: 3986| 评论: 0|来自: AutoCAD

摘要: 使用 AutoLISP,可以取消定义和替换内置 AutoCAD 命令的功能。

使用 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   苏公网安备32011402011833)

GMT+8, 2025-1-7 20:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部