As part of the Thermal Lockout project, I planned to put a pair of big pushbutton switches on the end of a little Pactec box, thusly:

I was in the midst of figuring out how to clamp that tiny panel to the Sherline milling machine’s table and gnaw out those big holes, when I realized I could just print out a new panel with the holes already in place:

No muss, no fuss, no exciting chips… and no tedious corner filing, either.
The 3D model has the hole for an LED that I added later; the panel shown above acquired that hole during a brief conference with Mr Drill Press.

In actual point of fact, I had to do a bit of edge filing for the switches, as the holes came out slightly undersized. The HoleWindage setting should take care of that for the next time around. The panel was a drop-in replacement for the original: all the outside dimensions & thicknesses were spot on.
The OpenSCAD source code:
// End panel for PacTec 61191-01 box // Panel 61580-01 // Ed Nisley - KE4ZNU - Feb 2011 Layer1Z = 1.50; Layer2Z = 1.00; HoleWindage = 0.55; // approximately equal to extrusion width Protrusion = 0.1; // stick out over top and bottom SwitchOffsetX = 15.0; SwitchX = 16.0 + HoleWindage; SwitchY = 12.0 + HoleWindage; SwitchZ = Layer1Z + Layer2Z; LedR = (5.0 + HoleWindage)/2; LedZ = SwitchZ; difference() { union() { translate([0,0,Layer1Z/2]) cube([55,22.5,Layer1Z],center=true); translate([0,0,(Layer1Z + Layer2Z)/2]) cube([52.6,19.5,Layer1Z + Layer2Z],center=true); } translate([SwitchOffsetX,0,SwitchZ/2]) cube([SwitchX,SwitchY,SwitchZ + 2*Protrusion],center=true); translate([-SwitchOffsetX,0,SwitchZ/2]) cube([SwitchX,SwitchY,SwitchZ + 2*Protrusion],center=true); translate([0,0,LedZ/2]) cylinder(r=LedR,h=LedZ + 2*Protrusion,center=true,$fn=10); }