lisp隐藏对象显示对象,隐藏部分图元

  • A+
所属分类:CAD二次开发

在CAD里面也是可以像3D软件一样可以隐藏实体的,也可以显示出来。不需要通过图层来隐藏也是可以指定隐藏的。

想达到隐藏效果,我知道的有两种,第一种是通过分图层,用图层来隐藏和显示对象。第二种是直接修改对象的可见属性。下面直接贴出直接修改对象可见属性来达到隐藏和显示效果。

;隐藏部分对象
(defun c:yycc(/ ss xj)
; :vlax-true 显示
; :vlax-false 隐藏
(setq ss (ssget)); 选择对象

(if (= (type ss) 'PICKSET);判断选集是否为空
;循环返回当前选择集
(vlax-for xj (vla-get-activeselectionset
(vla-get-activedocument (vlax-get-acad-object))
)

(if (/=(vla-get-visible xj) :vlax-false);判断选集属性是否隐藏
(vla-put-visible xj :vlax-false))

)
)
)

;显示全部对象
(defun c:xs( / ss xj)
; :vlax-true 显示
; :vlax-false 隐藏

(setq ss (ssget "X")); 选择整个文件

(if (= (type ss) 'PICKSET);判断选集是否为空
;循环返回当前选择集
(vlax-for xj (vla-get-activeselectionset
(vla-get-activedocument (vlax-get-acad-object))
)
(if (=(vla-get-visible xj) :vlax-false);判断选集属性是否隐藏
(vla-put-visible xj :vlax-true))
)
)
)
;显示部分隐藏对象
;这里未贴出源码,
;|原理
1.、首选要记录被隐藏的对象图元信息,如图元的唯一不变组码5参数 (5
. "F2")
2,需要显示对象的时候,在调用刚刚保存的信息来返回图元,在把图元实现设置可见性

提示;保存信息可以使用扩展字典,也可以使用配置文件来保存,外挂燕秀里面有这个功能。

复制

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: