I've also seen numerous errors like this:
Remove hidden lines? <No>:
bad argument type: lselsetp nil
Obviously an indication of poor programming.
More than just bad programming, bad data structure design! For 12 years I worked on another CAD system totally unrelated to any current system. We could easily "flatten" (your term) 3D data in any direction. We could flatten the z-coord to zero or any arbitrary number. We could also flatten about x and y. The reason was that all entities were defined as connected points. A polygon was n-connected dots. Every point had an x,y,z value.
One form of the scale command functioned as a point editor. The x,y,z value of a point could be changed with a single command. Moving a point moved everything connected to it. So a command like:
move nodes scale z 0 about 0 0 0
would make all z node values equal to zero, taking all entities with them. Substitute scale z 5 in the above command and the z coordinate becomes 5 instead of zero. Say your building was on a 45 degree angle and you wanted a projected ("squashed") elevation. You could take the accurate elevation and squeeze it with:
move nodes scale x .5 about 0 0 0 (or what ever percentage factor needed).
This command changes the x coordinate to be x/2, and leaves the y and z alone. Hence, a projected elevation.You could also take a 3D hiddenline elevation and flatten it on x or y to achieve the same goal.
Imagine a jagged line, like a Wall Street stock chart graph. A command like:
move nodes scale y 0 about 0 1 0 would turn it into a horizontal flatliner at y=1. Scale x 12 would turn it into a vertical line at x=12. A circle would become an ellipse.
I bring this up because way too many people never think critically about their CAD system and what it's features are, and what it might be missing. Imagine a snap to 0 0 0? Or a snap to a polygon centroid? How about polygon shadows that have area?
Needless to say, when we were finally forced to use the 800 pound gorilla CAD system (you know which one). we were shocked at how little power it had.
My favorite bit of bad programming: why is dimensioning a subprogram?