不客气,马丁
删除重复点错误
- (defun connect (e / _point d d1 p1 p2 p11 p12 p21 p22 a b n i)
- (setq _point vlax-curve-getpointatparam
- d (vlax-curve-getdistatparam e
- (setq n (fix (+ 0.1 (vlax-curve-getendparam e))))
- )
- )
- (repeat (setq i (1+ n))
- (setq p1 (_point e (setq i (1- i))))
- (if p2
- (if
- (and
- (< (setq d1 (distance p1 p2)) d)
- (not (zerop d1))
- )
- (setq
- d d1
- a (rem (1+ i) n)
- b i
- )
- )
- )
- (setq p2 p1)
- )
- (if (zerop b) (mapcar 'set '(a b) (list b a)))
- (setq p11 (_point e a)
- p21 (_point e b)
- )
- (while
- (progn
- (while
- (equal p11 (setq p12 (_point e (setq a (rem (1+ a) n)))) 1e-
- )
- (while
- (equal p21 (setq p22 (_point e (setq b (rem (+ n (1- b)) n)))) 1e-
- )
- (not
- (or
- (= (abs (- a b)) 1)
- (= (abs (- a b)) n)
- )
- )
- )
- (entmake
- (list
- '(0 . "LINE")
- (cons 10 (setq p11 p12))
- (cons 11 (setq p21 p22))
- )
- )
- )
- )
- (defun c:test (/ ss i)
- (if
- (setq ss (ssget '((0 . "LWPOLYLINE"))))
- (repeat (setq i (sslength ss))
- (connect (ssname ss (setq i (1- i))))
- )
- )
- (princ)
- )
|