LIULISHENG 发表于 2024-4-2 15:19:23

求助,拾取特性后不能一次退出怎么办

本帖最后由 LIULISHENG 于 2024-4-2 15:26 编辑

做了一个拾取图元特性的功能,主要是借助"_ADDSELECTED"实现的,并增加拾取和恢复线宽,但是由此导致命令按ESC不能一次退出,需要按两次ESC才能退出,否则在点击空格键重新使用时会出现”未知命令“TT”。按 F1 查看帮助。“,怎样才能不出现这个提示,请各位帮助看一下,代码如下:

(defun C:TT (/ *error* ent linewidth old_cmdecho old_pw ss)
      (setq old_cmdecho (getvar "cmdecho" ))
      (setvar "cmdecho" 0)
      (setq old_pw (getvar 'PLINEWID))
      (defun *Error* (msg);出错处理
                (if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*,*EXIT*,*取消*")))
                        (progn                                                                                                
                              (setvar 'PLINEWID old_pw)
                              ;(getvar "lastprompt")                                                                                       
                              (setvar "cmdecho" old_cmdecho)
                              (princ)
                        )
                )
      );defun *Error*
      (while (null ent)
                (setq ent (car(nentselp "\n请拾取图元特性:")))
      )
      (if (wcmatch (cdr(assoc 0 (entget ent))) "*POLYLINE")
                (progn
                        (if (cdr(assoc 43 (entget ent)))
                              (progn
                                       
                                        (setq Linewidth (cdr(assoc 43 (entget ent))))
                                        (setvar 'PLINEWID Linewidth)
                              )
                        )
                        (vl-cmdf "_ADDSELECTED" "" ent "")                                                
                        (while (= 1 (getvar "cmdactive"))                                                                                                
                              (vl-cmdf pause)                        
                              (setvar 'PLINEWID old_pw)                                                
                        )                                                                                                               
                )      
                (vl-cmdf "_ADDSELECTED" "" ent "")
      )                              
      (setvar "cmdecho" old_cmdecho)                                       
      (princ)
)

ssyfeng 发表于 2024-4-2 15:25:32

选择块时第一次会提示错误,要第二次才成功

LIULISHENG 发表于 2024-4-2 15:31:10

是的,拾取块也会出现错误

ssyfeng 发表于 2024-4-2 15:42:51

本帖最后由 ssyfeng 于 2024-4-2 15:43 编辑

可以加个判断处理一下块就可以了,nentselp选择块,应该是得到表的最后一个表的最后一个图元名就是

LIULISHENG 发表于 2024-4-2 15:48:55

本帖最后由 LIULISHENG 于 2024-4-2 15:50 编辑

块的错误是因为_ADDSELECTED 命令在拾取块后需要输入一些参数,(vl-cmdf "_ADDSELECTED" "" ent "")的输入格式不对
页: [1]
查看完整版本: 求助,拾取特性后不能一次退出怎么办