这是我的版本:
- (defun c:divplsegs (/ ss mind i pl ep k j dk dj d n dd m p)
- (vl-load-com)
- (prompt "\nSelect 2d polylines...")
- (setq ss (ssget '((0 . "*POLYLINE") (-4 . "<not") (-4 . "&=") (70 . (-4 . "not>"))))
- (initget 7)
- (setq mind (getdist "\nSpecify min. distance for segments division: "))
- (setq i -1)
- (while (setq pl (ssname ss (setq i (1+ i))))
- (setq ep (vlax-curve-getendparam pl))
- (setq k -1.0)
- (while (< (setq k (1+ k)) ep)
- (setq j (1+ k))
- (setq dk (vlax-curve-getdistatparam pl k))
- (setq dj (vlax-curve-getdistatparam pl j))
- (setq d (- dj dk))
- (setq n (fix (/ d mind)))
- (if (> n 1)
- (progn
- (setq dd (/ d (float n)))
- (setq m -1.0)
- (repeat n
- (setq p (vlax-curve-getpointatdist pl (+ dk (* dd (setq m (1+ m))))))
- (entmake (list '(0 . "POINT") (cons 10 p)))
- )
- )
- (progn
- (setq p (vlax-curve-getpointatdist pl dk))
- (entmake (list '(0 . "POINT") (cons 10 p)))
- )
- )
- )
- (entmake (list '(0 . "POINT") (cons 10 (vlax-curve-getendpoint pl))))
- )
- (princ)
- )
您好,M.R。 |