3
$\begingroup$

Summary - Background

  • Created a text drivers.py file in Gedit
  • Opened drivers.py in Blender Text Editor
  • Selected [x] Register

Summary - Issue

  • The scripts are available to my scaling drivers

    • No problem there
  • When I try to run a test value in the python console I get the error

    • NameError: name 'driver_Combo' is not defined

Summary - Question

Do I need to do something to make the (external) scripts available in the Python Console ?

Full Details

Just recently started learning Blender.

I am using driver scripted expressions for [ Transform ] [ Scale ] of objects.

I was creating (and testing) scripts in the Python Console:

  • all good with achieving my driver scaling
  • scripts created in Python Console were not being saved with my .blend

Now I have moved them into the text editor:

  • Created a text drivers.py file in Gedit
  • Opened drivers.py in Blender Text Editor
  • Selected [x] Register

This is the content of drivers.py

import bpy  
from math import degrees, radians  
from math import pi  
from math import sin  

# def function 
def driver_Combo(time):  
   radius = max(abs(sin(radians(time))),abs(sin(radians(time+90))))  
   if time > 360:  
      radius = 0  
   return radius  

# add function to driver_namespace 
bpy.app.driver_namespace['driver_Combo'] = driver_Combo

I'd like to have the scripts available in the Python Console to test values.

How do I make the scripts available ?

Thanks.

$\endgroup$
  • 1
    $\begingroup$ Try from drivers import driver_Combo in the py console. $\endgroup$ – batFINGER Jan 14 '17 at 12:33
  • $\begingroup$ 100%. Make that an answer and I'll accept your solution. Thank you very much. $\endgroup$ – TaoRich Jan 14 '17 at 12:40
  • $\begingroup$ A beautiful example of: "Blender: You'll get it when you get it." Going from W.T.F. ?? annoyance, lots of searching that offers no help, mild-headache to Lights On - Ah Ha ! $\endgroup$ – TaoRich Jan 14 '17 at 12:45
  • $\begingroup$ Yes it's like that. $\endgroup$ – batFINGER Jan 14 '17 at 12:53
  • 1
    $\begingroup$ This may interest you. $\endgroup$ – sambler Jan 14 '17 at 18:34
1
$\begingroup$

All good, you have the file "drivers.py" (correctly with the py extension) registered already you can simply

import drivers
drivers.driver_Combo(..

or

from drivers import driver_Combo

in the py console

$\endgroup$
  • $\begingroup$ Thanks. For any other users who arrive here searching for the same issue, check out this answer for a great way to simply run a bunch of import or other statements in a startup file - for example - OnLoad.py: 2 or 3 line text-block blender.stackexchange.com/a/51078/34249 $\endgroup$ – TaoRich Jan 18 '17 at 15:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.