上善若水!@# 发表于 2019-5-8 16:56:40

[求助]求一个可以把不显示图层冻结的插件

[求助]求一个可以把不显示图层冻结的插件

satan421 发表于 2019-5-9 09:25:53

本帖最后由 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)
)

上善若水!@# 发表于 2019-5-9 10:43:32

satan421 发表于 2019-5-9 09:25
;;

你好,用不了,提示“AutoCAD 变量设置被拒绝: "osmode" nil”

satan421 发表于 2019-5-9 10:46:31

上善若水!@# 发表于 2019-5-9 10:43
你好,用不了,提示“AutoCAD 变量设置被拒绝: "osmode" nil”

我的代码里就没有设置变量的语句,可能是跟其他插件的命名冲突了,你把SetFreeze改成其他的,比如LayFreeze再加载试一下

上善若水!@# 发表于 2019-5-9 10:49:57

satan421 发表于 2019-5-9 10:46
我的代码里就没有设置变量的语句,可能是跟其他插件的命名冲突了,你把SetFreeze改成其他的,比如LayFree ...

LAYFREEZE AutoCAD 变量设置被拒绝: "osmode" nil还是那样,还有其他的解决方法么

satan421 发表于 2019-5-9 11:02:15

上善若水!@# 发表于 2019-5-9 10:49
LAYFREEZE AutoCAD 变量设置被拒绝: "osmode" nil还是那样,还有其他的解决方法么

猜测你这是触发其他程序自定义的错误处理函数了,换个方法估计也是一样的,你试试其他插件能不能正常用,或者把软件重启下再看

上善若水!@# 发表于 2019-5-9 14:46:33

satan421 发表于 2019-5-9 11:02
猜测你这是触发其他程序自定义的错误处理函数了,换个方法估计也是一样的,你试试其他插件能不能正常用, ...

其他的没问题的,重启也没用

satan421 发表于 2019-5-9 15:23:41

上善若水!@# 发表于 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)
)




satan421 发表于 2019-5-9 15:34:25

你报错的原因应该是某个程序的函数(比如错误处理函数)要设置osmode,但是要设置成某个值为nil的变量,如果你的启动组里有自动加载的插件,建议你先把它从启动组移除

上善若水!@# 发表于 2019-5-9 15:53:19

后面那个就可以了,谢谢
页: [1]
查看完整版本: [求助]求一个可以把不显示图层冻结的插件