明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2007|回复: 10

[提问] 请问如何提高打开关闭图层的速度?

[复制链接]
发表于 2019-7-17 10:28:17 | 显示全部楼层 |阅读模式
本帖最后由 小万LISP 于 2019-7-17 10:30 编辑

我 目前用的 是下面的命令来打开关闭图层,但执行速度较慢,有好的办法 改进吗?
;关图层 制图_窗型
(defun 关窗型() (if(tblsearch "layer" "制图_窗型")(command"layer""off""制图_窗型""")) )
;开图层 制图_窗型
(defun 开窗型() (if(tblsearch "layer" "制图_窗型")(command"layer""on""制图_窗型""")) )
;关图层 制图_固玻
(defun 关固玻() (if(tblsearch "layer" "制图_固玻")(command"layer""off""制图_固玻""")) )
;关图层 制图_百叶片
(defun 关百叶片() (if(tblsearch "layer" "制图_百叶片")(command"layer""off""制图_百叶片""")) )
;关图层 制图_开启线
(defun 关开启线() (if(tblsearch "layer" "制图_开启线")(command"layer""off""制图_开启线""")) )
;关图层 制图_标高
(defun 关标高() (if(tblsearch "layer" "制图_标高")(command"layer""off""制图_标高""")) )
;开图层 制图_标高
(defun 开标高() (if(tblsearch "layer" "制图_标高")(command"layer""on""制图_标高""")) )
;关图层 制图_内空
(defun 关内空() (if(tblsearch "layer" "制图_内空")(command"layer""off""制图_内空""")) )
;开图层 制图_内空
(defun 开内空() (if(tblsearch "layer" "制图_内空")(command"layer""on""制图_内空""")) )

发表于 2019-7-17 13:06:40 | 显示全部楼层
换一台新电脑。
发表于 2019-7-17 13:15:26 来自手机 | 显示全部楼层
改图层块表很快,之所以觉得慢是反应器,比如改颜色,所有同层对象要更新一遍,块内对象也要遍历查找。天正对象也有自己的反应器
发表于 2019-7-17 15:09:44 | 显示全部楼层
本帖最后由 1291500406 于 2019-7-17 15:25 编辑

(defun c:bb()(bb_layon&off "制图_窗型"))
(defun c:bb1()(bb_layon&off "制图_固玻"))
(defun c:bb2()(bb_layon&off "制图_百叶片"))
(defun c:bb3()(bb_layon&off "制图_开启线"))
(defun c:bb4()(bb_layon&off "制图_标高"))
(defun c:bb5()(bb_layon&off "制图_内空"))
(defun bb_layon&off (b)(vl-load-com)(setvar "cmdecho" 0)(if (= (vla-get-layeron(vlax-ename->vla-object (tblobjname "layer" b )))
:vlax-true)(command "layer" "off" b "")(command "layer" "on" b ""))(setvar "cmdecho" 1)(princ))

发表于 2019-7-17 18:33:54 | 显示全部楼层
用comman速度慢,用vla-put-layeron快N倍。
发表于 2019-7-17 19:00:16 | 显示全部楼层
wudechao 发表于 2019-7-17 18:33
用comman速度慢,用vla-put-layeron快N倍。

(defun bb_layon&off (b / bb )(vl-load-com)
(if(= (vla-get-layeron(setq bb(vlax-ename->vla-object (tblobjname "layer" b)))):vlax-true)
(vla-put-layeron bb :vlax-false)(vla-put-layeron bb :vlax-true))(princ))

发表于 2020-8-23 07:31:45 | 显示全部楼层
1291500406 发表于 2019-7-17 19:00
(defun bb_layon&off (b / bb )(vl-load-com)
(if(= (vla-get-layeron(setq bb(vlax-ename->vla-object  ...

您好老师,怎么用vla-put-layeron打开所有的图层呀,command图纸大的时候,每次layon都要好久,想寻找一个快速打开所有图层的方法,希望抽空指导一下
发表于 2020-8-23 08:36:10 | 显示全部楼层
xmq1103 发表于 2020-8-23 07:31
您好老师,怎么用vla-put-layeron打开所有的图层呀,command图纸大的时候,每次layon都要好久,想寻找一 ...

(vlax-for vlay (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (vla-put-layeron vlay :vlax-true))
        (vla-regen (vla-get-activedocument (vlax-get-acad-object)) AcAllViewPorts)
发表于 2020-8-23 08:53:52 | 显示全部楼层
TPG辉 发表于 2020-8-23 08:36
(vlax-for vlay (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (vla-put-layeron v ...

谢谢,我试了一下,我的cad2018效果(cad文件在15MB左右)比layon速度还慢2秒左右。还有别的法吗?
发表于 2020-8-23 11:12:28 来自手机 | 显示全部楼层
为啥要加tblseacher 直接关不香?而且你也不是做成切换
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-17 23:24 , Processed in 0.209327 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表