各位大神帮忙看下,如图一个部分隐藏的功能,求大神增加如下功能
本帖最后由 664571221 于 2018-12-18 14:50 编辑输入tt,选中图元,回车后隐藏物体,如果继续回车,则显示隐藏的物体,如此循环,只要选中一次图元,然后就按空格键循环隐藏显示
;;部分隐藏
(defun C:BFYC (/ OBJ)
(princ "【部分隐藏】")
(obj_onf (ssget) :vlax-false)
(princ)
)
;;快速隐藏物体
(vl-load-com)
;对象显示与隐藏
(defun obj_onf (ss mode)
(if (= (type ss) 'PICKSET)
(vlax-for OBJ (vla-get-activeselectionset
(vla-get-activedocument (vlax-get-acad-object))
)
(if (/=(vla-get-visible OBJ) mode) (vla-put-visible OBJ mode))
)
)
)
;图层显示与隐藏
(defun lay_onf (LayName mode)
(if (= (type LayName) 'STR)
(vlax-for lay (vla-get-layers
(vla-get-activedocument (vlax-get-acad-object))
)
(if (eq (strcase (vla-get-name lay)) (strcase LayName))
(if(/=(vla-get-layeron lay) mode)
(vla-put-layeron lay mode)
)
)
)
)
)
;;;把选择集的物体转化为Lisp 图元表
(defun S2L:ENT (ss / i l objs)
(setq i -1 l (sslength ss) objs nil)
(repeat l
(setq objs (cons(ssname ss (setq i (1+ i))) objs))
)
)
;;;把选择集的物体转化为VLisp 图元表
(defun S2V:ENT (ss / i l objs)
(setq i -1 l (sslength ss) objs nil)
(repeat l
(setq objs (cons(vlax-ename->vla-object (ssname ss (setq i (1+ i)))) objs))
)
)
帮顶
;; bfyc(部分隐藏)
(defun c:bfyc ()
(princ "【部分隐藏】")
(if (setq ss (ssget))
(progn
(setq mode ta 1)
(while mode
(setq ukw (Ukword 1 "1 2" "1-隐藏显示切换/2-退出" ukw))
(if (= ukw "2")
(setq mode nil)
(cond ((and (= ukw "1") (= a 1))
(SS-VS ss :vlax-false)
(setq a 0)
)
((and (= ukw "1") (= a 0))
(SS-VS ss :vlax-true)
(setq a 1)
)
)
)
)
)
)
(princ)
)
;; 对象显示与隐藏
(defun SS-VS (ss mode)
(if (= (type ss) 'PICKSET)
(vlax-for OBJ (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
(if (/= (vla-get-visible OBJ) mode)
(vla-put-visible OBJ mode)
)
)
)
)
版主的程序是不是得 装你的 e派工具箱 才好使?? Ukword是什么命令? 帮顶
页:
[1]