[求助]求一个可以把不显示图层冻结的插件
[求助]求一个可以把不显示图层冻结的插件本帖最后由 satan421 于 2019-5-9 09:55 编辑
;;
(defun c:SetFreeze ()
(vlax-for lay (vla-get-layers (vla-get-activedocument(vlax-get-acad-object)))
(if (or(= (vla-get-lock lay) :vlax-true)(= (vlax-get-property lay "LayerOn") :vlax-false))
(vla-put-Freeze lay :vlax-true)
)
)
(princ)
)
satan421 发表于 2019-5-9 09:25
;;
你好,用不了,提示“AutoCAD 变量设置被拒绝: "osmode" nil” 上善若水!@# 发表于 2019-5-9 10:43
你好,用不了,提示“AutoCAD 变量设置被拒绝: "osmode" nil”
我的代码里就没有设置变量的语句,可能是跟其他插件的命名冲突了,你把SetFreeze改成其他的,比如LayFreeze再加载试一下 satan421 发表于 2019-5-9 10:46
我的代码里就没有设置变量的语句,可能是跟其他插件的命名冲突了,你把SetFreeze改成其他的,比如LayFree ...
LAYFREEZE AutoCAD 变量设置被拒绝: "osmode" nil还是那样,还有其他的解决方法么 上善若水!@# 发表于 2019-5-9 10:49
LAYFREEZE AutoCAD 变量设置被拒绝: "osmode" nil还是那样,还有其他的解决方法么
猜测你这是触发其他程序自定义的错误处理函数了,换个方法估计也是一样的,你试试其他插件能不能正常用,或者把软件重启下再看 satan421 发表于 2019-5-9 11:02
猜测你这是触发其他程序自定义的错误处理函数了,换个方法估计也是一样的,你试试其他插件能不能正常用, ...
其他的没问题的,重启也没用 上善若水!@# 发表于 2019-5-9 14:46
其他的没问题的,重启也没用
如果是我的代码触发了错误处理函数,我能想到的只可能是你的cad版本比较低了,试试下面的
(defun c:SetFreeze ()
(vl-load-com)
(vlax-for lay (vla-get-layers (vla-get-activedocument(vlax-get-acad-object)))
(if (or(= (vla-get-lock lay) :vlax-true)(= (vlax-get-property lay "LayerOn") :vlax-false))
(vla-put-Freeze lay :vlax-true)
)
)
(princ)
)
你报错的原因应该是某个程序的函数(比如错误处理函数)要设置osmode,但是要设置成某个值为nil的变量,如果你的启动组里有自动加载的插件,建议你先把它从启动组移除 后面那个就可以了,谢谢
页:
[1]