import bpy from mathutils import * from math import * import abc3d.butils v = 0 goal = 5.0 step = 0.1 speed = 1.0 C = bpy.context obj = C.scene.objects['Cube'] curve = C.scene.objects['BézierCurve'] m = curve.matrix def fun(distance): obj.location = m @ abc3d.butils.calc_point_on_bezier_curve(curve, distance, output_tangent=True) print(f"executed {distance}") while v < goal: bpy.app.timers.register(lambda: fun(v), first_interval=(v * speed)) v += step