These electrical cord enclosures are designed to permanently mount on your wall, around wall outlets. They protect power cords from cat teeth around the area where cord meets socket. Pair it with surface-mount cable channels, and you have hardcover protection for the cords.
The design is useful to retro-fit electrical installations where an external electical cable is semi-permanently installed to an outlet (a “permanent” external bedside lamp, a wall-tablet power cord…).
Variations
“Single” fits around a single outlet socket (see pictures). Internal dimensions 100mm x 100mm x 70mm (depth)
“Double” fits two combined outlets (see pictures). Internal dimensions 85mm (height) x 155mm (width) x 58.6 (depth)
“Modular” (not included here… yet?) has walls composed of modular pieces which fit together like LEGOs, and can extend the width of the box to fit any number of outlets
Both designs were made around EU outlets: Schneider Renova (diameter 83mm; projecting depth 15mm). Check dimensions, and test-print the “baseplate” model to see if yours fit.
The solution consists of three major components: the “baseplate” is glued to the wall, surrounding the outlet. The “base” mounts onto the “baseplate” with 3mm bolts and forms the main body of the box. The “lid” is removable top cover, held with friction. Electrical cables use the cutouts to exit the box and have an optional “channel” cover component that's designed to be used with hardcover wall-mounted cable channels, to protect the cable at the point of exit.
Additional hardware
The design uses M3 square nuts embedded within the baseplate, and M3 bolts to fix the base to the baseplate. M3x12mm bolts for the double, M3x18mm for the single. You also need some kind of reasonably sturdy glue to fix PLA/PETG to your wall. I found a thicker, “paste”-like white glue (as ~6x 8mm x 20mm x 1mm “dabs”) worked OK. You also need a M3 Allen key.
Do not drill into your wall around the sockets, unless you're absolutely certain where the power cables are behind the wall.
Printing
Baseplate and base can be printed face-up and require no supports. Make sure supports is “None” for the prints, or you might get supports within bolt mounting holes
Lid should be printed face-down and requires no supports
Cable channel adapters require supports and you probably want to use a finer layer height to make the curved parts look nicer
The baseplate requires adding a manual printing pause midway to insert embedded mounting nuts
PLA (Prusament Vanilla White) with infill between 15%…25% should work well. Unless your feline is really motivated to get at the cables (ours lost interest as soon as some form of hardcover was installed), in that case select stronger mechanical settings
Below: correct place to pause the “baseplate” print to insert nuts.
All components can be printed as whole pieces on the Prusa Mini (remove skirt if needed).
Assembly
Apply glue to the backside of baseplate
Position baseplate around the outlet and push on the wall. If your glue is thick enough, it will stay there holding own weight. Let dry. With positioning, mind the placement of the cable outlet hole: if you have a specific cable, test fit it. Some cables have thicker protective sleeves that do not bend well, make sure your baseplate/cable positioning combo works. If there's extra height room, you probably want to leave more height to the direction the cable comes out towards (if you have downwards-facing cable sleeve, leave more room below the outlet)
Once dry, place the base (walls) on the baseplate, fix with M3 bolts. Do not overtighten the bolts. Check that bolts are not too long, otherwise they will go through the baseplate up against the wall, and push out the baseplate from the wall
Insert your electrical cable
(optional) insert cable channer adapter to the cable cutout, route the cable
Insert the lid
(optional) attach cable channel to the wall, pushing it into the cable cutout
Notes
You won't be able to fit wide adapters (Apple chargers), however you can remove the lid and baseplate to adapt for it when needed. Cat design on the lid drawn by @cats.and.servers 🐈🐈