chavlji 发表于 2022-7-6 15:00:18

未显示解锁层

你好
使用vla put lock功能,我锁定/解锁层“LAYER2”。问题是“LAYER2”锁定模式的更改不会显示在视口中!图层上的东西保持暗/亮。
 
即使我使用(vla regen(vla get activedocument(vlax get acad object))acActiveViewport)重新生成视口。。。仍然什么都没有发生(它确实会再生,但不会改变)。
 
如果我拉下“Layer Control”,它表明“LAYER2”的锁定状态已经改变。所以它只是没有显示它。
 
如果我将“REGEN”写入控制台,仍然没有变化。但若我下拉“LayerControl”组合框,单击“else”,然后在控制台中键入“REGEN”,更改就会变得可见。。。
 
为什么以及如何修复?

David Bethel 发表于 2022-7-6 15:06:43

你试过REGENALL命令吗-大卫

chavlji 发表于 2022-7-6 15:09:10

是的,它不起作用。与Regen相同。
 
只有当我显示layercontrol组合,然后键入Regen,它才能工作。没有别的了!!((

ASMI 发表于 2022-7-6 15:15:24

看来你做错事了。层条件的改变不需要再生。尝试获取“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
 
层锁定条件在不进行再生的情况下发生变化。
 
当没有代码时,很难定义。

chavlji 发表于 2022-7-6 15:17:58

以下代码不显示解锁结果(但它确实解锁了层):
 
(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))
 
这对任何人都有效吗?

ASMI 发表于 2022-7-6 15:20:59

这对我来说很管用。您可能忘记了加载ActiveX函数的函数(vl load com)。将其添加到列表的开头或末尾。

chavlji 发表于 2022-7-6 15:26:49

在这个过程开始时,我有(vl\U load-com)。它不起作用!?
 
我看不见钓索在哪里。。。因为它对你有用

ASMI 发表于 2022-7-6 15:28:31

我看不出你的代码不起作用的原因。唯一的原因是(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)

CAB 发表于 2022-7-6 15:34:15

我的猜测是,层在视口内冻结或关闭,而不是全局设置。

ASMI 发表于 2022-7-6 15:38:55

现在我明白了。为此,最好将函数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
查看完整版本: 未显示解锁层