Ok.. this should do the trick.
(vl-load-com)
(defun c:ListPlineInters ( / *error* f LM:intersections s i o1 o2 j l)
(defun *error* (errmsg)
(if (not (wcmatch errmsg "Function cancelled,quit / exit abort,console break,end"))
(princ (strcat "\nError: " errmsg)))
(if f (close f))
(princ))
;; Intersections - Lee Mac
;; Returns a list of all points of intersection between two objects
;; for the given intersection mode.
;; ob1,ob2 - [vla] VLA-Objects
;; mod - [int] acextendoption enum of intersectwith method
(defun LM:intersections ( ob1 ob2 mod / lst rtn )
(if (and (vlax-method-applicable-p ob1 'intersectwith)
(vlax-method-applicable-p ob2 'intersectwith)
(setq lst (vlax-invoke ob1 'intersectwith ob2 mod)))
(repeat (/ (length lst) 3)
(setq rtn (cons (list (car lst) (cadr lst) (caddr lst)) rtn)
lst (cdddr lst))))
(reverse rtn))
; -------------------------------------
(if (setq s (ssget '((0 . "LWPOLYLINE,LINE"))))
(repeat (setq i (sslength s))
(setq o1 (vlax-ename->vla-object (ssname s (setq i (1- i)))))
(repeat (setq j (sslength s))
(setq o2 (vlax-ename->vla-object (ssname s (setq j (1- j)))))
(if (and (not (equal o1 o2))
(setq l (LM:intersections o1 o2 acextendnone))
(or f
(and (setq f (open (strcat (getvar 'DWGPREFIX) "ListPlineInters.csv") "w"))
(write-line (write-line "Layer1;Dist1;Layer2;Dist2") f)))
)
(foreach x l
(write-line (write-line (strcat (vla-get-layer o1) ";" (rtos (vlax-curve-getdistatpoint o1 x) 2 1) ";" (vla-get-layer o2) ";" (rtos (vlax-curve-getdistatpoint o2 x) 2 1))) f))))))
(*error* "end")
)