未显示解锁层
你好使用vla put lock功能,我锁定/解锁层“LAYER2”。问题是“LAYER2”锁定模式的更改不会显示在视口中!图层上的东西保持暗/亮。
即使我使用(vla regen(vla get activedocument(vlax get acad object))acActiveViewport)重新生成视口。。。仍然什么都没有发生(它确实会再生,但不会改变)。
如果我拉下“Layer Control”,它表明“LAYER2”的锁定状态已经改变。所以它只是没有显示它。
如果我将“REGEN”写入控制台,仍然没有变化。但若我下拉“LayerControl”组合框,单击“else”,然后在控制台中键入“REGEN”,更改就会变得可见。。。
为什么以及如何修复? 你试过REGENALL命令吗-大卫 是的,它不起作用。与Regen相同。
只有当我显示layercontrol组合,然后键入Regen,它才能工作。没有别的了!!(( 看来你做错事了。层条件的改变不需要再生。尝试获取“Layer2”的对象:
Command: (setq l2(vla-Item(vla-get-Layers(vla-get-ActiveDocument(vlax-get-acad-object)))"Layer2"))
#<VLA-OBJECT IAcadLayer 0edfc7b4>
然后锁定和解锁该层:
Command: (vla-put-Lock l2 :vlax-true)
nil
Command: (vla-put-Lock l2 :vlax-false)
nil
层锁定条件在不进行再生的情况下发生变化。
当没有代码时,很难定义。 以下代码不显示解锁结果(但它确实解锁了层):
(defun UnlockAll ( / Doc Layers L Count )
(setq Doc (vla-get-activedocument (vlax-get-acad-object))
Layers (vla-get-layers Doc)
Count 0)
(vlax-for L Layers
(if (eq :vlax-true (vla-get-lock L)) (progn
(vla-put-lock L :vlax-false)
(setq Count (+ 1 Count)) )))
(setq return Count))
这对任何人都有效吗? 这对我来说很管用。您可能忘记了加载ActiveX函数的函数(vl load com)。将其添加到列表的开头或末尾。 在这个过程开始时,我有(vl\U load-com)。它不起作用!?
我看不见钓索在哪里。。。因为它对你有用 我看不出你的代码不起作用的原因。唯一的原因是(vl\u load-com)语法正确(vl load-com)。我优化了这个函数,去掉了额外的变量。
(defun UnlockAll(/ Count)
(setq Count 0)
(vlax-for l(vla-get-Layers
(vla-get-ActiveDocument(vlax-get-acad-object)))
(if(= :vlax-true(vla-get-Lock l))
(progn
(vla-put-Lock l :vlax-false)
(setq Count(1+ Count)))))
); end of UnlockAll
(vl-load-com) 我的猜测是,层在视口内冻结或关闭,而不是全局设置。 现在我明白了。为此,最好将函数ACET-VIEWPORT-freezed-LAYER-LIST-SET与零层列表一起使用。在命令行中尝试:
Command: (setq vp(car(entsel)))
Select object: <Entity name: 7efa7428>
Command: (acet-viewport-frozen-layer-list-set vp '())
T
视口中的所有层都将解冻。
页:
[1]
2