> 1. Extend line along Z-axis: Build a plane defined by the Z axis and the line I wish > to project.
> 2. Intersect with surface: Intersect the plane with the surface. Now I have the
> projection over the whole surface, but I just need to find the end points of the
> projected line.
> 3. Extend end points along Z-axis: Build two lines which are parallel to the Z
> axis and going through the end points of the original line.
> 4. Intersect with surface: Intersect these lines with the surface to get the
> projected-line-imagined-end-points (I can't intersect these lines with the projected
> line because of accuracy: I don't get any intersection points).
You can define not a section plane, but a section bar, by extruding your finite line segment along Z axis (make a prism). Thus you will obtain the exactly restricted projected line.
> 5. Project points on line: Project the projected-line-imagined-end-points on the
> projected line to get the real end points (the nearest projection).
> 6. Calculate normals: Get the parameters of these points on the surface (by
> projecting them on the surface), and cross D1U and D1V to find the normal at these
> points.
If you order to build pcurves in the section algorithm then you won't need to project points back to the surface, as the resulting edge will contain pcurve synchronized with 3d curve.