LIUYANG233 发表于 2024-12-13 09:37:39

求教函数取消后,如何继续执行后续程序

从社区里找了一个画双线后炸开的程序,很符合我的预期,只是画图时习惯用esc结束mline命令,这样炸双线的命令就无法进行,求教如何在结束和退出mline命令后,继续执行代码。


[*](defun c:123()   
[*]    ;启动绘制双线命令
[*]    (command "mline" "S" 400 )   
[*]    ;检测命令是否结束   
[*]    (while (= (getvar "CMDACTIVE") 1)
[*]      ;没有结束,等待用户输入      
[*]      (command pause)            )   
[*]    ;获取上面命令生成的多线   
[*]    (setq ent (entlast))   
[*]    ;执行分解命令   
[*]    (command "EXPLODE" ent)   
[*]    ;静默退出   
[*]    (princ)    )

tryhi 发表于 2024-12-13 11:52:55

本帖最后由 tryhi 于 2024-12-13 11:54 编辑

(defun c:tt (/ *error*)
(defun *error* (MSG)
(setq ent (entlast))   
(command "EXPLODE" ent)
)
(command "mline" "S" 400 )   
(while (= (getvar "CMDACTIVE") 1)
(command pause))
(*error* "")
)

tryhi 发表于 2024-12-13 10:27:35

把炸双线放到*error*函数里面

小王在学lisp 发表于 2024-12-13 10:42:36

tryhi 发表于 2024-12-13 10:27
把炸双线放到*error*函数里面

老师举例说明下嘛

LIUYANG233 发表于 2024-12-13 11:31:20

本帖最后由 LIUYANG233 于 2024-12-13 18:31 编辑

小王在学lisp 发表于 2024-12-13 10:42
老师举例说明下嘛
我搜了一个,好使了。

小王在学lisp 发表于 2024-12-13 11:32:23

LIUYANG233 发表于 2024-12-13 11:31
我搜了一个,好使了。
(defun C:TT2 ()
(setq olderr *error* *error* myerr)


谢谢,我也研究下

LIUYANG233 发表于 2024-12-13 11:34:02

tryhi 发表于 2024-12-13 10:27
把炸双线放到*error*函数里面

谢谢大佬,已经解决

tryhi 发表于 2024-12-13 11:55:30

LIUYANG233 发表于 2024-12-13 11:31
我搜了一个,好使了。
(defun C:TT2 ()
(setq olderr *error* *error* myerr)


可以使用局部函数直接定义*error*

LIUYANG233 发表于 2024-12-13 12:09:13

tryhi 发表于 2024-12-13 11:55
可以使用局部函数直接定义*error*

感谢大佬指点(ˇˇ)
页: [1]
查看完整版本: 求教函数取消后,如何继续执行后续程序