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,