CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

关于重定义 AutoCAD 命令(AutoLISP)

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

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

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

UNDEFINE 命令允许您禁用内置的 AutoCAD 命令,然后使用 AutoLISP 可以通过定义具有函数的同名用户定义命令来替换该命令。仅对当前编辑会话的命令保持未定义状态。可以使用 REDEFINE 命令恢复命令的内置定义。defun

在命令未定义后,可以通过指定以句点 (.) 为前缀的名称来执行命令的内置定义。例如,如果取消定义 QUIT,则可以通过在 AutoCAD 命令提示下输入 entering.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 命令(使用 .带有命令功能的行)。在 AutoCAD 可以使用 LINE 命令的定义之前,必须取消定义内置的 LINE 命令。输入以下内容以取消定义内置 LINE 命令:C:LINE

(command ".undefine" "line")

取消定义命令并在 AutoCAD 命令提示下输入行后,AutoCAD 将使用 AutoLISP 函数:C:LINE

命令:

你不应该使用PLINE吗?

.线 指定第一个点: 指定第一个点:

前面的代码示例假定 CMDECHO 系统变量设置为 1 (开)。如果 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吗?

指定第一个点:

例如,您可以取消定义和重定义命令以创建图形管理系统。可以重定义“新建”、“打开”和“退出”命令,以便在创建图形之后和终止编辑会话之前将帐单信息写入日志文件。


路过

雷人

握手

鲜花

鸡蛋

最新评论

2024年新出cad图库素材

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

GMT+8, 2024-5-7 04:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部