下面代码能隐藏显示S-DZQM图层上的实体,但是当S-DZQM图层上实体在块内,就无法隐藏和显示了 ,该如何修改? - ;[隐藏物体]
- (defun c:111 (/ AcadObject AcadDocument LayersObj ss n i ent ob lay vlay lay-tn)
- (setq AcadObject (vlax-get-acad-object)
- AcadDocument (vla-get-ActiveDocument AcadObject)
- LayersObj (vla-get-layers AcadDocument)
- );end setq
- (princ "\n请选择需要隐藏的物体" )
-
-
- (if (setq ss (ssget "x" (list (cons 8 "S-DZQM"))))
- (progn
- (setq n (sslength ss))
- (setq i (- n 1))
- (repeat n
- (setq ent (ssname ss i)
- ob (vlax-ename->vla-object ent)
- lay (vla-get-layer ob)
- vlay (vla-item LayersObj lay)
- );end setq
- (if (= (setq lay-tn (vla-get-lock vlay)) :vlax-true);如果图层锁定
- (vla-put-lock vlay :vlax-false);先解锁图层
- );end if
- (vla-put-visible ob :vlax-false)
- (if (= lay-tn :vlax-true)
- (vla-put-lock vlay :vlax-true);再锁定图层,恢复图层状态
- );end if
- (setq i (1- i))
- );end repeat
- (princ "\n已隐藏选择物体" )
- ));end if
- (princ)
- )
- ;[恢复隐藏]
- (defun c:222 (/ AcadObject AcadDocument LayersObj ss n i ent ob lay vlay lay-tn)
- (setq AcadObject (vlax-get-acad-object)
- AcadDocument (vla-get-ActiveDocument AcadObject)
- LayersObj (vla-get-layers AcadDocument)
- );end setq
- (if (setq ss (ssget "x" (list (cons 8 "S-DZQM"))))
- (progn
- (setq n (sslength ss))
- (setq i (- n 1))
- (repeat n
- (setq ent (ssname ss i)
- ob (vlax-ename->vla-object ent)
- lay (vla-get-layer ob)
- vlay (vla-item LayersObj lay)
- );end setq
- (if (= (setq lay-tn (vla-get-lock vlay)) :vlax-true)
- (vla-put-lock vlay :vlax-false)
- );end if
- (vla-put-visible ob :vlax-true)
- (if (= lay-tn :vlax-true)
- (vla-put-lock vlay :vlax-true)
- );end if
- (setq i (1- i))
- );end repeat
- (princ "\n已显示隐藏物体" )
- );end progn
- (princ "\n本图无隐藏物体" )
- );end if
- ;(vla-regen AcadDocument AcAllViewPorts) 图形较大有时需要重生成才显示 可把这句加上
- (princ)
- )
|