明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1020|回复: 4

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

[复制链接]
发表于 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)
)

评分

参与人数 1明经币 +1 收起 理由
ssyfeng + 1 赞一个!

查看全部评分

发表于 2024-4-2 15:25:32 | 显示全部楼层
选择块时第一次会提示错误,要第二次才成功
 楼主| 发表于 2024-4-2 15:31:10 | 显示全部楼层
是的,拾取块也会出现错误
发表于 2024-4-2 15:42:51 | 显示全部楼层
本帖最后由 ssyfeng 于 2024-4-2 15:43 编辑

可以加个判断处理一下块就可以了,nentselp选择块,应该是得到表的最后一个表的最后一个图元名就是
 楼主| 发表于 2024-4-2 15:48:55 | 显示全部楼层
本帖最后由 LIULISHENG 于 2024-4-2 15:50 编辑

块的错误是因为_ADDSELECTED 命令在拾取块后需要输入一些参数,  (vl-cmdf "_ADDSELECTED" "" ent "")的输入格式不对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 19:41 , Processed in 0.170816 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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