On 22/06/2015 at 03:59, xxxxxxxx wrote:
Hello,
I would like to set axis to center of an object. And as I will use it in xpresso-python node, it should only fire for once. Position will be 0,0,0. I tried script below, please help.
import c4d
from c4d import Vector as v
def setAxis(obj) :
size = obj.GetRad()
position = obj.GetMp() + obj.GetAbsPos()
if obj is None or not obj.CheckType(c4d.Opoint) : return False
oldm = obj.GetMg()
points = obj.GetAllPoints()
pcount = obj.GetPointCount()
doc.StartUndo()
doc.AddUndo(c4d.UNDOTYPE_CHANGE, obj)
obj.SetAbsRot(v(0))
obj.SetAbsPos(v(0))
obj.Message(c4d.MSG_UPDATE)
newm = obj.GetMg()
newm.off = position-size/2
newm.v1 = newm.v1.GetNormalized()
newm.v2 = newm.v2.GetNormalized()
newm.v3 = newm.v3.GetNormalized()
for p in xrange(pcount) :
obj.SetPoint(p,newm*oldm*points
)
c4d.EventAdd()
obj.Message(c4d.MSG_UPDATE)
c4d.EventAdd()
doc.EndUndo()
def main() :
global Source
if Source.CheckType(c4d.Opoint) :
setAxis(Source)