Possibly like this.
(vl-load-com)
(defun c:DimBroken ( / GetObjectID p e i)
(or *dimbroken-dst* (setq *dimbroken-dst* 150.))
(defun GetObjectID ( obj doc )
(if (eq "X64" (strcase (getenv "PROCESSOR_ARCHITECTURE")))
(vlax-invoke-method
(vla-get-Utility doc) 'GetObjectIdString obj :vlax-false)
(itoa (vla-get-Objectid obj))))
(setq *dimbroken-dst* (cond ((getdist (strcat "\nSpecify how much broken they are <" (rtos *dimbroken-dst*) ">: "))) (*dimbroken-dst*)))
(while (setq p (getpoint "\nSpecify first extension line origin: "))
(command "_.dimlinear" "_non" p)
(while (> (getvar 'cmdactive) 0) (command pause))
(setq e (entlast))
(setq i (GetObjectID (vlax-ename->vla-object e) (vla-get-ActiveDocument (vlax-get-acad-object))))
(setpropertyvalue e "Suffix" (rtos *dimbroken-dst*))
(setpropertyvalue e "DimensionText"
(strcat "%<\\AcExpr ("
"%<\\AcObjProp Object(%<\\_ObjId " i ">%).Measurement>%"
"+"
"%<\\AcObjProp Object(%<\\_ObjId " i ">%).TextSuffix>%"
") \\f \"%lu2%pr0\">%")))
(vla-regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
(princ)
)
The length of reduction is stored in SUFFIX. You can change it if needed, then regen to update.
If you prefer the aligned dims over linear, just change the word.
https://www.lee-mac.com/runlisp.html