Cartan Node Library 1.0

john's Avatar


08 Aug, 2019 04:13 AM

UPDATE: Node Library 2.0 is now available including everything below plus 17 additional nodes. See

After months of labor I am pleased to publish my node library, version 1.0. These 57 nodes are free for use without restriction:

  • arccos Given value between -1 and 1 returns arccosine in radians or degrees
  • area Returns area of a closed shape
  • arrow Draws an arrow with many style options
  • attractor Computes minimum distance and angle from points to a shape
  • average Given a list of numbers returns mean, median, mode(s), or mid-range
  • balloons Draws a bunch of balloons, colored randomly if no colors are supplied
  • clean Removes duplicate consecutive points in a path - fixes some artifacts in PNG exports
  • clip Clips to boundary restoring fill and stroke colorization
  • clockwise Returns true if points in a path are in clockwise order
  • colors Returns a range of colors
  • concat_list Concatenates a list of strings into a single string - REQUIRES CONCAT_LIST.PY
  • contours Separates path into distinct contours - REQUIRES CONTOURS.PY
  • convert_date Converts dates using Java SimpleDateFormat; REQUIRES DATEFORMAT.CLJ
  • diff_list Given lists A and B, returns items in A but not B, B but not A, or in both
  • diff_table Given tables A and B, returns rows with items in A but not B, B but not A, or both A and B
  • distribution Makes distribution table from a source table, key, and range of possible values
  • donut Create a donut, pie, or stacked bar chart
  • draw_table Draw a table similar to the data view of the input table
  • drop_last Take all but the last item of a list
  • even_sample Distribute points evenly across a path, curves only, or joints only
  • evolve Gradually change location, size, and color of a shape based on a reference object or path
  • explode Explodes path into individual lines and curves, REQUIRES MAKE_CURVE.PY
  • fade Adjust alpha (0 to 100) of shapes or geometries
  • find_item Returns all indices where target occurs in a source list
  • find_radius Finds radius of a polygon with a given side length
  • find_substr Returns all indices of target substring within source string
  • fit_curve Finds a curve that passes through all points in a path - REQUIRES MAKE_CURVE.PY
  • fragments Returns shapes arising from intersections in a group of overlapping shapes - REQUIRES CONTOURS.PY
  • grid_plus Create a grid of points sized by cell width and height with options for a limit and different orders
  • hexgrid Makes hexagonal grid
  • indices Returns a list of indices to enumerate items in the input list
  • intersect Finds intersections between a line and a path; REQUIRES MAKE_CURVE.PY and CONTOURS.PY
  • intrsct_curve Finds intersections between a line and a cubic bezier curve
  • intrsct_line Finds intersection between two lines
  • is_closed Returns true if path is closed; paths with multiple contours treated as closed
  • join Join a list of paths into a single seamless path
  • join_contours Join contours into a single path - REQUIRES CONTOURS.PY
  • list_files Given folder path returns top level files in that folder - REQUIRES LIST_DIR.PY
  • list_folders Given folder path returns top level subfolders - REQUIRES LIST_DIR.PY
  • make_curve Draws quadratic curve with two control points - REQUIRES MAKE_CURVE.PY
  • merge_tables Merges two tables
  • outer_points Returns the points which form a boundary enclosing the rest - REQUIRES CONVEX_HULL.PY
  • rel_change Given start point A and end point B returns B-A, the point needed to translate A to B
  • rev_dir Reverse direction of a complex path - REQUIRES MAKE_CURVE.PY
  • secs Returns clock time in seconds since last call; use trigger to measure elapsed time - REQUIRES TIME.PY
  • shutter Creates a dynamic camera shutter
  • spiral Draws different types of spirals - REQUIRES MAKE_CURVE.PY
  • sub_path Returns a portion of a complex path between two positions (0 to 100) - REQUIRES MAKE_CURVE.PY
  • tangent Returns tangent angle along a curve or path (0 to 100) - REQUIRES CONTOURS.PY AND MAKE_CURVE.PY
  • time Returns local date, time, and day as list - REQUIRES TIME.PY
  • trace Traces outline of a closed path - REQUIRES MAKE_CURVE.PY
  • treemap Given list of values and bounding rect, returns a treemap at position of rect - REQUIRES TREEMAP.PY
  • true_arc Creates an directionally correct arc path for text to follow
  • true_spoke Corrects text direction for text on a spoke path
  • waveform Create four types of waves - REQUIRES MAKE_CURVE.PY
  • wind_letters Winds letters around a spiral
  • write_table When triggered writes table to csv file and returns "file saved" - REQUIRES WRITE_TABLE.PY

To use these nodes, just launch the file, copy the node you want, and paste it into your project. Here are some tips:

  • Nodes are listed in alphabetical order. When Nodebox opens maximize the window and collapse the parameter pane to see all the nodes at once.
  • Some nodes require Python or Clojure modules. Those that do will say which module(s) are needed in their comment (e.g. "REQUIRES MAKE_CURVE.PY")
  • If your node needs a module drag a copy of it to your project folder and add it to your project using File/Code Libraries...
  • Every node comes with a demo. Demo nodes appear in the network to the right of the node block. Double click the demo node to render it; Edit Children to see the demo subnetwork.
  • If you render the combine node at the bottom of the demo network you will see a poster showing illustrations of each node. (Poster takes about 15 seconds to render.). A PNG of the poster is included in the library folder.
  • The library folder also includes a CSV file with the nodes, types, and descriptions
  • Some nodes do useful things which are difficult to do in NodeBox. Others are fairly simple but are included because I use them all the time. Using clearly-named subnetworks makes your project easier to follow and maintain.
  • The library includes nine code modules. Feel free to open these in a text editor to see how they work. Studying these examples should help you figure out how to write your own code extensions.

The size and variety of this library may be overwhelming at first. I encourage you to study the poster to get a feel for what each node does. Then just try them out one at a time as needed. I often leave the library open in a separate window while working so I can easily copy and paste what I need.

If you find any of these nodes useful, please let me know. If you find bugs, please report them; I will post updates to the library in this thread. And please let me know if you have suggestions for how any of these nodes could be improved or requests for additional nodes.

Go forth and multiply!


Reply to this discussion

Internal reply

Formatting help / Preview (switch to plain text) No formatting (switch to Markdown)

Attaching KB article:


Already uploaded files

  • node_library_poster.png 1.42 MB
  • Node_Library_Screenshot.png 754 KB
  • 1.77 MB

Attached Files

You can attach files up to 10MB

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.

Keyboard shortcuts


? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac

Recent Discussions

08 Dec, 2023 04:54 PM
08 Dec, 2023 03:57 AM
07 Dec, 2023 10:01 AM
07 Dec, 2023 05:38 AM
04 Dec, 2023 10:14 PM


04 Dec, 2023 11:38 AM
29 Nov, 2023 05:30 AM
28 Nov, 2023 12:38 AM
27 Nov, 2023 04:40 AM
26 Nov, 2023 10:02 AM
22 Nov, 2023 09:33 AM