Found this function on russian forum, not tested,
see comments
Code:
; The intersection of line and plane
, -------------------------------------
; Arguments:
; P1, P2 - line points
; Ppl - any point in the plane
; WNorm - vector normal to the plane
; Returns: The intersection of line and plane, or nil
(defun 3d_inters_lnpl (P1 P2 Ppl WNorm / A B C D L M N Tpr V)
 (mapcar 'set '(L M N) (mapcar '- P2 P1)) ; line vector
 (mapcar 'set '(A B C) WNorm)
 (if (not (equal (setq V (+ (* A L) (* B M) (* C N))) 0.0 $fuzz));<-- change $fuzz to suit----------------------------------
  (progn
   (setq D (- (+ (* A (car Ppl)) (* B (cadr Ppl)) (* C (caddr Ppl))))
	 Tpr (- (/ (+ (* A (car P1)) (* B (cadr P1)) (* C (caddr P1)) D) V))
   )
   (list (+ (car P1) (* Tpr L)) (+ (cadr P1) (* Tpr M)) (+ (caddr P1) (* Tpr N)))
  )
 )
)
Regards,