Well, it's little complicated now... hope I understood you well.
I've added a default value for an interval, you can change it to by your preference, red.
(vl-load-com)
(defun c:pldiv+2file ( / *error* file ss en obj pt dst par file)
(defun *error* (errmsg)
(if (not (wcmatch errmsg "Function cancelled,quit / exit abort,console break,end"))
(princ (strcat "\nError: " errmsg)))
(if file (close file))
(if obj (vla-delete obj))
(princ))
(princ "\nRequired single geometrical object, ")
(if (and (setq ss (ssget "_+.:E:S" '((0 . "*POLYLINE,SPLINE,ARC,CIRCLE,LINE"))))
(setq en (ssname ss 0))
(setq pt (cadar (cdddar (ssnamex ss))))
(setq pt (vlax-curve-getClosestPointTo en pt))
(setq pt (progn
(if (> (vlax-curve-getDistAtParam en (vlax-curve-getParamAtPoint en pt))
(/ (vlax-curve-getDistAtParam en (vlax-curve-getEndParam en)) 2))
(command "_.REVERSE" (setq en (vlax-vla-object->ename (setq obj (vla-copy (vlax-ename->vla-object en))))) ""))
(vlax-curve-getStartPoint en)))
(or *pldiv2file-int*
(setq *pldiv2file-int* 500))
(not (initget 6))
(setq *pldiv2file-int* (cond ((getdist pt (strcat "\nSet interval <" (rtos *pldiv2file-int*)">: ")))
(*pldiv2file-int*)))
(setq dst 0.
par 0)
(setq file (open (strcat (getvar 'DWGPREFIX) (vl-string-right-trim ".dwg" (getvar 'DWGNAME)) ".csv") "a"))
(write-line (strcat "---- " (rtos (getvar "CDATE") 2 4) " ---------------") file)
)
(while (<= par (vlax-curve-getEndParam en))
(if (setq pt (vlax-curve-getPointAtDist en dst))
(write-line (strcat (rtos (car pt) 2) "," (rtos (cadr pt) 2) "," (rtos (last pt) 2)) file))
(cond ((equal par (vlax-curve-getEndParam en))
(setq par (1+ par)))
((or (> (vlax-curve-getParamAtDist en (+ dst *pldiv2file-int*)) (1+ par))
(not (vlax-curve-getParamAtDist en (+ dst *pldiv2file-int*))))
(setq par (1+ par)
dst (vlax-curve-getDistAtParam en par)))
(T
(setq dst (+ dst *pldiv2file-int*))))))
(*error* "end")
)