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.

Tag: Improvements

Making the world a better place, one piece at a time

  • Tour Easy: Extended V-brake Noodle

    Tour Easy: Extended V-brake Noodle

    Although our Tour Easy recumbents use ordinary (*) V-brakes, their frame geometry doesn’t route the rear cable quite the way the brake designers expected. Mary’s Medium-Small frame always had its rear brake cable resting against the frame tube, where it bent slightly as she applied the brakes:

    Tour Easy rear V-brake layout
    Tour Easy rear V-brake layout

    That’s looking up from under the rear wheel, with the bike on a workstand, and, yeah, it’s pretty grubby down there.

    The squashed rubber boot suggests the brake arms are too close together, but that’s where they must be to hold the brake pads in the proper position, even with new pads and big spacer washers. As a result, the cable stop over on the right at the end of the noodle rests against the frame and dings the paint.

    My first thought was to add some length to the end of the noodle inside the stirrup, so I made an adapter with the ID on the noodle end matching the OD on the fitting end:

    V-brake - larger noodle - end stop adapter
    V-brake – larger noodle – end stop adapter

    Which worked poorly, because the noodle has a straight section leading up to the fitting inside the stirrup; any additional length pushes the noodle curve against the stirrup pivot and cants it out of line:

    Tour Easy rear V-brake noodle
    Tour Easy rear V-brake noodle

    I’ve been avoiding the fallback plan of building a bigger noodle for years, but finally combined a foot of 3/32 inch brass tubing, a tube bender spring, and various large-diameter round-ish objects from the Basement Warehouse Wing:

    V-brake - larger noodle - bending
    V-brake – larger noodle – bending

    I annealed the tube by running a torch along its length until the color changed to the obvious “I’m hot enough” copper color, then let it air-cool while I did something else. Brass work-hardens quickly and required two more annealings while finishing that smooth curve; as far as I know, brass doesn’t harden with the heat-and-quench cycle used for steel.

    A little more lathe work produced a replacement fitting:

    V-brake - larger noodle - end stop
    V-brake – larger noodle – end stop

    The hole is barely one diameter deep, but I think it’ll align the tube well enough for my simple needs. The failure will most likely involve having the cable chew through the inward side of the mis-aligned tube, which should become obvious in short order.

    The fitting on the OEM noodle seems to be crimped in place, but I figure my version is unlikely to fall off in normal use:

    V-brake - larger noodle vs OEM
    V-brake – larger noodle vs OEM

    Lined up thusly, you can see the reduced straight section behind my fitting and the much larger sweep out to the cable stop.

    The OEM noodle had a (presumably) PTFE liner, so I adapted a length of PTFE brake cable liner by mashing the end with various conical objects until it kinda-sorta looked like the cable stop might capture the ragged flange:

    V-brake - larger noodle - PTFE liner
    V-brake – larger noodle – PTFE liner

    Reassembling in reverse order produces a comforting sight:

    V-brake - larger noodle - installed
    V-brake – larger noodle – installed

    Despite appearances, the new noodle sits below the frame and well above the chain in normal use. In the most extreme small-small cross gearing position the chain barely clears it, but the takeup arm on the rear derailleur starts clattering enough to remind us not to do that.

    Brass is certainly not as strong as stainless (?) steel, although I think it ended up in a reasonably hard condition after all the bending. I’m certain neither of us can squeeze the brake lever enough to come anywhere close to causing a problem.

    Making a noodle was easier than I expected and, in a month or so, we’ll see how it behaves under actual riding conditions.

    (*) “Ordinary” as of many decades ago, because the design dates back to the mid-70s, when Fast Freddy Markham broke 65 mph on a rather customized Easy Racers Gold Rush.

  • Audio Amp vs. Bananas

    Audio Amp vs. Bananas

    A low-end audio power amp destined for a pair of ancient-yet-still-serviceable speakers arrived, but attempting to poke wires through the side holes of the banana jacks showed they were oriented in random directions. Back in the day, banana jacks had D-shaped shafts fitted into D-shaped panel holes, but those days are gone.

    A few minutes with screwdriver, wrench, and (tiny) punch sufficed to line up the holes for E-Z poking:

    Fosi audio amp - jack alignment
    Fosi audio amp – jack alignment

    Despite the new convenience, I decided to solder banana plugs to the speaker wires, leading to the discovery my few remaining plugs came from the very bottom of the usability barrel:

    Cheap banana plug - solder side
    Cheap banana plug – solder side

    I have no idea how one might affix a wire to that blank stub, but poking a small center drill into the brass lump produces an easily solderable recess:

    Cheap banana plug - center drilled
    Cheap banana plug – center drilled

    Dab with flux, tin, insert wire, add solder, repeat with all four plugs, and I’m set with a boomin’ system.

  • Photo Backdrop: Wingnut Upgrade

    Photo Backdrop: Wingnut Upgrade

    You’re supposed to secure the photo backdrop’s top crossbar to the uprights by fiddling with a wingnut, which you must do while reaching over your head. Emart apparently realized this operation was fraught with peril, because the package contains four wingnuts. After setting it up once, I replaced the wingnuts with finger-friendly knobs containing acorn nuts:

    Photo Backdrop - thumbscrew vs printed knob
    Photo Backdrop – thumbscrew vs printed knob

    The upright pole ends in an M10×1.5 stud, which fits the biggest acorn nuts in the Warehouse Wing.

    The knobs come from Thingiverse, although the OpenSCAD program required a bit of rework to make it compatible with the current version. Fiddling around with the Customizer parameters produced a Good Enough knob:

    M10x1.5 Acorn Nut knob - solid model
    M10x1.5 Acorn Nut knob – solid model

    I pulled the acorn nut into the knob using the upright pole hardware to keep it aligned. Spin the wingnut on the stud “backwards”, add the washer, push the nut slightly into the knob to get it started, then thread it onto the stud:

    Photo Backdrop - knob nut seating - 1
    Photo Backdrop – knob nut seating – 1

    Turn the knob to pull the nut inward until the stud hits the inside of the nut:

    Photo Backdrop - knob nut seating - 2
    Photo Backdrop – knob nut seating – 2

    Unthread the nut a bit, run the wingnut out to meet the bottom of the knob, and repeat the operation until the nut bottoms out inside the knob:

    Photo Backdrop - knob nut seated
    Photo Backdrop – knob nut seated

    Toss the wingnuts into the Warehouse Wing against later use.

    Bonus project: on the other end of the upright, you’ll find it impossible to actually lock the leg carrier against the pole:

    Photo Backdrop - tripod leg lock
    Photo Backdrop – tripod leg lock

    The plastic fitting is … generously … sized around the 25 mm OD upright pole and requires more compression than I could produce with my puny fingers. It turns out the 18 mm OD leg tube exactly fills the space available inside the fitting, so you (well, I) must squash the steel tube in order to close the fitting on the pole.

    Remove the wingnut + screw to free the end of the leg, stick an inch of the leg into the bench vise’s soft jaws, and mash gently to about 16 mm across the holes; it’ll expand slightly in the other direction. Reassemble in reverse order and discover the thumbscrew now squeezes the fitting exactly as it should.

    There might be more finishing to do when we actually hang a quilt from the stand, but at least it’s now usable.

    Sheesh and similar remarks.

  • Photo Backdrop Clamp Pad Embiggening

    Photo Backdrop Clamp Pad Embiggening

    We got a photo backdrop stand to hold Mary’s show-n-tell quilts during her quilting club meetings, but the clamps intended to hold the backdrop from the top bar don’t work quite the way one might expect. These photos snagged from the listing shows their intended use:

    Emart Photo Backdrop - clamp examples
    Emart Photo Backdrop – clamp examples

    The clamp closes on the top bar with the jaws about 15 mm apart, so you must wrap the backdrop around the bar, thereby concealing the top few inches of whatever you intended to show. This doesn’t matter for a preprinted generic backdrop or a green screen, but quilt borders have interesting detail.

    The clamps need thicker jaws, which I promptly conjured from the vasty digital deep:

    Spring Clamp Pads - PS preview
    Spring Clamp Pads – PS preview

    The original jaws fit neatly into those recesses, atop a snippet of carpet tape to prevent them from wandering off:

    Spring Clamp pads - detail
    Spring Clamp pads – detail

    They’re thick enough to meet in the middle and make the clamp’s serrated round-ish opening fit around the bar:

    Spring Clamp pads - compared
    Spring Clamp pads – compared

    With a quilt in place, the clamps slide freely along the bar:

    Spring Clamp pads - fit test
    Spring Clamp pads – fit test

    That’s a recreation based on actual events, mostly because erecting the stand wasn’t going to happen for one photo.

    To level set your expectations, the “Convenient Carry Bag” is more of a wrap than a bag, without enough fabric to completely surround its contents:

    Emart photo backdrop bag
    Emart photo backdrop bag

    I put all the clamps / hooks / doodads in a quart Ziploc baggie, which seemed like a better idea than letting them rattle around loose inside the wrap. The flimsy pair (!) of hook-n-loop straps don’t reach across the gap and, even extended with a few inches of double-sided Velcro, lack enough mojo to hold it closed against all the contents.

    It’ll suffice for our simple needs, but …

    The OpenSCAD source code as a GitHub Gist:

    // Clamp pads for Emart photo backdrop clamps
    // Ed Nisley KE4ZNU Jan 2021
    /* [Hidden] */
    ThreadThick = 0.25;
    ThreadWidth = 0.40;
    HoleWindage = 0.2;
    Protrusion = 0.1; // make holes end cleanly
    inch = 25.4;
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes
    Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);
    FixDia = Dia / cos(180/Sides);
    cylinder(d=(FixDia + HoleWindage),h=Height,$fn=Sides);
    }
    //———————-
    // Dimensions
    OEMpad = [24.0,16.0,3.0]; // original pad
    Pad = [35.0,25.0,8.0 + OEMpad.z]; // pad extension
    PadOffset = [0,-3.0,0];
    CornerRad = 3.0; // corner rounding
    Gap = 3.0;
    //———————-
    // Shape the pad
    module BigPad() {
    difference() {
    hull()
    for (i=[-1,1],j=[-1,1],k=[-1,1])
    translate([i*(Pad.x/2 – CornerRad),j*(Pad.y/2 – CornerRad),k*(Pad.z/2 – CornerRad) + Pad.z/2])
    sphere(r=CornerRad,$fn=6);
    translate(PadOffset + [0,0,Pad.z – (OEMpad.z + Protrusion)/2])
    cube(OEMpad + [HoleWindage,HoleWindage,Protrusion],center=true);
    }
    }
    //———————-
    // Build a pair
    translate([0,(Pad.y + Gap)/2,0])
    BigPad();
    translate([0,-(Pad.y + Gap)/2,0])
    rotate(180)
    BigPad();

  • Tek Circuit Computer: Cursor Milling Toolpath

    Tek Circuit Computer: Cursor Milling Toolpath

    Unlike the adhesive fixture, this setup requires a pause while milling the cursor outline to reclamp it from the front:

    Tek CC Cursor Fixture - outline rear clamp
    Tek CC Cursor Fixture – outline rear clamp

    The trick is applying the front clamp before releasing the rear clamp:

    Tek CC Cursor Fixture - outline both clamp
    Tek CC Cursor Fixture – outline both clamp

    Then continue the mission:

    Tek CC Cursor Fixture - outline front clamp
    Tek CC Cursor Fixture – outline front clamp

    Because the tool path includes cutter compensation, GCMC adds entry and exit arcs to ensure a smooth transition:

    Tek CC Cursor - Milling path
    Tek CC Cursor – Milling path

    The pix show a single cursor in the fixture while verifying the setup worked the way it should. Obviously, milling a stack of cursors eliminates a whole bunch of fiddling.

    The tweaked MillCursor function from the mostly otherwise unchanged GCMC code:

        comment("Clamp on rear half of cursor!");
    
        local cp = {p0};                                             // enter at hub tangent point
        cp += varc_ccw([0mm,-2*p0.y,-],-hr,0,0.2mm,5deg) + p0;       // arc to tangent at hub bottom
    
        cp += {[p1.x,-p1.y,-]};                                      // lower tip entry point
        cp += varc_ccw([p2.x-p1.x,-(p2.y-p1.y),-],CursorTipRadius,0,0.2mm,5deg) + [p1.x,-p1.y,-];  // arc to tip exit at p2
    
        cp += varc_ccw([p1.x-p2.x,p1.y-p2.y,-],CursorTipRadius,0,0.2mm,5deg) + p2;  // arc to tip exit at p1
    
        goto([-,-,CursorSafeZ]);
        goto([0,0,-]);
        feedrate(MillSpeed);
        tracepath_comp(cp,CutterOD/2,TPC_OLDZ + TPC_RIGHT + TPC_ARCIN + TPC_ARCOUT);
    
        comment("Clamp on front half of cursor!");
        pause();                                      // wait for reclamping
    
        p1.z = MillZ;                                //  ... set milling depth
        cp = {p1};
        cp += {p0};
                                                     // exit at hub tangent
        tracepath_comp(cp,CutterOD/2,TPC_OLDZ + TPC_RIGHT + TPC_ARCIN + TPC_ARCOUT);
    
    <<< snippage >>>
    
      goto([-,-,CursorSafeZ]);
      goto([0,0,-]);
    

    Next, scribing a nice hairline with the new fixture.

  • Tek Circuit Computer: 3D Printed Cursor Milling Fixture

    Tek Circuit Computer: 3D Printed Cursor Milling Fixture

    The original Tektronix Circuit Computer cursor was probably die-cut from a larger sheet carrying pre-printed hairlines:

    Tek CC - genuine - detail
    Tek CC – genuine – detail

    Machining a punch-and-die setup lies well beyond my capabilities, particularly given the ahem anticipated volume, so milling seems the only practical way to produce a few cursors.

    Attaching a cursor blank to a fixture with sticky tape showed that the general idea worked reasonably well:

    Tek CC - Cursor blank on fixture
    Tek CC – Cursor blank on fixture

    However, the tape didn’t have quite enough griptivity to hold the edges completely flat against milling forces (a downcut bit might have worked better) and I found myself chasing the cutter with a screwdriver to hold the cursor in place. Worse, the tape’s powerful attraction to swarf made it a single-use item.

    Some tinkering showed a single screw in the (pre-drilled) pivot hole, without adhesive underneath, lacked enough oomph to keep the far end of the cursor in place, which meant I had to think about how to hold it down with real clamps.

    Which, of course, meant conjuring a fixture from the vasty digital deep. The solid model includes the baseplate, two cutting templates, and a clamping fixture for engraving the cursor hairline:

    Cursor Fixture - build layout
    Cursor Fixture – build layout

    The perimeter of the Clamp template on the far left is 0.5 mm inside the cursor perimeter. Needing only one Clamp, I could trace it on a piece of acrylic, bandsaw it pretty close, introduce it to Mr Belt Sander for final shaping, and finally drill the hole:

    Tek CC Cursor Fixture - clamp drilling
    Tek CC Cursor Fixture – clamp drilling

    The Rough template is 1.0 mm outside the cursor perimeter, so I can trace those outlines on a PET sheet:

    Tek CC Cursor Fixture - Rough template layout
    Tek CC Cursor Fixture – Rough template layout

    Then cut the patterns with a scissors, stack ’em up, and tape the edges to keep them aligned:

    TekCC Cursor Fixture - Rough template
    TekCC Cursor Fixture – Rough template

    Align the stack by feel, apply the Clamp to hold them in place, and secure the stack with a Sherline clamp:

    Tek CC Cursor Fixture - outline rear clamp
    Tek CC Cursor Fixture – outline rear clamp

    The alert reader will note it’s no longer possible to machine the entire perimeter in one pass; more on that in a while.

    The baseplate pretty much fills the entire Sherline tooling plate. It sports several alignment pips at known offsets from the origin at the center of the pivot hole:

    Tek CC Cursor Fixture - touch-off point
    Tek CC Cursor Fixture – touch-off point

    Dropping the laser alignment dot into a convenient pip, then touching off X and Y to the known offset sets the origin without measuring anything. Four screws in the corners align the plate well enough to not worry about angular tweakage.

    The OpenSCAD source code as a GitHub Gist:

    // Machining fixtures for Tek Circuit Computer cursor
    // Ed Nisley KE4ZNU Jan 2021
    Layout = "Show"; // [Show, Build, Cursor, Clamp, Rough, Engrave]
    /* [Hidden] */
    ThreadThick = 0.25;
    ThreadWidth = 0.40;
    HoleWindage = 0.2;
    Protrusion = 0.1; // make holes end cleanly
    inch = 25.4;
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes
    Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);
    FixDia = Dia / cos(180/Sides);
    cylinder(d=(FixDia + HoleWindage),h=Height,$fn=Sides);
    }
    //———————-
    // Dimensions
    CursorHubOD = 1.0*inch; // original Tek CC was hard inch!
    CursorTipWidth = (9.0/16.0)*inch;
    CursorTipRadius = (1.0/16.0)*inch;
    CursorThick = 0.5; // plastic sheet thickness
    CutterOD = 3.175; // milling cutter dia
    CutterDepth = 2.0; // … depth of cut
    CutterLip = 0.5; // … clearance under edge
    ScribeOD = 3.0; // diamond scribe shank
    StudOC = [1.16*inch,1.16*inch]; // Sherline tooling plate grid
    StudClear = 5.0; // … screw clearance
    StudWasher = 11.0; // … washer OD
    CursorOffset = [-2*StudOC.x,0,0]; // hub center relative to fixture center
    // must have even multiples of stud spacing to put studs along centerlines
    BasePlateStuds = [6*StudOC.x,2*StudOC.y]; // fixture screws
    echo(str("Stud spacing: ",StudOC));
    CornerRad = 10.0; // corner radius
    BasePlate = [2*StudWasher + BasePlateStuds.x,2*StudWasher + BasePlateStuds.y,5.0];
    echo(str("Base Plate: ",BasePlate));
    EngravePlate = [5*StudOC.x,1.5*StudOC.y,BasePlate.z];
    echo(str("Engrave Plate: ",EngravePlate));
    TemplateThick = 6*ThreadThick;
    LegendThick = 2*ThreadThick;
    Gap = 3.0;
    //———————-
    // Import SVG of cursor outline
    // Requires our hub OD to match reality
    // Hub center at origin
    module CursorSVG(t=CursorThick,od=0) {
    hr = CursorHubOD/2;
    translate([-hr,-hr,0])
    linear_extrude(height=t,convexity=3)
    offset(r=od/2)
    import(file="/mnt/bulkdata/Project Files/Tektronix Circuit Computer/Firmware/TekCC-Cursor-Mark.svg",center=false);
    }
    //———————-
    // Milling fixture for cursor blanks
    module Fixture() {
    difference() {
    hull() // basic plate shape
    for (i=[-1,1], j=[-1,1])
    translate([i*(BasePlate.x/2 – CornerRad),j*(BasePlate.y/2 – CornerRad),0])
    cylinder(r=CornerRad,h=BasePlate.z,$fn=24);
    translate(CursorOffset + [0,0,BasePlate.z – CutterDepth])
    difference() {
    CursorSVG(CutterDepth + Protrusion,1.5*CutterOD);
    CursorSVG(CutterDepth + Protrusion,-CutterLip);
    }
    translate(CursorOffset + [0,0,BasePlate.z – 2*ThreadThick]) { // alignment pips
    for (x=[-20.0,130.0], y=[-30.0,0.0,30.0])
    translate([x,y,0])
    cylinder(d=4*ThreadWidth,h=1,$fn=6);
    for (x=[-30.0,130.0,150.0])
    translate([x,0,0])
    cylinder(d=4*ThreadWidth,h=1,$fn=6);
    }
    for (i=[-1,1], j=[-1,1]) // mounting stud holes
    translate([i*BasePlateStuds.x/2,j*BasePlateStuds.y/2,-Protrusion])
    rotate(180/6)
    PolyCyl(StudClear,BasePlate.z + 2*Protrusion,6);
    translate(CursorOffset + [0,0,-Protrusion]) // hub clamp hole
    rotate(180/6)
    PolyCyl(StudClear,BasePlate.z + 2*Protrusion,6);
    translate([2*StudOC.x,0,-Protrusion]) // tip clamp hole
    rotate(180/6)
    PolyCyl(StudClear,BasePlate.z + 2*Protrusion,6);
    for (i=[-2:2], j=[-1,1]) // side clamp holes
    translate([i*StudOC.x,j*StudOC.y,-Protrusion])
    rotate(180/6)
    PolyCyl(StudClear,BasePlate.z + 2*Protrusion,6);
    }
    }
    //———————-
    // Show-n-Tell cursor
    module Cursor() {
    difference() {
    CursorSVG(CursorThick,0.0);
    translate([0,0,-Protrusion])
    rotate(180/6)
    PolyCyl(StudClear,TemplateThick + 2*Protrusion,6);
    }
    }
    //———————-
    // Template for rough-cutting blanks
    module Rough() {
    bb = [40,12,LegendThick];
    difference() {
    CursorSVG(TemplateThick,1.0);
    translate([0,0,-Protrusion])
    rotate(180/6)
    PolyCyl(StudClear,TemplateThick + 2*Protrusion,6);
    difference() {
    translate([bb.x/2 + CursorHubOD/2,0,TemplateThick – bb.z/2 + Protrusion])
    cube(bb + [0,0,Protrusion],center=true);
    translate([bb.x/2 + CursorHubOD/2,0,TemplateThick – bb.z])
    linear_extrude(height=bb.z,convexity=10)
    text(text="Rough",size=7,spacing=1.00,font="DejaVu Sans:style:Bold",halign="center",valign="center");
    }
    }
    }
    //———————-
    // Template for aluminium clamping plate
    module Clamp() {
    bb = [40,12,LegendThick];
    difference() {
    CursorSVG(TemplateThick,-1.0);
    translate([0,0,-Protrusion])
    rotate(180/6)
    PolyCyl(StudClear,TemplateThick + 2*Protrusion,6);
    difference() {
    translate([bb.x/2 + CursorHubOD/2,0,TemplateThick – bb.z/2 + Protrusion])
    cube(bb + [0,0,Protrusion],center=true);
    translate([bb.x/2 + CursorHubOD/2,0,TemplateThick – bb.z])
    linear_extrude(height=bb.z,convexity=10)
    text(text="Clamp",size=7,spacing=1.00,font="DejaVu Sans:style:Bold",halign="center",valign="center");
    }
    }
    }
    //———————-
    // Engraving clamp
    module Engrave() {
    difference() {
    hull() // clamp outline
    for (i=[-1,1], j=[-1,1])
    translate([i*(EngravePlate.x/2 – CornerRad),j*(EngravePlate.y/2 – CornerRad),0])
    cylinder(r=CornerRad,h=EngravePlate.z,$fn=24);
    translate(CursorOffset + [0,0,-Protrusion])
    CursorSVG(CursorThick + Protrusion,0.5); // pocket for blank cursor
    translate(CursorOffset + [0,0,-Protrusion])
    rotate(180/6)
    PolyCyl(StudClear,EngravePlate.z + 2*Protrusion,6);
    translate([2*StudOC.x,0,-Protrusion])
    rotate(180/6)
    PolyCyl(StudClear,EngravePlate.z + 2*Protrusion,6);
    hull() {
    for (i=[-1,1])
    translate([i*1.5*StudOC.x,0,-Protrusion])
    PolyCyl(2*ScribeOD,EngravePlate.z + 2*Protrusion,8);
    }
    }
    }
    //———————-
    // Build it
    if (Layout == "Cursor") {
    Cursor();
    }
    if (Layout == "Clamp") {
    Clamp();
    }
    if (Layout == "Rough") {
    Rough();
    }
    if (Layout == "Engrave") {
    Engrave();
    }
    if (Layout == "Show") {
    Fixture();
    color("Green",0.3)
    translate(CursorOffset + [0,0,BasePlate.z + Protrusion])
    Cursor();
    color("Orange")
    translate(CursorOffset + [0,0,BasePlate.z + 10])
    Rough();
    color("Brown")
    translate(CursorOffset + [0,0,BasePlate.z + 20])
    Clamp();
    color("Gold")
    translate(0*CursorOffset + [0,0,BasePlate.z + 40])
    Engrave();
    }
    if (Layout == "Build"){
    rotate(90) {
    Fixture();
    translate([0,-((BasePlate.y + EngravePlate.y)/2 + Gap),EngravePlate.z])
    rotate([180,0,0])
    Engrave();
    translate(CursorOffset + [0,(BasePlate.y + CursorHubOD)/2 + Gap,0])
    Rough();
    translate(CursorOffset + [0,(BasePlate.y + 3*CursorHubOD)/2 + 2*Gap,0])
    Clamp();
    }
    }

    The original doodle with some notions and dimensions that didn’t survive contact with reality:

    Cursor Fixture doodle
    Cursor Fixture doodle

    I have no idea why the Sherline tooling plate has a 10-32 screw grid on 1.16 inch = 29.46 mm centers, but there they are.

  • Homage Tektronix Circuit Computer: Laser Printed Scales

    Homage Tektronix Circuit Computer: Laser Printed Scales

    Given the proper command-line options, GCMC can produce an SVG image and, after some Bash fiddling and a bank shot off Inkscape, the same GCMC program I’ve been using to plot Homage Tektronix Circuit Computer decks can produce laser-printed decks:

    Tek CC - laser - detail
    Tek CC – laser – detail

    Pen-plotting on yellow Astrobrights paper showed how much ink bleeds on slightly porous paper, but laser-printing the same paper produces crisp lines:

    Tek CC - laser - yellow detail
    Tek CC – laser – yellow detail

    Laser printing definitely feels like cheating, but, for comparison, here’s a Genuine Tektronix Circuit Computer:

    Tek CC - genuine - detail
    Tek CC – genuine – detail

    Plotting the decks on hard mode was definitely a learning experience!

    Obviously, my cursor engraving hand remains weak.