Here is a better solution:
;; Equispace - Lee Mac
(defun c:eqsp ( / a b e i l p s v )
(if
(and
(setq s (ssget "_:L" '((0 . "TEXT,MTEXT,INSERT"))))
(setq a (getpoint "\nSpecify Basepoint: "))
(setq b (getpoint "\nSpecify Spacing Vector: " a))
)
(progn
(repeat (setq i (sslength s))
(setq e (entget (ssname s (setq i (1- i)))))
(if (or (wcmatch (cdr (assoc 0 e)) "MTEXT,INSERT")
(and
(zerop (cdr (assoc 72 e)))
(zerop (cdr (assoc 73 e)))
)
)
(setq p (cdr (assoc 10 e)))
(setq p (cdr (assoc 11 e)))
)
(setq l (cons (list p (vlax-ename->vla-object (cdr (assoc -1 e)))) l))
)
(setq v (mapcar '- b a))
(foreach e
(vl-sort l
(function
(lambda ( a b )
(< (last (trans (car a) 0 v)) (last (trans (car b) 0 v)))
)
)
)
(vla-move (cadr e) (vlax-3D-point (car e)) (vlax-3D-point a))
(setq a (mapcar '+ a v))
)
)
)
(princ)
)
(vl-load-com) (princ)