试下看
- (defun c:tt ()
- (setq dir (getstring "\n选择方向[(A)顺时针外部/(B)顺时针内部](逆时针则相反)<A>:"))
- (setq gap (getreal "6"))
- (if (= (strcase dir) "B")
- (setq dir 0)
- (setq dir pi)
- )
- (setq ss (ssget '((0 . "LWPOLYLINE"))))
- (setq i 0)
- (setvar "cmdecho" 0)
- (if ss (progn
- (repeat (sslength ss)
- (setq ent (ssname ss i))
- (setq ents (entget ent))
- (setq pts (mapcar 'cdr (vl-remove-if-not '(lambda (e) (= (car e) 10)) ents)))
- (mapcar
- '(lambda(e1 e2)
- (if (> 120 (/ (* (angle e1 e2) 180) pi) 300)
- (command "_.dimaligned" e1 e2 (polar e1 (+ dir (angle e1 e2) (/ pi 2.0)) gap))
- (command "_.dimaligned" e2 e1 (polar e1 (+ dir (angle e1 e2) (/ pi 2.0)) gap))
- )
- )
- pts (append (cdr pts) (list (car pts))))
- (setq i (1+ i))
- )
- ));if
- (princ)
- )
|