You're on the right track.
FYI,
;; if not in WCS, always trans the entsel point to WCS
(setq pt (vlax-curve-getclosestpointto ent (trans (cadr esel) 1 0)))
NOTE that curve-obj can be an entity name as well as a vla-object
...............
(vlax-curve-getarea curve-obj)
(vlax-curve-getclosestpointto curve-obj givenPnt [extend])
(vlax-curve-getclosestpointtoprojection curve-obj givenPnt normal [extend])
(vlax-curve-getdistatparam curve-obj param)
(vlax-curve-getdistatpoint curve-obj point)
(vlax-curve-getendparam curve-obj)
(vlax-curve-getendpoint curve-obj)
(vlax-curve-getfirstderiv curve-obj param)
(vlax-curve-getparamatdist curve-obj dist)
(vlax-curve-getparamatpoint curve-obj point)
(vlax-curve-getpointatdist curve-obj dist)
(vlax-curve-getpointatparam curve-obj param)
(vlax-curve-getsecondderiv curve-obj param)
(vlax-curve-getstartparam curve-obj)
(vlax-curve-getstartpoint curve-obj)
(vlax-curve-isClosed ent) ; true if Closed
Note that the distance along curve is from a START point and not your point.
Try this: Note no error checking, esp if pk point is too near the end of the arc
(defun c:breakarc (/ brkdis ent dist pkpt [t pt1 pt2)
(setq brkdis 6) ;break distance / 2
(setq ent (entsel "\nSelect Curve: "))
(if ent
(progn
(setq pkpt (cadr ent)
ent (car ent))
(setq pt (vlax-curve-getClosestPointto ent pkpt))
(setq dist (vlax-curve-getdistatpoint ent pt))
(setq pt1 (vlax-curve-getpointatdist ent (+ dist brkdis)))
(setq pt2 (vlax-curve-getpointatdist ent (- dist brkdis)))
(command "break" "_non" pt1 "_non" pt2)
)
)
(princ)
)