Duplicate of Destination X Rail spline of a MoSpli
-
On 26/08/2015 at 11:18, xxxxxxxx wrote:
Hi,
As an exercise I am trying to duplicate the Destination X Rail spline of a MoSpline, after changing its width.
So far I wasn't able to create a duplicate of the spline with the new offset/width, I just get the original one as if it is ignoring it is being modified by the MoSpline.
Any ideas with way to go? I was looking into GetCache(), but I wanted to ask first in case is something way more simpler.
Thanks in advance!
import c4d
from c4d import gui
#Welcome to the world of Pythondef main() :
#Create clone of original Spline
oSp = op.GetClone()
oSp.SetName("original")
#Create 2nd Spline
sSp = oSp.GetClone()
sSp.SetName("rail X")
#Create MoSpline
mS = c4d.BaseObject(440000054)#Assign splines and width
mS[c4d.MGMOSPLINEOBJECT_MODE] = 1
mS[c4d.MGMOSPLINEOBJECT_SOURCE_SPLINE] = oSp
mS[c4d.MGMOSPLINEOBJECT_DEST_RAILX] = sSp
mS[c4d.MGMOSPLINEOBJECT_SPLINE_WIDTH] = 100
#Add to Scene
doc.InsertObject(mS)
doc.InsertObject(oSp)
doc.InsertObject(sSp)
#Clone new Spline from rail
rSp =sSp.GetClone()
rSp.SetName("New spline from rail X")
doc.InsertObject(rSp)
#mS.Remove()
c4d.EventAdd()if __name__=='__main__':
main() -
On 27/08/2015 at 02:16, xxxxxxxx wrote:
Hello,
the MoSpline object is a generator. This means it will create new geometry or in this case, it will change the points of the linked splines. But a generator won't do anything just by standing there. A generator is only executed when the whole scene is evaluated.
So when you create the MoSpline in memory it won't do anything until it is part of a document and that document is evaluated.
To evaluate the document you can call ExecutePasses(). As it turns out, one must call ExecutePasses() twice to execute the MoSpline object completely.
Best wishes,
Sebastian -
On 27/08/2015 at 10:08, xxxxxxxx wrote:
Thanks, Sebastian. It worked perfectly!