如果闭合多段线包含多个文本,则此代码将选择闭合多段线。
但是,如果我想选择没有文本的闭合多段线,内部是多行文字。
- (defun c:mtpl ( / app ent grp idx lst mni mxa out sel tmp txt )
- (if (setq sel (ssget "_X" '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1))))
- (progn
- (repeat (setq idx (sslength sel))
- (setq ent (ssname sel (setq idx (1- idx)))
- lst (cons (cons ent (mapcar 'cdr (vl-remove-if-not '(lambda ( x ) (= 10 (car x))) (entget ent)))) lst)
- )
- )
- (setq tmp (apply 'append (mapcar 'cdr lst))
- mni (car tmp)
- mxa (car tmp)
- )
- (foreach pnt (cdr tmp)
- (setq mni (mapcar 'min mni pnt)
- mxa (mapcar 'max mxa pnt)
- )
- )
- (setq app (vlax-get-acad-object)
- out (ssadd)
- )
- (vla-zoomwindow app (vlax-3D-point mni) (vlax-3D-point mxa))
- (foreach grp lst
- (if
- (and
- (setq txt (ssget "_wp" (mapcar '(lambda ( p ) (trans p (car grp) 1)) (cdr grp)) '((0 . "TEXT,MTEXT"))))
- (< 1 (sslength txt))
- )
- (ssadd (car grp) out)
- )
- (setq txt nil)
- (gc)
- )
- (sssetfirst nil out)
- )
- )
- (princ)
- )
- (vl-load-com) (princ)
|