# Object Axis modification in python

• THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 09/11/2012 at 13:06, xxxxxxxx wrote:

It sounds like something simple, but I'm not able to do it in Python.

I have e.g. a plane I want to rotate, not from the center, but from a specific side.
So, I need to change the object axis.

But how?

• THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 10/11/2012 at 14:30, xxxxxxxx wrote:

I think you can do it by change the position of the object and all his points to keep their global position.

Here is a little code that I did one day for it :

``````

import c4d
from c4d import Vector, Matrix

def axe(objet, matrice, relatif = True) :
if relatif : m_obj = objet.GetMl()
else : m_obj = objet.GetMg()

m = ~matrice * m_obj
nbpts = objet.GetPointCount()
points = objet.GetAllPoints()

for i in xrange(nbpts) :
points[i] = m.Mul(points[i])

objet.SetAllPoints(points)

if relatif : objet.SetMl(matrice)
else : objet.SetMg(matrice)

def main() :
if not op : return
if op.GetType() != c4d.Opolygon : return

doc.StartUndo()

v_1    = Vector(0, 1, 0)
v_2    = Vector(0, 0, 1)
v_3    = Vector(1, 0, 0)
dep    = Vector(0, 50, 0)
mat    = Matrix(dep, v_1, v_2, v_3) # Nouvelle matrice

axe(op, mat)

op.Message(c4d.MSG_UPDATE)
doc.EndUndo()

if __name__=='__main__':
main()
``````
``````The variable mat is the new matrix who affect op.
``````

• THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 11/11/2012 at 04:33, xxxxxxxx wrote:

Amazing, wonderful clever solution!
Thanks very much.