Mirror simply creates the same entity with a negative normal, hince the 0,0,-1 scale. (Normal: the top of a piece of paper, Negative Normal: the bottom of that same piece of paper)
you would have to change the scale, rotate, move and copy the object piece by piece to avoid negative normals. Not a prefered process, so live with it. IF negative normals get in your way, then you will have to work around 'mirror'.
I think you can say there is a 2d mirror and a 3d mirror.
A 2d mirror involves a redrawing of the piece rather than flipping it's normal. I use the plane method with no problem
Cs = ed.CurrentUserCoordinateSystem.CoordinateSystem3d;
Pn = new Plane(Cs.Origin, Cs.Zaxis);
Vector3d V = Cs.Xaxis;
Plane P = new Plane(M1, V);
transMat = Matrix3d.Mirroring(P)
M1 is a user picked point, part of a drawjig. I found the way to make the jig work is to get the user to pick a point, mirror the object or objects using a plane with origin M1 and vector being the ucs x-axis. Then you rotate it about the m1 point using (90deg- Ang)*2. This, like cad doesn't mess with the normal, for that matter a block having a xscale of -1 doesnt mean the normal is going to minus at all.
Bryco, I hate to ask, but I've been struggling with mirroring objects. My intent is to mirror everything in modelspace with the exception of xrefs. I'd prefer to do this at the database level, but right now, I'd settle for just about any solution, except interop (i guess I shouldn't be too picky, huh. I already know how to handle the interop approach).
Do you have anything in the way of good example you wouldn't mind sharing?