试试这个。。。
- (defun c:Test (/ ss d i e sn lst l p n ent)
- (vl-load-com)
- (if (and (setq ss (ssget '((0 . "TEXT")))) (setq d (getdist "\n Specify Distance between texts :")))
- (progn (repeat (setq i (sslength ss))
- (vla-put-alignment (vlax-ename->vla-object (setq sn (ssname ss (setq i (1- i))))) acAlignmentLeft)
- (setq e (entget sn))
- (setq lst (cons (list sn (cdr (assoc 10 e)) (cdr (assoc 40 e))) lst))
- )
- (setq l (vl-sort lst '(lambda (a b) (> (cadr (cadr a)) (cadr (cadr b))))))
- (setq p (polar (cadr (car l)) (* pi 1.5) (+ (caddr (car l)) d)))
- (setq n 0)
- (repeat (1- (length l))
- (setq ent (nth (setq n (1+ n)) l))
- (entupd
- (cdr (assoc -1 (entmod (subst (cons 10 p) (assoc 10 (entget (car ent))) (entget (car ent))))))
- )
- (setq p (polar p (* pi 1.5) (+ (caddr ent) d)))
- )
- )
- (princ)
- )
- (princ "\nWritten by Tharwat Al Shoufi")
- (princ)
- )
|