乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: gS7

[编程交流] 撤消命令问题

[复制链接]

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 07:27:27 | 显示全部楼层
我想这就是你想要实现的(对不起,我没有标记更改):
  1. (defun c:test ( / ext sel sss )
  2.    (while (null ext)
  3.        (setvar 'errno 0)
  4.        (if sss (initget "Undo"))
  5.        (setq sel (entsel (strcat "\nPick Object to Erase" (if sss " [undo]: " ": "))))
  6.        (cond
  7.            (   (= 7 (getvar 'errno))
  8.                (princ "\nMissed, try again.")
  9.            )
  10.            (   (= "Undo" sel)
  11.                (if (> (sslength sss) 0)
  12.                 (repeat (sslength sss)
  13.                  (entdel (ssname sss 0))
  14.                  (ssdel (ssname sss 0) sss)
  15.                 )
  16.                )
  17.            )
  18.            (   (= 'ename (type (car sel)))
  19.         (setq sss (ssget "x" (list (cons 8 (cdr (assoc 8 (entget (car sel))))))))
  20.         (command "erase" sss "")
  21.            )
  22.            (   (setq ext t)   )
  23.        )
  24.    )
  25.    (princ)
  26. )
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-6 07:30:12 | 显示全部楼层
是的,你说的没错,Mircea代码现在正在工作,但我还有一个问题,那就是它只会用一个选择集撤消,
如果我选择了多个不工作的。。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 07:33:10 | 显示全部楼层
这是因为sss变量在每次选择操作时被重置-尝试将以前的内容存储到列表中,并将其解析为撤消。
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-6 07:35:32 | 显示全部楼层
 
请再次帮助我更新您的代码
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 07:42:10 | 显示全部楼层
这是我的建议:
  1. (defun c:test ( / ext sel sss listOfSelSets )
  2. (while (null ext)
  3. (setvar 'errno 0)
  4. (if sss (initget "Undo"))
  5. (setq sel (entsel (strcat "\nPick Object to Erase" (if sss " [undo]: " ": "))))
  6. (cond
  7.   ((= 7 (getvar 'errno))
  8.    (princ "\nMissed, try again.")
  9.   )
  10.   ((= "Undo" sel)
  11.    (if listOfSelSets
  12.     (progn
  13.      (setq sss           (car listOfSelSets)
  14.            listOfSelSets (cdr listOfSelSets))
  15.      (repeat (sslength sss)
  16.       (entdel (ssname sss 0))
  17.       (ssdel (ssname sss 0) sss)
  18.      )
  19.     )
  20.     (prompt "\nNothing to undo...")
  21.    )
  22.   )
  23.   ((= 'ename (type (car sel)))
  24.    (setq sss (ssget "x" (list (cons 8 (cdr (assoc 8 (entget (car sel))))))))
  25.    (command "erase" sss "")
  26.    (setq listOfSelSets (cons sss
  27.                              listOfSelSets))
  28.   )
  29.   ((setq ext t))
  30. )
  31. )
  32. (princ)
  33. )
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-6 07:44:14 | 显示全部楼层
哇!非常感谢米尔恰,现在我明白了
 
再次感谢你的帮助
 
当做
甘尼什·谢蒂
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 07:49:16 | 显示全部楼层
完全欢迎你,甘尼什!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 15:13 , Processed in 1.223851 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表