 - (defun c:tt (/ OS CMDECHO SS D BOXLST PT SSL BOX *error*)
- (defun *error* (s)
- (setvar 'cmdecho cmdecho)
- (setvar 'osmode os)
- (princ s)
- (princ)
- )
- (setq os (getvar 'osmode)
- cmdecho (getvar 'cmdecho)
- )
- (setvar 'cmdecho 0)
- (setvar 'osmode 0)
- (setq ss (ssget '((0 . "lwpolyline"))))
- (if ss
- (progn
- (setq d (getreal "\n间距<5.0>:"))
- (if (null d)
- (setq d 5.0)
- )
- (setq ss (GXL-SEL-SS->LIST ss))
- (setq boxlst (mapcar '(lambda (x) (GXL-GETBOX x)) ss))
- (setq
- boxlst (vl-sort boxlst '(lambda (a b) (< (caar a) (caar b))))
- )
- (setq pt (caar boxlst))
- (setq ssl
- (mapcar
- '(lambda (lw / box)
- (list
- (apply 'ssget (cons "c" (setq box (GXL-GETBOX lw))))
- box
- )
- )
- ss
- )
- )
- (foreach s ssl
- (command "_move" (car s) "" (caadr s) pt)
- (setq pt (polar pt 0 (+ d (- (car (cadadr s)) (caaadr s)))))
- )
- )
- )
- (setvar 'cmdecho cmdecho)
- (setvar 'osmode os)
- )
- (defun gxl-Sel-SS->List (ss / i s )
- (if ss
- (repeat (setq i (sslength ss))
- (setq s (cons (ssname ss (setq i (1- i))) s))
- )
- )
- )
- (defun gxl-getbox (e1 / obj minpoint maxpoint)
- (if (= 'ENAME (type e1))
- (setq obj (vlax-ename->vla-object e1)) ;转换图元名
- (setq obj e1)
- )
- (vla-GetBoundingBox obj 'minpoint 'maxpoint)
- (setq minpoint (vlax-safearray->list minpoint)) ;把变体数据转化为表
- (setq maxpoint (vlax-safearray->list maxpoint)) ;把变体数据转化为表
- (list minpoint maxpoint)
- )
|