Driver Update dependencies via script

(bobr.animation) #1

hello , I would like to update the dependencies via script, but i can’t find the path to access this command , anyone knows what’s the string to update the dependencies via python? thank you very much

(Michael Glen Montague) #2

Looking at the source code, the button appears to be a direct function rather than a python operator:

but = uiDefIconTextBut(block, UI_BTYPE_BUT, B_IPO_DEPCHANGE, 
    ICON_FILE_REFRESH, IFACE_("Update Dependencies"),
    0, 0, 10 * UI_UNIT_X, UI_UNIT_Y,
    NULL, 0.0, 0.0, 0, 0,
    TIP_("Force updates of dependencies"));
UI_but_func_set(but, driver_update_flags_cb, fcu, NULL);

The way I update a driver in my add-on is by adding and removing a space on the driver’s expression attribute. As far as I could tell, it acts the same way:

driver.expression += " "
driver.expression = driver.expression[:-1]

(bobr.animation) #3

thank you so much for the answer, so you are telling me that it might be possible to add a button that does it automatically, running this little script?

(Michael Glen Montague) #4

If you’re referring to the first block of code then no, that one I just pasted from Blender’s source C code to expose how the Update Dependencies button isn’t related to the Python side of Blender, which is why there’s no path to call it from a Python script.

As far as Python goes, in order to create a UI button with custom code you have to first create and register a new Operator, which is what the second block of code becomes part of. The built-in text editor has templates that you can view to see how it’s done.

(bobr.animation) #5

yes, i know that the second part is not the complete code, but it’s basically the core part that can be implemented in other scripts! thank you again for the clarification, by the way!