Sorry, not the right guy. I don't do this kind of drawings.
Anyway, try this routine. It's just quickly adjusted some older one...
It's not automated at all... but it could speed up the text adjustments significantly.
(vl-load-com)
(defun c:DimTextMove ( / *error* :getDimHeadPoints s l mn mx p osm)
(defun :getDimHeadPoints (e / d x09 c10 x10 c11 c13 c14 c15 c100)
(mapcar '(lambda (x) (set (read (strcat "c" (itoa x))) (cdr (assoc x (reverse (entget e)))))) '(10 11 13 14 15 100))
(cond ((vl-position c100 '("AcDbAlignedDimension" "AcDbRotatedDimension")) ; linear
(if (equal c14 c10 1e-6)
(setq x09 c13)
(setq x09 (inters c10
(polar c10 (+ (angle c14 c10) (/ pi 2)) 1)
c13
(polar c13 (angle c14 c10) 1)
nil)))
(if (< (distance c11 c10) (distance c11 x09))
(list e c11 c10 x09)
(list e c11 x09 c10)))))
(defun *error* (errmsg)
(if (not (wcmatch errmsg "Function cancelled,quit / exit abort,console break,end"))
(princ (strcat "\nError: " errmsg)))
(if osm (setvar 'osmode osm))
(princ))
; --------------------------------------------------------------------------------------------------------------------
(setq osm (getvar 'osmode))
(setvar 'osmode 0)
(while (setq s (car (entsel "\nSelect DIM to adjust its text: ")))
(and
;;; (princ "\nSelect LINEAR or ALIGNED dims , ")
;;; (setq s (cond ((ssget "_:L" '((0 . "DIMENSION") (-4 . "&") (70 . 128)))))) ; 128 = text manually placed
;;; ((ssget "_P" '((0 . "DIMENSION") (-4 . "&") (70 . 128))))))
(setq s (ssadd s))
(setq l (vl-remove-if 'listp (mapcar 'cadr (ssnamex s))))
(mapcar '(lambda (e) (redraw e 3) T) l)
(setq l (mapcar ':getDimHeadPoints l))
(setq mn (apply 'min (mapcar '(lambda (x) (distance (cadr x) (caddr x))) l)))
(setq mx (apply 'max (mapcar '(lambda (x) (distance (cadr x) (last x))) l)))
(if (and (setq p (getpoint (trans (cadar l) 0 1) "\nSpecify new place: "))
(setq p (trans p 1 0)))
(foreach e l
(setpropertyvalue (car e) "UsingDefaultTextPosition" 0)
(setpropertyvalue (car e) "TextPosition" (inters (caddr e) (last e) p (polar p (+ (angle (caddr e) (last e)) (/ pi 2)) 1.) nil)))
(foreach e l
(setpropertyvalue (car e) "UsingDefaultTextPosition" 0)
(setpropertyvalue (car e) "TextPosition" (polar (cadr e) (angle (caddr e) (last e)) (+ mn mx)))))
))
(*error* "end")
)