CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

关于撤消例程所做的更改(AutoLISP)

2023-1-6 12:47| 发布者: admin| 查看: 1060| 评论: 0|来自: AutoCAD

摘要: 通过将多个 AutoLISP 语句组合到单个撤消组下,可以回滚使用 AutoCAD U 或 UNDO 命令执行的所有操作。

通过将多个 AutoLISP 语句组合到单个撤消组下,可以回滚使用 AutoCAD U 或 UNDO 命令执行的所有操作。

使用 theandfunctions 执行的每个命令都会显式创建自己的 UNDO 组。如果用户在运行 AutoLISP 例程后在 AutoCAD 命令提示符下输入 U(或撤消),则只会撤消最后一个命令。撤消的其他用法将进一步向后退,遍历该例程中使用的命令。例程的用户希望它可以在单个操作中撤消它执行的所有操作,而不必撤消多个操作以返回到图形的先前状态。commandcommand-s

建议将 AutoLISP 例程执行的命令和操作分组到单个 UNDO 组中,或者,如果您的例程允许用户重复操作,您甚至可以在每次用户的响应影响图形时创建撤消组。可以使用 AutoCAD 撤消命令的“开始”和“结束”选项来定义撤消组。

以下示例代码演示了使用命令函数执行的每个命令如何具有自己的 UNDO 组。

(defun c:NoUndo ( / old_osmode el pt)
  (setq old_osmode (getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (command "._circle" "5,5" "2")    ;Draws a circle
  (command "._line" "3,5" "7,5" "") ;Draws a line
  (setq el (entlast))               ;Gets the last entity added 
                                    ; to the drawing
  (setq pt '(5 7))                  ;Sets the trim point
  (command "._trim" el "" pt "")    ;Performs the trim
  (setvar "OSMODE" old_osmode)
)

运行例程后,您将看到一个半圆。在运行例程后发出 U 或撤消命令会导致 AutoCAD 修剪命令被撤消;您现在应该看到一个完整的圆,其中一条线贯穿其中心。再次执行 U 或 UNDO 命令会导致撤消使用 AutoCAD LINE 命令创建的行。第三次使用 U 或 UNDO 命令会导致撤消 AutoCAD CIRCLE 命令。c:NoUndoc:NoUndo

以下示例代码演示如何使用 AutoCAD UNDO 命令创建允许用户使用单个 U(或 UNDO)命令回滚所有更改的撤消组。

(defun c:YesUndo ( / old_osmode el pt)
  (command "._UNDO" "_Begin")
  (setq old_osmode (getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (command "._circle" "5,5" "2")    ;Draws a circle
  (command "._line" "3,5" "7,5" "") ;Draws a line
  (setq el (entlast))               ;Gets the last entity added
                                    ; to the drawing
  (setq pt '(5 7))                  ;Sets the trim point
  (command "._trim" el "" pt "")    ;Performs the trim
  (setvar "OSMODE" old_osmode)
  (command "._UNDO" "_End")
)

运行例程后,您将看到一个半圆,就像例程一样。在运行例程后发出 U 或撤消命令会导致撤消 AutoCAD 修剪、线条和圆形命令。c:YesUndoc:NoUndoc:YesUndo


路过

雷人

握手

鲜花

鸡蛋

最新评论

AutoLISP AutoCAD二次开发

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

GMT+8, 2024-5-6 18:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部