世人皆醉 发表于 2022-7-17 15:05:22

如何把一个lisp函数做成一个单独的命令

比如我用lisp命令删除框选里的中心线,但是我删完之后又不想删了,我按ctrl+z撤销,但是是一个一个恢复中心线的,而不是撤销这个命令,如何能够直接
撤销执行的那个lisp函数的所有操作呢



defun c:es()
(setq k 0)
    (setq tag 0)
    (while (< k nu)
      (setq en (entget (setq a (ssname s k))))
      (setq k (+ k 1))
      (if (= (cdr (assoc 8 en)) "3中心线层")
         (progn
         (setq tag (+ tag 1))
         (command "erase" a "")))
    )



rocking2008 发表于 2022-7-17 15:05:23

defun c:es()
(command "._undo" "_begin")
(setq k 0)
   (setq tag 0)
   (while (< k nu)
       (setq en (entget (setq a (ssname s k))))
       (setq k (+ k 1))
       (if (= (cdr (assoc 8 en)) "3中心线层")
          (progn
            (setq tag (+ tag 1))
            (command "erase" a "")))
(command "._undo" "_end")
   )

世人皆醉 发表于 2022-7-17 15:46:22

rocking2008 发表于 2022-7-17 15:05
defun c:es()
(command "._undo" "_begin")
(setq k 0)


感谢!!!
页: [1]
查看完整版本: 如何把一个lisp函数做成一个单独的命令