Well, this one is better than the one I currently use, so I tweaked the one you posted:
; Split Dims
(defun c:test (/ type ss sel newpt ent edata elist def1 def2 oldSC)
(setvar 'errno 0)
(while
(not
(and
(setq sel (entsel "\nSelect Dimension to Split: "))
(setq def1 (cdr (assoc 14 (entget (car sel)))))
(setq def2 (cdr (assoc 13 (entget (car sel)))))
)
)
(cond
( (= 7 (getvar 'errno))
(princ "\nYou must select an object.")
)
( (null sel)
(princ "\nYou missed, try again.")
)
);cond
);while
(progn
(command "_.UCS" "_W")
(setq oldSC (getvar 'SELECTIONCYCLING))
(setvar 'SELECTIONCYCLING -2)
(while
(setq newpt (getpoint def2 "\nSelect new Dim Point <exit>: "))
(setq newpt (inters def1 def2 newpt (polar newpt (+ (angle def1 def2) (/ pi 2)) 1) nil)
ent (car sel)
edata (entget ent)
elist (vl-remove-if
'(lambda (pair)
(member (car pair)
(list -1 2 5 102 310 300 330 331 340 350 360 410)))
edata)
)
(entmod (subst (cons 13 newpt) (assoc 13 elist) edata))
(entmakex (subst (cons 14 newpt) (assoc 14 elist) elist))
)
(command "_.UCS" "_P")
(setvar 'SELECTIONCYCLING oldSC)
);progn
(princ)
)
It does not solve your question, but it will prompt you for entsel until a dimension is picked (and also turns off selectioncycling while picking the split points) - which is more user friendly IMO.