反向冻结图层源码
(defun c:fxdj (/ :vlax-false :vlax-trueacadobjdwgobj layersobj laynmspace sobj)
(acad-activex-base) ;fxdj=反向冻结
(defun acad-activex-base ()
(vl-load-com)
(setq acadobj (vlax-get-acad-object))
(setq dwgobj (vla-get-ActiveDocument acadobj))
(setq mspace (vla-get-ModelSpace dwgobj))
) ;_ 结束defun
(setq layersobj (vla-get-layers dwgobj))
(vlax-for sobj layersobj
(setq layn (vla-get-Freeze sobj))
(if(/= (vla-get-name sobj) "0")
(progn
(cond ((= layn :vlax-true) (vla-put-Freeze sobj :vlax-false))
((= layn :vlax-false) (vla-put-Freeze sobj :vlax-true))
) ;_ 结束cond
) ;_ 结束progn
) ;_ 结束if
) ;_ 结束vlax-for
(acad-activex-exit)
(defun acad-activex-exit () (vlax-release-object acadobj))
(princ)
)源码有点缺陷。如下图
999999 发表于 2021-5-14 10:37
就是您现在实现的这个代码的功能能否,改成批量框选,目前您的是单选的
用楼主的代码函数就能实现
(defun c:tt5 (/ acadobj dwgobj en i layersobj layson mspace ss);;反向冻结所选图层
(vl-load-com)
(setq acadobj (vlax-get-acad-object))
(setq dwgobj (vla-get-ActiveDocument acadobj))
(setq mspace (vla-get-ModelSpace dwgobj))
(setq layersobj (vla-get-layers dwgobj))
(setq ss (ssget))
(command "clayer" (cdr (assoc 8 (entget (ssname ss 0)))))
(setq i -1 layson '())
(while (setq en (ssname ss (setq i (1+ i))))
(setq layson (cons (cdr (assoc 8 (entget en))) layson))
)
(vlax-for sobj layersobj
(if(not (member (vla-get-name sobj) layson))
(vla-put-Freeze sobj :vlax-true)
)
)
(princ)
) 直接命令就可以,不用那么复杂
(defun c:tt5 ()
(command "clayer" (cdr (assoc 8 (entget (car (entsel "\n选对象:"))))) "layer" "f" "*" ""))
(defun c:tt55 ()
(command"layer" "t" "*" "")) 我必须re一下才能出现已经解锁图层的对象,求各位大佬告知一下如何才能优化这一步 start4444 发表于 2019-10-9 18:02
直接命令就可以,不用那么复杂
(defun c:tt5 ()
我这个是直接冻结不选对象的 start4444 发表于 2019-10-9 18:02
直接命令就可以,不用那么复杂
(defun c:tt5 ()
您好,大神,请问是否可以实现批量反冻结呢,目前单选是很实用的,可否改成可以批量实现呢 999999 发表于 2021-5-14 10:21
您好,大神,请问是否可以实现批量反冻结呢,目前单选是很实用的,可否改成可以批量实现呢
就是您现在实现的这个代码的功能能否,改成批量框选,目前您的是单选的 start4444 发表于 2021-5-14 18:29
用楼主的代码函数就能实现
(defun c:tt5 (/ acadobj dwgobj en i layersobj layson mspace ss);;反向 ...
谢谢大神,这个就是我想要的效果,
页:
[1]