I assume that the "parts" you talk about are walls, bars, doors, windows, roof elements etc.?
A graphics API has no concept of such objects. Yet, the engineer will want to manipulate objects at such logical level.
Therefore, the internal representation should match the level in which the user wants to manipulate the data, not the level in which a graphics API wants the data in order to draw it.
The abstraction and conversion does not gain any frame rate - in fact, it is slower than just drawing a list of triangles. However, a practical engineer will not use a program that forces him/her to manipulate raw drawing primitives in order to make design changes. Sure, AutoCAD (for example) does allow you to touch individual primitive lines, but this is not how an building architect primarily would use the software.
Engineering software is considerably different from freeform mesh modelers (such as Blender, Maya or 3DS Max), wherein the main mode of operation is to manipulate primitive meshes. But even in those programs, the internal representation of the mesh is much more complex than that which gets sent to the graphics API, mainly to enable complex modeling operations, texture mapping and remapping, and complex selection logic.