Create move edit Block and Keyframe inside Timeline
t = script.parentElement.mainAnimation
layer = script.parentElement.layers["Uniform"]
t.transport.position.set(5.5) #set the timeline position to 5.5 second
track,block = t.createBlock(layer) #create the block at the timeline position
block.length.set(10) #modify the block length
t = script.parentElement.mainAnimation
layer = script.parentElement.layers["Uniform"]
track,key = t.createKeyframe(layer.renderer.placement.rotation,26.0,True) #Create the keyframe at the second 26.0 with a automatic interpolation ( linear )
key.key.set(3.14159) #set key value, here in radian for the rotation
BlockMargin: Oil.Seconds(1)
layer: Oil.createObject("WeakPointer(Layer)")
t = script.parentElement.mainAnimation
layer = script.layer.get() #script.parentElement.layers["test"]
def getLastBlock(blocks): # helper function to find the last block
position = 0
for block in blocks:
if block.position.get() >= position:
lastBlock = block
position = block.position.get()
return lastBlock
for element, track in t.elementTracks.items(): #parsing of the timeline
elt = element.get()
if elt.isChildOf(layer): #finding the right element and
blocks = track.blocks
newBlock = blocks[0].clone()
lastOne = getLastBlock(blocks)
newBlock.position.set(lastOne.position.get()+lastOne.length.get() + script.BlockMargin.get())
blocks.append(newBlock)
BlockMargin: Oil.Seconds(1)
layer: Oil.createObject("WeakPointer(Layer)")
from random import random
t = script.parentElement.mainAnimation
layer = script.layer.get() #script.parentElement.layers["test"]
def getLastKey(keys): # helper function to find the last block
position = 0
for key in keys:
if key.position.get() >= position:
lastKey = key
position = key.position.get()
return lastKey
for object, track in t.parameterTracks.items():
parameter = object.get()
if parameter.isChildOf(layer): #finding the right element
print(f"Parameter {parameter.getFriendlyName()}")
f = track.function
newKey = f.keyframes[0].clone()
lastKey = getLastKey(f.keyframes)
newKey.position.set(lastKey.position.get() + script.BlockMargin.get())
newKey.key.set(random()) # setting the key value
f.keyframes.append(newKey)
layer: Oil.createObject("WeakPointer(Layer)")
t = script.parentElement.mainAnimation
layer = script.layer.get() #script.parentElement.layers["test"]
print(layer.label)
for element, track in t.elementTracks.items(): #parsing of the timeline
elt = element.get()
if elt.isChildOf(layer): #finding the right element to clear the track
track.blocks.clear()
for marker in t.timeMarkers:
track,newBlock = t.createBlock(layer)
newBlock.position.set(marker.position)
print("New Block Added")
Last topic update:07/08/2024