明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1835|回复: 15

[已解答] 怎么获取所有高亮图元

[复制链接]
发表于 2015-11-15 21:15:14 | 显示全部楼层 |阅读模式
因为有时候程序中会用到(redraw ss 3),一旦esc取消了函数,图元会一直保持亮显,所以我想在出错处理的error函数中添加(redraw ss 4),但由于引用了其他一些人的函数,导致“ss”不能代表所有的高亮图元。请问有什么办法可以将所有的高亮图元赋值给变量ss吗?
PS:不想要regen,大图很卡。
 楼主| 发表于 2015-11-16 17:24:20 | 显示全部楼层
自顶,求助各位大神!
发表于 2015-11-16 19:40:42 | 显示全部楼层
应该没有单独过滤得出来的,可以最简单的每个实体都redraw 4. 但是比regen可能还会慢一些。
 楼主| 发表于 2015-11-16 20:16:46 | 显示全部楼层
mmmmmm 发表于 2015-11-16 19:40
应该没有单独过滤得出来的,可以最简单的每个实体都redraw 4. 但是比regen可能还会慢一些。

那大哥你自己用的错误处理函数,是怎么应对恢复亮显的啊?就用regen吗?
发表于 2015-11-16 20:19:34 | 显示全部楼层
error一般会undo回最初的状态,此时还没有被高亮的实体呢
 楼主| 发表于 2015-11-16 20:22:37 | 显示全部楼层
mmmmmm 发表于 2015-11-16 20:19
error一般会undo回最初的状态,此时还没有被高亮的实体呢

(defun recovery();程序开始时(recovery),while等语句结束时(*error* nil)
    (setq e_lst (mapcar (function (lambda (n) (list 'setvar n (getvar n))))
                                '("cecolor" "clayer" "LUPrec" "autosnap" "osmode" "aperture" "hpspace" "hpassoc" "mirrtext" "auprec" "luprec" "dimzin" "PLINEWID" )))
    (defun *error* (msg) (mapcar 'eval e_lst))
)
这是我论坛里找来的出错恢复函数,请问要怎么改写才能error时undo回到最初的状态?
发表于 2015-11-16 21:24:41 | 显示全部楼层
 楼主| 发表于 2015-11-16 21:51:02 | 显示全部楼层
mmmmmm 发表于 2015-11-16 21:24
推荐你看看
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=100616

好的,谢谢!
发表于 2015-11-16 22:15:14 | 显示全部楼层
(sssetfirst'nil(ssget"X"));;此处应该加上一些必要的过滤条件以防图元太多可能会卡,甚至可能需要用其它方式进行选择,如果有总的选择集就更好,不用进行选择,直接让它们夹点显示就行
(sssetfirst'nil(ssadd))

对于(redraw  ename 2)方式隐藏的图元这样恢复不了
 楼主| 发表于 2015-11-17 18:44:41 | 显示全部楼层
llsheng_73 发表于 2015-11-16 22:15
(sssetfirst'nil(ssget"X"));;此处应该加上一些必要的过滤条件以防图元太多可能会卡,甚至可能需要用其它方 ...

原来还有另一种思路,受教了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 06:13 , Processed in 0.180750 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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