The new NodeBox forum is live! Everything from support.nodebox.net moved here: sign in with the same email to pick up your old posts. Something not working? Write to forum-support@nodebox.net.

NodeBox 3From the old forum

Python API?

2 replies Last reply

  1. Hello!

    I just discovered this wonderful program (N3). Thanks and congratulations!

    I'm familiar with Python programming, so I'm wondering what can be done with Python today. I see there's a python console available, but I'm not sure how I could point to an arbitrary script -- "import sys" and "import os" both fail. I also don't know what facilities are available from Python right now. I gather from other discussions that networks cannot be built programmatically, but that Python code can be used to create custom nodes. I don't know what the abilities of such a custom node could be, i.e., what the Python API is. Could it invoke other nodes? Could it invoke drawing primitives? How does the API relate to what could be done in N1 (which, alas, I cannot run because I'm on Windows)? Are there any examples?

    I'd be interested in hearing what your plans are for the Python API. Also, if there's a way to "vote up" the priority for working on the Python API or other related functionality, consider this message such a vote :-)

    Thanks again for your hard work!
    Mike

    Copy link
  2. hi mike,

    There is still some information missing on the website when it comes to working with your own code. For the moment NB3 can import python and clojure scripts. An integrated code editing tool (as in NB2) is at this time not implemented.

    The procedure as it is now:

    • Create a folder to store your python file.

    • In NodeBox, create a new document and store it inside this folder.
      This step is important because NodeBox won't allow you to import
      outside code when the document has not yet been stored. Also, because
      code dependencies are stored inside the .ndbx file in a relative way
      it's wise to have the ndbx file and python code files close to each
      other (e.g. in the same folder).

    • Write some code and put it inside a python file (mycode.py). NodeBox
      relates every node to a specific function and it calls its parameters
      one on one. The names of the parameters are not important but their
      order is. For example adding 3 numbers:
      def add(a, b, c): return a + b + c

    • Import the code inside NodeBox:

      • Go to File > Code Libraries (a new dialog will show up).
      • Press the + button and choose Python.
      • In the file dialog select mycode.py.
      • Close the dialog.
    • You can now create a node based on this code:

      • Inside NodeBox, open the node selection dialog and add a new
        "root" node (the first one to show up in the dialog).
      • When added, this node is named _root1, but feel free to rename it.
      • With this node selected, press the Metadata button on top of the
        ports panel. A new editor window will show up.
      • In the left panel, click on "settings". This will bring up the
        node metadata.
      • In the field "Function" write down "mycode/add".
        • "mycode" iss the name of the python file we created (here,
          we'll also call it the function's namespace).
        • "add" is the name of the function we wrote.
      • We have a new node but we still have to map the function's
        parameters to node ports (parameters):
        • Press the + button in the bottom left part of the metadata panel.
        • An "Add new port" dialog shows up. Give your port a name "a"
          and a type "float".
        • Optionally, more parameter tweaking can be done at this point.
        • Repeat this process for the "b" and "c" parameters.
        • Press "Ok" to apply your changes.
      • That's it, the node is ready to use!

    Hope this helps. We'll put this information en some examples on the website in the near
    future as well.

    Copy link

Know something that helps?

Sign in with your email address to reply. No password needed.

Sign in to reply