The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

The New Hotness

  • Quick-n-Easy Window Shade End Cap

    While tracking down an air leak in a living room window, I noticed one of the cellular blinds was missing an end cap, so I scanned a pair of surviving caps:

    Living Room shade end caps - level adjust
    Living Room shade end caps – level adjust

    Blow out the contrast, save as a JPG.

    Import into LightBurn:

    • Trace the outlines into paths
    • Use LightBurn’s shape optimization tool to dramatically reduce the number of nodes & smooth the outlines
    • Overlay & align the shapes
    • Export as an SVG file

    Import into Inkscape:

    • Put the paths on named layers
    • Center around an alignment mark
    • Save as an Inkscape SVG
    Living Room shade end caps - Inkscape alignment
    Living Room shade end caps – Inkscape alignment

    It is slightly tilted, but that doesn’t matter. You could devote more time to smoothing / reverse-engineering the shapes, but that doesn’t make much difference, either.

    Inkscape exports the SVG coordinates with respect to the overall page origin in the lower left corner, so when OpenSCAD imports the SVG the paths end up far away from the origin. The trick is to put a 2 mm diameter circle at a known location, center the paths around it, then have OpenSCAD use the circle’s location to recenter the paths.

    Because Inkscape uses the lower left corner of each shape as its origin, you must put the circle at (99,99) to have its center at (100,100). That is one of the many reasons you (well, I) can’t use Inkscape as a CAD program.

    Import into OpenSCAD, recenter, and extrude the shapes:

    CapCenter = [100,100];
    
    PlateThick = 1.8;       // thickness of visible end cap
    
    HolderTall = 10.0 + PlateThick;
    
    union() {
      linear_extrude(height=PlateThick)
          translate(-CapCenter)
                import("Living Room shade end caps - Inkscape.svg",layer="Exterior");
      linear_extrude(height=HolderTall)
          translate(-CapCenter)
                import("Living Room shade end caps - Inkscape.svg",layer="Retainer");
    }
    

    Which produces a solid model:

    Living Room shade end caps - solid model
    Living Room shade end caps – solid model

    Save the model as 3mf, import into PrusaSlicer, and slice:

    Living Room shade end caps - PrusaSlicer preview
    Living Room shade end caps – PrusaSlicer preview

    Making the retainer shape a little wider would be a good idea to get better infill, but it’s a slip fit into the blind (surely why it fell out long ago) and need not withstand any stress.

    Print as usual:

    Living Room shade end cap - on platform
    Living Room shade end cap – on platform

    And then It Just Works™:

    Living Room shade end cap - installed
    Living Room shade end cap – installed

    It’s sitting atop a bookcase while I finish tinkering with its window.

    All that seems like a lot of fiddling around, but it uses each program to its best advantage and it’s surprisingly easy after the first few models.