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.

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.

Comments

One response to “Quick-n-Easy Window Shade End Cap”

  1. HQ Sixteen: Electronics Pod Solid Model – The Smell of Molten Projects in the Morning Avatar

    […] do not know what changed or if, in fact, my misunderstanding of how things worked required the previous workaround, but this is much better. The OpenSCAD code includes a [0,0] offset value, should you need […]