Need to mirror meshs over origin but not change its scale?

I’m making a robot model that to use in an application I’m making. For this, I need the local Z axis pointing down the leg of the robot without any modifiers such as negative scale. I imported this from a CAD model so the origins it picked are not optimal.

If I do set a -1 scale to the Z axis, it’s Z direction does point the way I want it to but I’m not sure how to “apply” the scale so that it instead sets the scale back to 1 but keeps the arrow pointing in the same direction.

What I need is to leave the mesh vertices stay where they are, but flip the origin so its pointing in the other direction. This really should change the rotation, but I’m not sure how to manually invert a quaternion. I tried switching to XYZ and inverting it but that causes all sorts of weird rotation.

Any ideas?

I’ve found a complicated way to do it. Interested still if theres an easier way as I often need to do this kind of thing.

What I did was duplicate the object, delete all of its vertices, using the rotate tool rotate on the local X axis -180 degrees, then join the meshes back together with the correct rotation object being selected 2nd.

This is annoying though as to join the meshes back together, there has to be at least 1 vertices still that after joining I have to come back and delete.

Must be a simpler way?

You don’t need any mirror for that operation.
Just a simple rotation and a precise placement.
Rotate_copy

better use ALT+D for your duplicate so you ll be able to edit all objects at the same time. ( as instance)

The problem is that you want to use another orientation as blender has (right hand vs left hand) and you don’t want the Z scale to be -1. I think because this is a ball bearing then your X and Y can be swapped ? So you have these choices (using Face Orientation overlay to show corrrect normals):

Maybe take a look at this:

You could use an empty as second origin but i cant figure out a parenting that works with both “origins”.