Jimmy Sean 发表于 2022-7-6 10:43:04

用按钮停止lisp循环

我有一个工具栏按钮宏,在一个循环中运行两个lisp例程,我想用工具栏按钮(停止循环工具栏按钮)打破循环或ctrl+打破循环。实现这一点的最佳方式是什么?我想不出一个可行的方法。
谢谢
肖恩

Lee Mac 发表于 2022-7-6 10:48:52

(exit)。。。

alanjt 发表于 2022-7-6 10:50:56

为什么不按一下逃生键呢?

The Buzzard 发表于 2022-7-6 10:53:05

 
 
哎哟艾伦比弗兰克·珀杜更强硬。

alanjt 发表于 2022-7-6 10:57:36

一个真正的男人要比一个胆小的CEO坚强。

Jimmy Sean 发表于 2022-7-6 10:59:57

 
原因是我希望能够终止循环,然后一次性重置一些变量。
 
进一步解释我试图实现的目标。按钮宏*^C^CLWTFLASHALLON;LWTFLASHALLOFF;
 
它运行一个循环,打开线宽,然后关闭线宽,为一组特定的图层创建光剑/闪光效果。我希望能够终止循环,然后用另一个lisp例程重置线宽。
 
可能不是最好的方法,但这是我知道的唯一方法。不过,我对其他方法持开放态度。
 
(出口)不会通过按钮杀死它。
 
谢谢
肖恩

alanjt 发表于 2022-7-6 11:03:59

只需使用错误处理程序正确地编写例程,该程序将重置变量。

The Buzzard 发表于 2022-7-6 11:07:02

 
在我看来,这些程序需要的是工作,而不是marcro按钮。你能显示程序吗?

Jimmy Sean 发表于 2022-7-6 11:10:55

 
这将超出我的技能范围,尽管我不适合学习如何做到这一点。有人能给我指出正确的方向吗?
 
 
当然到目前为止,我需要完成的是,当取消时,它会将所有线宽返回到默认值,并关闭lwdisplay。
 
;;;;;;;;;;;;;;;;;;;;;;
;Flash All
;;;;;;;;;;;;;;;;;;;;;;
;THIS MACRO MUST BE KEPT SEPARATE FROM LWTFLASHOFF OR IT WILL NOT RUN AND WILL NOT ALLOW ZOOMING AND PANNING WHILE FLASHING.
(defun C:LWTFLASHALLON ()
(command
"-layer"
"LWEIGHT"
"1"
"*"
""
"LWDISPLAY"
"ON"
"DELAY"
"200")
(PRIN1))


;THIS MACRO MUST BE KEPT SEPARATE FROM LWTFLASHON OR IT WILL NOT RUN AND WILL NOT ALLOW ZOOMING AND PANNING WHILE FLASHING.
(defun C:LWTFLASHALLOFF ()
(command
"LWDISPLAY"
"OFF"
"DELAY"
"200"
"-layer"
"LWEIGHT"
"DEFAULT"
"*"
""

)
(PRIN1))

;;;;;;;;;;;;;;;;;;;;;;
;End Flash All
;;;;;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;;;;;;;;;;;
;Stop Flash
;;;;;;;;;;;;;;;;;;;;;;

(defun C:STOP-FLASH ()
(command
"LWDISPLAY"
"OFF"
"DELAY"
"200"
"-layer"
"LWEIGHT"
"DEFAULT"
"*"
""

)
(PRIN1))

;;;;;;;;;;;;;;;;;;;;;;
;End Stop Flash
;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;
;Flash all Mechanical
;;;;;;;;;;;;;;;;;;;;;;
(defun C:FLASH-M-ALLON ()
(command
"-layer"
"LWEIGHT" "1" "#*|M*"
""
"LWDISPLAY"
"ON"
"DELAY"
"200")
(PRIN1))

(defun C:FLASH-M-ALLOFF ()
(command
"LWDISPLAY"
"OFF"
"DELAY"
"200"
"-layer"
"LWEIGHT"
"DEFAULT"
"*"
""

)
(PRIN1))

;;;;;;;;;;;;;;;;;;;;;;
;End Flash all Mechanical
;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;
;Flash all Electrical
;;;;;;;;;;;;;;;;;;;;;;
(defun C:FLASH-E-ALLON ()
(command
"-layer"
"LWEIGHT" "1" "#*|E*"
"LWEIGHT" "default" "#*|E-COMMUNICATION_CEILING*"
"LWEIGHT" "default" "#*|E-FIRE_ALARM_CEILING*"
"LWEIGHT" "default" "#*|E-NURSE_CALL_CEILING*"
"LWEIGHT" "default" "#*|E-SECURITY_CEILING*"
"LWEIGHT" "default" "#*|E-TEXT-BLOCK*"
"LWEIGHT" "default" "#*|E-TEXT-COM*"
"LWEIGHT" "default" "#*|E-TEXT-SEC*"
"LWEIGHT" "default" "#*|E-TEXT-NC*"
""
"LWDISPLAY"
"ON"
"DELAY"
"200")
(PRIN1))

(defun C:FLASH-E-ALLOFF ()
(command
"LWDISPLAY"
"OFF"
"DELAY"
"200"
"-layer"
"LWEIGHT"
"DEFAULT"
"*"
""

)
(PRIN1))

;;;;;;;;;;;;;;;;;;;;;;
;End Flash all Electrical
;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;
;Flash all Communication
;;;;;;;;;;;;;;;;;;;;;;
(defun C:FLASH-C-ALLON ()
(command
"-layer"
"LWEIGHT" "1" "#*|E-COMMUNICATION_CEILING*"
"LWEIGHT" "1" "#*|E-FIRE_ALARM_CEILING*"
"LWEIGHT" "1" "#*|E-NURSE_CALL_CEILING*"
"LWEIGHT" "1" "#*|E-SECURITY_CEILING*"
"LWEIGHT" "1" "#*|E-TEXT-BLOCK*"
"LWEIGHT" "1" "#*|E-TEXT-COM*"
"LWEIGHT" "1" "#*|E-TEXT-SEC*"
"LWEIGHT" "1" "#*|E-TEXT-NC*"
""
"LWDISPLAY"
"ON"
"DELAY"
"200")
(PRIN1))

(defun C:FLASH-C-ALLOFF ()
(command
"LWDISPLAY"
"OFF"
"DELAY"
"200"
"-layer"
"LWEIGHT"
"DEFAULT"
"*"
""

)
(PRIN1))

;;;;;;;;;;;;;;;;;;;;;;
;End Flash all Communication
;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;
;Flash all Plumbing
;;;;;;;;;;;;;;;;;;;;;;
(defun C:FLASH-P-ALLON ()
(command
"-layer"
"LWEIGHT" "1" "#*|P*"
"LWEIGHT" "default" "#*|P*-FLOWSWITCH*"
"LWEIGHT" "default" "#*|P*-TAMPERSWITCH*"
"LWEIGHT" "default" "#*|PN-FIRE*"
"LWEIGHT" "default" "#*|PN-SPKLR*"
"LWEIGHT" "default" "#*|PN-SPLRHD*"
"LWEIGHT" "default" "#*|PX-FIRE*"
"LWEIGHT" "default" "#*|PX-SPKLR*"
"LWEIGHT" "default" "#*|PX-SPLRHD*"
""
"LWDISPLAY"
"ON"
"DELAY"
"200")
(PRIN1))

(defun C:FLASH-P-ALLOFF ()
(command
"LWDISPLAY"
"OFF"
"DELAY"
"200"
"-layer"
"LWEIGHT"
"DEFAULT"
"*"
""

)
(PRIN1))

;;;;;;;;;;;;;;;;;;;;;;
;End Flash all Plumbing
;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;
;Flash all Fire Protection
;;;;;;;;;;;;;;;;;;;;;;
(defun C:FLASH-FP-ALLON ()
(command
"-layer"
"LWEIGHT" "1" "#*|F*"
"LWEIGHT" "1" "#*|P*-FLOWSWITCH*"
"LWEIGHT" "1" "#*|P*-TAMPERSWITCH*"
"LWEIGHT" "1" "#*|PN-FIRE*"
"LWEIGHT" "1" "#*|PN-SPKLR*"
"LWEIGHT" "1" "#*|PN-SPLRHD*"
"LWEIGHT" "1" "#*|PX-FIRE*"
"LWEIGHT" "1" "#*|PX-SPKLR*"
"LWEIGHT" "1" "#*|PX-SPLRHD*"
""
"LWDISPLAY"
"ON"
"DELAY"
"200")
(PRIN1))

(defun C:FLASH-FP-ALLOFF ()
(command
"LWDISPLAY"
"OFF"
"DELAY"
"200"
"-layer"
"LWEIGHT"
"DEFAULT"
"*"
""

)
(PRIN1))

;;;;;;;;;;;;;;;;;;;;;;
;End Flash Fire Protection
;;;;;;;;;;;;;;;;;;;;;;
 
谢谢
肖恩

alanjt 发表于 2022-7-6 11:14:09

快速显示切换。。。
 
(defun c:LWT (/ *error* lwd)
(defun *error* (msg)
   (and lwd (setvar 'lwdisplay lwd))
   (if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*,")))
   (princ (strcat "\nError: " msg))
   )
)

(setq lwd (getvar 'lwdisplay))
(while t
   (setvar 'lwdisplay (abs (1- (getvar 'lwdisplay))))
   (command "_.delay" 200)
)
(*error* nil)
(princ)
)
页: [1] 2
查看完整版本: 用按钮停止lisp循环