蛮力法=慢:
- (defun c:ptjoin ( / i l m p s )
- (if (setq s (ssget '((0 . "POINT"))))
- (progn
- (repeat (setq i (sslength s))
- (setq l (cons (cdr (assoc 10 (entget (ssname s (setq i (1- i)))))) l))
- )
- (if (setq p (getpoint "\nPick 1st point: "))
- (progn
- (setq p (trans p 1 0))
- (while l
- (setq p (closestpoint p l)
- m (cons (cons 10 p) m)
- l (vl-remove p l)
- )
- )
- (entmake
- (append
- (list
- '(000 . "LWPOLYLINE")
- '(100 . "AcDbEntity")
- '(100 . "AcDbPolyline")
- (cons 90 (length m))
- '(070 . 0)
- )
- m
- )
- )
- )
- )
- )
- )
- (princ)
- )
- (defun closestpoint ( p l / d q r x )
- (setq r (car l)
- d (distance p r)
- )
- (foreach q (cdr l)
- (if (< (setq x (distance p q)) d)
- (setq r q d x)
- )
- )
- r
- )
|