Cut out boxes and other stuff with a laser cutter

Similar projects worth following
An (Online) Box Generator for laser cutters.

  • Boxespy is an online box generator
  • Boxespy is an Inkscape plug-in
  • Boxespy is library to write your own
  • Boxespy is free software licensed under GPL v3+
  • Boxespy is written in Python 3

Boxespy comes with a growing set of ready-to-use, fully parametrized generators. See for the full list.


Of course the library and the generators allow selecting the "thickness"
of the material used and automatically adjusts lengths and width of
joining fingers and other elements.

The "burn" parameter compensates for the material removed by the laser. This
allows fine tuning the gaps between joins up to the point where plywood
can be press fitted even without any glue.

Finger Joints are the work horse of the library. They allow edges
and T connections. Their size is scaled up with the material
"thickness" to maintain the same appearance. The library also allows
putting holes and slots for screws (bed bolts) into finger joints,
although this is currently not supported for the available generators.

Dovetail joints can be used to join pieces in the same plane.

Flex allows bending and stretching the material in one direction. This
is used for rounded edges and living hinges.


  • It's all Fun and Games...

    Florian Festi10/23/2020 at 17:29 0 comments

    ...until someone makes an insert for Agricola - then it is even more fun ... and even more games:

    Kudos to Guillaume Collic who wrote this master piece. I especially like how he made use of already existing code and pieces and combines them with new edges types and new ideas. It re-uses the Divider Tray and regular boxes but combines them with new solutions like cutouts to make gripping the tiles easier. A very neat idea (but a bit difficult to see in the picture) are the sliding dividers in the trays for the wooden pieces. They are prevented from tumbling around by small triangular feet but are otherwise free to move left and right depending on how much space is needed in the compartments.

    The two box types holding the tiles clearly deserve to get a generator on their own. Guillaume already has ticket opened to make it easier to re-use complete generators by others. Splitting these boxes out might be a good exercise to create the infrastructure still missing.

    If you are on your way to your laser cutter you should probably stick to the default material thickness of 3mm or something close. While not stated in the generator description I have the suspicion that adding too much width with thicker material might end up with an insert that cannot be - well - inserted into the box.

    Inserts and organizers for board games is a very welcome new topic in the I hope at some point we can make this a category in the UI and rescue this gem from the "Misc" section. I have the hope that Guillaume may contribute some more. But may his works also inspires others. The more pieces and features there already are the easier such task becomes. 

  • New Boxes For Your Electronics Projects

    Florian Festi05/21/2020 at 12:32 0 comments

    Often just a generic box is just not enough, but you need something that can house the electronics of your project. The ElectronicsBox was the first variant with this in mind. But in the end it is just a box meant to be bolted down and screwed shut:

    QuitButton needed something else: A housing with a slanted front to mount a LCDisplay and a few buttons.

    As a first stop gap solution (other than just turning a pentagon box on it's side) I implemented Console using the relatively new polygonWall() code that turns a list of lengths and angles into a side wall. The actual win here is that there is a .polygonWalls() method that is rendering all the walls between the sides. The result is still a bit simple, but  at least has the right shape:

    But as with a lot of other boxes there is a severe lack of lockable doors or hatches. And while non rectangular finger joints are cool they are rather distracting around the front panel.

    So here is an improved Console2:

    There are a few variants. You can choose with or without removable back wall, with or without removable front panel and the front panel - as seen here -  clean and glued or attached with finger joints on the sides.

    The panel is held in place by spring loaded tabs:

    The two tabs per side and both springs being one single, laser cut piece.

    The back wall is hooked in at the bottom and has two flush latches at the top:

    The latches are made small enough that they cannot be opened or closed by hand but need a small tool like a screwdriver. This is on purpose to avoid people accidentally sticking their fingers into the electric parts inside. To prevent the latches from opening they have an integral leaf spring and a very small recess that locks them in place when closed. This way they can only be re-opened when pressed in a little bit against the spring.

  • on

    Florian Festi05/20/2020 at 19:48 2 comments is the German speaking IT news site. The Heise publishing house also issues the Make magazine. So via the Make news feed this article in German (translated by Google) made it to get global feed at

    There is nothing in the article regular readers of this project log don't already know about. But getting this level of exposure is quite nice and made my day.

    Herzlich Willkommen an alle Heise-Leser!

  • New Back End

    Florian Festi05/20/2020 at 08:23 0 comments

    So the new back end is finally merged into the master branch. If you update your own installation you need to install the affine Python module which is available both via pip but also in most distributions. Cairo is no longer needed. This should make installation on Windows much easier.

    The SVG produce by the new back end is also much better than the old one. Artifacts like repeated moves are filtered out and the outline of parts is much more continuous. The weird inverted arcs in inner corners are - for the most part - replaced with smooth Bezier loops. This should reduce acceleration in the corners and allow for faster cutting.

    I am still pondering whether it is worth adding a native DXF back end. While there is only very few commands needed by the format does not look like fun. I am also scared that it won't support the text the way we might need. For now the output still uses pstoedit for converting to DXF.

  • Test new Python backend!

    Florian Festi04/06/2020 at 10:06 0 comments is using the Cairo graphics library to generate SVG and PostScript (which is then converted to more formats with pstoedit). This has always been a pain. There is little control over the actual output. Getting the library to run on Windows is a real pain and creates a continuous stream of tickets, questions and complaints.

    So there has always been the thought of replacing Cairo with something else. But thoka finally put in the work to put together a native Python backend. After me not finding the time to take care of the PR for much too long it is now ready to be tested. Please check out

    Beside not needing Cairo it has the following improvements:

    • Continues outlines for most parts
    • Better grouping within the SVG file
    • Improved burn correction with inner corners now being a loop instead of changing direction twice

    Other changes

    • Text rendered as text not as glyphs
    • <deleted>No use of hlines and vlines (yet)</deleted>

    Please test with you tool chain and report issue back. Either here as comments or in the GitHub PR or a new ticket.

    If you want to test locally there is a nocairo branch in the main repository.

    Thank you!


    Turns out I had to redo the text "rendering". The text was never that well thought out as is not a word processor. I now do know much more about PostScript and it's font system than I ever wanted...

    To give the code more exposure I now moved the main instance ( to the nocairo branch. The Cairo back end is still available at . But I expect to call the new back end final and ditch Cairo completely soon - if there are no major issues popping up. 

  • A story

    Florian Festi03/01/2020 at 12:06 0 comments

    Looking at tickets on GitHub is not always fun. They are full of bugs and missing features people stumbled across and ideas that are not bad enough to ignore but not good enough to work on right away.

    But from time to time there are stories that unfold in there that are too good to be forgotten in a closed ticket. So I am putting this one here:

    In the beginning there is a need for a box - a cash box. And there is an idea how it should look like:

    And there even are some plans - although not quite in the right size:

    So the question arises if there is a generator that can already do this. Well, sort of. There is the RoundedBox and it probably can be extended to get similar results.

    But as so often that's a bit too involved for a mere mortal. So Inkscape is called to the rescue instead:

    with green being from, the red added to get the results in blue.

    And the final box is looking gorgeous:

    That's just to good be stay a one-off. Actually extending the RoundedBox wasn't that hard. Half of the patch is just increasing the opening on top/front for the new style. Of course the real work is done in the parts (RoundedPlate and SurroundingWall) that make up the box and need to learn about the new feature. So this could have been a nice show case how easy it is to extend the library. Unfortunately these parts are both pretty old and only used at few places. So there is a bit of refactoring and a few tweaks and bug fixes needed to make this all work eventually:

    The keen observer may have noticed that the edge type of the SurroundingWall has changed from "F" to "f" making the top and bottom a bit more sturdy as the corner holes don't continue into the sides. Otherwise this is very close to the Inkscape version.

    Thanks to bwente for the work and inspiration to finally do this!

  • Spicy

    Florian Festi12/16/2019 at 22:45 2 comments

    The kitchen in our hacker space needed a better solution for its spices. The wire frame shelf was disorganized and just not that great over all. Turns out you can get some nice tin cans for spices for just like 70ct each - already coated in black paint that can easily be laser-etched away. Now we just needed a new kind of rack that holds a lot of them. The obvious solution would be tilting them so you can read what's on the lid and each can be accessed directly. I was already thinking about a variant of the wine rack just with each cell tilted upward. But then there was a better idea: Have the cans sink into a horizontal plate:

    Although the rack is made specifically for the black cans it turns out other more or less cylindrical objects of more or less the same size also fit in well enough.

    While getting the math right and creating the ellipse arcs was a bit tricky the rack itself is easy to assemble:

    The generator can be found in the Shelves section.

  • Boxes International

    Florian Festi08/22/2019 at 22:07 0 comments

    Boxes now supports multiple - ok, ehmm, ... nearly two - languages. This started several weeks ago with a request to support a Portguese/Brazilian translation. But this only got finished because CNDK asked how to translate the UI to Chinese and came back with a translation after I pointed him to the first prototype version of the POT file.

    For now the web UI uses the preferred language set in the browser to find a language to translate to. I will probably add another means to change the language. Any particular style you'd like to see this done? As mentioned above there only exists a Chinese version with a few pieces still missing as I just now added them.

    If you are interested in other language you can go Zanata page and start working on them. Drop me a note here or open a ticket if you think the translation is ready to be merged. If you don't want to bother with yet another online tool you can also get the POT file from the repository and translate it locally.

    Update: Added a drop down box to select the language to the page footer. It's still pretty ugly. I still need to look into the CSS stuff necessary to make it fit the overall design of the page.

    Update2: I just received a French translation from Georges Khaznadar who is also packaging for Debian.

    The situation with Zanata - which was already kinda fishy in the summer - is now at a point where we need to make plans to move somewhere else (as is the Fedora project). I am currently considering but I still have not much experience with the hole l10n business. Any advice is welcome.

  • Quick update

    Florian Festi07/11/2019 at 23:38 0 comments

    Despite things being quiet here on Hackaday upstream development made quite some progress. We got a set of slat wall panels for our wood work shop. So I created a whole set of tool holders that can be hooked in a slat wall. Good pictures are still missing but the new "Slatwall" section is already in the on-line generator.

    Thanks to Stefan the post processing step is now parsing and re-writing the SVG properly. This allowed to add the parameters / URL  as a comment in the SVG file and move the drawing to the origin. It also opens up a new set of possibilities for further post processing.

    Stumbling on DeWalt Drill Battery esk8 Electric Skateboard motivated me to finally add an adaptor for Makita Batteries. While it needs a bit more work to offer it as a useful building block I already created a mobile bench power supply that can run from either an 18V Makita battery or an Lenovo power supply using the popular DSP5005 module. The MaktiaPowerSupply  generator can already be found in the "Misc" section. To be honest it is basically little more than a simple box and the interesting parts are all vitamins. Nevertheless the result is quite handy.

    Overall I hope things will slow down a little at some point so I can write dedicated log entries on all the new pieces and show some pictures of the results. In the mean time you can have fun with the brand new FlexBox5.

  • More and better Docs

    Florian Festi03/04/2019 at 21:55 0 comments

    I held a workshop at my local hacker space on how to write your own generators. As a side effect I restructured and extended the (API) docs and one participant updated the installation instructions. So now there are several new topics covered:

    The API docs have now more of an top down approach. This makes it easier to understand the concepts and where to start. Also the previously broken module index is fixed and all the methods are referenced in the index.

    There are still a lot of places the docs can be improved but I am trying to stop myself here. Overall it is probably better to crank out a few new features than loosing myself in the documentation. I guess most people are happy not needing to read docs and being able to generate a new box with the press of a single button.

View all 52 project logs

Enjoy this project?



Erik wrote 09/21/2021 at 22:23 point

Florian, what a great project! I wish to join two ClosedBoxes with a ChestHinge. So, I have copied the IntegratedHingeBox, and I am modifying it to add finger joints to the smooth edges, and two more pieces to fit in them. When I try to create a CompoundEdge of type "pf", the hinge portion becomes very disjoint from the ChestHinge portion. The same thing happens with ChestHingeTop. Is this a bug, or user error? Thanks so much!

  Are you sure? yes | no

Florian Festi wrote 09/23/2021 at 13:00 point

There are probably two issues: Between both sides of the hinge is no space for the two walls. So normal calculations won't work.

Additionally the p edge is outset by the size of the hinge eye. This is compensated in the IntegratedHingeBox by setting ignore_widths accordingly. This reduces the length of the back edge so the hinge fits in the normal size of the box.

The easiest way to make this all work is probably to not use rectangularWall but draw the side walls "by hand" just using the edges (e.g. self.edges["f"](x) ) and corner() or edgeCorner().

  Are you sure? yes | no

Erik wrote 09/23/2021 at 14:43 point

Thanks Florian, I will give it a try. Just for reference, this is similar to what I want to accomplish:

I would of course add the hexagonal holes to the output SVG manually. Thank you for the great answer!

  Are you sure? yes | no

Florian Festi wrote 09/23/2021 at 15:46 point

This looks really nice! Looking forward to have this added.

  Are you sure? yes | no

suleyusta wrote 08/27/2021 at 23:43 point

hi. i have a question about this flex test:

can we make margins to the left and rigtht of the flexpattern?

  Are you sure? yes | no

Florian Festi wrote 09/04/2021 at 06:57 point

Not quite sure what you are asking for. There are margins - although of fixed width. This generator is only meant to be for testing different settings. If you want to use the flex for anything useful adjust the piece with some vector graphics program like Inkscape.

  Are you sure? yes | no

hd wrote 08/19/2021 at 17:46 point

Hello everyone!

I've created two standard cardboxes recently and have a note. The inner height doesn't count with the thickness of the material, probably the bottom part.

Inner height of 66 (t=5mm) and 70mm (t=3mm) is therefore 61 and 67mm only.

Is that my fault or a bug?

  Are you sure? yes | no

Florian Festi wrote 09/04/2021 at 06:54 point

Well, I would argue it doesn't account for the lid. Anyway, fixed now in Thanks for reporting.

Note that I pulled a few other changes to the server that re-arrange the parts and add part names. The names can be de-selected by un-checking "labels" in the Default Settings.

  Are you sure? yes | no

cr10s wrote 05/03/2021 at 06:40 point

Merci beaucoup pour ce super projet

j'aimerais signaler une erreur dans  PhoneHolder, le troisième objet est mal formé

encore merci, j'ai créé de jolie boite grâce à vous

Thank you very much for this great project

I would like to report an error in PhoneHolder, the third object is malformed

thank you again, I created a nice box thanks to you

  Are you sure? yes | no

Florian Festi wrote 05/31/2021 at 15:09 point

Sorry, I didn't quite see what was the issue right away. It is fixed now.

  Are you sure? yes | no

Steph wrote 11/27/2020 at 10:21 point

  Are you sure? yes | no

Sergey wrote 08/17/2020 at 17:51 point

Good day! Sorry in advance for my English! I would like to improve box generator but I don't know a damn thing about Python programming. I have a small drawing of the spike groove connection that will fit most. It allows you to assemble layouts without glue. I would like to send such a drawing in pdf or ai or cdr format. However, I do not understand where I can put the information. I will be grateful if you help me, let me know by email or in this topic, where to put the drawing. ( my e-mail:

  Are you sure? yes | no

Florian Festi wrote 08/18/2020 at 16:45 point

Best way of contributing ideas is creating an issue at the GitHub project:

But if creating a GitHub account is too cumbersome you can also mail it directly to me:

  Are you sure? yes | no

dougw wrote 07/19/2020 at 04:25 point

2 comments on the new console box.

1) There is no way to select outside diameter, even though the dimensions all say "unless outside selected"

2) Selecting 0 for hi, which appears to be explicitly allowable ("leave to zero for same as outer walls)" results in a lengths of tabs/pins with zero connection width.  If this piece is ignored (which it must be since it cannot be cut), the resulting pieces will not mate together correctly.

  Are you sure? yes | no

Florian Festi wrote 07/23/2020 at 14:24 point

Added outside param to both Console and Console2. Renamed hi to front_height to match Console2 and get rid of wrong description text. Finally fixed case where it is zero.

Thanks for pointing this out. With some box generators I run out of steam before having polished all dark corners.

  Are you sure? yes | no

dougw wrote 07/25/2020 at 22:47 point

thanks, those updates look correct. They may have added another problem, though. If you create a console with the default settings, the second and fourth narrow rectangular pieces have extra line segments in the upper and lower right on the second piece, and upper and lower left on the fourth piece. These should just be cosmetic since they’d extend into the waste material, but it might be indicative of something else. 

  Are you sure? yes | no

Florian Festi wrote 07/27/2020 at 11:59 point

Those extending lines are kinda intentional. The non 90° finger joints protrude into the area of the walls. Those over extending lines are the top and bottom borders. To keep them independent from the left and right edges I keep them protruding and back up a bit for the finger joints in that case.

  Are you sure? yes | no

John Hildebrand wrote 07/04/2020 at 13:50 point

I use this project a lot and love it. However I have one request.

Tl;dr I’d like to be able to define the size of fingers in the divider tray generator.

I use these templates on my cricut and cut them out in chipboard. The results are great. The one generator that I wish I could update would be the divider tray. When it generates its result the finger for the sides are really small, way smaller than necessary. So, I end up generating what I need from that one and then a universal box where I can make the fingers and sockets larger and welding them in Inkscape. I would like to avoid his step and just have one svg to work from.

Would it be possible to add the ability to change the fingers for the divider tray like one can do in the universal box generator?

Thanks in advance 


  Are you sure? yes | no

Florian Festi wrote 07/08/2020 at 22:26 point

Yes, the DividerTray misses a few bells and whistles that some other boxes have. I added the FingerJointSettings for now. May be I should add a way to select the bottom edge, too. But this should help you out for now.

  Are you sure? yes | no

John Hildebrand wrote 07/10/2020 at 02:46 point

yes! Thank you!

  Are you sure? yes | no

Florian Festi wrote 07/08/2020 at 22:28 point

Yes, the DividerTray misses a few bells and whistles that some other boxes have. I added the FingerJointSettings for now. May be I should add a way to select the bottom edge, too. But this should help you out for now.

  Are you sure? yes | no

Holm wrote 05/20/2020 at 16:48 point

Hi Developer Team, first of all thanks for all nice work done. I have noticed another issue with the Divider Tray. When finished cutting the pieces, I noticed, that the middle separator (in a two row design doesn't match the bottom holes. I saw in earlier comments, that this is a relatively new implementation.

Generation parameters:*2&sy=20%3A10%3A10%3A10%3A10%3A10%3A10%3A10%3A10%3A10%3A10%3A20&h=32&outside=0&slot_depth=16&slot_angle=30&slot_radius=2&slot_extra_slack=0.2÷r_bottom_margin=1÷r_upper_notch_radius=1÷r_lower_notch_radius=8÷r_notch_depth=15&left_wall=0&left_wall=1&right_wall=0&right_wall=1&bottom=0&bottom=1&thickness=3.0&format=svg&tabs=0.0&debug=0&reference=100&burn=0.1&render=1

  Are you sure? yes | no

b.heijenga wrote 03/14/2020 at 20:41 point

After installation in inkscape (  on linux) with the script boxes2inkcape  I can see al lthe boxes in the dropdownmenu extensions> , but after cliking one, nothing happens. I made the .py files executable.  in extensions.error.log for all the boxes there is this message:

Extension "DiscRack" failed to load because a dependency was not met.
  type: executable
  location: path
  string: boxes

Any help apreciated

  Are you sure? yes | no

Florian Festi wrote 03/17/2020 at 09:08 point

Hmm, guess the Inkscape plugin is still not 100% correct as it is requiring the boxes executable in both the extension directory and the path. That probably doesn't matter if is installed globally with the boxes script being in /usr(/local)/bin. Can you try adding the location of the boxes script to the PATH (for Inkscape).

  Are you sure? yes | no

b.heijenga wrote 03/17/2020 at 18:03 point

I added /usr/share/inkscape/extensions to the path, does not help.

  Are you sure? yes | no

John Hildebrand wrote 02/06/2020 at 15:56 point

Hi Florian. I've been playing around with boxes and I've noticed that the Divider Tray generator doesn't have a bottom. However in the pictures it does. Is there a different set of parameters I should be using to get a bottom rendered?



  Are you sure? yes | no

Florian Festi wrote 02/12/2020 at 21:32 point

Looks like it doesn't. The bottom edge seems to be hard coded to a straight edge. Adding a bottom_edge param as for other boxes may not be the right thing with the left and right wall being optional. I might have a look for a possible solution.

  Are you sure? yes | no

Nick wrote 02/26/2020 at 10:26 point

Hi Florian, I noticed the same "issue", and just want to tell you that an optional floor for the divider tray would be highly appreciated.
Thank You!

  Are you sure? yes | no

Florian Festi wrote 02/26/2020 at 15:24 point

There is a pull request now:

But is still needs a bit of love.

  Are you sure? yes | no

Florian Festi wrote 02/26/2020 at 20:09 point

Ok, fixed up the PR. There's now a bottom check box. Thanks to Erwin Jansen who did most of the work!

  Are you sure? yes | no

John Hildebrand wrote 02/26/2020 at 20:25 point

yay! Thanks!

  Are you sure? yes | no

Guenter Nimmerfall wrote 11/25/2019 at 18:53 point

Hello Florian, I'm very fascinated about your project. But I still have troubles to understand the parameters of your traylayout module.

What do these parameters mean:

 ,> 0.0mm
 | ,> 0.0mm
 |  | ,> 0.0mm
|   |  |   | 0.0mm
|   |   |  | 0.0mm

Would like to create something like this:

Kind regards.

  Are you sure? yes | no

Florian Festi wrote 12/02/2019 at 08:43 point

This is the layout for a 3 by 2 compartments box while you need a 3 by 3 box. The measurements (0.0mm) on top are the width of the compartments left to right while the ones on the right are the depths. You can replace the - and | by spaces to remove walls. So your box should look like:

 ,> 70.0mm
 | ,> 65.0mm
 | | ,> 59.0mm
| | | | 40.0mm
+ +-+-+
| | | | 44.0mm
+ +-+-+
| |   | 50.0mm

Sorry, this is a bit ugly in a non fixed font.

Make sure to un-tick the "outside" box to make sure the walls get added to the overall size.

  Are you sure? yes | no

bwente wrote 10/22/2019 at 03:10 point

Suggestion for the new LaserHoldfast... Can you add a taper to the shaft? It would give it tighter fit.

Maybe an option to step and repeat? I know it is easy enough to duplicate and rotate in inkscape so it's not a big deal.

  Are you sure? yes | no

Florian Festi wrote 10/22/2019 at 07:22 point

Well, the shaft is actually intentionally not tapered. Like regular holdfasts it is supposed to wedge in by tilting. One could think about serrating  the edges, though.

Yeah, I actually had a number parameter already in there, but then I added the curve in the top part and calculation the proper distance became more complicated - and then I scrapped the parameter again.

  Are you sure? yes | no

Stevemcl wrote 09/24/2019 at 19:33 point

Hi, it would be great to have a test template that has a range of burn settings so that I can select the best burn setting for my laser cutter.  Rather than cutting out multiple boxes with different burn settings.  Great stuff, thanks!

  Are you sure? yes | no

Florian Festi wrote 10/13/2019 at 20:14 point

Ok, this is now available as BurnTest in the "Parts and Samples" section. Thanks for this great idea!

  Are you sure? yes | no

Aram Perez wrote 08/07/2019 at 00:48 point

Another nitpick: when building a box with a lid, the software does not account for the thickness of material so that the lid does not close. My current solution is to created two boxes. The first with the dimensions I want. The second box I lengthen the x value (I believe it was the x value) by the thickness of the material. After downloading both svg files, I open both (with Inkscape). After ungrouping both files, I delete the back/top and sides (from the first file with the correct dimensions). I copy the back/top and sides from the second file and paste them into the first file. Then I cut the parts of the box, put it together and now the lid closes correctly.

It would be nice if the software accounted for this automagically.


  Are you sure? yes | no

Florian Festi wrote 08/07/2019 at 13:14 point

There are a lot of different boxes. Can you please post the link to the box you are creating here or in a ticket on GitHub (

Ehm, I just saw your comment below. So I guess this is about FlexBox3. I'll have a look.

  Are you sure? yes | no

Florian Festi wrote 08/08/2019 at 20:56 point

Ok, should fix this. It's not in the online instance yet. Can you test the change on a local instance? Otherwise I'll just push it on the server.

  Are you sure? yes | no

Aram Perez wrote 08/09/2019 at 01:47 point

I'll just wait until you push it to the server. Thanks!

  Are you sure? yes | no

Florian Festi wrote 08/09/2019 at 21:20 point

Ok, pushed the patch to the web instance.

  Are you sure? yes | no

Aram Perez wrote 08/09/2019 at 23:04 point

Great, thanks!

  Are you sure? yes | no

Aram Perez wrote 08/06/2019 at 19:19 point

First, this is a great project! But I have a nitpick when making a "FlexBox3" (, I expected the Z to be the height of the box so the lid is at the Z height. For example, using X = 25, Y = 25 and Z = 100, I expected tall square box with the lid at the top. You can see what I mean by going to and entering the following program: "x = 25;y = 25;z = 100;cube([x, z, y]);". It appears that if I swap the y and z values (similar to OpenSCAD), I do get the box I want. Any chance of making z the height (or having the option to do so)?



  Are you sure? yes | no

Florian Festi wrote 08/08/2019 at 20:31 point

Those x, y, z, h params need at some point be replaced by width, height, depth, ... But so far I have not been bored enough to start this project.

  Are you sure? yes | no

Aram Perez wrote 08/09/2019 at 01:48 point

I understand. I think I've figured it out for now so I can create the boxes I want. Thanks!

  Are you sure? yes | no

dmiarka wrote 07/23/2019 at 09:38 point

Hi, there is a problem with exporting from some of the templates. Like , I used it some time ago, and now i cant. I got error "This XML file does not appear to have any style information associated with it. The document tree is shown below." when tryinx exporting to svg. The tool is great besides it, but could You fix it please? :)

  Are you sure? yes | no

Florian Festi wrote 07/23/2019 at 15:44 point

There is still an issue with the web instance. It restarts after a while and then is unavailable but comes back up on it own. I will change the setup as soon as I find the time. IN the mean time you can either wait a while or run an instance locally - which is easy on Linux but probably too much hassle under Windows.

  Are you sure? yes | no

Florian Festi wrote 07/23/2019 at 15:49 point

OK, hit it with a bat just to be sure.

  Are you sure? yes | no

dmiarka wrote 07/23/2019 at 18:21 point

Now works great, thank You very much :).

  Are you sure? yes | no

Aram Perez wrote 08/15/2019 at 13:56 point

I'm having the same issue, some templates seem to work every time but others give the XML error. I tried to install the software to run the server on my Windows machine (has a Core I7) but I get the following error: ERROR: cairocffi-1.0.2-cp38-cp38m-win_amd64.whl is not a supported wheel on this platform. Any suggestions?



  Are you sure? yes | no

Lomba wrote 07/18/2019 at 09:08 point


Inspired by your project, I worked on a variant that could interrest you.

Feel free to check:


  Are you sure? yes | no

Florian Festi wrote 07/22/2019 at 07:55 point

I am currently still missing flex / arcs with finger joints. But that's a feature I want to add at some point. These rounds drawer look like the first thing to try with them. Thanks for the inspiration!

  Are you sure? yes | no

Zhong wrote 07/14/2019 at 07:16 point


  Are you sure? yes | no

Florian Festi wrote 07/23/2019 at 15:41 point

I actually already have a branch that it working towards translating But it still needs more work. Unfortunately I am not too experienced with i18n. I uploaded a first language file to but then the site went down for a few days. So I am not sure if that's the way to go. If anyone has advice feel free to provide it here or in the upstream ticket ( - which urgently needs an update.

  Are you sure? yes | no

Zhong wrote 08/01/2019 at 01:07 point

I have already translated a part, how can I use it, I want to test if it is normal

  Are you sure? yes | no

Celia wrote 05/30/2019 at 15:17 point

I've been using this tool for a while and it is amazing! Thank you so much for creating such an amazing tool. I've just started using it to create my own patterns. Right now I'm working on various versions of a box that looks like a book. I'm starting with simple closures, but plan on working my way up to a full gear closure. 

Just wanted to say thanks for such a comprehensible API. It took me some time to figure things out (mostly because this was my first time coding in Python), but I'm mostly completed with the first box!

  Are you sure? yes | no

Florian Festi wrote 07/01/2019 at 09:56 point

Feel free to submit your new generators as a pull request even if they are not yet 100% perfect. I am happy to help.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates