Still starting from the mhupp code, I think this corresponds to your request: align all the blocks to the position of a block. Same for text or mtext.
(defun C:ABC ( / vars vals ss ssref pt_ref pt2 vector mode ent ed pt newpt)
(vl-load-com)
(setq vars '(OSMODE ORTHOMODE)
vals (mapcar 'getvar vars)
)
(mapcar 'setvar vars '(0 1))
(princ "\nSelect Block or Texte.")
(while (null (setq ss (ssget '((0 . "*TEXT,INSERT"))))))
(princ "\nSelect ONE texte or block to align selection")
(while (null (setq ssref (ssget "_+.:E:S" '((0 . "*TEXT,INSERT"))))))
(setq pt_ref (cdr (assoc 10 (entget (ssname ssref 0)))))
(setq pt2 (getpoint pt_ref "\nSelect Horozontal or Vertical:"))
(setq vector (mapcar '- pt2 pt_ref))
(if (eq (car Vector) 0.0) (setq mode 'V) (setq mode 'H))
(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex SS)))
(setq ed (entget ent)
pt (cdr (assoc 10 ed))
newpt (if (eq mode 'V) (list (car pt_ref) (cadr pt) (caddr pt)) (list (car pt) (cadr pt_ref) (caddr pt)))
)
(vla-Move (vlax-ename->vla-object ent) (vlax-3d-point pt) (vlax-3d-point newpt))
)
(mapcar 'setvar vars vals)
(princ)
)