6
$\begingroup$

I want to delete all drivers on object in Blender 2.8. I am quite new to the scripting and the only code I have found is this:

import bpy ob = bpy.context.active_object drivers_data = ob.animation_data.drivers for dr in drivers_data: ob.driver_remove(dr.data_path, -1) 

But it doesn't work. I think there are some little changes needed for Blender 2.8 and later.

Thank you for any help.

EDIT:

After some tries I found out, this code actually works, but only on transform drivers, etc. I need this script to work on shape keys drivers. Basically, I need to delete all drivers (channels) like I would in the drivers editor.

In the end I figured this out! Here is the functioning code:

import bpy fcurves = bpy.data.shape_keys["Key"].animation_data.drivers for fc in fcurves: fcurves.remove(fcurves[0]) 
$\endgroup$
5
  • $\begingroup$ That code worked for me, why didn't it work for you? This is a request for specificity in your question. What do you mean by 'it doesn't work.' $\endgroup$ Commented Sep 7, 2020 at 21:48
  • $\begingroup$ @Ron Jensen So, it gives me this error in console: AttributeError: 'NoneType' object has no attribute 'drivers'. But my object has drivers, so I don't understand. $\endgroup$ Commented Sep 7, 2020 at 22:00
  • $\begingroup$ I get that error if my object doesn't have drivers. Make sure you object is the active object. What properties are the drivers on? $\endgroup$ Commented Sep 7, 2020 at 23:19
  • $\begingroup$ @Ron Jensen I was wrong as it works on simple transform drivers, but what I actually need is to delete drivers from shape keys as well. They are also called channels or Fcurves I think, but that's what I am struggling with now. $\endgroup$ Commented Sep 8, 2020 at 1:13
  • $\begingroup$ Can this solution be used in 2.79? I have looked all over but can't find anything. When I run your solution in Blender 2.79 it says 'NoneType' object has no attribute 'drivers'. Can someone please show how to modify this for Blender 2.79 ?? $\endgroup$ Commented Oct 31, 2020 at 21:52

1 Answer 1

2
$\begingroup$
import bpy selected = bpy.context.selected_objects for o in selected: od = o.animation_data.drivers.values() for d in od: o.driver_remove(d.data_path) 
$\endgroup$

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.