如何选择包含标注的块
;图中有很多块,有些块包含了标注,导致有些标注样式不能清除,要全选包含标注的块,该如何表达呢?(defun c:13()
;(setq ss (ssget "x" '((0 . "insert"))))
(sssetfirst nil ss)
(princ))
本帖最后由 pzweng 于 2018-5-23 10:10 编辑
只能对图块遍历了
(defun c:13()
(defun getsymlst (sym / l n)
(setq l '())
(setq n (tblnext sym t))
(setq l (cons (cdr (assoc 2 n)) l))
(while (setq n (tblnext sym nil))
(setq l (cons (cdr (assoc 2 n)) l))
)
l
)
(setq l nil)
(mapcar '(lambda (x / en)
(setq en (tblobjname "block" x))
(while (progn (if (and (setq en (entnext en)) ;DIMENSION
(wcmatch (cdr (assoc 0 (entget en))) "*DIMENSION")
)
(setq l (cons x l)l (cons "," l))
(if en t nil )
)
)
)
)
(vl-remove-if '(lambda (x) (wcmatch x "`*D*")) (getsymlst "block"))
)
(setq ss (ssget "x"
(list '(0 . "insert")
(cons 2 (vl-string-left-trim "," (apply 'strcat l)))
)
)
)
(sssetfirst nil ss)
(princ)
) pzweng 发表于 2018-5-22 21:56
只能对图块遍历了
(defun c:13()
(defun getsymlst (sym / l n)
非常感谢你的帮助,图太大,不知道为什么没有亮显,方便帮添加一个功能吗:
在找到的每个块的基点k0与当前鼠标所在的位置点o画一根线,方便查找。谢谢
(entmake (list '(0 . "line")'(cons 10 k0)(cons 11 o)))
(defun weizhi() ;(weizhi)
(setvar 'osmode 0) ;关闭捕捉
(setq gbwz (grread 3)) ;光标位置
(if (member (car gbwz)'(3 5))
(setq o (cadr gbwz)) ) ;鼠标位置
;(setq pmzd(getvar "viewctr")) ;屏幕中点
(setvar 'osmode 6079) ) ;打开捕捉
页:
[1]