开始自学的小白 发表于 2022-4-19 11:01:00

【错误处理】各位大哥来看看 lisp看的视频错误处理这一块

以下是源码,我的问题是到循环那按esc退出后捕捉不会恢复,刚开始接触lisp;
找了很多次错,也没找到哪里的问题
各位大哥来看看
(defun c:px (/ pd pd1 sz wz wzcj wzh xg xg1 yy);序号排序
;错误处理
(setq *error*_bak *error*)
(setq *error* *error*_non)
;-----------------------------------------
(setq osmode_bak (getvar "osmode"));备份捕捉
-----------------------------------------
(setq pd (getint "\n是否关闭捕捉,0为否,1为是:"));是否关闭捕捉
(setq pd1 1)
(if (eq pd pd1)
    (setvar "osmode" 0)
    (nil);setvar "osmode" OSMODE_bak
)
;主程序
(setq sz (getint "输入一个数"))
(setq wzh (getreal "\n输入文字高度"))
(setq wz t)
(while t
    (setq wz (getpoint "\n选择点"))
    (setq wzcj (Vlax-Invoke-Method (Vlax-Get (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument) 'ModelSpace) 'AddText (rtos sz 2 0) (vlax-3D-point wz) wzh))
    (setq xg (Vlax-Put-Property wzcj 'Alignment 4));修改对齐方式
    (setq xg1 (Vlax-Put-Property wzcj 'TextAlignmentPoint (vlax-3D-point wz)) );修改对齐方式参照点
    (setq yy (Vlax-Invoke-Method (Vlax-Get (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument) 'ModelSpace) 'AddCircle (vlax-3D-point wz) (* wzh 2) ));画圆
    (setq sz (+ sz 1))
)
;
(setq *error* *error*_bak)
(setvar "osmode" osmode_bak)
(princ)
)
(defun *error*_non (msg); 错误信息
(setq *error* *error*_bak)
(setvar "osmode" osmode_bak)
)

taoyi0727 发表于 2022-4-19 11:50:00

你是用飞诗加载的吧!用飞诗加载就会有这个问题 ,你把lsp托进CAD能正常了

开始自学的小白 发表于 2022-4-19 12:12:00


谢谢了,确实是这个毛病

swamii 发表于 2022-5-25 11:17:00

我也是小白,请问lisp视频是哪里获取的呢

开始自学的小白 发表于 2022-7-28 16:54:00


猫老师的课程
页: [1]
查看完整版本: 【错误处理】各位大哥来看看 lisp看的视频错误处理这一块