快速一:
- (defun c:ldis ( / e i l p q s x )
- (setq x
- (list
- '(08 . "Distance")
- (cons 40 (getvar 'textsize))
- (cons 07 (getvar 'textstyle))
- '(72 . 1)
- '(73 . 2)
- )
- )
- (if (setq s (ssget '((0 . "LINE"))))
- (progn
- (repeat (setq i (sslength s))
- (setq e (entget (ssname s (setq i (1- i))))
- p (cdr (assoc 10 e))
- q (cdr (assoc 11 e))
- )
- (if (equal (car p) (car q) 1e-3)
- (setq l (cons (if (< (cadr p) (cadr q)) p q) l))
- )
- )
- (mapcar
- '(lambda ( a b / m s w )
- (setq m (mapcar '(lambda ( a b ) (/ (+ a b) 2)) a b)
- s (cons 01 (rtos (- (car b) (car a))))
- w ((lambda ( b ) (- (caadr b) (caar b))) (textbox (cons s x)))
- )
- (entmake
- (vl-list* '(0 . "TEXT") s
- (cons 10 m)
- (cons 11 m)
- (if (< (- (car b) (car a)) w) (cons 50 (/ pi 2.0)) '(50 . 0.0))
- x
- )
- )
- )
- (setq l (vl-sort l '(lambda ( a b ) (< (car a) (car b)))))
- (cdr l)
- )
- )
- )
- (princ)
- )
|