Hm,
I have no clue about the whole rigging stuff, which might be a source of confusion for me, and I also am a bit confused about what you are referring to with point order, since manipulating the matrix of an object does not change anything about the order of its points. But this might be insightful to you:
import c4d
def main():
"""
"""
# This function requires you to select an editable polygon object.
if not isinstance(op, c4d.PolygonObject):
raise TypeError("Blah")
# This is probably what you meant with flipping the x-axis, right? And
# with point order you mean the point order in the polygons, i.e. the
# fact the textures are not being mirrored, right ?
clone = op.GetClone(c4d.COPYFLAGS_NONE)
# Invert the x-component of the frame of the object.
mg = clone.GetMg()
mg.v1 *= -1
clone.SetMg(mg)
clone.SetName("clone_frame_manipulation")
doc.InsertObject(clone)
# To do what you want, you could do this instead. You could also write
# the UVWs, manipulate the frame (matrix) of the object and then
# manipulate the polygons, there are many ways to do this. I went for
# manipulating the points and polygons, because UVWs are kind of a
# hassle to access, and matrices with negative scalings can cause all
# sorts of problems.
clone = op.GetClone(c4d.COPYFLAGS_NONE)
# First we reflect each point individually and write that data back.
transform = c4d.Matrix()
transform.v1 *= -1
points = [p * transform for p in clone.GetAllPoints()]
clone.SetAllPoints(points)
# But now we have the problem that all our normals have been inverted. We
# could use SendModellingCommand to rectify this, or we could just do
# it manually like I have done it here.
for index, cpoly in enumerate(clone.GetAllPolygons()):
new_poly = (c4d.CPolygon(cpoly.c, cpoly.b, cpoly.a, cpoly.a)
if cpoly.IsTriangle() else
c4d.CPolygon(cpoly.d, cpoly.c, cpoly.b, cpoly.a))
clone.SetPolygon(index, new_poly)
clone.Message(c4d.MSG_UPDATE)
clone.SetName("clone_point_manipulation")
doc.InsertObject(clone)
c4d.EventAdd()
# I hope this helps.
if __name__ == "__main__":
main()
Cheers,
zipit