How can I rotate just the selected polygons (or points) of an object?
Edit:
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()