循环选择-围绕点-对于MSasu-请告诉我你的意见-如何改进。。。。等
- (defun c:ce (/ ss i en edxf point p1 p2 distsel sel j lst ssf ent lf)
- (setq distsel (getdist "\nDISTANTA SELECTIE :"))
- (princ "\nPUNCTE DE SELECTIE")
- (while (setq ss (ssget "_:S" '((0 . "POINT"))))
- (setq i 0
- en (ssname ss i)
- edxf (entget en)
- point (cdr (assoc 10 edxf))
- p1 (polar point (* 0.25 pi) (* 0.5 distsel))
- p2 (polar point (* 1.25 pi) (* 0.5 distsel))
- sel (ssget "_C" p2 p1)
- sel (ssdel en sel) ; pt indepartarea punctelor din selectie
- )
- (repeat (sslength sel)
- (setq en1 (ssname sel i))
- (setq pins (cdr (assoc 10 (entget en1))))
- (if (> (distance pins point) (* 0.5 distsel))
- (ssdel e1 sel)
- ) ;_ end of if
- (setq i (1+ i))
- ) ;_ end of repeat
- (setq lst (cons sel lst))
- ) ;_ end of while
- (setq i 0)
- (repeat (length lst)
- (setq j 0)
- (setq lst2 (nth i lst))
- (repeat (sslength lst2)
- (setq e (ssname lst2 j))
- (setq lf (cons e lf))
- (setq j (1+ j))
- ) ;_ end of repeat
- (setq i (1+ i))
- ) ;_ end of repeat
- (setq ssf (ssadd))
- (foreach ent lf (ssadd ent ssf))
- (sssetfirst nil ssf)
- (princ)
- );end defun
|