明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 品茗新秀

[已解答] 求想打开关闭图层的某个图层,

[复制链接]
发表于 2014-3-30 11:37 来自手机 | 显示全部楼层
楼主你还初学胡扯蛋………哥不会就说不会……虚伪滴过份……你别回老子的贴
回复

使用道具 举报

发表于 2014-3-30 15:55 | 显示全部楼层
  1. (defun c:tt(/ stb makedcl layonoff lst- dcl lys lysoff lys on ctl a)
  2.   (Defun STB(TAB / snl sll)
  3.     (SetQ snl '()sll (TblNext TAB T))
  4.     (While (SetQ snl (Cons (Cdr (Assoc 2 sll)) snl)sll (TblNext TAB nil)))
  5.     (vl-sort (vl-remove'nil snl)'<))
  6.   (defun makedcl(str_lst / dclfile fileID dclHandle)
  7.     (setq  dclfile(vl-filename-mktemp nil nil ".dcl")fileID(open dclfile "w"))
  8.     (cond((= (type str_lst) 'str)(write-line str_lst fileID))
  9.    ((= (type str_lst) 'list)(foreach n str_lst (write-line n fileID))))
  10.     (close fileID)
  11.     (setq dclHandle(load_dialog dclfile))
  12.     (vl-file-delete dclfile)
  13.     dclHandle)
  14.   (defun layonoff(la onoff / co)
  15.     (setq la(entget(TBLOBJNAME"layer" la))co(assoc 62 la))
  16.     (entmod(subst(cons 62(if onoff(abs(cdr co))(- 0(abs(cdr co)))))co la)))
  17.   (defun getvalue()
  18.     (foreach x(read(strcat"("(get_tile"on")")"))(layonoff(nth x lysoff)t))
  19.     (foreach x(read(strcat"("(get_tile"off")")"))(layonoff(nth x lyson)nil)))
  20.   (defun lst-(lst lst1)
  21.     (foreach x lst1(setq lst(vl-remove x lst)))lst)
  22.   (setq  lys(stb"LAYER")ctl 3)
  23.   (while(> ctl 0)
  24.     (setq lysoff(vl-remove'nil(mapcar'(lambda(x)(if(<(cdr(assoc 62(tblsearch"layer"x)))0)x))lys))
  25.     lyson(LST- lys lysoff)
  26.     dcl(makedcl(list"LAYLIST:dialog{ label=\"~开关图层~\";:boxed_column{:row{"
  27.          (strcat":list_box{label=\"可关闭图层\";key=\"off\";fixed_width=8;height="
  28.           (itoa(+(max(length lysoff)(length lyson))2))";multiple_select = true;}")
  29.          ":list_box{label=\"可打开图层\";key=\"on\";fixed_width=8;height=1;multiple_select = true;}}"
  30.          ":row{:button{key=\"GO\";label=\"执行\";}:button{key=\"ESC\";label=\"退出\";is_cancel=true;}}}}")))
  31.     (new_dialog "LAYLIST" dcl)
  32.     (start_list"on")(mapcar 'add_list lysoff)(end_list)
  33.     (start_list"off")(mapcar 'add_list lyson)(end_list)
  34.     (action_tile "GO""(getvalue)(done_dialog 1)")
  35.     (action_tile"ESC""(done_dialog 0)")
  36.     (setq ctl(start_dialog))
  37.     (unload_dialog dcl)))


纯属好玩,没多大实际上用处, 我自己这么觉得

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
品茗新秀 + 1 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-3-30 18:16 | 显示全部楼层
llsheng_73 发表于 2014-3-30 15:55
纯属好玩,没多大实际上用处, 我自己这么觉得

如果能通过选关闭中的图元来打开才好,因为通过众多图层名,一般难确定需打开哪个图层

点评

关闭的图层那是看不到的所以不可能点选到上边的图元  发表于 2014-3-30 20:09
回复

使用道具 举报

发表于 2014-3-30 19:15 | 显示全部楼层
...通过选关闭中的图元来打开才好...
可見乎!?
回复

使用道具 举报

 楼主| 发表于 2014-3-30 22:21 | 显示全部楼层
Andyhon 发表于 2014-3-30 19:15
...通过选关闭中的图元来打开才好...
可見乎!?

我以前曾看到过,执行程序,被关闭的图元显示,选择要打的图元,则该图元的图层被打开,和其它原打开的图层一起显示,目前网上多数程序是通过图层名来选择打开,对于实际运用,不是十分方便。
回复

使用道具 举报

 楼主| 发表于 2014-3-30 22:25 | 显示全部楼层
这个程序的思路可能应该是打开所有关闭图层,然后点选打开的关闭图层,则其它未被选择打开的关闭图层关闭。
回复

使用道具 举报

发表于 2014-3-30 23:19 | 显示全部楼层
品茗新秀 发表于 2014-3-30 22:25
这个程序的思路可能应该是打开所有关闭图层,然后点选打开的关闭图层,则其它未被选择打开的关闭图层关闭。

这样倒也还可行得通
回复

使用道具 举报

发表于 2014-3-30 23:22 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-3-30 23:23 编辑

也可以改下,先打开所有图层,选择一堆图元后恢复图层。再列出哪些图层本来是关闭的,哪些本来是开着的,根据需要进行开头选择,没选到图元的图层不列出来,空了我再弄下玩玩
回复

使用道具 举报

发表于 2014-3-31 06:08 | 显示全部楼层
论坛里搜索一下就有,何必再编程?
回复

使用道具 举报

发表于 2014-3-31 06:45 | 显示全部楼层
关闭图层是没法点取的,输入图层名是可以的...
(defun c:tt (/ la)
(setq la (getstring "\n输入要打开的图层名:"))
(vl-cmdf "-layer" "on" la "" "")
)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 19:00 , Processed in 0.183824 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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