A laptop-style power brick supplies 24 V for the MPCNC’s stepper motors, but I didn’t want it wandering around on the Basement Laboratory floor and getting in trouble, so a pair of brackets seemed in order:

They build flat on their backs to avoid support material:

The nicely rounded corners produce a very thin line of plastic on the first layer, so the model now has thicker base plates to improve the situation. A set of mouse ears would keep the tips pasted to the glass.
The OpenSCAD source code as a GitHub Gist:
| // Power Supply Brick brackets | |
| // Ed Nisley KE4ZNU 2018-02-26 | |
| Layout = "Show"; | |
| //– Extrusion parameters | |
| ThreadThick = 0.25; | |
| ThreadWidth = 0.4; | |
| HoleWindage = 0.3; // enlarge hole dia by this amount | |
| function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit); | |
| Protrusion = 0.1; // make holes look good and joints intersect properly | |
| //– Useful sizes | |
| inch = 25.4; | |
| Tap10_32 = 0.159 * inch; | |
| Clear10_32 = 0.190 * inch; | |
| Head10_32 = 0.373 * inch; | |
| Head10_32Thick = 0.110 * inch; | |
| Nut10_32Dia = 0.433 * inch; | |
| Nut10_32Thick = 0.130 * inch; | |
| ID = 0; | |
| OD = 1; | |
| LENGTH = 2; | |
| //– Bracket Dimensions | |
| Brick = [170.0,66.0,40.0]; // overall size, add details in module | |
| Socket = [30.0,24.0]; // IEC power socket | |
| Cable = [6.0,15.0]; // DC output cable ID=wire OD=strain relief | |
| WallThick = 3.0; // default wall thickness | |
| BaseThick = 4.0; | |
| Screw = [5.1,10.0,3.0]; // screw size, more-or-less 10-32, OD & LENGTH for head | |
| NumSides = 3*4; | |
| //———————- | |
| // Useful routines | |
| module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes | |
| Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2); | |
| FixDia = Dia / cos(180/Sides); | |
| cylinder(r=(FixDia + HoleWindage)/2, | |
| h=Height, | |
| $fn=Sides); | |
| } | |
| //———————- | |
| // Models | |
| module BrickMount(End="Both") { | |
| difference() { | |
| union() { | |
| hull() // main block | |
| for (i=[-1,1], j=[-1,1], k=[0,1]) | |
| translate([i*(Brick.x/2 + WallThick – WallThick), | |
| j*(Brick.y/2 + WallThick – WallThick), | |
| k*(Brick.z + WallThick – WallThick)]) | |
| sphere(r=WallThick,$fn=NumSides); | |
| hull() // screw flanges | |
| for (i=[-1,1], j=[-1,1]) | |
| translate([i*(Brick.x/2 + WallThick – BaseThick), | |
| j*(Brick.y/2 + WallThick + 2*Screw[OD] – BaseThick), | |
| 0]) | |
| sphere(r=BaseThick,$fn=NumSides); | |
| } | |
| for (i=[-1,1], j=[-1,1]) // remove screw holes | |
| translate([i*(Brick.x/2 + WallThick – Screw[OD]), | |
| j*(Brick.y/2 + WallThick + Screw[OD]), | |
| -Protrusion]) | |
| rotate(180/6) | |
| PolyCyl(Screw[ID],2*WallThick,6); | |
| translate([0,0,Brick.z/2]) // remove center part to leave ends | |
| cube([(Brick.x + 2*WallThick – 4*Screw[OD]),2*Brick.y,2*Brick.z],center=true); | |
| if (End == "Socket") | |
| translate([Brick.x/2,0,Brick.z/2]) // remove cable end to leave socket | |
| cube([(Brick.x + 2*WallThick – 4*Screw[OD]),2*Brick.y,2*Brick.z],center=true); | |
| if (End == "Cable") | |
| translate([-Brick.x/2,0,Brick.z/2]) // remove socket end to leave cable | |
| cube([(Brick.x + 2*WallThick – 4*Screw[OD]),2*Brick.y,2*Brick.z],center=true); | |
| translate([0,0,Brick.z/2 – Protrusion/2]) // remove power supply brick from interior | |
| cube(Brick + [0,0,Protrusion],center=true); | |
| translate([0,0,-Brick.z]) // remove below XY plane | |
| cube(2*Brick,center=true); | |
| translate([0,0,Brick.z/2]) // remove AC socket | |
| rotate([0,-90,0]) | |
| rotate(90) | |
| linear_extrude(height=Brick.x,convexity=2) | |
| square(Socket,center=true); | |
| translate([0,0,Brick.z/2]) // remove DC cable | |
| rotate([0,90,0]) | |
| rotate(180/8) | |
| PolyCyl(Cable[OD],Brick.x,8); | |
| translate([Brick.x/2,0,Brick.z/4 – Protrusion/2]) // … and wire slot | |
| cube([Brick.x,Cable[ID],Brick.z/2 + Protrusion],center=true); | |
| } | |
| } | |
| //———————- | |
| // Build it | |
| if (Layout == "Show") | |
| BrickMount("Both"); | |
| if (Layout == "Build") { | |
| translate([5,0,Brick.x/2 + WallThick]) | |
| rotate([0,90,0]) | |
| BrickMount("Cable"); | |
| translate([-5,0,Brick.x/2 + WallThick]) | |
| rotate([0,-90,0]) | |
| BrickMount("Socket"); | |
| } | |


















