Cartan Node Library 3.6

john's Avatar

john

21 Mar, 2025 09:46 AM

Cartan Node Library 3.6

Attached is the latest rev of my Cartan Node Library. This file was built using over 627,000 nodes and over 778,000 connections, surely making it the largest Nodebox network on earth!

Version 3.6 includes 185 library nodes. I added 18 new nodes and improved another 13 existing nodes. All nodes are free for use with no restrictions.

To use: with your current project open use File/Open Recent to open node library 3-6.ndbx in another window. Then just copy/paste the desired node from the library into your project. A few of the nodes also require adding a code library module (included).

The top section contains all 185 nodes arranged under 10 categories. The bottom section contains 185 demos. Some demos contain extra bonus nodes. TIP: if you find yourself usually only needing the nodes themselves, make a copy of the library and then delete the lower section of demos and save that as "fast library 3.6"; it will open faster.

WHAT'S NEW

Organization

  • I split the sprawling geometry section into two: Geometry and a new section: Alteration. Geometry contains nodes that make something new from scratch (arrow, curve, gear, etc.). Alteration contains nodes that alter existing stuff (adjust_point, clip, pixelate, etc.).
  • I renamed the "Change" category to "Animation". These are nodes useful in making animations. (Change sounded too much like Alteration).
  • I moved the gradient_L and gradient_R to the Color section.

New Nodes

Improvements

  • draw_table. Now handles subtables. Fixed bug that interpreted outline numbers (e.g. 0.2.1) as numeric.
  • gradient_L. Updated to include improved is_closed node.
  • gradient_R. Updated to include improved is_closed node.
  • inscribe. Installed an internal accuracy control and calibrated it to make node run a little faster. Added change center option (tries a different center point, sometimes better for inscribed text or certain container shapes).
  • intrsct_path. Fixed bug with vertical non-extended lines.
  • is_closed. Fixed a very obscure bug.
  • kern. Added ability to handle line breaks and control vertical leading.
  • orderings. Now 1 to 7 instead of 3 to 8. Faster.
  • scale_true. Handles connected set of points even if uncolorized.
  • sub_path. Closed paths where A>B now wrap around. A=B now resets starting point.
  • symbol. Fixed a problem with spade (compound added an extra empty contour).
  • text_svg. Added ability to handle line breaks and control vertical leading.
  • true_center. Now returns centroid for ordinary shapes (other than triangles, stars, etc.)

Deprecated Nodes

  • pair_contour replaced with redo_contour. Still available inside demo for redo_contour.

A PDF of the library poster showing all the nodes is attached below. Feel free to print it out and hang it over your desk!

As always, please reply to this note and let me know that you saw it. This helps me know if anyone is using this library. If you find any issues with any of these nodes, or have suggestions for improvements or new nodes, PLEASE let me know. I hope you all have as much fun using this library as I've had expanding it.

Go forth and create!

John

  1. 1 Posted by lastvector on 22 Mar, 2025 08:44 AM

    lastvector's Avatar

    John, I just have to come in, to thank you so much for your generosity
    and hard work. I really appreciate it.

    Have a nice day
    gottfried

  2. Support Staff 2 Posted by john on 24 Mar, 2025 02:56 AM

    john's Avatar

    Gottfried,

    Thank you. Not just for your kind words, but for simply confirming that the forum software is still working. When I post things and no one responds I start to wonder if the microphone is even on.

    John

  3. 3 Posted by lastvector on 24 Mar, 2025 08:39 AM

    lastvector's Avatar

    John, This is what life on an outpost seems to be like. :)

    But don't worry, at least for me, i take a look from time to time.
    And I think we all appreciate your contributions.

    I also occasionally point out Nodebox as a useful vector graphics tool.
    Nodebox has been one of my standard vector graphics tools ever since
    I started using it, and I wouldn't want to be without it.

    As I post in other forums too and also create tutorials from time to time,
    I know the feeling of feeling like you're communicating into a void. But I
    don't worry too much about it; the Univers is big and things will find their way.
    My part is to put them in space and let them float.

    gottfried

  4. 4 Posted by florisdejonge on 24 Mar, 2025 07:15 PM

    florisdejonge's Avatar

    Hi John, Thank you for providing another update of the library. I was still using the 3.3 and only recently started using the 3.5. Apparently I skipped the 3.4, there's so much to keep up. But anyway, I love all the improvements. Especially the color-nodes really add to making complete graphic designs in Nodebox.

    Floris

  5. Support Staff 5 Posted by john on 24 Mar, 2025 09:21 PM

    john's Avatar

    Thanks, Floris.

    I am aware that there are more opportunities to support the Nodebox plotting community. If you have any suggestions for even more nodes, please let me know!

    John

  6. 6 Posted by florisdejonge on 12 Apr, 2025 08:33 AM

    florisdejonge's Avatar

    Some notes regarding some nodes:

    • the mask node: would it be an improvement if it would retain the colorization of the input (just like the clip node)?
    • the text_svg node: using the Relief font for penplotting it occured to me there is no pen lift between the dots of the 'i' and 'j', therefore making a continuous line. Might there be something with the grouping of these specific paths?
  7. Support Staff 7 Posted by john on 14 Apr, 2025 10:55 PM

    john's Avatar

    Floris,

    Your first wish is granted! http://support.nodebox.net/discussions/show-your-work/919-improveme...

    As for the Relief font, when I try it I do get a slight separation of the dots for both i and j. Relief draws these dots as straight lines with a slight but definite separation. Of course I'm not plotting the output, but I did check and there are definitely two separate contours in both letters. Is is possible that the pen does lift but the gap is so small that it's hard to notice?

    I suppose it would be possible to modify the Relief font. There are several other characters (e.g. the exclamation point) that have a similar issue. You would have to decide whether to keep the short line segment as the style for dots and just increase the gap, or change the dot style altogether, maybe use diamonds like the Hershy font. We would need to change the name of the font as well.

    What do you thinks?

    John

  8. 8 Posted by Jussi Jokinen on 19 Apr, 2025 07:17 PM

    Jussi Jokinen's Avatar

    627,000 nodes. That's insane :)
    Thank you again so much John, these libraries are pure gold.

  9. Support Staff 9 Posted by lucasnijs on 23 May, 2025 03:08 PM

    lucasnijs's Avatar

    It's insanely great, that's what it is!

  10. 10 Posted by florisdejonge on 23 Nov, 2025 09:38 AM

    florisdejonge's Avatar

    Amazing update of the library once again John!

    Haven't been looking much at all the improvements. Slowly catching up.

    In regard to the order_LRTB node I had some suggestions.

    1. I often switch the x and y ordering within the subnetwork to make the order TBLR. An easy switch would be nice to add, maybe even more variations.

    2. Have you ever tried to group items or points in a certain way? Could this order-node be expanded to do this? So like when I give it a certain input amount (say 9) it would group the points with the top left 9 points and every subsequent group of 9 LRTB.

  11. Support Staff 11 Posted by john on 23 Nov, 2025 01:44 PM

    john's Avatar

    Floris,

    First of all, I hope you are looking through my latest release. You have attached this note to the 3.6 version. But the latest release is 3.7 which came out September 26. 3.7 contains a whopping 205 nodes and has many more improvements to earlier nodes.

    As usual, you are a fount of useful suggestions. I suppose in addition to LRTB and TBLR, you could also have RLTB, TBRL, LRBT, BTLR, RLBT, and BTRL. Seems like a good idea.

    I'm not 100% sure I understand your second suggestion. Do you want a way to take a series of groups from a single list. So, for example, given a list of 50 rectangles and an amount of 9, you would output 5 groups of 9 rectangles and a sixth group of 5 rectangles?

    If so, I would not cram this into the order_LRTB node. I would instead offer it as a separate node. That way you could form your list, use that list as is, or reverse it, sort it, reorder it using the order_LRTB node, and THEN do the grouping.

    Grouping, however, only works with paths and geometries. You can't group points.

    As it turns out, though, I already have a very powerful node, subsets, that does what you want for any kind of list using my new MultiList data type. This node grew out of an earlier request from... YOU:

    http://support.nodebox.net/discussions/nodebox-2-3/7233-multi_diff_...

    Subsets does what you asked for but provides more control. Instead of grouping items in buckets of a certain size, you provide a proportions list that describes exactly how you want to do the breakdown. In the above example with a list of 50 points, you could use make_numbers to say "9,9,9,9,9,5". Because you can't group points, the output would instead be a MultiList of 6 lists: list 0 would have the first 9 points, list 1 the next 9 points, etc. This would also work with numbers, strings, and other ungroupable types. You can use my multi_switch node to retrieve each individual list.

    If you are dealing with a list of paths or geometries, you can check the "Output as groups" option. This would produce just want you want: 5 groups of 9 rectangles and a final group of the 5 remaining rectangles. There are other options for taking random (unordered) samples. Documentation here:

    http://support.nodebox.net/discussions/show-your-work/910-subsets-node

    Please have a look at this and see if it satisfies your second request.

    I'm glad you are finally combing through my library. It has gotten so large now that even I am a bit overwhelmed by it. I have so far resisted making any further additions, but will consider doing so if you make the case that we need even MORE nodes.

    John

  12. 12 Posted by florisdejonge on 24 Nov, 2025 03:32 PM

    florisdejonge's Avatar

    Hi John,

    Thanks for the reply. In regard to the second question, I'll try to explain it better. This might be possible with the subset node, but maybe I haven't been using it to its full extent.

    Attached is an example of what I'd like to be able to do. On the left you see it visualized with the rectangles behind the ellipse. If the latter overlaps with the former, it should be a group. The arrangement and amount of rectangles (or other shapes) as a selection device can vary.

    To the right is how I would use the subset-node, but that would still result in horizontal groups defined by the order of the points of the grid. Could the subset node be used to achieve the effect mentioned above?

    At the bottom I did a quick attempt of what my direction would be: slicing a certain amount in a horizontal and vertical direction. The amount of the slice can vary.

    Looking forward to your thoughts on this matter.

    Floris

  13. Support Staff 13 Posted by john on 25 Nov, 2025 02:10 AM

    john's Avatar

    Floris,

    There is an easier way to do this. Just use a delete node to isolate and group the paths that fall within each container shape. See demo attached.

    I create 81 dots and 9 squares to group them by, then feed both lists into a subnet called contain. You can see the contents of the contain subnet in red. I set the shapes port range to list and the container port range to value. This way it fires once for every container you feed it. Each time it fires it looks at all the shapes and uses the delete node to remove every shape outside the container; it then groups that result.

    When you feed it 81 dots and 9 square containers, it outputs 9 groups. To demonstrate this grouping I then color each group using a list of 9 colors generated by my color_brewer node. Easy!

    This contain node will work with any arbitrary list of shapes and any arbitrary list of containers.

    Because the delete node also accepts points, you could make a version which accepts points instead of shapes, but Nodebox won't let you group points. You could overcome that using my MultiList nodes but it would be even easier just to connect each group of points into a path. Instead of outputting 9 groups it would output 9 paths. Just feed each path into a point node to recover the individual points in each path.

    This approach is simple and very flexible. The only downside is that you would have to create an array of containers each time and make sure they fit correctly over your array of shapes or points.

    If you don't need this flexibility, I can think of at least three different "cellular" approaches that would create the containers automatically.

    1. If you were always dealing with a rectangular grid of shapes and wanted to divide this into rectangular subsets of N rows and M columns each, I could make a node to do automate this. You would specify the number of rows and columns in each container. I would then use some math to assign a cell ID for each shape, build a table, then filter by cell ID to form each group. To do this I would need to determine the original grid coordinates of each shape (which might fail if they were not arranged on a consistent grid).

    2. Instead of dividing your shape array into containers with a fixed set of rows and columns, you might instead divide them proportionally into a total number of container regions, say 4 columns and 3 rows (regardless of how many rows and columns were in your shape array). This approach would also work with any arbitrary scattering of shapes; you would just divide the bounding box into 12 cells and group accordingly (based on the centroid of each shape).

    3. Alternatively, you could define your container cells spatially by specifying a specific container width and height and then overlaying enough of these cells to cover your array or scatter of shapes. You wouldn't always get the same number of groups, but each group would cover the same fixed area. You might need some visual feedback to choose your container widths and heights appropriately.

    It depends on exactly what you want to do, how your shapes are arranged on the canvas, and why you need to divide your shapes into distinct groups. Do you need a fixed number of containers, containers with the same number of shapes, or containers which span the same area?

    I think making your own container shapes is not hard to do and would give you complete control over the groupings. I would only recommend one of the three cellular approaches if your needs were very consistent and well-defined.

    So what would best suit your needs: providing your own container shapes as I did in my demo, or one of these three more rigid cellular approaches?

    John

  14. 14 Posted by florisdejonge on 26 Nov, 2025 05:59 AM

    florisdejonge's Avatar

    Hi John, Thanks for providing this path-based solution. I think I was halfway there, maybe I was focusing too much on the points and an number-based solution that I didn't see this easy fix since I've been using the delete node a lot for this application as well.

  15. Support Staff 15 Posted by john on 26 Nov, 2025 06:16 AM

    john's Avatar

    Floris,

    You are most welcome.

    The other approaches I outlined would be fun to make but, on further thought, each has additional issues. In this case, the simplest approach is probably the best.

    John

Reply to this discussion

Internal reply

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

Attaching KB article:

»

Already uploaded files

  • Cartan_Node_Library_3.6_Screenshot.png 1.45 MB
  • Cartan_Node_Library_3.6.pdf 7.61 MB
  • Node_Library_3.6.zip 12 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

Generic

? 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

22 Jan, 2026 08:50 AM
22 Jan, 2026 08:36 AM
22 Jan, 2026 07:17 AM
19 Dec, 2025 07:35 AM
26 Nov, 2025 06:16 AM