看Gu_xl版主程序,请教一个问题,谢谢!
带着崇敬的心情拜读了Gu_xl版主程序,无奈有点看不懂,其中有 "隐藏对象"和 "隐藏对象数据",很冒昧地问一下,能不能做到只"隐藏对象数据" 而不"隐藏对象" 谢谢!
;;隐藏对象
(defun c:Objhide(/ ss n data) (vl-load-com)
(setq ss (ssget ":L"))
(if ss
(progn
(repeat (setq n (sslength ss))
(vla-put-Visible
(setq obj (vlax-ename->vla-object
(ssname ss (setq n (1- n)))))
:vlax-false)
(setq data (cons (vla-get-Handle obj) data))
)
(VLAX-LDATA-PUT
"隐藏对象"
"隐藏对象数据"
(append (VLAX-LDATA-get "隐藏对象" "隐藏对象数据") Data))
)
)
(princ)
)
没看懂你的问题!
解释一下代码:
...
(VLAX-LDATA-PUT
"隐藏对象" ;_ 词典名称
"隐藏对象数据" ;_ 词典关键字
(append (VLAX-LDATA-get "隐藏对象" "隐藏对象数据") Data)) ;_ 存储到词典中的 LISP 数据
)
.... 本帖最后由 xhq1954425 于 2013-8-3 05:02 编辑
Gu_xl 发表于 2013-8-2 22:54 static/image/common/back.gif
没看懂你的问题!
解释一下代码:
...
不好意思,是我表达的不好。
首先非常感谢你的回复!
我经常做用lisp操控的三维立体移动、旋转……的演示程序,对象多时,演示效果显得不流畅(动作缓慢),如果把不参与动作的对象隐藏,参与动作的对象将会很流畅,但是隐藏对象又不是我想要的,看到你的程序后我有一个想法;
就是能不能在不隐藏对象的前提下,将不参与动作的图元对象“数据”“ 冻结或隐藏”,实现提高运行速度(动作流畅)的目的。
你给我留下的印象那是无所不能,如果有别的方法可用,烦请指点一二。谢谢! 试了下g版的隐藏对象,挺好的,redraw不显出来,有没有把隐藏的显示出来啊?求g版程序链接 ;;隐藏对象
(defun c:Objhide(/ ss n data) (vl-load-com)
(setq ss (ssget ":L"))
(if ss
(progn
(repeat (setq n (sslength ss))
(vla-put-Visible
(setq obj (vlax-ename->vla-object
(ssname ss (setq n (1- n)))))
:vlax-false)
(setq data (cons (vla-get-Handle obj) data))
)
(VLAX-LDATA-PUT
"隐藏对象"
"隐藏对象数据"
(append (VLAX-LDATA-get "隐藏对象" "隐藏对象数据") Data))
)
)
(princ)
)
;;显示对象
(defun c:ObjShow(/ data en LayerStaus layer layers)
(vl-load-com)
(setq data (VLAX-LDATA-get "隐藏对象" "隐藏对象数据"))
(if data
(progn
(foreach handdata
(if (setq en (handent hand))
(progn
(setq layers (vla-get-layers
(vla-get-ActiveDocument
(vlax-get-acad-object))))
(if (or (= :vlax-true
(vla-get-Lock
(setq
layer (vla-item layers
(vla-get-layer
(setq obj
(vlax-ename->vla-object
en)))))))
(= :vlax-true (vla-get-Freeze layer))
)
(progn
(setq LayerStaus
(cons (list layer
(vla-get-Lock layer)
(vla-get-Freeze layer))
LayerStaus)) ;_ 保存图层状态
(vla-put-lock layer :vlax-false) ;_ 解锁
(vla-put-lock layer :vlax-false) ;_ 解冻
)
)
(vla-put-Visible obj :vlax-true) ;_ 显示
)
)
)
(VLAX-LDATA-delete "隐藏对象" "隐藏对象数据")
(if LayerStaus
(foreach laLayerStaus
(vla-put-lock (car la) (cadr la))
(vla-put-freeze (car la) (caddr la))
)
)
)
)
(princ)
)
页:
[1]