明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2494|回复: 2

直接修改图元的'(60 . 1)和(vlax-put-property obj 'Visible 0)的区别?

[复制链接]
发表于 2012-8-16 16:38:30 | 显示全部楼层 |阅读模式
本帖最后由 libo2000 于 2012-8-16 17:10 编辑

直接修改图元的'(60 . 1)和(vlax-put-property obj 'Visible 0)都能达到让图元隐藏的效果,
但是用vlax-put-property修改的图元,再(ssget point filter)点选的时候还是能选中该图元;
而直接修改'(60 . 1)的图元,再(ssget point filter)点选的时候无法选中该图元。
利用这个属性,可以很好的控制ssget点选目标。
大家都知道,用lisp直接修改天正图元很容易崩溃,而vlax-put-property修改却很正常。所以,这两者的差别就出来了。
想请教小,如何让(vlax-put-property obj 'Visible 0)的图元,ssget点选的时候无法选中它,即过滤掉他----无法用(not '(60 . 1))来过滤掉,虽然(entget)显示其‘(60 . 1)存在。
原代码如下:
  1. (defun ssget_point (p0 filter_list)
  2.     (setq ss (ssget p0)
  3.                hides (ssadd)
  4.              (setq NotHD (list '(-4 . "")))
  5.     )
  6.     (while ss
  7.         (setq et (ssname ss 0))
  8.         (if (ssget p0 filter_list)
  9.            (progn
  10.                 (ssadd et result)
  11.                 (setq ss nil)
  12.             ) ;endprogn
  13.             (progn
  14.                 (if (not (assoc 60 (entget et)))
  15.                    (progn
  16.                         (ssadd et hides)
  17.                         (HideEnt et)
  18.                     ) ;endprogn
  19.                 )
  20.                 (setq ss (ssget p0 NotHD))
  21.             ) ;endelse
  22.         );endif
  23.     ); endwhile
  24.     (setq i 0)
  25.     (while (setq et (ssname Hides i))
  26.         (setq i (1+ i))
  27.         (ShowEnt et)
  28.     ) ; endwhile
  29. );endfun
  30. (defun HideEnt (et)
  31.     (#change et 60 1)
  32.     ;(chengs_PutTch et 'Visible 0)    ;ssget pt的时候还是能搜索到
  33. )

  34. (defun ShowEnt (et)
  35.     (#change et 60 0)
  36.     ;(chengs_PutTch et 'Visible -1)    ;ssget pt的时候还是能搜索到
  37. )
  38. (defun #change (ename assoc_num newdate)
  39.             (setq edate (assoc assoc_num elist))
  40.             (setq update (cons assoc_num newdate))
  41.             (if edate
  42.                 (setq elist (subst
  43.                                             update
  44.                                             edate
  45.                                             elist
  46.                                         )
  47.                 )
  48.                 (setq elist (append
  49.                                             elist
  50.                                             (list update)
  51.                                         )
  52.                 )
  53.             )
  54.             (entmod elist)
  55. )

发表于 2012-8-16 20:20:56 | 显示全部楼层
楼主分析的透彻!赞一个
发表于 2015-7-3 10:33:20 | 显示全部楼层
楼主历害啊,高手
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 17:26 , Processed in 0.147260 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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