hh0066 发表于 2014-1-9 11:36:10

网上找到一个图层管理工具(类似layoff功能)需优化,请G版和其他高手看看,谢谢!

本帖最后由 hh0066 于 2014-1-9 11:37 编辑

网上找到一个图层管理工具(类似layoff功能),但这个工具比layoff多了个最后确定的步骤,本人尝试过修改但最后还没得到解决,求助各位。
;选物关闭所在图层
(defun C:Layoff (/ ss cnt c en lay)
   (setvar "CMDECHO" 0)
   (setq ss (ssget))
   (setq cnt (sslength ss))
   (setq cnt (1- cnt))
   (setq c 0)
   (while (<= c cnt)
   (setq en (ssname ss c))
   (setq lay (cdr (assoc 8 (entget en))))
   (if (= lay (getvar "CLAYER"))
       (command "-LAYER" "OFF" lay "Y" "")
       (progn
   (command "-LAYER" "OFF" lay "")))
   (setq c (1+ c)))
   (princ))

llsheng_73 发表于 2014-1-9 12:48:47

本帖最后由 llsheng_73 于 2014-1-9 13:01 编辑

(defun C:Layoff (/ ss cnt c lys lay layersoff)
(defun layersoff(lys / ly);将lys表中的所有图层关闭
    (foreach x lys
      (vla-put-layeron(vlax-ename->vla-object (tblobjname "LAYER" x)):vlax-false)))
   (setq ss(ssget))
   (setq cnt(sslength ss)c 0 lys nil)
(while(< c cnt)
    (setq lay(cdr (assoc 8(entget(ssname ss c))));;;(setq lay(vla-get-layer(vlax-ename->vla-object(ssname ss c))) lys(if(member lay lys)lys(cons lay lys))也行
   lys(if(member lay lys)lys(cons lay lys))
   c(1+ c)))
(layersoff lys)
)

hh0066 发表于 2014-1-9 17:21:25

llsheng_73 发表于 2014-1-9 12:48 static/image/common/back.gif


和Express的layoff比还是多了最后确认的步骤啊

llsheng_73 发表于 2014-1-9 17:44:52

本帖最后由 llsheng_73 于 2014-1-9 17:53 编辑

hh0066 发表于 2014-1-9 17:21 http://bbs.mjtd.com/static/image/common/back.gif
和Express的layoff比还是多了最后确认的步骤啊
多了最后确认的步骤,不懂

(defun C:Layoff (/ e)
(while(setq e(car(entsel"\n选择对象关闭所在图层")))
    (vla-put-layeron(vlax-ename->vla-object(tblobjname "LAYER"(cdr(assoc 8(entget e))))):vlax-false)))

hh0066 发表于 2014-1-9 18:11:03

llsheng_73 发表于 2014-1-9 17:44 static/image/common/back.gif
多了最后确认的步骤,不懂

谢谢llsheng_73,上面这个程序能实现Express的layiso功能了,如果能增加多选功能就更好了。

llsheng_73 发表于 2014-1-9 18:15:59

上边一个不就是多选的么,但你说多了个确认。。。

hh0066 发表于 2014-1-10 10:02:11

llsheng_73 发表于 2014-1-9 18:15 static/image/common/back.gif
上边一个不就是多选的么,但你说多了个确认。。。

我明白了,单选的才能选择了就隐藏,多选的最后必须有个确认的步骤。谢谢你的积极参与

llsheng_73 发表于 2014-1-10 10:33:31

hh0066 发表于 2014-1-10 10:02 static/image/common/back.gif
我明白了,单选的才能选择了就隐藏,多选的最后必须有个确认的步骤。谢谢你的积极参与

不是对操作关闭图层进行确认,而是你的选择要得到确认它才会结束。。

edata 发表于 2014-1-13 09:17:28

也可框选不确认就关闭,简单点就模拟框选,复杂点就模拟ssget,不过不确认也就不能对对象筛选。比如选错了,就不能去掉选择。
页: [1]
查看完整版本: 网上找到一个图层管理工具(类似layoff功能)需优化,请G版和其他高手看看,谢谢!