flytoday 发表于 2014-3-30 11:37:42

楼主你还初学胡扯蛋………哥不会就说不会……虚伪滴过份……你别回老子的贴

llsheng_73 发表于 2014-3-30 15:55:42

(defun c:tt(/ stb makedcl layonoff lst- dcl lys lysoff lys on ctl a)
(Defun STB(TAB / snl sll)
    (SetQ snl '()sll (TblNext TAB T))
    (While (SetQ snl (Cons (Cdr (Assoc 2 sll)) snl)sll (TblNext TAB nil)))
    (vl-sort (vl-remove'nil snl)'<))
(defun makedcl(str_lst / dclfile fileID dclHandle)
    (setqdclfile(vl-filename-mktemp nil nil ".dcl")fileID(open dclfile "w"))
    (cond((= (type str_lst) 'str)(write-line str_lst fileID))
   ((= (type str_lst) 'list)(foreach n str_lst (write-line n fileID))))
    (close fileID)
    (setq dclHandle(load_dialog dclfile))
    (vl-file-delete dclfile)
    dclHandle)
(defun layonoff(la onoff / co)
    (setq la(entget(TBLOBJNAME"layer" la))co(assoc 62 la))
    (entmod(subst(cons 62(if onoff(abs(cdr co))(- 0(abs(cdr co)))))co la)))
(defun getvalue()
    (foreach x(read(strcat"("(get_tile"on")")"))(layonoff(nth x lysoff)t))
    (foreach x(read(strcat"("(get_tile"off")")"))(layonoff(nth x lyson)nil)))
(defun lst-(lst lst1)
    (foreach x lst1(setq lst(vl-remove x lst)))lst)
(setqlys(stb"LAYER")ctl 3)
(while(> ctl 0)
    (setq lysoff(vl-remove'nil(mapcar'(lambda(x)(if(<(cdr(assoc 62(tblsearch"layer"x)))0)x))lys))
    lyson(LST- lys lysoff)
    dcl(makedcl(list"LAYLIST:dialog{ label=\"~开关图层~\";:boxed_column{:row{"
         (strcat":list_box{label=\"可关闭图层\";key=\"off\";fixed_width=8;height="
          (itoa(+(max(length lysoff)(length lyson))2))";multiple_select = true;}")
         ":list_box{label=\"可打开图层\";key=\"on\";fixed_width=8;height=1;multiple_select = true;}}"
         ":row{:button{key=\"GO\";label=\"执行\";}:button{key=\"ESC\";label=\"退出\";is_cancel=true;}}}}")))
    (new_dialog "LAYLIST" dcl)
    (start_list"on")(mapcar 'add_list lysoff)(end_list)
    (start_list"off")(mapcar 'add_list lyson)(end_list)
    (action_tile "GO""(getvalue)(done_dialog 1)")
    (action_tile"ESC""(done_dialog 0)")
    (setq ctl(start_dialog))
    (unload_dialog dcl)))

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

品茗新秀 发表于 2014-3-30 18:16:01

llsheng_73 发表于 2014-3-30 15:55 static/image/common/back.gif
纯属好玩,没多大实际上用处, 我自己这么觉得

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

Andyhon 发表于 2014-3-30 19:15:53

...通过选关闭中的图元来打开才好...
可見乎!?

品茗新秀 发表于 2014-3-30 22:21:20

Andyhon 发表于 2014-3-30 19:15 static/image/common/back.gif
...通过选关闭中的图元来打开才好...
可見乎!?

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

品茗新秀 发表于 2014-3-30 22:25:15

这个程序的思路可能应该是打开所有关闭图层,然后点选打开的关闭图层,则其它未被选择打开的关闭图层关闭。

llsheng_73 发表于 2014-3-30 23:19:56

品茗新秀 发表于 2014-3-30 22:25 static/image/common/back.gif
这个程序的思路可能应该是打开所有关闭图层,然后点选打开的关闭图层,则其它未被选择打开的关闭图层关闭。

这样倒也还可行得通

llsheng_73 发表于 2014-3-30 23:22:22

本帖最后由 llsheng_73 于 2014-3-30 23:23 编辑

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

香田里浪人 发表于 2014-3-31 06:08:13

论坛里搜索一下就有,何必再编程?

q3_2006 发表于 2014-3-31 06:45:44

关闭图层是没法点取的,输入图层名是可以的...
(defun c:tt (/ la)
(setq la (getstring "\n输入要打开的图层名:"))
(vl-cmdf "-layer" "on" la "" "")
)
页: 1 [2] 3
查看完整版本: 求想打开关闭图层的某个图层,