零选择集的条件
;; 如果可以获得选择集(txt),并且它包含多个项目;;然后我们将使用(if (< 1 (sslength txt))
(do this)
)
;;如果选择集(txt)没有任何实体怎么办。
(if (= nil (sslength txt));;but it is not working plz suggest right way
(do this)
)
试试这个
(if (/= txt nil)
(Progn ; if more than 1 line of code
(do this)
)
)
看一下李的这篇文章,他在检查文章时出错了http://www.cadtutor.net/forum/showthread.php?86575-靠近文本实体的点绘制 你想做什么?并张贴完整的示例,导致sslength函数出现条件通常不是正确的方法。 如果闭合多段线包含多个文本,则此代码将选择闭合多段线。
但是,如果我想选择没有文本的闭合多段线,内部是多行文字。
(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)
更换此零件。
(foreach grp lst
(if (not (setq txt (ssget "_wp" (mapcar '(lambda ( p ) (trans p (car grp) 1)) (cdr grp)) '((0 . "TEXT,MTEXT")))) )
(ssadd (car grp) out)
)
(setq txt nil)
(gc)
)
现在,它正在选择所有多段线
(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 (not (setq txt (ssget "_wp" (mapcar '(lambda ( p ) (trans p (car grp) 1)) (cdr grp)) '((0 . "TEXT,MTEXT"))))
)
(ssadd (car grp) out)
)
(setq txt nil)
(gc)
)
(sssetfirst nil out)
)
)
(princ)
)
(vl-load-com) (princ)
首先确定你的目标,然后发布你的问题 我只喜欢选择内部没有文本的多段线。就是这样。 因此,我对例程的修改和您对例程的重新安排应该在第6和第7篇文章中完成,否则请上传您正在测试代码的图形。
页:
[1]
2