Hi VVA,
Your code is interesting. I don't understand all of it yet, but most of it I think. I've run your test functions and I see the different results in terms of point lists.
A thought for your consideration. I don't think it's quite accurate to say TraceObject as is "works incorrectly" given an object with an odd normal. The two point list it returns with the spline in your example file is correct when the drawing is in WCS top view. In that view the spline looks like a diagonal line and the two points returned are at the ends of the spline.
So I think a more accurate statement would be it doesn't work the way you would prefer.
I'm going to try the 3d_angw1w2 function within the current code. I'll let you know what I find.
Thanks for your comments.
Regards