This one rears its head on a regular basis and is worth covering here.
AutoCAD users use Elevation 0 as undefined ie 2D. But in some parts of the world near the oceans and in other areas, Elevation 0 is a real elevation. That is why in TBC we have the concept of undefined and real elevations. However when we import AutoCAD or Microstation files, where Elevation 0 is more often than not undefined elevation, we assume that it is in fact undefined, even though in TBC it will show as having elevation 0.
So what we do to help this are the following
If the line is a TBC object like an Alignment or a Linestring and it has Elevation 0 vs undefined, then we assume that it is really at elevation 0.
If the line is a CAD imported Object type and this includes Polylines drawn in TBC, if it has Elevation 0 then we treat it as undefined. If you change its elevation to eg 0.001’ then that is sufficient notice to TBC that this line should be treated as a 3D line and have an elevation of 0.001’
You can see this when you draw a polyline at elevation 0 and then make a surface out of it. The surface will not form. Change its elevation to 0.001 and it will form a surface directly. Now do the same with a linestring. You will find that if the linestring has elevation 0 it will form a surface. If the linestring has an elevation of undefined (?) then it will not form a surface.
So if you want to use a polyline at elevation 0 as a 3D line you have 2 choices.
Use the Convert to linestring command and that will make the lines all linestrings and then elevation 0 is valid
Change the elevations of polylines at elevation 0 to elevation 0.001 if you want to keep them as polylines and use them as 3D lines.
We did find a defect in the Project Cleanup command that shows up if you filter line vertices on polylines at elevation 0 they get changed to undefined elevation b the command. This also shows up in the Convert to Linestring Command (RPS Extended Version that has the filter Line Vertices functions built in also).