xiaxiang 发表于 2012-4-1 10:43:07

;隐藏或显示部分图形
;作者wujimmy 来自:http://www.wujimmy.com
;修改自XIAXIANG 明经通道
(setq wjm_hide_lst nil)
(defun c:ee( / es es1 es2 bz)
(setq index_num (getint "图形组编号:"))
(princ "\n选择要显示或隐藏的图形:")
(initget "Z F ")
(setq bz (getkword "\n正向选择-Z/反向选择-F<Z>:"))
(cond

((= bz "F")
(setq es (ssget ))
)

(T
(setq es1 (ssget))
(setq es2 (ssget "_x"))
(command "_.select" ES1 "a" ES2 "r" ES1 "")
(setq es (ssget "P"))
)
);end cond
(if es
(progn

(if (assoc index_num wjm_hide_lst)
(progn
(if (null(caddr(assoc index_num wjm_hide_lst))) (wjm_show_hide index_num) );_如果原来图层是关着的,就打开显示.
(setq wjm_hide_lst (subst (list index_num es t)(assoc index_num wjm_hide_lst) wjm_hide_lst )))
(setq wjm_hide_lst (append wjm_hide_lst (list (list index_num es t))))
)
(eval (read (strcat"(defun c:" (rtos index_num 2 0)"() (wjm_show_hide "(rtos index_num 2 0) "))")))
)
)
)

(defun wjm_show_hide(index_num / i% es index_num mid isShow )
;(setq index_num 1)
(setq mid (assoc index_num wjm_hide_lst))
(setq es (cadr mid))
(setq isShow (null (caddr mid)))
(setq wjm_hide_lst (subst (list index_num es isShow)(assoc index_num wjm_hide_lst) wjm_hide_lst ))
(setq i% 0)
(repeat (sslength es)
(if isShow
(redraw (ssname es i%) 1)
(redraw (ssname es i%) 2)
)
(setq i% (1+ i%))
)
(if isShow
(princ "\n已经全部显示!")
(princ "\n已经全部隐藏!")
)
(princ)
)
(princ "\n ******* 显示隐藏编号程序已加载。命令: EE ************\n")
(princ)

xgr 发表于 2012-4-1 11:59:18

我觉得还要加个显示出隐藏实体的窗体就好,在窗体内选择已经隐藏的实体,再次打开操作。
不知G版的功能怎样,看看。

flytoday 发表于 2012-4-1 12:20:29

G版兄弟太好了好人啊谢谢

flytoday 发表于 2012-4-1 12:31:23

G版这个应列入明经出书的光盘源码。。这个太好了

1993063 发表于 2012-4-3 23:06:56

本帖最后由 1993063 于 2012-4-3 22:04 编辑

g版总是那么热心!

功夫佬 发表于 2012-4-3 23:30:46

看看,怎么研究

lz123456 发表于 2012-4-4 04:49:03

G版的程序一定要看

CTC 发表于 2012-4-4 10:44:06

看看G版

1993063 发表于 2012-4-4 16:06:27

flytoday 发表于 2012-3-31 15:21 static/image/common/back.gif
严哥这个在天正中多选择对象直接CAD崩溃,。卡住退出了哦。。不过也是很感谢

;看看这个怎么样
(defun c:ocu (/ sel_vis cant_vis cont_vis sel_ocu cant_ocu cont_ocu obj_ocu vlobj_ocu ocu obj_vis vlobj_vis vis)
   (vl-load-com)
   (setq sel_vis (ssget))
   (setq cant_vis (sslength sel_vis))
   (setq cont_vis 0)

   (setq sel_ocu (ssget "_X"))
   (setq cant_ocu (sslength sel_ocu))
   (setq cont_ocu 0)
   (repeat cant_ocu
      (setq obj_ocu (ssname sel_ocu cont_ocu))
      (setq vlobj_ocu (vlax-ename->vla-object obj_ocu))
      (setq ocu (vla-get-visible vlobj_ocu))
      (if (= ocu :vlax-true)
         (vla-put-visible vlobj_ocu 0)
         (vla-put-visible vlobj_ocu -1)
      )
      (setq cont_ocu (1+ cont_ocu))
   )
   (repeat cant_vis
      (setq obj_vis (ssname sel_vis cont_vis))
      (setq vlobj_vis (vlax-ename->vla-object obj_vis))
      (setq vis (vla-get-visible vlobj_vis))
      (if (= vis :vlax-false)
         (vla-put-visible vlobj_vis -1)
         (vla-put-visible vlobj_vis 0)
      )
      (setq cont_vis (1+ cont_vis))
   )
   (prin1)
)

flytoday 发表于 2012-4-8 12:41:26

G版的对天正对象还是会
; 错误: Automation 错误。未提供说明。
页: 1 [2] 3 4 5 6 7 8 9 10 11
查看完整版本: 请问为什么隐显对象对象有时行有时不行