Here is a method for a plane to intersect a line:
Method IntersectsLine:TVec3(l:TLine)
Local v:TVec3=New TVec3
Local u#
u#=(-nx*l.x-ny*l.y-nz*l.z-d)/(-nx*(l.x-l.dx)-ny*(l.x-l.dy)-nz*(l.x-l.dz))
v.x=l.x+l.dx*u
v.y=l.y+l.dy*u
v.z=l.z+l.dz*u
Return v
EndMethod