有没有快速解冻图层的方法?
结构绘图软件飞图cad有个功能叫平面视图助手,默认会新建一个ftplan图层.当冻结这个图层,重新新建平面时,软件会默认解冻该图层,不管图纸多大,重生成一次多卡,它解冻自己这个图层时都是秒杀.不知道是怎么实现这么快的速度.我尝试了vla/command/修改组码,合并图层等等方法,始终达不到它的速度.由于这个软件是收费软件,也没有办法共享出来.看有没有大神研究过.
这个软件是objectARX+C++开发的,难道arx会快点?还是说另有捷径,这个解冻要是速度很快的话对工作还是有很大效率提升的.
目前AutoCAD重生成太慢了,在位编辑块,解冻图层等等,觉得都是可以改进的地方.
Vla方法,秒杀,写了注释,思路就是原位移动更新。
(defun C:TT()
(setq lay_obj (Vlax-Ename->Vla-Object(tblobjname "layer" "FTPLAN")))
(if (= :vlax-true (vlax-get-property lay_obj "Freeze"))
(progn
(vla-put-Freeze lay_obj :vlax-false) ;解冻
(setq ss (ssget "X" '((8 . "FTPLAN")(0 . "INSERT")))) ;SS选择集
(setq ss_val (vla-get-activeselectionset (vla-get-ActiveDocument (vlax-get-acad-object)))) ;Vla选择集
;执行方法
(setq pt_vla (vlax-make-variant(vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 2)) '(0 0 0))))
(vlax-for item ss_val
(vla-move item pt_vla pt_vla) ;原位移动,让框子更新显示
)
)
(vla-put-Freeze lay_obj :vlax-true)
)
)
如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选择集没有选中对象,你画的东西即使是这个图层,这种方法解冻也是看不到的. c#都有直接修改图元,而不需要解锁的操作 你有种再说一遍 发表于 2024-7-5 00:44
c#都有直接修改图元,而不需要解锁的操作
惊总还没休息呀,这个软件取巧了.他这个图层只有他自己能用,你画在他 图层上的东西,冻结后,再使用他的功能,他在解冻专用图层的时候,不会保留你画的东西.推测他临时把自己的图元移到一个临时图层,删除专用图层,重建专用图层.再把移到临时图层的东西移回来.因为它在专有图层上的东西并不多,所以这个操作耗时非常少. 本帖最后由 你有种再说一遍 于 2024-7-5 03:23 编辑
tigcat 发表于 2024-7-5 00:54
惊总还没休息呀,这个软件取巧了.他这个图层只有他自己能用,你画在他 图层上的东西,冻结后,再使用他的功能 ...
用得着吗?数据库监控新建图元,用一个堆/树,接收就好了...
至于重绘怎么加速,那我就不知道了 隐藏了吧,试试改该图层图元60组码 Bao_lai 发表于 2024-7-5 10:06
Vla方法,秒杀,写了注释,思路就是原位移动更新。
宝来兄太强了,我下午试试 夏生生 发表于 2024-7-5 08:45
隐藏了吧,试试改该图层图元60组码
不是隐藏的,是冻结图层 为什么要解冻图层,可以用开关图层代替。
在非常好的电脑
重生成85M dwg
autocad2025要5秒左右
zw2025要2秒左右
autocad在5M dwg 以下才可以秒重生成。 gzcsun 发表于 2024-7-5 14:37
为什么要解冻图层,可以用开关图层代替。
在非常好的电脑
重生成85M dwg
冻结有的时候还是有需要的。
页:
[1]
2