Rotate selected polygons
pim last edited by pim
How can I rotate just the selected polygons (or points) of an object?
I solved it for points, so polygons should be possible too.
import c4d from c4d import gui def rot_points(obj, new_axis): mat = ~new_axis * obj.GetMl() if obj.CheckType(c4d.Opoint): points = obj.GetAllPoints() bs = op.GetPointS() sel = bs.GetAll(op.GetPointCount()) for index, selected in enumerate(sel): if not selected: pass else: points[index] = points[index] * mat obj.SetAllPoints(points) obj.Message(c4d.MSG_UPDATE) return # Main function def main() mat = op.GetMl() * c4d.utils.MatrixRotX(c4d.utils.Rad(45)) rot_points(op, mat) c4d.EventAdd() # Execute main() if __name__=='__main__': main()
although you marked this already as solved, I'd just like to clarify one point.
There is no such thing as rotating polygons. Polygons are just made up of points (or rather point indexes), with the edges being implicitly defined by the order of points in a CPolygon. So rotating a polygon boils down to rotating the points involved in this polygon.
pim last edited by
Ok, so I have to rotate the points to rotate a polygon.
I thought so. That is why I assumed that when I can rotate points, I can rotate polygons.