切换图层状态
保存了一些图层状态,每次都要通过点击图层状态管理器去切换状态,操作多了感觉有点麻烦,能不能通过程序切换图层状态?比如输入快捷键001,就切换到名为001的图层状态。下面是一个相关问题的链接,感觉有点不了了之,供参考http://bbs.mjtd.com/forum.php?mod=viewthread&tid=48565
本帖最后由 yjr111 于 2013-3-13 13:37 编辑
好像还不好搞,搞了一个多小时,惭愧,看看是不是需要的?
(defun c:laman(/ ladict1 ladict n statenemelst num )
(setq ladict1(vla-GetExtensionDictionary (vla-get-layers (vla-get-ActiveDocument (vlax-get-acad-object)))))
(repeat (setq m(vla-get-count ladict1))
(setq ladict(vla-item ladict1 (setq m(1- m))))
(repeat (setq n(vla-get-count ladict))
(setq statenemelst(cons (vla-get-name(vla-item ladict(setq n(1- n))))statenemelst))
)
)
(xsdhk)
(if num(command "layer" "a" "r" (nth (atoi num) statenemelst) "" "" ))
(princ)
)
;;;******************************************
;;;添加列表框内列表
;;;******************************************
(defun adlst (key lst)
(start_list key 3)
(mapcar 'add_list lst)
(end_list)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun xsdhk (/ replace lsdcl fn dclid)
(setq fn (open (setq lsdcl (VL-FILENAME-MKTEMP "tmp" "" ".dcl")) "w"))
(foreach x
'("yyy : dialog{"
"label=\"StateManager\";"
":list_box{key=\"9\";height=18;width=12;}"
":button{key=\"cancel\";label=\"Cancel\";is_cancel=true;width=1;height=2;}"
"}"
)
(write-line x fn)
)
(close fn)
(setq dclid (load_dialog lsdcl))
(vl-file-delete lsdcl)
(new_dialog "yyy" dclid "" screenpt)
(adlst "9" statenemelst)
(action_tile "9" "(setq num $value)(setq screenpt(done_dialog))")
(start_dialog)
(unload_dialog dclid)
)
(princ"\n图层状态简易切换,命令LAMAN.")
(PRINC)
回严大的话: 输入“道路、管线"则切换到道路、管线状态
如果可以出现一个类似第二张截图的列表,通过单击列表里的状态名(不用进一步单击“恢复”)切换相应的图层状态更佳 本帖最后由 半听可乐 于 2013-1-5 09:39 编辑
yjr111 发表于 2013-1-5 00:09 http://bbs.mjtd.com/static/image/common/back.gif
好像还不好搞,搞了一个多小时,惭愧,看看是不是需要的?
正是这个效果!感谢严大又帮了我个大忙!,能不能给个源码或者将命令搞长一点,命令有冲突~~ 不错哦,,,, 可以吗?可以就上源码!免币下载!
大棒了,,楼主大人。 yjr111 发表于 2013-1-5 14:55 static/image/common/back.gif
可以吗?可以就上源码!免币下载!
何止是可以,简直酷得不行!今天用了不下30次! yjr111 发表于 2013-1-5 14:55 static/image/common/back.gif
可以吗?可以就上源码!免币下载!
严兄,似乎过了很久了也没上源码?现在可以上了吗? 严老大在2楼的程序,下载了怎么只能弹出界面,无法输入任何文字啊