-
Workholding
08/21/2025 at 17:29 • 0 commentsCNC milling/routing involves holding the thing that's getting cut.
![]()
(If you aim to build one of these for yourself, start here not here! This is extra complexity you almost certainly do not need! More exclamation marks: !!)
I've been using double-sided tape to hold work since the second iteration of the laser-cut precursor to this project. It's hard to beat for simplicity, and it works well enough often enough to make some stuff. But sometimes it reminds me to think about mechanical workholding again. After a few years of no good ideas, I think this might work.
![]()
spaces for nuts below and places to drill for screws above -- with an arbitrary 10 x 10 patch of nuts just to show what 100/207 looks like That's
- a bunch of square nut pockets sunk into the formerly flat top of the "top" part, and
- a new flat slab on top of that.
Slab
I don't know what to call the new slab on top of the top part (of "bottom", "middle", and "top" parts of the XY stack). If it were square-rigged, it would be the t'gallant part. Maybe it will be just "slab" for now.
Outwardly, the slab is just a flat slab with ½-dozen screws through it. Between the solid top & bottom surfaces there are void holes aligned with the nut pockets in the top surface of the top part. More to the point, "holes" means vertical cylinder walls around the holes to bear compression.
Because ... why?
Wherever you want to screw/clamp/hold work on top of the slab, drill through the nearest "drill here" mark on the bottom of the slab to open the top and bottom (i.e. bottom and top) of one of the internal voids and drop a nut in the corresponding pocket.
The selectively populated 8 mm square grid of "drill here" marks is easier to see in the CAD render below than in the photo above. (even tho the marks are bigger in the photo)
![]()
"legal" points of 8 mm × 8 mm grid I don't know whether or not this idea is actually novel, but I don't recall seeing it anywhere else. I also don't know whether or not it is actually useful, because I haven't actually used it to make anything other than pretty pictures for this page.
Here is a (i.e. the) a worked example:
![]()
drill through "legal" grid points nearest where you want to place screws ![]()
drop square nuts into corresponding square nut pockets ![]()
secure the slab on top of the top; now there are robust metal threads under the drilled holes ![]()
workholding widgets ![]()
workholding widgets holding work -- in a repeatable(ish) position ![]()
!!: different length screws shimmed to near-exact lengths to fully engage nut thread without bottoming in shallow pockets!
MaybeOf course it works. Because what could go wrong? ¯\_ (ツ)_/¯
vibration
Screws working loose from vibration is the first risk that comes to mind. The bet here is that clamped PLA is springy enough to prevent that. If not: Thin square nylock nuts would be great but I haven't found such a thing yet. Common hex nylocks would require deeper pockets (thicker top or fewer pockets) and holding a hex nut shape against torque with PLA is less easy than holding square nuts. McMaster-Carr lists "thin profile" hex nylocks, which seem quite pointless in smaller sizes: 3.9 mm thick vs 4 mm for m3. It appears that barleycorn nuts run thinner per thread diameter: 4-40 thread at 2.85 mm diameter is 95% of m3 diameter (90% section area) and "thin profile" 4-40 nylock nuts are only 2.8 mm thick or 70% of m3 (4 mm), so "thin" 4-40 nylock nuts could be accommodated within current dimensions with some very thin pocket floors. There are also anti-vibration screws: e.g. with a patch of nylon on the thread, or "tri-lobe" shape (tho use with steel nuts would be off-label). Or maybe just 3 mm o-rings under the screw heads.
widgetry
Those totally credible-looking "workholding widgets" were totally just whipped up to make the few ̶p̶r̶e̶t̶t̶y̶ helpfully illustrative pictures above. For brevity (hah!), I've deleted a bunch of words that were here about why I'm downplaying the photo model widgets. As said up near the top of this log, I think you almost certainly do not need to fuss with this. So if you are motivated to fuss with this, it's presumably because you have a use case that makes it seem probably worthwhile, so you'll likely have a pretty specific idea of what you need and should make that. If someone works up and shares some really useful general-purpose clampy widgets for this scale, then great!
distortion
I have no idea how screw torque/tension, either slab-to-top or widget-to-slab, will affect the shapes of things, except that it will be inconsistent if torqued by hand.
naïveté
My Dunning-Kruger coach tells me this is fine.
Portable
While nuts mostly live "in" the top part, and the pockets in the top provide location and torque, they take up against the bottom of the slab in use. The slab and workholding and held work become a unit can be lifted off the top of the XY stack. As hinted in photos above: a separate copy of the top part -- or top few mm of the top part -- makes it possible to prepare a setup on a slab separately then move the set up slab to the machine for work.
![]()
nuts start in the X+Y top for location and torque but become part of the slab+work unit in use
But reallyAs already said, I haven't actually used any of that workholding widgetry, including not using it to cut the brass widget used for a photo model.
Here's what I'm actually using:
![]()
decreasingly thick spoil board double-stick taped to un-drilled slab, upon which I double-stick tape stuff. Same old double-stick tape on a double-stuck spoil board. At least with this arrangement I can take the slab off the XY stack for immoderate application of force to liberate well-stuck parts. That helps sometimes because really rigid material doesn't peel, and peeling is how taped things come apart with moderate force.
... and now I'm thinking that I might add the six slab-attachment screw/nut points into the vanilla flat-top top part where they can be either ignored or used to attach a plain slab for the benefit described just above.
Stiff(ish)
For stiffness, this arrangement depends mostly on the slab. To minimize reliance on the stiffness of the top part of the XY stack, the six attachment screws are located near where sliding hardware attaches to the bottom of the top of the stack. I've assumed, then, that it's ok for the top part to give up some stiffness by omission of its internal structure and breaking up the top skin. (and maybe giving up the supporting arch in a future revision)
psych
The slab could be made stiff simply by making it thick and/or dialing up lots of perimeters and infill. Obsessively not doing that has burned a pile of time & brain strain over the course of this project. Early in the project, between identifying a weak spot in the X top and working out the "arch" brace, I put some effort into modeling internal structure to provoke the slicer into adding plastic where it would actually reinforce something instead of just burying weakness in perimeters, infill, and thickness. While internal structure got into my head largely as a side-effect of not thinking of the arch brace first, it's become something of a cognitive addiction. The pursuit added a pile of time & brain strain to iterating the vertical axis where, if I may quote myself:
"Are resulting parts actually stiffer to operating loads than parts printed with more perimeters up to similar total mass of plastic? Maybe. Is the difference worth the extra design effort? Almost certainly not. Having done it, I have to admit the result is more vanity art project than engineering."
Did I learn? Of course not. Another pile of time & brain strain went into modeling something that would provoke the slicer to add internal span-wise & compression reinforcements in the slab without burying either my CAD or slicer (i.e. make updates take too many minutes) or print hours. Consider that 30 layers of ~200 screw positions in a 255-cell grid multiply any feature by 6 or 8000. I was very pleased with myself for eventually cracking that. Until, in the course of writing it up for this page right here, I realized a vastly very much more simple way to make it, eh, not very much less stiff. Speed-run stages of grief; click, shift-click, delete.
simple
The slab has no internal structure. The simpler way is: grid infill with adjusted density.
et voilà:
![]()
grid fill adjusted to do the right thing When asked for grid infill at 28.8% density, my slicer gives me the infill shown above with:
- a continuous wall-to-wall[1] reinforcing grid between the voids, and
- the ½-offset grid through the void centers which also reinforces their single-perimeter walls.
![]()
adjusted grid fill doing the right thing The void-intersecting grid doubles half (two opposite quarters) of each void wall and also adds the four perpendiculars. The two-quarter wall doubling depends on sufficient infill anchor length, or "Length of the infill anchor", or whatever your slicer calls it. Orca's default is working for me for now. That might be sufficient to bear workholding compression -- tbd.
Again 28.8% is the magic number for me for now. Grid fill. You may have to tweak the fill fraction to get the same infill grid spacing from your slicer.
I don't know why the infill density that matches void spacing also aligns almost exactly with the void centers. That seems like a poor bet to rely on. If not so well matched for you, adding a small single-layer appendage to a corner of the part should work to shift the slicer's infill pattern. Some (most? all?) slicers allow adding a primitive shape like a slab/box or disk/cylinder.
If you can't or would rather not get so involved in slicing your part: "enough" perimeters, fill, and maybe a vertical stretch for thickness should get the job done. This may be an exception to the general principle of favoring perimeters over infill for strength.
Or maybe slab stiffness just doesn't very much affect actual milling results ¯\_ (ツ)_/¯ . I'm still not actually objectively assessing which design choices or tweaky details matter.
[1] Yes, that's a result I've preferred to avoid by not using grid/cubic fill. I'm pretty sure that's not a concern here.
Build
Repeating: If you aim to build one of these little CNC mills for yourself, start here not here! This is extra complexity you almost certainly do not need!
If you're building your own "Minamil", I think it's virtually certain that you should not bother with this until you've got the basic machine working well enough to make stuff, and made some stuff, and organically encountered a workholding problem that makes fiddling with this look easier than fussing with double-stick tape.
hardware
- nuts
- m3 square
- nuts in photo example measure ~5.4 mm sides and ~1.9 mm thick
- up to 5.5 mm sides and 2.5 mm thick should work
- 6 required to attach slab
- more for workholding
- m3 square
- screws
- m3
- 6 required to attach slab
- length 10-12 mm
- max head diameter 6 mm
- more & longer for workholding
- length needed above slab + ~10 mm
- zip/cable ties
- not less than 7
- probably more
print
See STLs 4 XY & slicing for slicing/printing parameters. Mainly the "General" parameters.
download minamil3dp-XY-workholding-STLs-v0.9.1.zip from Files section @@@upload
filenames: "minamil3dp-{part}-v0.9.1.stl
- XYtop-workholding
- like XYtop in slicing notes
- slice upside down
- while probably not necessary, splitting for internal reinforcement will make the slab mounting screw hole walls more robust to compression.
- XYslab-workholding
- grid infill at adjusted density
- preview in slicer and adjust as described above
- Start with 28.8% fill density (because works for me for now) and adjust from there
- may need to add thin (~1 layer) simple shape to a corner to shift grid if spacing is good but misaligned with void grid
- slice right side up
- grid infill at adjusted density
- if you're feeling lucky: the widgets
- Arachne ok
- flat sides down - check hole through clamp for which side up/down
- lots of perimeters for clamp
assemble
- check & clean up XYtop-workholding per "part checks & cleanup" details at top of XY stage assembly notes
- insert six nuts into top part for slab attachment screws
- four straight in through sides (three positions visible in photo at top of the page)
- two "up" into bottom of top part then slide sideways into place (before X slide assembly)
- crushable ribs are meant for interference/friction to hold nuts in place
- replacing the two interior nuts, if they fall out of place, requires dis/reassembly of X/top axis :-/
- the cheap nuts I bought vary in size and are rarely square, so I've selected nuts with longish long sides and pushed them in sideways for firm friction fit
- consider a drop of CA or such if you can't make the nuts hard to shake out of place (especially the interior two)
- test fit slab to top part & remove
- slab should align with and lay flat on top of top part
- secure with six m3 screws 10 mm or 12 mm long
- nuts should pull up hard to tops of their spaces
- after removing slab, nuts should not move or rattle when moderately shaking top part
- pushing down on attaching screws when not tight will push the nuts down from the tops of their spaces
- I try to not do that
- I don't know whether a lot of down/up shifting will make the nuts looser until they fall out, or wear a notch in the interfering ribs that will help lock them in place
- ¯\_ (ツ)_/¯
- replace top part of XY stack
- i.e. X axis
- see notes on "disassembly" and "reassembly" at bottom of XY stage assembly; also review X assembly notes generally, which refer to Y assembly notes
- X axis only
- aside: this version of the top part kills the mid-page note about maybe assembling Y after X and commits to Y-before-X assembly order
- transfer bearing from original to new X top part
- transfer rods and pre-set rod zip ties per assembly notes
- remove, replace, and pre-set the inboard end zip tie for the lower X rod (on top of the middle part, near the bearing)
- if you removed the lower X rod completely from the middle part: remove, replace, and pre-set the outboard end tie and the rod
- transfer motor
- if the motor cable is dressed to middle part: its possible to transfer without disconnecting but probably not easier than cutting it loose to disconnect, then reconnect and re-dress the cable later
- if I haven't edited out the ambiguity before you get there: yes it's easier to insert the two cable dressing ties before installing the motor
- assemble the X axis with new top part
- transfer spoil board or whatever is on top of the old top to the top of the slab
- attach slab
- tighten screws "firmly", with similar torque on each
- tightening the back-right (+X, +Y) screws may require some combination of
- short-ish tool
- move the work surface fully left (+X) and partially forward (+Y) to place the back-right screw a little behind the spindle and the mid-right screw a little in front of the spindle
- if there is a sharp tool in the spindle:
- beware the sharp tool in the spindle
- or cover it
Whinge
Yes, it took ~3½ months after MRRF to kick out this "quick" note about a tick-the-box feature that I'm trying to steer you away from replicating so I can get on with the good stuff. Remember this teaser?:
![]()
-
A better Z axis that's actually better
08/09/2025 at 09:58 • 3 commentsThe previously shared Z axis was very much a rough proof of concept. It worked well enough to not demand revision while I worked on other aspects of the project. Two prior attempts to fix its faults proved out some ideas but introduced other faults. This version seems like time to say "build this not that".
![]()
Beware vocabulary: I haven’t found a reliable escape from using “tool” to mean both “Dremel®-like rotary tool” and “endmill”. Context or bust.
What
Vertical axis for the CNC mill described in this project.
Why
Because I don’t already see tragedy in this attempt to fix faults of earlier attempts to fix faults of the previously published version. That version worked well enough to warrant sharing so you can make your own copy of a capable tool. But it was a placeholder waiting for a better replacement. An earlier log entry describes problems with the first version, and solutions that worked in earlier attempts to come up with the better replacement. This try keeps the solutions without stepping in any new poo that I’ve smelled so far. Of course lots could be different and I’m not saying any of it is “best” or “right” or "done" but I'm pretty happy with it for now.
How
Briefly:
- Build X+Y stage
- Choose a rotary tool
- Choose clamp configuration
- Print parts
- Collect other parts
- Assemble
Biuld X+Y
You don’t really have to, but I think building the X+Y stage first will help because there are more words and pictures about how to put that together. Familiarity with detailed information there should help to make sense of less detailed info here.
Choose a rotary tool
In keeping with the low cost/less stuff theme of this project, the Z axis is designed to hold a vanilla Dremel®-like rotary tool for a milling spindle. Clamping and releasing the tool is meant to be easy, so you can use the daily-driver you may already have and drop it into your little mill when you want to do a little milling.
What will work?
The tool clamp is designed around a tool body pattern set by Dremel (i.e. Emmerson) in a prior millenium. I don’t know of any simple name for the type except that they look like this:
![]()
current Dremel product image Many Dremel tools that look like that are called “MultiPro”, but the form was up to “type 5” before they were called “MultiPro” and not all “MultiPro” tools look like that. Current Dremel products have mostly moved on to different shapes, but Dremel still (mid-2025) sells their low-end 100 & 200 models in this style, but you probably don’t want one of those because they lack speed control, but several generic labels are selling 5-speed clones that look like they come out of the same molds as used by whoever makes Dremel’s 100 and 200 units these days. The basic pattern includes a straight cylindrical body segment between a taper down to a threaded nose below and a fatter section above that includes brush bosses and a vent or switch at a fairly uniform height.
The tool-carrying sled
- clamps around the cylindrical part,
- clamps a ring screwed on the tool’s nose, and
- allows clearance for the extra stuff above including access to the switch or vent at the level of the brushes.
Like this:
![]()
For tools with the switch between the brushes, clip out the lattice for access.
For a Dremel 300, clip out the thin bits around the spindle lock boss.
The left four models fit as intended. I’ve used the first three and @janvorli on the Discord server has verified that his Dremel 300 (the fourth) fits. For tools with the switch between the brushes, clip out the lattice for access. For a Dremel 300, clip out the thin bits around the spindle lock boss.
I haven't tried the questionable two on the right, but only looked at photos and marked features that differ from what the clamp was designed to hold.
The long nose of the “type 3” on the right will shift the tool body upward. That might work fine. It looks like the switch would be reachable over the top of the sled body. The clamp band is meant to wrap over a cylinder; cranking it down with the bottom edge unsupported … will probably work ok.
The gray soft-touch overmold on the “type 6” extends into the clamping area. That will either skew the top edge of the clamp band or shift the tool upward which will skew the bottom edge of the band, as already mentioned for the “type 3”, and also the nose clamp – assuming the nose ring is still captured at least partially under the clamp. Some combination of cutting away the gray overmold, splitting a few layers off the top of the clamp band, and/or stretching the vertical offset of the nose ring might improve the fit. “Type 4”, by the way, is the earliest direct fit; earlier “type”s of that body style (long nose like this “type 3”) maybe work fine if the clamp band handles the skew ok.
Match nose ring/clamp to tool
For the tools that fit, the cylindrical sections are almost but not quite the same diameter. The slight differences slightly shift the tool centerline. To keep the tool axis vertical (i.e. parallel with the Z motion axis), the STLs here include nose rings sized to hold the nose directly in line with the different sizes of tool body, and clamps to match the different rings.
![]()
Nose clamp parts include:
- unlabeled “generic” ring and clamp, which fit the WEN tools and, I suppose, other generic tools with similar body shells
- “300” parts match a Dremel 300 – at least @janvorli’s Dremel 300; that ring is marked “300”
- “MultiPro” parts match at least the one MultiPro-type tool that I’ve tried, and maybe/hopefully more; that ring as marked "MPro"
For convenience, the nose rings also set the axial position of each tool so that the cylindrical part of the body falls under the clamp band.
The fits are defined mainly by the tool body diameters: 47.6[1] mm for the generic, 48.6 mm for the 300, and 46.8 mm for the MultiPro. Measuring wouldn’t be a bad idea, and I’d appreciate feedback if you measure different diameters for similar tools. Also the "generic" ring is modeled with 19 mm x 2 mm thread while the other two are modeled with 12 tpi per Dremel brand dremels. Apparently the two are similar enough to be interchangeable in practice.
(Maybe I should model and label the nose parts by diameter instead. But that’s not so simple because there’s a two-dimensional space of diameter and vertical offset. Given a range of diameters, the vertical offset would be easier to trim, pad, eyeball, or edit.)
[1] this is slightly wrong -- to be slightly corrected another day
More than one?
Very fine work requires attention to set up a cutting tool in the rotary tool with sufficiently small runout. That slows down tool changes, e.g. to finish details after roughing. With some loss of “low cost/less stuff”, you can use another rotary tool and keep the careful low-runout setups undisturbed while changing tools by swapping spindles (and offsets).
If you anticipate switching between different rotary tools: are they the same or different kinds?
If you expect to swap between different kinds (i.e. different body and nose ring diameters), remember that for the next part about clamp screws/nuts.
Choose clamp screw configuration
Here is a decision point about parts you’ll need and how to put them together.
You should know what rotary tool(s) and nose ring/clamp parts you expect to use. Otherwise please read back a step.
- Most simple:
If you plan to mount up one tool once and leave it there (i.e. change rarely), then you don’t need any thumb nuts or specific assembly sequence. You can just drive the clamp screws directly into the printed sled and expect that they will hold if mostly left alone. The plastic threads will be vulnerable to wear if exercised frequently.
- Simple:
If you want to easily clamp and release a tool that you also use for other things, or switch between tools that have the same diameters of body and nose ring, then you’ll need two thumb nuts, and attention to sequence of assembly.
- Also simple:
If you may be switching between tools with different body and nose ring sizes, then you’ll need four thumb nuts, and attention to sequence of assembly.
Print parts
download minamil3dp-Z-STLs-v0.9.0.zip from Files section
filenames: "minamil3dp-{part}-v0.9.0.stl"
FDM/FFF/filmatent 3d printing assumed.
Some part details have assumptions about slicing & printing baked in. But I haven’t done much to assess which details or assumptions really matter. So if you just print stuff, you might get parts that work fine.
To align your prints with design intent, for whatever it’s worth, slice & print as follows:
- Mostly plain PLA
- it’s cheap, and
- specs I’ve found suggest vanilla PLA is more stiff than “stronger” materials short of fiber-filled exotica
- And a little (~2g) PETG or other temperature-tollerant material for a few hot parts.
- 0.4 mm nozzle
- 0.2 mm layer height
- 0.45 mm shell thickness
- Classic perimeter generator (i.e. not Arachne – except exceptions)
- fill gaps off (or filter out < 5mm)
- detect thin walls off
- 10% gyroid infill
- four solid layers top and bottom
- no supports (with one exception)
- see part notes for number of perimeter loops
Why any of that? Read about “what ever was he thinking?” here.
The base and sled have modeled internal structure. Like this:
![]()
Slicers that I’ve used (Prusa, Orca) see the union of part and reinforcement as a single simple solid by default. See notes below about getting the internal geometry sliced and printed.
These internal structures follow a project theme of trying to get strength from shape instead of many perimeters and dense fill. These internal structures aim to concentrate rather than distribute additional material for reinforcement. Are resulting parts actually stiffer to operating loads than parts printed with more perimeters up to similar total mass of plastic? Maybe. Is the difference worth the extra design effort? Almost certainly not. Having done it, I have to admit the result is more vanity art project than engineering.
Notes per part:
- Zsled
- slice flat end down / pointy end up
- two perimeters
- for reinforcement:
- split object into two parts (vs two objects)
- for internal part, set:
- 100% infill (fill type probably changes to rectilinear – thin fill optimizations ok)
- one perimeter (i.e. different number of perimeters than main part)
- Zbase
- slice flat
- one perimeter
- for reinforcement:
- split object into two parts (vs. two objects)
- for internal part set two perimeters (i.e. different number of perimeters than main part)
- Zclampband
- slice vertically with
- curved edge on plate
- flat sides of screw holes on top
- support bridges of upper band
- check that bands slice as continuous loops
- may require reducing “gap closing radius” to e.g. 0.02mm
- see pix:
![]()
- slice vertically with
- Zclamptoggle
- print two
- slice with largest flat side down (screw hole at angle)
- at least two perimeters
- Znosering-{tool}
- slice big end down
- three perimeters
- Arachne works well
- Znoseclamp-{tool}
- slice flat/loop side down (screw holes vertical)
- three perimeters
- Zpulley
- print in PETG or other temperature-tolerant material
- slice with larger flat end down
- Zinsert
- print two
- print in PETG or other temperature-tolerant material
- slice on end / screw hole vertical
Collect other parts
Non-printable parts:
- see also here for more about each item
- some details there contradict this info here – but I can’t update that until I’ve posted this
- 2 x rods: 6 mm x ~160 mm (157 mm ≤ length ≤ 164 mm)
- 4 x bearings (3 x would work and might work fine)
- 28BYJ-48 geared stepper motor
- 5V windings
- convert to bi-polar
- just one – mount on either side
- 4 x m3 x 20 mm screws
- head diameter may be constrained to ≤ 6 mm, depending on configuration
- 4 x m3 washers
- designed for 9 mm diameter
- this is a little complicated because it turns out my m3 washers are not ISO standard but “large” per DIN 9021
- ISO washers (7 mm) probably work fine
- If 7 mm doesn’t work (clamp toggle breaks around undersize washer), print new and try
- less clamping force
- m4 washer (9 mm)
- #6-32 washer (~9.5 mm)
- 2 x m3 x 8-12 mm screws
- semi-arbitrary length
- shorter may work fine
- longer will fit, up to 25 mm
- 0, 2, or 4 x m3 thumb nuts, depending on configuration chosen above
- max diameter < 12 mm (i.e. not wingnuts)
- through hole (i.e. not blind)
- string -- notes in "Hoist" part of "Step 4" in this 'ible. Or TMI.
- zip ties
- need 12
- but multiply for do-overs, dis/re-assembly, etc.
- OPTIONAL: limit switch
- nevermind screws because attached with zip tie
Build
Hopefully, between the X+Y build info and spending lots of words on preliminaries above, it will be ok for this part to be relatively sparse.
- Build the sled & tool clamp
- Bearings
- Eyeball the “V” faces of the bearing pockets for printing defects. If you press a bearing hard into a pocket while rolling it a bit, it should polish a shiny straight line on each side of the pocket. Low spots in a mostly flat pocket side are ok, but stop and look closer if the bearing is only touching a couple of high spots. These were printed in a different orientation than the X+Y parts, so you might see different kinds of defects.
- Check that zip ties fit in the four corners.
- Secure the bearings.
- You can check bearing alignment by sliding a rod through each bearing to see where it meets the other bearing on that side. It won’t be immovably rigid, but the relaxed center of its range of wiggle should land right exactly in line with the next bearing. If not, cut the bearing loose and scrutinize that corner of the sled. When both bearings on a side are solidly secured, a rod should slide smoothly through the pair.
- Clamp
- Slide the two clamp toggles through the ends of the clamp band.
- The clamp band should flex enough to slide in through the side of the sled.
- pic:
![]()
- Once the band “pops” into place, all three parts will be captive inside the sled body.
- Remember choosing how many thumb nuts to collect?
- 0 thumb nuts
- Run a screw, with washer, through each toggle into the sled body. Leave about 5 mm clearance each side.
- Attach your choice of nose clamp with two more screws and washers, leaving clearance for the nose ring.
- If convenient, this is a good time to put the nose ring on your rotary tool, fit it into the clamp and adjust the screws to moderate clamping pressure with equal gaps under the ends of the body and nose clamps. Adjust by slacking one side before tightening the other. Then back each screw out a turn to remove the tool for now.
- 2 thumb nuts
- Choose which side you want to make adjustable – probably by your favored hand.
- Drive a screw, with washer, through the other toggle into the sled body, leaving about 5 mm exposed thread.
- Drive the other screw through the sled, band, and toggle from the back of the sled. Make sure the screw actually goes through the hole in the band, so it doesn’t have to make a new hole for itself. With care to avoid stripping the plastic threads, tighten the screw head solidly against the back of the sled to jam it in place.
- Repeat for the nose clamp.
- Put washers and thumb nuts on the two exposed screws.
- For example: "fixed" on one side and adjustable on the other:
![]()
- If convenient, this is a good time to put the nose ring on your rotary tool, fit it into the clamp and adjust the “fixed” screws so that both clamps have equal gaps under their ends when you crank down the thumb nuts. Slack the thumb nuts before adjusting the “fixed” clamp ends to avoid turning the screws while they’re loaded. On the adjustable side, I’m not strong enough to crank the thumb nuts too tight. Slack the thumb nuts to remove the tool. You shouldn’t have to mess with the “fixed” side anymore.
- 4 thumb nuts
- Drive all four screws through the sled from the back, taking care to make sure the body clamp screws go through the holes in the band and toggles. With care to avoid stripping the plastic threads, tighten the screw heads solidly against the back of the sled to jam them in place.
- Put the “generic”/middle size clamp on the nose.
- Add four washers and thumb nuts to the screws.
- Adjust at will. It’s a little more fiddly to adjust both sides when changing between different size tools, but it should be pretty durable. In principle, you could swap nose clamps to match different size nose rings, but the middle-size clamp seems to fit all three rings well enough.
- 0 thumb nuts
- Bearings
- Prepare the base
- Check the three “V” saddles for the rod on the left side.
- On the right side check the short flats at the bottom of each saddle.
- Check that a straight rod lies evenly across the three saddles on each side when the base is firmly pressed to a flat surface.
- Check that the limit switch fits in place with the holes through the switch body fitting over the short locating studs.
- Check that a zip tie can clear through each location: three on each side and two for the limit switch & cable.
- Pick a side for the motor and hoist cord, and insert the two PETG motor screw inserts on that side. They should be a moderately tight press fit with their ends flush with the surrounding face of the base part.
- Feed the switch cable through the passage above the switch, zip tie the switch into place with secure but moderate tie tension to avoid crushing the switch. Secure the cable with a tie for strain relief. Pull enough tension on the tie to prevent the cable from sliding through the tie, but without cutting the insulation.
- Join the sled to the base
- Start with the middle tie on each side because those are the two that are difficult to replace without sacrificing all installed rod ties to split the slide and start over.
- Install the middle zip tie on each side, leaving the loop open enough for a rod to pass through.
- On each side: insert a rod through the lower bearing of the sled, through the loosely installed middle zip tie on that side, then through the upper bearing.
- Pull the zip tie (each side) hand tight and align the rod so that the bottom ends sit in the saddles (“V” and flat) with the rod end against the bottom end limit edge.
- Secure the two ties. While the rods are probably not impossible to move, they should be fairly difficult to slide up or down in place, and should lay evenly across the three saddles of each side when the base is pressed to a flat surface.
- When the middle ties are secure, secure the top and bottom ends of each rod.
- The right side rod should find its place on the short flats of the saddles. If the slide does not run smoothly, try nudging the right side rod either way. (The first print of this version of Z axis is apparently the first iteration of this project where the parts are stiff enough to make over-constraint a problem.)
- Prepare motor & hoist cord
- Pass the hoist cord through one of the holes in the pulley.
- See steps 14 & 15 here to secure the hoist cord to the motor shaft, then press the pulley onto the shaft. Check that the cord & knot fit inside the sharp edge of the motor case around the shaft.
- Turn the pulley shaft so that the cord exits the pulley on the back side (wire side of the motor) between top center and bottom center of rotation i.e. so that the cord will wrap 1/4 to 3/4 turn around the pulley from vertical in the installed position.
- Attach the motor with two screws (“short” to 25 mm long) into the PETG inserts. Since the holes in the motor tabs are larger than the M3 screws, the screw holes are offset from concentric with the motor mount tabs. Hold the motor down (with respect to the axis) and rotate the motor as if loaded on the pulley to set the mounting tabs firmly against the screws while tightening the screws to secure the motor.
- Tie off the hoist cord to the sled so that the sled can just touch the bottom end of travel with the pulley in the position set above.
-
MRRF 2025
07/25/2025 at 07:50 • 0 commentsLots of project log backlog to catch up on. Again. Starting with:
MRRF. Successfully after not getting there last year.
Taking this project to the Midwest RepRap Festival (MRRF) a couple of times (2022, 2023) has encouraged and enriched continuing development of the idea.
A great drone flythrough video gives a quick visual impression of the event.
MRRF is mostly about 3d printing. A very few CNC machines of ye olde subtractive nature turn up too, so they haven't kicked me out yet.
"But what is this 'RepRap'?" you might ask. Increasingly many people aware of "3d printing" won't know that personal/home/hobby/cheap/accessible 3d printing all happened under a banner called "RepRap" before it graduated to global industry. ERRF already isn't called that anymore.
Anyhow...
I didn't take any pictures (again), but Shenanigans3d stopped by while live streaming his tour of the show (1:05:32 if the link doesn't drop you in at that time).
Hustle to make some new demo widget before the show contributed to letting logs lapse here. That turned into yet another yet smaller differential gearbox -- this time with a bona fide application(!) -- which will get its own log entry here *cough*soon*cough*. Apart from Mr. Shenanigan's autofocusonsomethingelse close-up, all I've got to show for now are a couple of in-progress pix:
![]()
![]()
People, like Mr. Shenanigans, stopping to look and talk for more than a minute seems like feedback that this project is actually interesting. Just for fun, here's an interview with another guy, "Steve". His thing is interesting in its own right and he reps it well (at 26:38). Did you know about the "CLSP" scene? I for sure didn't until I went over to see what was that thing like-but-unlike a sewing machine that he had. Relevant for this paragraph: the guy in the blue T-shirt and beard beyond the interviewer's left shoulder is another more-than-a-minute visitor there looking and talking though most of the duration of Steve's interview. People even remember from prior shows. Maybe the highlight of the trip was a quiet parting handshake from an old machinist.
-
On making a "simple frame" simply
04/07/2025 at 05:59 • 0 commentsTo repeat a theme: this project focuses on the CNC mechanics, and the shortest path to building your own and making it work includes not following me down the fancy box rabbit hole. Yet. This is enough to get started:
![]()
Made from a few rough scraps, drywall screws, and eyeball "measurements" If you have access to a table saw, or some other way to make straight square cuts, you can make a slightly less haphazard version of the same thing:
![]()
Same thing but looks better if you have means to make straight square saw cuts While square parts look good, that's still only "slightly less haphazard" because the four frame parts are sized by eye with no measured dimension. Keeping it simple!
Placement of Z over X&Y
The frame's job is to hold the vertical axis over the horizontal axes. That's the relationship that matters. Here are some dimensions to help set up that relative relationship. The numbers are millimeters, but "looks like this" is close enough.
![]()
View from front; bottom edge of fixed base of Z axis about 10.5-11 cm above the deck; tool axis about 2 cm in from left edge of XY stack ![]()
View from above; vertical face for mounting the Z axis about 7cm back from the front edge of the XY stack
Left and right clearances
![]()
View from front; leave room on the right side of the XY stack for your vacuum cleaner "crevice tool"; the X axis extends 75 mm to the left, so leave 8 or 9 cm on that side
Just a little bit less simple
Closing off the lower back of the frame will go a long way to making cleanup easier.
A bit of cardboard and tape will do the job:
![]()
For just a little more effort when cutting parts, a couple more pieces cut to the same width as the vertical transverse piece will both close off the back and also make the frame significantly more stiff. And if you're going that far, a third piece across the top will add another increment of stiffness to the Z axis.
![]()
Chunky material like the 3/4" (18mm) slabs illustrated here will probably be plenty stiff enough on their own for a minimal four-piece frame. If your material is thin or otherwise uninspiring, the three extra pieces shown above can very significantly stiffen the frame. If using the narrow horizontal pieces behind the top and bottom edges of the vertical Z axis support, they should be attached along those spanwise edges as well as at their ends.
-
Discord: active and productive!
01/27/2025 at 05:04 • 0 commentsMore log catch-up...
The project subtitle includes "very DIYable". I can say so, but proving so remains for others to do.
While I've been not updating logs here, a couple of builders on Discord have completed their own "Minamil"-like machines up to first cuts. They've hit some major milestones for the project and I'm well late at saying so.
Discorder janvorli has built his machine with a proper spindle:
![]()
He started with a Dremel 300 in mind (I.e. in hand) which almost but not quite fit in the Z tool clamp. Then he found a too-good-to-pass deal on the 52mm spindle bundled with power supply etc. So there are a couple more versions of the Z sled to be found in Discord chat history, or for asking:
- slightly modified for compatibility with Dremel 300 in addition to whatever else already fit
- more modified for 52mm spindle only (& clearance for 54mm fan if present)
In the photo above, janvorli has two Z motors rigged. That didn't work. ...I think the 'why' will get its own log entry... What does work for this ~1kg spindle is a single motor and 2:1 purchase. He bored the tie-off bit out the printed part and fitted part of a 3mm smooth metal rod from an old floppy drive. The hoist cord coming down from the motor now turns around that pin with very little friction and runs back up to a screw eye screwed into the fixed base just below the motor/pulley.
![]()
At last report on Discord, janvorli had cut a couple of flat spaces:
![]()
It may not look like much but the considerable victory shown there is that, after troubleshooting his heavier Z axis and my dual motor fallacy, the two flats are milled to exactly the same depth. Big win.
I think it's important to note that janvorli is the first, that I knew of, to wade into building the 3d printed version of this "Minamil" concept. So he bore the brunt of (not) finding what I hadn't written yet, and challenging the Z axis with a load that I hadn't actually tested for real. I appreciate his help to advance the documentation, and understanding of how the Z axis really works -- and what to try next for that.
Meanwhile, Raf on Discord was building his own "Minamil" when he found that his Dremel 3000 didn't fit into the Z sled. He found a 3D model of the tool that I could use in lieu of the real tool in hand, and we had some back-and-forth about adapting the tool clamp to fit. Almost:
![]()
Then a friend of his with relevant CAD skill grafted a suitable clamp onto the base of the Z sled STL to put Raf in business. Raf also shared the new STL back to Discord. A more responsive me would already have all these modified tool clamps uploaded to the HaD project files. So please ask if you have need and don't feel like combing through Discord history. (But hey, join the Discord party anyhow!)
![]()
And here's Raf's built machine:
![]()
Yeah, the tool body clamp broke. He says it's working ok with just the nose clamp.
He too has both Z motors rigged. If we've understood janvorli's case correctly, that works for Raf, and my earlier trials, because it doesn't really need both motors to lift the spindle, so it's less vulnerable to differences between theory and reality of load sharing as currently implemented. ...more about that in the other log entry that I haven't written yet.
Raf's uploaded filename "minamil_first_try" suggests this is his first result:
![]()
Nice! I think that's a pretty big deal, in my view of the project, that someone who's not me has actually in fact worked thru the how-to write-up, such as it is, and put together a replica that, apparently, worked well enough to produce something near to intended results on the first try. Plus adapting the Z sled for a different "spindle" tool along the way.
Bravo Raf!
Both janvorli and Raf have built "corner" frames with the Z axis at 45° to the base. I feel a bit like a bad influence setting that example on my overwrought quest for compactness when a "square" frame (I.e. rectangular, like these examples of the laser cut version) would be the easier, more direct path to a working result. Anyhow, congrats to janvorli and Raf for results achieved!
I'm looking forward to seeing what they do next. How about you?
-
One minute video
01/15/2025 at 22:23 • 0 commentsA while back I made a few videos to show some of what's easier shown than said. Or believed. Since then I've: shed the Z counterweight, shifted from laser cut to 3d print construction, and changed the frame among other less visible changes. But I haven't made any new widget as photogenic as a little gearbox to prompt a new eye candy vid.
So here's one minute of simple but sharp recent work with 3d printed mechanics in the current iteration of fancy package:
I'll probably lift some tight shots from earlier videos eventually, when there's more of more recent content to mix it into. Just replacing wide shots of old stuff with wide shots of new stuff could be expedient, but then "... and here's a different machine that didn't do any of that but could have believemeIpromise" would be awkward. -
FR-2 = "wood" for very fine detail
01/13/2025 at 22:33 • 0 comments...and tough too!
![]()
In the previous entry about contacting local scale model builders to ask if they might appreciate an accessible little CNC machine, I mentioned a couple tries at making a "trail board" for a Midwest Model Shipwrights member.
People have been making scaled-down models of inconveniently large things for a long time ... and I've abandoned hope of summarizing that in a sentence. Making detailed wooden models of wooden ships stands a little aside from the model-making mainstream as we approach the 21st mid-century AD, but the venerable practice persists and practitioners gather nearby.
Wood has grain. Scaling down wooden parts has the effect of scaling up the wood's grain. Very fine grain woods mitigate that with good success well established[1]. But trying to capture finer detail at smaller scale eventually turns into trying to carve a tea set from a stack of sewer pipe.
From last time:
- I wrote about FR2 exceeding expectations as a machinable material not entirely completely unrelated to wood but with essentially no grain. "FR2" is an imprecise term for the brown resin-saturated paper board used for the cheapest, simplest circuit boards.[2] Similar material is available by other names. Contrast with FR4 which is glass fiber+epoxy and hostile stuff to work with. I'm thinking this paper+phenolic stuff looks promising for compatibility with wood model construction, but that remains untested by actual model builders -- that I know of. But maybe I'm just the last guy to get the clue. Some "phenolic paper" material is advertised for "enhanced" or "finest" machinability. "FR" = flame retardant.
- I had started off in the wrong direction with the first couple of whacks at the "trail board" example. Further information clarifies that what look like scrollwork borders of a flat board appear straight only in profile. The ornamented part is parallel with the mid-plane so it can be taken directly from the drawing. And the builder already has the structure and only needs the decoration.
So, back to the drawing board.
![]()
Then milled a patch of FR2 down to 0.3 mm thick (or so I thought, but it came out more like 0.34mm -- dunno why) and from that cut out a mirrored pair of figures using a 20°, 0.1mm Vbit. I didn't feel like testing how deep it could cut without breaking the tip or deflecting when I really wanted the best narrow cut and sharp inside corners, so I ran six passes at very conservative ~0.05mm steps down ("~" because a little more to match four Z motor half-steps). I expected that to cut through or very nearly so. But it didn't. So I ran a few more half-steps down until the bottom of the cut looked different. I was complicating this for myself by trying to cut no deeper than necessary because deeper makes the V cut wider.
![]()
![]()
When I peeled that up it turned out of that I still hadn't cut through. My current guess is that maybe the glossy surface layer has a different consistency so the top of the bottom skin looks different, but I don't know. In any case, that was initially disappointing. Then I tried sanding the remaining thickness off the uncut side, and that worked quite well.
Some beauty shots:
![]()
![]()
![]()
That's a half-millimeter scale. (labeled "MM" in CAPS and numbered by cm. :-/ )
Check out how thin the thin parts are! Earlier I didn't have any great ideas for how to avoid bending that if made from something like brass or styrene, or breaking it if possibly something like that could be cut from boxwood (which I have yet to try). That's where the FR2 works great. Not only is it possible to make those, but also to handle them. They are, of course, fragile. But so far I've been able to handle them "carefully", in the ordinary sense of "careful".
I gather that a chronic challenge / mark of skill among model builders is matching reflected pairs of parts or features like this. To demonstrate the accuracy of match, here are the two parts flipped upside-down and each fit into the hole from which its opposite was cut:
![]()
And here's the ̶r̶i̶g̶h̶t̶ ̶s̶i̶d̶e̶ starboard part on a print of the photo of the plan scaled to (nearly) match the printed ruler to a real one:
![]()
Now it remains to deliver this back to the builder for a fit check -- both practical and subjective.
A running theme that has kept this project going is exceeding expectations. Again. These two parts are very far beyond anything I had in mind at the start, and still better than I expected even after ratcheting up expectations by lots of steps since then.
=====================8<-----------------------------------------------------------------
[1] Chief among fine grain wood, as far as I know, is the proper species of boxwood grown in favorable conditions. Very much a specialty product and apparently not trivial to "just buy" the good stuff without doing some homework.
I'm sure I'd heard of "boxwood" here and there as a forgettable passing datum. I've never tried to do anything with it (yet -- I've acquired a small sample but haven't had a chance to interact with it). The reason I remember it is because I saw this a few years ago. The link gets some nice pictures but to see the thing you have to go there and make nose-prints on the display case. It's amazing regardless of the material or downer subject. The idea that it was carved in wood is ... cognitively challenging. And a) it's 500 years old, and b) in 500 years it's never been mishandled.
A wider-than-usual digression, but that's what I know about boxwood.
[2] More correctly hyphenated "FR-2". Mostly if anyone says what it is they mention "paper", "phenolic" something, and maybe a random standard related to fire. This was way too hard to find: the real, if nominally obsolete, definition from page 173 of this limited "preview" of NEMA LI 1-1998 (R2011). (<rant>The current version is jealously guarded behind a $551 paywall. What's the deal with secret standards in 2025 when dissemination doesn't require a paper mill?</rant>)
NEMA GRADE FR-2 ... is a laminated material which is constructed from a cellulosic paper combined with a phenolic resin binder. The paper is normally cotton linter or alpha cellulose, but can be manufactured from bleached kraft. The phenolic resin system is flame retardant to a minimum of UL-94 rating of V-1, and is normally plasticized to permit good punching from ambient to slightly elevated temperatures.
Military Specification: MIL-I-24768/25
IEC Specifications: 60893, PF CP 308
Grade FR-2 is used as a flame retardant, room temperature to slightly elevated temperature punching, material for use as mechanical support in electrical applications.[sic] It has good moisture and relatively low dielectric losses under conditions of adverse humidity and temperature.
It looks like the thing that mostly slides under the radar but helps us in this case is "normally plasticized" which I suspect contributes to machinability and toughness. FR-1 definition suggests it's less plasticy at room temperature.
-
Thumbnails are the windows to ... scale modeling
11/25/2024 at 01:06 • 0 commentsLog backlog got big again...
![]()
I've been plugging away at making little CNC machines and writing about it. And making little things, few of which have much use apart from tinkering with the thing-making machine. Earlier ̶t̶h̶i̶s̶ last year I randomly discovered that there are several scale modeling clubs around here, including the Midwest Model Shipwrights. Might people who actually make little things have some interest in actually using a little CNC to make actual little things for the thing they do?
Now, these Model Shipwrights are very good at making the things that they already make. And they already make all the things that they need to make model ships. And they know a lot about making model ships. Viz:
org forum journal Nautical Research Guild Model Ship World Nautical Research Journal
ISSN 0738-7245Ships of Scale Ships of Scale The MSB Journal
ISSN 1913-6943There are journals. With ISSNs. Not just one.
So I'm not going to tell these people how to model ships.
...
But I ventured to show up at a meeting with some example widgets and asked if making such things seemed like an interesting capability, and what sorts of ship model things might be interesting to make differently with a different tool.
That went well enough to gain an invitation to return, some examples of things to try, and some material samples.
Things to try that might prove interesting included a drawing of window frames, which "usually present a challenge for modelers":
![]()
That's where the window in my thumb comes from. We'll get back to that...
This post grew long before it got to the end that I had in mind at the start. It's mostly but not entirely about little windows. If I'm saying this is doable, I probably should show at least one example of process from idea to result. That said, this is more an illustration of how some ideas evolved when the tool at hand was a little CNC mill and not so much a tutorial for CAD or CAM or steps to replicate this result.
Show > Tell: What useful work could a little CNC do for a modeler of ships?
The first example I tackled was this "trail board" -- one of the pair of decorated boards that sometimes dress up the pointy (or blunt*) end of a ship.
The trail board, which I understood to be flat, looks like it runs from the stem back to a point where the hull has some breadth. I guessed that it might be oriented something like the blue and gold trail board on this model:
![]()
source: Roland's Ship Building Blog (that part is pewter, and so maybe a candidate for milling instead) Supposing so, then the profile drawing shows a projection of the board leaving two degrees of rotation to determine the correct shape. In between me asking for, and the builder of that model sending another view, he described the boards in a vertical plane. So that's down to one rotation. A first proof of concept demonstrator doesn't have to be actually correct, so I guessed and projected from the drawing to make a solid model. The yellow inch ties model scale to the drawing.
![]()
(wrong first guess -- later this will get corrected) While the ornamental figure has a convoluted outline, it appears essentially flat in the drawing. Maybe the prototype was more viney/leafy and maybe a larger scale drawing would show that. For a first whack, it's convenient to believe that it really is supposed to be flat and extrude the traced figure into a "2.5"D solid.
First articles: port & starboard figures cut from 0.001" brass glued to a chip of hardboard.
![]()
Sharp inside corners were the main challenge. These parts were received as good enough to validate the idea; next try could be sharper. In part because the underlying surface could be more nearly level -- note left end of the upper part vs right end of the lower part.
aside: At the Shipwrights' meeting where I handed over the brass figures, one of the members gave a presentation on tracing over images with precision (straight lines, round circles, symmetric symmetries, etc.). He was making decals, but it's all the same problem and process as for tracing e.g. a trail board drawing in a CAD sketch. So that group now has a recorded presentation that's right on point for CAD from drawings and other "analog" references. Alternative to cutting just the figure, here's a whole board with the figure & scrolly borders cut from 0.8mm (~0.030") styrene sheet:
![]()
Also well received.
Then, in the course of refining guesses down to usefully correct details, we figured out that a) my guesses were pretty far off, and b) in this case only the figure is needed. So that's probably as far as the whole-board example will go in this case.
Material samples included a piano key top harvested from a dead piano. For a loose test of machinability I cut a couple of backlash test patterns. Or, in this instance, more of a deflection test.
![]()
I should keep better notes on feed/speed/doc/etc -- I think I'll remember but don't. The pair on the left were cut more accurately. The pair on the right were cut more aggressively -- successfully but with more evident tool deflection. If you didn't notice, you might appreciate how that could still be "close enough" for some kinds of work. The ragged edge around the left pair was a fat-fingered step down.
Here's the cutout from the top-right corner by itself:
![]()
Yes, I know the traditional piano key top material is ... constrained. See me not typing the word into the searchable www. Anyone building for commission probably can't use it at all, and anyone building for their own enjoyment should probably make sure their next of kin know which models they can gift but not sell. And if you find an old piano carcass, keep it among friends (or find more authoritative guidance).
Back to windows
After a little looking at how divided windows are made, I noodled up...
Well, first I had to find a word for the internal dividers between window panes that, being internal divisions and not load-bearing, are not mullions. They're called muntins. I'm pretty sure I'd never heard that before.
...I noodled up an inner (back) frame with pockets for the "glass" panes and an outer (front) frame to capture the panes in the pockets of the inner frame. For sharp inside corners, I planned to cut the outer frame with a pointy v-bit. The resulting taper would give the outer frame an appearance of thinness and might even look something like glazing putty if painted, so that could be a bonus. For the inner frame I wanted to use a square end mill to cut a clean step in the frame for the "glass" to fit into, but that wouldn't cut the sharpest corners, so that part has "dogbone" clearances for a 0.015" (0.38mm) end mill to overcut the inside corners on a bet that the front frame would hide the overcuts better than it would not hide undercut corners. The recycle bin yielded some flat clear PETE which is fairly stiff with a "glassy" surface. The inner frame pockets are a little deeper than the measured thickness of the PETE.
![]()
For a first try, I cut the frame parts from more of the same styrene sheet, cut the "glass" panes from the PETE packaging material, and used thin solvent "glue" for plastic models (mainly styrene) to stick the frame parts together.
![]()
top left/right: glint/not; bottom left: inner frame with overcut corners and square profile; bottom right: outer frame with sharper inside corners and tapered profile captures the "glass" The solvent worked well to wick in between and bond the styrene frames without fouling the "glass". If you look close, you can see where some solvent-softened plastic squished a little when I squeezed too hard on one side. I think that would be not too hard to avoid if doing this again.
As a proof-of-concept, that worked well enough to prove the concept. But unpainted styrene wasn't going to fit well in a wooden ship model and I don't know how to paint that (I suppose the edge seam would be well enough hidden to permit painting before assembly -- if paint thickness didn't screw up fit of panes into pane pockets). Also at this scale the styrene frame is soft enough to be very vulnerable to, uh, plastic deformation. Some bending and straightening may have happened. So that was promising but not really satisfactory.
What other material?
Wood would work well with wooden models. But wood doesn't work well for very small features on the scale of the wood grain. Modelers use boxwood for fine stuff, and indeed I've seen some amazingly fine detail in carved boxwood, but I didn't have any and didn't find any nearby source. In any case, it seems like wooden parts would be frighteningly fragile if possible at all.
FR2 material for circuit boards is brown and made of, or at least was originally made of paper saturated with phenolic resin. So it's not entirely completely unlike wood. After wasting away the copper and most of the thickness of some copper-clad FR2 board, down to 0.7mm for the inner frame and 0.4mm for the outer, I gave that a try.
![]()
cutting ![]()
less unlike wood: inner & outer frames cut from FR2 board ![]()
all the parts ![]()
detail of PETE "glass" pane to fit into pocket in inner frame A frame-shaped pocket cut frame-deep into a bit of basswood served as an alignment jig for assembly. I had cut a similar pocket for the white plastic example above. That worked as far as lining up the parts, but having the parts lined up in a hole didn't help much. This time a deeper relief cut across the jig allowed access to spot glue two sides with the frame laid in the pocket, and to get under the frame to pry it out of the jig. The idea was that securing a spot on each side would hold the assembly together well enough to pop it out of the jig to glue around the rest of the edge.
![]()
frames and jig ![]()
frames aligned in jig ![]()
PETE "glass" panes laid into pockets in inner frame This time I used CA glue for the FR2 material. What I have is not water thin, but thin enough to wick enough between the frame edges. A tiny dab on each side. That was enough to secure the assembly so I could pull it out and glue more of the perimeter. It may have been already glued well enough to never come apart -- especially if it would be going straight into its place in the model bulkhead. But I figured this demo piece would get passed around and handled some, and even if a proof-of-concept piece doesn't have to be right it surely helps if its not broken, and I didn't want to bet that the very thin frames were stiff enough to keep the panes in place while the top and bottom were only cantilevered together from the middle, and, and, and the rationalization is strong in this one. Adding glue along the bottom edge and more of the sides went well enough. If you look rilly close at the pic below you can see where a slightly more than ideal amount of glue wicked along the horizontal muntin, but that's not a very eye-catching flaw.
Securing more of the sides left the top arch less cantilevered. I probably could have stopped there without any trouble (especially in retrospect with future knowledge of the material). But nooo... To finish off the arched top of the frame, I stuck the bottom edge back in the jig where it fit closely enough to stand upright. Handy, right? And >this< close to finished.
Yeah, um...
Here's me remembering that capillary flow is all about not needing any help from gravity:
![]()
don't dooo thaaaat... So after trying to wick away at least some of much too much glue, I decided to quit before making a worse mess and settle for a mostly successful part with a big (relative to small part) booger on top.
![]()
it's a, um, proof of concept -- nevermind the glue blob: FR2 board can be milled with results less unlike wood
Then I got distracted on a side quest that's probably a better fit for a generic "3018"-type CNC for bigger size with less concern for precision. This is already taking far too long to write up so that will be another log another day (month).
Production
The experimental windows and other parts were well received. Concept proven, it was time to make a usable set of windows per the quarter deck bulkhead drawing up the page.
In the first instance, I tried to copy some key reference lines from the drawing as near exactly as possible. Even with a rough raster image of the drawing, you can still get pretty close by zooming in tight and dropping endpoints in the middles of fat fuzzy regions. Straight lines then matched straight lines, so the practical absence of non-rectilinear distortion gave some confidence. The projection looked no worse than pretty close to square.
So I took the drawing straight from the image for the first trial parts. The three parallelogram-like windows actually have a very slight vertical taper. And the two outboard windows are very slightly taller than wide. That makes all of the divided window panes each slightly different, the frames all have a right-side-up orientation and the outboard windows differ ̶ ̶l̶e̶f̶t̶ port/starboard -- but all the differences are too slight to distinguish, but just enough to be not quite right if disregarded. For the four panes of the white prototype window I just made sure to keep them straight. Getting both the frames right side up was a little more tedious. Lots of this-way-or-that-way to see which fit the jig or each other a little better. I wasn't looking forward to managing a dozen almost but not quite identical little bits of "glass".
I don't know whether that un-squareness was real in the drawing or just distortion of the image.
So I cheated. I tweaked all the near-vertical edges to vertical, narrowing the outboard windows by 0.7% at the bottom, the starboard-inboard window by less. Lifting the bottom edges of the four "square" windows by 1.7% to made the outboard windows equilateral -- so those four frames can be inverted or swapped side-to-side. In other words, all the bits that were similar become identical & symmetric. Including all the little divided panes. Maybe that just undoes a slight distortion of the image of the drawing, I don't know. In retrospect, since the scale is at the bottom I probably should have stretched the top instead of narrowing the bottom. In any case, the differences are pretty small. It's not my model so I hope I don't presume too much by calling them insignificant for this purpose.
But even if all the little panes are multiples of just a few sizes, that's still a lot of little parts.
I imagine a common way to do this is to make the divided frame, and maybe put a bit of "glass" behind it. Since this is all about what could a model maker make differently with a different tool, I set out to make a window with the glass "in" the frame. Maybe that will look less like a frame with a bit of "glass" behind. One of a couple of reasons I started with a real "divided light" of separate panes was concern for excessively fragile, and maybe not very flat muntins spanning the opening. Dividing the panes and wicking glue in between the frames would allow the front & back parts to reinforce each other, and to keep the muntins tight to the "glass". For the styrene example, the frames seemed plastic enough that it's not hard to imagine the skinny muntins on either side of a single pane getting deformed out of flat and leaving a visible separation from the pane. The other reason will come up later.
One happy surprise was that the FR2 material proved more than sufficiently tough at this scale. Not fragile at all and quite elastic. Not stretchy elastic, but more springy than bendy or brittle. With durability and flatness pretty well solved, I ventured to try "fake" muntins front and back spanning single panes. And, in a fit of reckless abandon, slimmed the muntins from ~0.46mm (7/8"; 1:48) to ~0.4mm (3/4"; 1:48).
CAM happens here. I used Kiri:Moto (in Onshape) and G-Code2GRBL for everything on this page.
Having gained some confidence in design, material, and process, I felt pretty good about this revision. Here's the whole set cut in one go:
![]()
And the PETE "glass":
![]()
It must be possible to mill PETE more cleanly than this, but I didn't put much effort into figuring that out. The setup I used pushed material to one side of the cut leaving one clean edge. So these are cut in the direction that put the clean edge on the keeper side of each cut. In the photo above, cleaner edges are most visible in the upper left between the pair of outboard window panes, and also on the right side edges of each part in this view.
After no relief around the first jig, then some relief for the second try, this all-up jig has lots of relief around all sides of each window. It holds just the corners to allow gluing up all sides in the jig -- and horizontal to keep gravity at bay. It also supports the interior of each frame so they can be "squeezed" together without distortion.
![]()
The "corncob" mill I used for this, because it's long enough to cut through the 3/16" board, left lots of uncut fibers on the cross-grain slopes. Contrast with the clean-cut steps in the jig photos above. Just a thing to either remember or re-discover.
For a little aside here: while this project focuses on the CNC mechanics and not the fancy enclosure, cutting quite a lot of volume (relative to scale) out of that board made for a good illustration of how the enclosure & filtered negative ventilation help to make this a genuinely practical desktop tool:
![]()
All the parts:
![]()
A close look there will reveal that some of the frame parts are more "clean" than others. Bottom-left vs. top-right, for example, and the close-up below:
![]()
The frames fresh off the mill were a little fuzzy. Especially the front frames because the tip of the V-bit wasn't quite square so it left a little edge similar to mold flash. If I used the same bit again, I could cut a little extra depth through the material to get past the unsquare tip. That would make the frame a little thinner but probably not too much so. The before/after pictures show what came off the machine and then the result after burnishing with the end of a wooden toothpick.
If you didn't immediately notice the difference between "clean" and as-cut parts in the photo with the coin above, then you might see how this post-processing could be optional. I thought it made the parts look better, and this was about figuring out process as I went, so I spent some time with the toothpick and magnification. I figure that's worth showing here for the sake of realistic expectations about part quality and post-processing effort.
Up the page I described one concern that I'd had about trying "fake" muntins spanning a single window pane. Here's the other: would a visible gap between the front and back frames spoil the illusion?
(that's also an as-cut/un-burnished part)
With "glass" in place between the frames, example on the left below, comes another happy surprise: refraction closes the gap.
![]()
(besides the closed-up gap on the left, this view also shows a burnished frame on the left vs as-cut on the right)
If you've read (or at least scrolled) this far, you get to check out the finished set of five little windows:
![]()
(this set has thinner muntins that the first couple of tries -- except that I missed tweaking the arched window which still has "thick" muntins. That kept catching my eye, and it took me a while to figure out that I had in fact missed the change for that window. sorry, Bob!)
And here's the set layed out on the drawing, with a real ruler over the photographed ruler for scale:
![]()
Paul McClay






































































(that's also an as-cut/un-burnished part)

