I have based my script on this answer : How can I convert a Grease Pencil object to curve or mesh without operators?
And the script works well when only converting the gpencil object to curves. But when I try to run it before or after the rendering process with the modifications I added (to create new curves at each frames and delete the last ones to be replaced at the next frame).
I don't get what's wrong with my script (sorry if it seems obvious to you I'm still learning), how can I make it work ?
import bpy def main(): gpencil_object = bpy.data.objects["LineArt"] convert_gpencil_to_curve(gpencil_object) def new_convert_curve_object(collection, name): curve = bpy.data.curves.new(name=name, type="CURVE") curve.dimensions = "3D" convert_object = bpy.data.objects.new(name=name, object_data=curve) collection.objects.link(convert_object) return convert_object def convert_gpencil_to_curve(gpencil_object): gp_col = gpencil_object.users_collection gp = gpencil_object.data for layer in gp.layers: obj = new_convert_curve_object(gp_col, f"LineArt_curve") for frame in layer.frames: for stroke in frame.strokes: spline = obj.data.splines.new(type="POLY") spline.points.add(len(stroke.points) - 1) for i, point in enumerate(stroke.points): spline.points[i].co = [v for v in point.co] +  def delete_curve(): if "LineArt" in bpy.data.objects: bpy.data.objects["LineArt_curve"].select_set(True) bpy.ops.object.delete() bpy.app.handlers.render_pre(main) bpy.app.handlers.render_post(delete_curve)