@buddybud: I understand that this might be needed for flipping/mirroring the model (as it inverts the drawing order of triangles, effectively making them "backfaces"), but is it needed for rotating models too? I doubt so. And yes, I need a more detailed description, I have never tried editing these ones.
@sithlrd98: Making this isn't simple, it requires implementing another major feature, ie displaying the model. Even if this is finally done, I'm not sure if the library allows selecting the model. Take a look in both the reader's and DatGen's S3D View panes, they are identical aren't they? This is beacuse they both use the same library. And none allows selecting anything in the preview pane. And moving the model manually (dragging?) isn't actaully accurate, ie it would be almost centered, but not "mathematically". This is waht we are actually trying to define here (see also the reply to RippleJet below). Not to mention that the program has a different philosophy, ie select the model(s) and apply an operation in "batch mode" - unlike the reader, which works on a per-object basis. Btw do you think this operation should be allowed to be applied to more than one (selected) models? It's something quite rare, I think, and somewhat risky to my opinion.
@RippleJet: This is basically the algorithm I had proposed above, based on the X and Y (Z in reader) coordinates' min and max values, but only examining the vertices at ground (or lowest) level, ie the base. The problem is that it doesn't cover all cases. As an example, take a look at my last upload, the Rural Rail Stations Pack. The small station (IIDs 0x0004####) has a sort of pavement at the front (all "ground-level" vertices are at Z=0.05, a suggestion by jestarr to eliminate the "jaggies" - but a "clever" algorithm would detect this anyway). As a result, the algorithm would not regard it as "centered", as this causes the model to be not symmetrical. Any object protruding off near the base can cause the algorithm to work not as intented. Don't want to avoid doing it, just trying to find a good solution, which I'm afraid is rather not possible.
Moving the model is really easy to implement. It's basically very similar to scaling the model, as they both operate on the vertices alone. The only differences are the parameters dialog, and the modifications applied. But everyhting else (like applying the operation to the selected models, changing vertex coordinates only etc) is identical. That is the code is largely a copy-and-paste (plus some modifications) of the scaling operation. Consequently, this will be the first to be implemented after V1.00 is released. The other ones are more complicated, not so much actually, but quite different, and thus need more work.