Hi @tburrellsaward
Incoming wall of text!
Unfortunately, no one button auto -retopo solution will (currently) replace a human for drawing certain types of very deliberate topology–such as the type of topology required for low poly hard surface of complex shapes.
The good news is, you can still get there with some work. Mind, if you don’t need precise low poly topology, and are just going to export out decimated mid to high poly geometry for a print project for instance, then resurfacing a mesh for decent sculpting in Zbrush is as simple as Dynameshing it.
You can try Zremeshing with detect edges like Zber suggested and see what kind of results you get, but you may have to go a bit farther.
Your mesh is actually in a good form to make this easier. It is a mostly faceted object with no curved surfaces. That means if it wasn’t for the awkward topology, you would be able to simply subdivide it with SMT off in the geometry palette for subdivision without any smoothing, so you wouldn’t have to worry about creases.
You also have a lot of cleanly defined planar surfaces. This will make assigning polygroups easier, which will be important for the next level.
If Zremesher still can’t get a good enough read on it with detect edges, you’ll want to move to apolygroup-focused process. Every distinct plane separated from another with a hard edge will need to be a separate poly group.
Try it first on the low poly mesh. Even though the topology sucks, the mesh does currently have edges where you need them, so you wouldnt want to discard that if you dont have to. See what results you can get with the Polygroup > Group by normals function. On a mesh that cleanly defined, it should work pretty well, and MAY assign polygroups every place you need them with the tolerance slider set at the right value. Even if it only gets close, its a low poly mesh, so you should be able to clean up any poly grouping manually withZmodeler.
If you cant get decent enough results with Polygroup by Normals, try Polygroupit instead. This will be more work, but offer much better control. If you cant get good auto assignments of polygroups with the low poly mesh, try Dynameshing it at high rez to preserve the crisp form, but give ZBrush more polygons to look at when evaluating the surface–this sometimes improves results.
Once you finally get polygroups assigned everywhere, try Zremeshing with the “Keep Groups” function active, and a high enough target polycount to give Zremesher enough polygons to work with comfortably. It should preserve the edges of the groups in most of those places, which are also where you need to place hard edges. If there are only minor flaws in the ZRemesh, consider just touching them up with ZModeler rather than falling into a trial and error trap with Zremesher.
At this point you should have a fairly low rez mesh with better topology for Zbrush sculpting, and cleanly defined polygoups along all the planes. But it will still soften when you subdivide it, unless you disable SMT, or add creases. If you’ve put in the work to define your polygroups, assigning creases to all the edges is as simple as Geometry > Crease > Crease Polygroup Borders.
Sorry for the info dump!