-
Photo Backdrop: Crossbar Improvement
The instructions for the Photo Backdrop frame (upon which we hang Mary’s quilts for photos) suggest the crossbar fits on like this:

Photo Backdrop – OEM crossbar installation The slot in the bottom is wider than the M10 stud, so the crossbar tends to flop around while assembling it overhead. I immediately replaced the wingnut with a chunky knob for better griptitude, but was never happy with how poorly the whole thing fit together.
This is dramatically better:

Photo Backdrop – fitting installed The crossbar is upside-down from the OEM instructions, but the bottom of the gray plug holds the tube firmly to the tripod while the nut seats firmly on the plug’s flat top:

Photo Backdrop – fitting top view A snippet of 3M 300LSE adhesive sheet holds the plug in place, so that’s one less thing to fiddle with on each end.
The solid model holds no surprises:

Photo Backdrop Fittings – solid model Of course, it builds with the flat end downward.
The OpenSCAD source code as a GitHub Gist:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters// Photo backdrop fitting // Ed Nisley – KE4ZNU // 2026-07-01 include <BOSL2/std.scad> Layout = "Show"; // [Build,Show] /* [Hidden] */ ID = 0; OD = 1; LENGTH = 2; HoleWindage = 0.2; Protrusion = 0.01; NumSides = 3*2*4; Clearance = 0.3; $fn=NumSides; Tube = [23.0 – HoleWindage,1*INCH,100.0]; // arbitrary length Aperture = [24.0,15.0,100.0]; // oblong nut hole, arbitrary Z Washer = [10.5,20.0,1.5]; // M10 //—– // Define things module Fitting() { difference() { union() { intersection() { xcyl(Tube[LENGTH],d=Tube[ID]); cuboid(Aperture,rounding=Aperture.y/2,edges="Z"); } cuboid([Aperture.x,Aperture.y,Tube[OD]/2],rounding=Aperture.y/2,edges="Z",anchor=BOTTOM); } cyl(Aperture.z,d=Washer[ID]); } } //—– // Build things if (Layout == "Show") { Fitting(); } if (Layout == "Build") { up(Tube[OD]/2) xrot(180) Fitting(); }