zhuxiaoming 发表于 2009-4-10 18:16:24

[LISP函数]:另类图元隐藏/显示实体

通过建立组,隐藏或显示实体。希望对你们有点用处

我情真无痕 发表于 2009-4-12 14:19:21

这个怎么用啊

duotu007 发表于 2013-7-20 09:23:03

什么都看不到

evayleung 发表于 2013-7-21 02:27:47

看来旧帖子的程序都丢失了。

eachy 发表于 2013-7-21 06:39:19

evayleung 发表于 2013-7-21 02:27
看来旧帖子的程序都丢失了。

重贴一下

;;另类图元隐藏/显示,通过建立组隐藏实体
;|
visible

object.Visible

object
      All Drawing objects, Application, AttributeReference, Group, Toolbar
      The object or objects this property applies to.

Boolean; read-write (write-only for the Group object)
TRUE:    The object or application is visible.
FALSE:   The object or application is not visible.

Remarks
If you specify an object to be invisible, it will be invisible regardless of
the application visible setting. Other factors can also cause an object to be
invisible; for example, an objectwill not be displayed if its layer is off or
frozen.
Specifying the application to be invisible allows you to run tasks in the
background without having to see the component.
Specifies the visibility of an object or the application.
All Drawing objects, Application, AttributeReference, Group, Toolbar
|;
(defun ea:SSonoff (tf s mode / groups gl)
(setvar "cmdecho" 0)
;;检测是否有特定组
(if (vl-catch-all-error-p
    (vl-catch-all-apply
      'vla-item
      (list
      (setq
          groups
         (vla-get-groups
         (vla-get-activedocument (vlax-get-acad-object))
         )
      )
      "ea_hide_object"
      )
    )
      )
    (progn
      (setq gr (vla-add groups "ea_hide_object"));添加组
      (setq gl (entget (vlax-vla-object->ename gr)))
      (entmod (subst '(71 . 0)
             (assoc 71 gl)
             gl
          )
      );不可选择
    );end progn
);end if
(if (not tf)
    (progn
      (command ".select" "all" "r" s "")
      (command ".group" "a" "ea_hide_object" "p" "")
    );隔离隐藏用
    (command ".group" "a" "ea_hide_object" s "")
)
(vla-put-visible
    (vla-item groups "ea_hide_object")
    mode
);隐藏组,实体将不拥有 62 组码
(princ)
)
;;隐藏选择实体
(defun c:Hideobj (/ ss)
(if (progn (princ "\n选择要隐藏的实体...")
         (setq ss (ssget))
      )
    (ea:SSonoff t ss :vlax-false)
)
(princ)
)
;;显示全部实体
(defun c:Showall (/ ss)
(setvar "pickstyle" 0)
(if (not (vl-catch-all-error-p
         (vl-catch-all-apply
         'vla-item
         (list
         (setq
         groups
            (vla-get-groups
            (vla-get-activedocument (vlax-get-acad-object))
            )
         )
         "ea_hide_object"
         )
         )
       )
      )
    (progn
      (vla-put-visible
    (vla-item groups "ea_hide_object")
    :vlax-true
      )
      (command ".group" "e" "ea_hide_object");清除组
    )
)
(princ)
)
;;隐藏非选择实体
(defun c:ISOobj    (/ ss)
(if (progn (princ "\n选择隔离实体....")
         (setq ss (ssget))
      )
    (ea:ssonoff nil ss :vlax-false)
)
(princ)
)
(princ "\n\t命令: HideObj ShowAll IsoObj.")

evayleung 发表于 2013-7-21 10:22:36

eachy 发表于 2013-7-21 06:39
重贴一下

谢谢。测试一下使用效果是否方便,这隐藏,显示,平时画图的时候用得最多了。

123523058 发表于 2013-10-27 20:53:59

很简洁很简洁很简洁很简洁很简洁很简洁

lianghui2018 发表于 2014-3-23 21:38:33

谢谢楼主分享

结构人生 发表于 2014-7-2 13:20:44

谢谢楼主分享

kkt123 发表于 2015-2-12 10:12:40

这个怎么用啊:)

chen7560152 发表于 2019-6-1 20:30:27

真心好用,感谢感谢!
页: [1]
查看完整版本: [LISP函数]:另类图元隐藏/显示实体