Celtic Knots

So, I brought my sand table into the office to show it off and its like watching cats chase lasers. My boss came in with a request that I make a design using celtic knots and it opened an interesting rabbit hole for a 4:00 project.

I found this generator:
thats close to what I want but its based on tiles and might be difficult to replicate in gcode.

Has anybody else gone down this path?


To achieve victory for the 4:00 project I used the link above.

Reduced the line to a single pixel and exported to png.
Opened in Sisyphus for the rest of us Sisyphus for the Rest of Us to get a THR

Resized in Sandify and exported.

Its not quite a celtic knot as sandify has no concept of symetry but its not bad.

1 Like

That sounds cool. Got any photos ?


It’s at the office I’ll try and snap a shot on Friday when I’m in next.

To be honest it loses a lot of what makes a celtic knot because the overlaps/under laps are wrong.

To work properly it would need to follow the path of the rope rather than just draw the pattern in the most efficient path.

I might try to cobble something together in python if I get a chance.


As I looked at it I’m not sure that this is possible at least not as true celtic knots. Initially I thought that there would be a path that could be followed that could overlap itself properly but after looking more closely there is an over-under to the weave that wouldn’t allow a single path. What could work is code that backtracked to “fix” the unintended path crossings but the coding would be tough and my machine isn’t super accurate so the backtracks might be off by enough to be noticeable.

Not all is lost though. The exercise got me thinking about a new idea… more to come hopefully,

1 Like

It is very cool. I would love to find some new way of thinking about paths from this.


Which one of these lines gets drawn first? You would have to do something where the to line were broken up to give the illusion of being drawn underneath some lines. It definitely will be harder once you have a bunch of lines.

I don’t know if it will solve the problem, but I was reading recently about the Wave Function Collapse Algorithm. Given the tile-based nature of the designs, it seemed to me that this algorithm might do a better job of building graphs confined to specific criteria that would be useful for vector drawings like a ZenXY table uses. I’m sure you could include under/over crossings, but I don’t know how this would translate to ZenXY drawing those crossings.

Yea that’s the scenario that stumped me too. I thought they might be able to be repaired but I don’t think so. That said, I think maybe just a random pattern in this type shape that gets mirrored in x planes would create an interesting result as well just not the over-under weave of the celtic knot.

1 Like

Yeah I know it’s the dumbed down version but I require slightly dumber for my math skills. I’ll try and reread when my brain feels smarter.

How about this video. The algorithm (as I understand it) at a high level:

  • Find the cell/tile with the least number of possible choices
  • Make a choice for that cell
  • Propagate the results of that choice to any other cells affected (i.e. how it that choice limits the choices of other cells/tiles)
  • Loop until all cells are fully defined

@robertbu i finally read the article and it was an interesting read and very approachable. No idea how many false starts it would take to find a success but really cool.

1 Like

Thanks for the Celtic knot link. I used these settings to import into lightburn to burn a bamboo pen.
Randomize, Close border, 24 width x12 Height, 30 cell px, 7 string size, 4 stroke width, string color of black #000000 & other 2 colors of white #FFFFFF. I imported png directly into lightburn, scaled it to fit pen, right clicked on image & did a trace image. I would have liked to have another option of more gap where lines crossed, but still came out well. Might be able to play with numbers more to get more gap another way. Here is image of it. It is about 5mm shy of wrapping all the way around the pen.

Here is what it looks like in Lightburn.


In the Celtic Knot Generator, you can increase stroke width to get larger gaps. You would also need to increase string size a bit to get the same visual line width in the image.

1 Like

You are right. Thought I had tried that, but obviously I missed something there before. Thanks for your help. Now I have to do another one.

[Edit] Cell size 30, string size 12 & stroke width of 7 looks like a good choice for me with all other numbers I used the same. I decided to fill the gap in wrap with my name.

Actually, 30,10 & 7 gives me a little thinner line, so it won’t take as long to burn.

1 Like

Looking back thru my favorites the other day, I found the link to an opensource program that did celtic knots. Here is the link I originally found on openbuilds site.
Knotter : Make Celtic knots and custom interlaces | OpenBuilds
And the download link to the software. I haven’t tried it recently, but probably did a few years back. I tried to compile the source on Linux Mint 21 in a virtual box but couldn’t get the QT4 libraries installed.
Download - Knotter (mattbas.org)

1 Like