乐筑天下

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

[编程交流] 图层代码-发布时速度较慢

[复制链接]

55

主题

325

帖子

274

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
280
发表于 2022-7-5 17:29:05 | 显示全部楼层 |阅读模式
下面的代码是从我编写的一个更大的程序中提取出来的。这一部分在打开的文件中查找层。如果不存在,则创建层。如果它确实存在,则会确保它已解冻、打开并解锁。然后在这两种情况下,它将层设置为当前层。我遇到的问题是,当我在AutoCAD中发出命令时,在继续之前有很长的延迟。我不知道为什么。当我删除这部分代码时,它运行得非常快。我做过什么会导致这种情况吗?
 
  1.    (setq oldlay  (getvar "clayer")
  2.          laycoll (vla-get-Layers doc)
  3.          layname "G-ANNO-DIMS"
  4.    )
  5.    (if (vl-catch-all-error-p (setq layobj (vl-catch-all-apply 'vla-Item (list laycoll layname))))
  6.        (progn
  7.            (setq layobj (vla-Add laycoll layname))
  8.            (vla-put-Color layobj acWhite)
  9.            (vla-put-Description layobj "Dimensions")
  10.            (vla-put-Freeze layobj :vlax-false)
  11.            (vla-put-LayerOn layobj :vlax-true)
  12.            (vla-put-Linetype layobj "Continuous")
  13.            (vla-put-Lineweight layobj acLnWt025)
  14.            (vla-put-Lock layobj :vlax-false)
  15.            (vla-put-Plottable layobj :vlax-true)
  16.            (vla-put-ViewportDefault layobj :vlax-false)
  17.            (setvar "clayer" layname)
  18.        )
  19.        (progn
  20.            (if (= (vla-get-Freeze layobj) :vlax-true) (vla-put-Freeze layobj :vlax-false))
  21.            (if (= (vla-get-LayerOn layobj) :vlax-false) (vla-put-LayerOn layobj :vlax-true))
  22.            (if (= (vla-get-Lock layobj) :vlax-true) (vla-put-Lock layobj :vlax-false))
  23.            (vla-Regen doc acAllViewports)
  24.            (setvar "clayer" layname)
  25.        )
  26.    )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:43:33 | 显示全部楼层
尝试忽略以下内容:
  1. (vla-Regen doc acAllViewports)
回复

使用道具 举报

55

主题

325

帖子

274

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
280
发表于 2022-7-5 17:53:51 | 显示全部楼层
谢谢李。现在回想起来,这很有道理。当图层被锁定或冻结并且需要重新生成时,我如何克服这种情况?我应该在每个单独的if函数中容纳它吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:04:16 | 显示全部楼层
 
我将确保在程序评估期间,图形最多只重新生成一次,并且这种重新生成作为程序执行的最后一个操作发生。您可以使用一个布尔变量,该变量将在一个条件语句中定义,以确定实际上是否需要重新生成。
回复

使用道具 举报

55

主题

325

帖子

274

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
280
发表于 2022-7-5 18:16:46 | 显示全部楼层
我不认为这正是你所建议的李,但我认为这可能是沿着相同的路线。你同意这是一个解决方案吗?
 
  1.    (setq oldlay  (getvar "clayer")
  2.          laycoll (vla-get-Layers doc)
  3.          layname "G-ANNO-DIMS"
  4.    )
  5.    (if (vl-catch-all-error-p (setq layobj (vl-catch-all-apply 'vla-Item (list laycoll layname))))
  6.        (progn
  7.            (setq layobj (vla-Add laycoll layname))
  8.            (vla-put-Color layobj acWhite)
  9.            (vla-put-Description layobj "Dimensions")
  10.            (vla-put-Freeze layobj :vlax-false)
  11.            (vla-put-LayerOn layobj :vlax-true)
  12.            (vla-put-Linetype layobj "Continuous")
  13.            (vla-put-Lineweight layobj acLnWt025)
  14.            (vla-put-Lock layobj :vlax-false)
  15.            (vla-put-Plottable layobj :vlax-true)
  16.            (vla-put-ViewportDefault layobj :vlax-false)
  17.            (setvar "clayer" layname)
  18.        )
  19.        (progn
  20.            (if (= (setq layfrz (vla-get-Freeze layobj)) :vlax-true) (vla-put-Freeze layobj :vlax-false))
  21.            (if (= (vla-get-LayerOn layobj) :vlax-false) (vla-put-LayerOn layobj :vlax-true))
  22.            (if (= (setq laylck (vla-get-Lock layobj)) :vlax-true) (vla-put-Lock layobj :vlax-false))
  23.            (if (or (= layfrz :vlax-true) (= laylck :vlax-true)) (vla-Regen doc acAllViewports))
  24.            (setvar "clayer" layname)
  25.        )
  26.    )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:21:31 | 显示全部楼层
准确地说,前提是在整个程序中没有多个类似的代码块。
回复

使用道具 举报

55

主题

325

帖子

274

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
280
发表于 2022-7-5 18:34:25 | 显示全部楼层
不。这是我代码中唯一需要重新生成的时间。非常感谢你的帮助。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-19 06:27 , Processed in 0.620741 second(s), 66 queries .

© 2020-2025 乐筑天下

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