乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 137|回复: 15

[编程交流] 未显示解锁层

[复制链接]

33

主题

73

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
165
发表于 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”,更改就会变得可见。。。
 
为什么以及如何修复?
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:06:43 | 显示全部楼层
你试过REGENALL命令吗-大卫
回复

使用道具 举报

33

主题

73

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
165
发表于 2022-7-6 15:09:10 | 显示全部楼层
是的,它不起作用。与Regen相同。
 
只有当我显示layercontrol组合,然后键入Regen,它才能工作。没有别的了!!((
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 15:15:24 | 显示全部楼层
看来你做错事了。层条件的改变不需要再生。尝试获取“Layer2”的对象:
 
  1. Command: (setq l2(vla-Item(vla-get-Layers(vla-get-ActiveDocument(vlax-get-acad-object)))"Layer2"))
  2. #<VLA-OBJECT IAcadLayer 0edfc7b4>

 
然后锁定和解锁该层:
 
  1. Command: (vla-put-Lock l2 :vlax-true)
  2. nil
  3. Command: (vla-put-Lock l2 :vlax-false)
  4. nil

 
层锁定条件在不进行再生的情况下发生变化。
 
当没有代码时,很难定义。
回复

使用道具 举报

33

主题

73

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
165
发表于 2022-7-6 15:17:58 | 显示全部楼层
以下代码不显示解锁结果(但它确实解锁了层):
 
  1. (defun UnlockAll ( / Doc Layers L Count )
  2. (setq Doc (vla-get-activedocument (vlax-get-acad-object))
  3.        Layers (vla-get-layers Doc)
  4.        Count 0)
  5. (vlax-for L Layers
  6.      (if (eq :vlax-true (vla-get-lock L)) (progn
  7.         (vla-put-lock L :vlax-false)
  8.       (setq Count (+ 1 Count)) )))
  9. (setq return Count))

 
这对任何人都有效吗?
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 15:20:59 | 显示全部楼层
这对我来说很管用。您可能忘记了加载ActiveX函数的函数(vl load com)。将其添加到列表的开头或末尾。
回复

使用道具 举报

33

主题

73

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
165
发表于 2022-7-6 15:26:49 | 显示全部楼层
在这个过程开始时,我有(vl\U load-com)。它不起作用!?
 
我看不见钓索在哪里。。。因为它对你有用
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 15:28:31 | 显示全部楼层
我看不出你的代码不起作用的原因。唯一的原因是(vl\u load-com)语法正确(vl load-com)。我优化了这个函数,去掉了额外的变量。
 
  1. (defun UnlockAll(/ Count)
  2. (setq Count 0)
  3. (vlax-for l(vla-get-Layers
  4.        (vla-get-ActiveDocument(vlax-get-acad-object)))
  5.    (if(= :vlax-true(vla-get-Lock l))
  6.      (progn
  7. (vla-put-Lock l :vlax-false)
  8. (setq Count(1+ Count)))))
  9. ); end of UnlockAll
  10. (vl-load-com)
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 15:34:15 | 显示全部楼层
我的猜测是,层在视口内冻结或关闭,而不是全局设置。
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 15:38:55 | 显示全部楼层
现在我明白了。为此,最好将函数ACET-VIEWPORT-freezed-LAYER-LIST-SET与零层列表一起使用。在命令行中尝试:
 
  1. Command: (setq vp(car(entsel)))
  2. Select object: <Entity name: 7efa7428>
  3. Command: (acet-viewport-frozen-layer-list-set vp '())
  4. T

 
视口中的所有层都将解冻。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 21:33 , Processed in 0.440674 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表