也许是这样:
- (defun c:xlindistdiv ( / p1 p2 x dx v n num k p pl )
- (setq p1 (getpoint "\nPick or specify first point : "))
- (setq p2 (getpoint p1 "\nPick or specify second point : "))
- (setq dx (fix (1+ (/ (distance p1 p2) 4200))))
- (setq v (mapcar '- p2 p1))
- (setq n (polar '(0.0 0.0) (+ (angle '(0.0 0.0) v) (* 0.5 pi)) 1.0))
- (initget 6)
- (setq x (getint (strcat "\nSpecify number of XLINE factor for division of distance between two picked points < " (itoa dx) " > : ")))
- (if (null x)
- (setq num (* dx 4200))
- (setq num (* x 4200))
- )
- (setq x (/ (distance p1 p2) num))
- (setq k 0.5)
- (repeat num
- (setq p (polar p1 (angle p1 p2) (* k x)))
- (setq k (1+ k))
- (setq pl (cons p pl))
- )
- (setq pl (reverse pl))
- (foreach p pl
- (entmake
- (list
- '(0 . "XLINE")
- '(100 . "AcDbEntity")
- '(100 . "AcDbXline")
- (cons 10 p)
- (cons 11 n)
- )
- )
- )
- (alert (strcat "Created : " (itoa (length pl)) " XLINE entities... (WHEN you press ENTER or clik on OK...)"))
- (princ)
- )
|