江南十笑 发表于 2020-3-11 17:40:19

下面LISP如何修改能选中块内的对象

下面代码能隐藏显示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)
)


江南十笑 发表于 2020-3-11 17:41:54

原代码是阿甘兄弟的代码 感谢

panliang9 发表于 2020-3-12 08:49:19

这个需求还是很有意义的,帮楼主顶一下!

江南十笑 发表于 2020-3-12 22:49:18

panliang9 发表于 2020-3-12 08:49
这个需求还是很有意义的,帮楼主顶一下!

谢谢                                       

江南十笑 发表于 2020-5-12 19:21:14

哎 再顶一下                  
页: [1]
查看完整版本: 下面LISP如何修改能选中块内的对象