明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 343|回复: 2

[提问] 如何把一个lisp函数做成一个单独的命令

[复制链接]
发表于 2022-7-17 15:05 | 显示全部楼层 |阅读模式
5明经币
比如我用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 "")))
    )



最佳答案

查看完整内容

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:05 | 显示全部楼层
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 | 显示全部楼层
rocking2008 发表于 2022-7-17 15:05
defun c:es()
(command "._undo" "_begin")
(setq k 0)

感谢!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-3 02:35 , Processed in 0.270485 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表