CNC Dolls House Louvre Doors

One of the projects I'm currently working on is a 1:12 scale replica of my home to be used as a Dolls House by our great-grand daughter. As it happens, we have no fewer than 12 louvre doors in our home so I set about making a jig and writing some g-code so that identically styled 12th scale doors could be made in various sizes quite easily on my chinese 3040 CNC.

The first task was to make a drawing of the style of door I wanted in sketchup from which I could glean not only some dimensions but also an understanding of what variables I'd need to include in the progam to allow me to rescale each door as circumstances dictated.

This is the drawing I came up with, and while not followed the sizes religiously it did at least let me get on with writing some bits of g-code to machine the jig that would hold the door blanks. (right-click the following image to save a more easily readable copy to your computer)

louvre doof

I realised from studying the drawing that in order to cut the slats with a 3mm diameter endmill the whole door would have to be mounted on an accurately sloping jig - so the first bit of code I wrote was one which would take a rough cut block of wood and machine it to exactly the same angle the slat spacing needed. Since the size specification changed ever so slightly when I wrote the actual g-code I can't recommend you pay much attention to the sketchup model, but if you'd like a copy just out of curiosity you can find it here:-

https://3dwarehouse.sketchup.com/model.html?id=0b1103eb-a791-42ee-8bfc-80717451702d

Copy and paste everything between the wavy lines below and save it to your computer if you want the -gcode for planing the jig:-

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
G90 G21 (ABSOLUTE MODE mm)
F300
G0 X0 Y0 Z0 (SET START POSITION)
G91 (SWITCH TO INCREMENTAL MODE)
M98 P1000 L21 (L=NUMBER OF REPEATS)
G0 z-0.5
G90 (SWITCH TO ABSOLUTE MODE ON RETURN)
G0 Z10
G0 X0 Y0
M30
(SUBROUTINE)
O1000
G1 y230 Z-38
G1 x2.5
G1 y-230 z38
G1 x2.5
(END SUBROUTINE)
M99
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Once the jig had been finish sanded I attached a piece of 3mm ply to the top with double sided tape in readyness for cutting the slats. My first test piece was for a pair of doors 220mm high x 27mm wide with a 12mm central rail - so I set the first few variable in the g-code to reflect those sizes and ran two copies off which I then temorarily taped together to make the single bi-fold louvre door you see in the video below.

This is the g-code I use to cut the doors - all of which can be any width that will fit on your jig and all of which have one central horizontal rail of any width you choose for aesthetic purposes. As before - if you want the g-code then you'll need everything between the wavy lines below.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(For cutting slats on a faux louvre door 3MM CUTTER REQUIRED)
(THIS REVISED VERSION CUTS UPHILL AND MARKS ACROSS TOP END OF DOOR)
G90 G21 (ABSOLUTE MODE mm)
#100=28 (number of slats per half of door)
#101=34 (length of a slat minus the 3mm cutter dia)
#102=12 (width of top/bottom/centre rails)
#103=5 (width of side stiles)
(the following variables refer to the slope of)
(the jig and are for internal calculations only)
#105=[230/3] (horizontal length of slope on jig)
#106=38 (vertical drop of slope on jig)
#107=[#106/#105](Z axis difference per 3mm of Y travel)
#108=400 (feed rate)
F [#108]
G1 X0 Y0 F[#108*2] (SET START POSITION)
G1 Z0 F[#108*2] (SET START POSITION)
G91 (SWITCH TO INCREMENTAL MODE)
M98 P1000 L[#100] (L=NUMBER OF SLATS IN A RUN)
G1 Y[#102] Z[#107*[#102/3]] F[#108*2] (SKIP CENTRE RAIL GAP)
M98 P1000 L[#100] (L=NUMBER OF SLATS IN A RUN)
G1 Y[#102] Z[#107*[#102/3]] F[#108*2] (SKIP END RAIL GAP)
G1 X[0-[#103+3]] (go to edge of door)
G1 X[#101+[2*#103]+6] F[#108] (CUT END OF DOOR MARKER)
G1 Z1 F[#108] (lift up)
G1 Z10 F[#108*2] (clear the work piece)
G90 (SWITCH BACK TO ABSOLUTE MODE)
M30
(END OF PROGRAM)

(SUBROUTINE)
O1000
G1 Z[0-#107] F[#108] (put the cut on)
G1 X[#101] F[#108] (cut the length of the slat)
G1 Z[#107+1] F[#108] (lift up 1mm + cut depth)
G1 X[0-#101] F[#108*2] (go back to start of slat)
G1 Y3 F[#108*2] (move along to next slat position)
M99
(END SUBROUTINE)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The following video offers a brief overview of the whole process:-

And here's how the (unsanded) prototype bi-fold wardrobe door looks in the dolls house I'm making for my grand-daughter:-