明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 859|回复: 20

[讨论] 有没有快速解冻图层的方法?

[复制链接]
发表于 2024-7-5 00:41:08 | 显示全部楼层 |阅读模式
结构绘图软件飞图cad有个功能叫平面视图助手,默认会新建一个ftplan图层.当冻结这个图层,重新新建平面时,软件会默认解冻该图层,不管图纸多大,重生成一次多卡,它解冻自己这个图层时都是秒杀.不知道是怎么实现这么快的速度.我尝试了vla/command/修改组码,合并图层等等方法,始终达不到它的速度.由于这个软件是收费软件,也没有办法共享出来.
看有没有大神研究过.
这个软件是objectARX+C++开发的,难道arx会快点?还是说另有捷径,这个解冻要是速度很快的话对工作还是有很大效率提升的.
目前AutoCAD重生成太慢了,在位编辑块,解冻图层等等,觉得都是可以改进的地方.
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-7-5 10:06:08 | 显示全部楼层
Vla方法,秒杀,写了注释,思路就是原位移动更新。

  1. (defun C:TT()
  2.   (setq lay_obj (Vlax-Ename->Vla-Object(tblobjname "layer" "FTPLAN")))
  3.   (if (= :vlax-true (vlax-get-property lay_obj "Freeze"))
  4.     (progn
  5.       (vla-put-Freeze lay_obj :vlax-false) ;解冻
  6.       (setq ss (ssget "X" '((8 . "FTPLAN")(0 . "INSERT")))) ;SS选择集
  7.       (setq ss_val (vla-get-activeselectionset (vla-get-ActiveDocument (vlax-get-acad-object)))) ;Vla选择集
  8.       ;执行方法
  9.       (setq pt_vla (vlax-make-variant(vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 2)) '(0 0 0))))
  10.       (vlax-for item ss_val
  11.         (vla-move item pt_vla pt_vla) ;原位移动,让框子更新显示
  12.       )

  13.     )
  14.     (vla-put-Freeze lay_obj :vlax-true)
  15.   )
  16. )

点评

经过实测,真的非常非常快,大家可以收藏使用!感谢宝来兄!  发表于 2024-7-5 14:41

评分

参与人数 1金钱 +20 收起 理由
tigcat + 20 很给力!

查看全部评分

回复 支持 5 反对 0

使用道具 举报

 楼主| 发表于 2024-7-7 10:53:57 | 显示全部楼层
如14#楼原作者宝来大神所言,这是因为图层不存在的缘故.鉴于论坛可能有的坛友不会编程,简要说明如下,程序中下面一行得按自己需求修改.
(setq ss (ssget "X" '((8 . "FTPLAN")(0 . "INSERT")))) ;SS选择集
红色部分换成自己的图层名,比如有个"ar"图层,图元类型是任意的,可以改成如下:
(setq ss (ssget "X" '((8 . "ar")))) ;SS选择集
如果要选中"ar"图层文字,可以如下:
(setq ss (ssget "X" '((8 . "ar")(0 . "TEXT")))) ;SS选择集
注意,如果ss选择集没有选中对象,你画的东西即使是这个图层,这种方法解冻也是看不到的.
回复 支持 1 反对 0

使用道具 举报

发表于 2024-7-5 00:44:33 | 显示全部楼层
c#都有直接修改图元,而不需要解锁的操作
 楼主| 发表于 2024-7-5 00:54:03 | 显示全部楼层
你有种再说一遍 发表于 2024-7-5 00:44
c#都有直接修改图元,而不需要解锁的操作

惊总还没休息呀,这个软件取巧了.他这个图层只有他自己能用,你画在他 图层上的东西,冻结后,再使用他的功能,他在解冻专用图层的时候,不会保留你画的东西.推测他临时把自己的图元移到一个临时图层,删除专用图层,重建专用图层.再把移到临时图层的东西移回来.因为它在专有图层上的东西并不多,所以这个操作耗时非常少.
发表于 2024-7-5 01:12:47 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2024-7-5 03:23 编辑
tigcat 发表于 2024-7-5 00:54
惊总还没休息呀,这个软件取巧了.他这个图层只有他自己能用,你画在他 图层上的东西,冻结后,再使用他的功能 ...

用得着吗?数据库监控新建图元,用一个堆/树,接收就好了...
至于重绘怎么加速,那我就不知道了
发表于 2024-7-5 08:45:52 | 显示全部楼层
隐藏了吧,试试改该图层图元60组码
 楼主| 发表于 2024-7-5 12:51:22 | 显示全部楼层
Bao_lai 发表于 2024-7-5 10:06
Vla方法,秒杀,写了注释,思路就是原位移动更新。

宝来兄太强了,我下午试试
 楼主| 发表于 2024-7-5 12:56:57 | 显示全部楼层
夏生生 发表于 2024-7-5 08:45
隐藏了吧,试试改该图层图元60组码

不是隐藏的,是冻结图层
发表于 2024-7-5 14:37:40 | 显示全部楼层
为什么要解冻图层,可以用开关图层代替。
在非常好的电脑
重生成85M dwg
autocad2025要5秒左右
zw2025要2秒左右
autocad在5M dwg 以下才可以秒重生成。
 楼主| 发表于 2024-7-5 14:45:08 | 显示全部楼层
gzcsun 发表于 2024-7-5 14:37
为什么要解冻图层,可以用开关图层代替。
在非常好的电脑
重生成85M dwg

冻结有的时候还是有需要的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-22 16:18 , Processed in 0.208057 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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