Russian Doll Maze Puzzle Box

by 3DFabXYZ Oct 26, 2017
Download All Files

Thing Apps Enabled

Please Login to Comment

I love that you have 10 different mazes for each of the 3 different maze layers. I'm looking to make my own maze variations and I was wondering if you could explain how the multidimensional array is used to generate a maze. What do the 0-3 each do. I've tried changing a single number in a maze to compare 1 rendered model versus another, but a single change (or a pair of changes to a single array ex: changing [1,2,3,1,1,2,3,1,2,3,1,1,2,3] to [1,2,3,1,1,2,0,1,2,3,1,1,2,0] in inner maze 1) seems to cause it to no longer render properly.

I am not the creator of the actual code to generate the mazes.
RevK created the code for the mazes: https://www.thingiverse.com/thing:2410748
He has a link to generate customized mazes via the web. He has also released the source code https://github.com/revk/PuzzleBox
RevK history of the maze https://www.revk.uk/2018/12/amazing.html

I have created the openSCAD code as more of a demo using variables for the different segments.

Russian Doll Random Maze Puzzle Gift Box (Updated Xmas 2018)
by RevK


This awesome. We you please make it where we can print the outer in two separate STLs?

Added outer maze.

Thank you again 3DFabXYZ.

Would you please add the outer cover piece?

Hi 3DFabXYZ,
this ist very nice work!

As I am new to OpenSCAD, I'm not familiar with the code and how to apply changes.
Is there a simple possibility to generate out of the selected maze a "2D" / phaseout print as a hint for the solution?
Thank you!

Good day refi1,

This particular model I did not create the openSCAD code from scratch, I only made the code to combine the 4 sections together.
https://www.thingiverse.com/RevK is the brains behind the code, you can read more: https://www.revk.uk/2019/01/putting-maze-to-bed.html
and https://github.com/revk/PuzzleBox

Sorry I couldn't help

If anyone is having issues on the back side of their print, then it's a cooling problem. My first prints turned out great on the side facing the fan but terrible on the opposite side. I just modified my fan into the "DiiiCooler" and it prints nearly perfectly now. I have just started on the full size print now. This will make a great gift for my sister. Thank you!

The cooler you are using is very similar to the one I use on my printer.
I am glad you like the puzzle.

This has been an awesome thing to print and give away! Thank you!

Thank you, glad you like it!

Thanks SvdSinner, for your Tip!

this is awesome, printed at 0.1mm height 0.4 nozzle, turned out perfect, printed it for a crimbo present but think ill print myself one, 30 hours of printing well worth the time

I am glad you like it.
Did you use the STL model or did you generate your own from my OpenSCAD source?
I found that the STL file I provided was a little loose for one of my printers, and great for the other one.
I suggest that if your printer is well calibrated/tuned,
you could adjust the clearance between parts from "m = 0.4" to "m = 0.2"

just used your stl, its a tiny bit lose when going through the maze but not enough for it to cause a problem when solving, ive got an ultimaker 2+ and printed it in really fine detail, turned out perfect, still printing the inner inner maze. printed one part at a time, II Box 9.12 hours, II Lid 11 hours, IO Box 6.47 hours, OO Box 4.38 hours, theres less than a 1mm gap so its pretty good, no need for it to be less of a gap

Your prints look really good!

Where in the code is the parameter that controls the maze generation option 1 - 10?


I hope that I understand your question right.

The only "User changeable variables" are the followind four variables:

  • model to choose which mode 1 to 10 to use
  • part pick which "layer" inner, center, outer.
  • m clearance between parts, I suggest 0.2, on my printer 0.4 was too loose.
  • piece base, lid or both pieces. (lid or both only works with the "part" set to "outer")

The following "code snippet" is the code that you can change, starting on line 19:

// Choose your Maze Model 1-10.
model = "1"; // [1,2,3,4,5,6,7,8,9,10]
// Choose the part you want to generate.
part="outer"; // ["inner":Inside Maze, "center":Center Maze, "outer":Outside Maze with Lid]
// Adjust the Clearance between parts.
m=0.4; // [0.2:0.1:2] 
// slider, step size .1
// Set Outer part(s) to generate
piece = "baseAndLid"; // ["baseOnly":Generate Base, "lidOnly":Generate Lid, "baseAndLid":Generate Base and Lid]

Have a look at the code between lines 580 and 716 and you can see how the variables are used in the "menus" to generate the selected parts.

Sorry, my bad. I was looking at the code referenced within the Thing Details and not your Thing Files. I'm good now. Thanks for the clarification.