明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2141|回复: 7

[提问] 让一个自定义命令一直重复运行,直到esc取消要怎么写

[复制链接]
发表于 2019-11-7 09:55:19 | 显示全部楼层 |阅读模式
(defun c:x()
(a)
)
怎么给(a)加个套让他直到用户取消才不运行/谢谢指教下。
发表于 2019-11-7 14:15:16 | 显示全部楼层
LISP具体不清楚,不过感觉理论上不大可行,除非加别的手段。如果要相应用户按键,那么就要停下来等待用户交互,不按键就不继续。如果要继续,也就是不响应用户按键,那么按ESC也就无效。
 楼主| 发表于 2019-11-7 14:26:48 | 显示全部楼层
while (Esc 这个键的条件)要怎么获到。我就是要这个代码,插进(a)里,让他停下来。
发表于 2019-11-7 16:00:41 | 显示全部楼层
(while testexpr [expr...])

(a)  的返回值為何!?

(while (a))
or
(while (not (a)))

Try...
 楼主| 发表于 2019-11-7 17:42:48 | 显示全部楼层
我把(a)插入自身,他就一直重复运行了,esc也能取消,
但是有个问题我在(a)打开过一个文件,esc取消时他还没保存,要怎么让他取消时保存一下呢
(close ff)
发表于 2019-11-7 19:25:38 | 显示全部楼层
请参考 *error* 函数

应用例请直接在坛内搜...

发表于 2019-11-11 23:24:53 | 显示全部楼层
我截段代码。三领外挂的

(setq loop t)
(princ (strcat "\n【空格】【回车】复制距离<" (rtos sldis1 2 2) ">:【右键】【ESC键】退出"))
(while (= t loop)  ;命令期间如果按下空格、回车、右健时结束命令
  (setq grr (grread t ));请求输入
  (setq gr(car grr))
  (cond
   ((or(equal grr '(2 32));空格
     (equal grr '(2 13));回车
    )
    (setq pt2 (polar pt2 ang sldis1))
    (command "COPY" s "" pt1 pt2)
   )   
   ((equal grr'(11 0));右击
    (setq loop nil)
   )   
  )
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 14:12 , Processed in 0.195160 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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