Tek Circuit Computer: Sawed Hairline Fixture

This is a fixture to hold a cursor for an Homage Tektronix Circuit Computer while a tiny circular saw blade cuts a narrow flat-bottomed trench:

Tek CC - sawed cursor - Sherline setup
Tek CC – sawed cursor – Sherline setup

Each of the 123 blocks is held to the Sherline tooling plate with a 10-32 SHCS in a little aluminum pin, with another threaded pin for the screw holding the fixture on the side. The minimal top clearance provided some of the motivation behind making those pins in the first place; there’s no room for the usual threaded stud sticking out of the block with a handful of washers under the nut.

The fixture has locating slots (scribbled with black Sharpie) to touch off the spindle axis and the saw blade at the XZ origin at the pivot hole center. Touching off the saw blade on the cursor surface sets Y=0, although only a few teeth will go ting, so the saw must be spinning.

I cut the first slot under manual control to a depth of 0.3 mm on a scrap cursor with a grotty engraved hairline:

Tek CC - first sawed cursor - detail
Tek CC – first sawed cursor – detail

It looks better than I expected with some red lacquer crayon scribbled into it:

Tek CC - first sawed cursor - vs scribed
Tek CC – first sawed cursor – vs scribed

A few variations of speed and depth seem inconclusive, although they look more consistent and much smoother than the diamond-drag engraved line with red fill:

Tek CC - sawed cursor test - magnified
Tek CC – sawed cursor test – magnified

The saw produces a ramp at the entry and exit which I don’t like at all, but the cut is, overall, an improvement on the diamond point.

The OpenSCAD source code as a GitHub Gist:

// Sawing fixtures for Tek Circuit Computer cursor hairline
// Ed Nisley KE4ZNU Jan 2021
// Rotated 90° and screwed to 123 blocks for sawing
Layout = "Show"; // [Show, Build, Cursor]
Gap = 4.0;
/* [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; // must match SVG hub OD
CursorThick = 0.71; // including protective layers
HairlineMin = 48.4188; // extent of hairline
HairlineMax = 97.4250;
HairlineDepth = 0.20;
PocketDepth = 0.75*CursorThick; // half above surface for taping
PocketClear = 0.25; // E-Z insertion clearance
TableOC = [1.16*inch,1.16*inch]; // Sherline tooling plate grid
BlockOC = [(9/16)*inch,(9/16)*inch]; // 123 block hole grid
BlockOffset = [(3/8)*inch,(3/8)*inch]; // .. block edge to hole center
ScrewClear = 5.0; // … screw clearance
CursorOffset = [2*BlockOC.x,0,0]; // hub center relative to leftmost screw
FixtureGrid = [5*TableOC.x,0,0]; // size in Table grid units
Screws = [ // relative to leftmost screw
[0,0,0], // on table grid
CursorOffset, // on block grid
[FixtureGrid.x,0,0] // on table grid
echo(str("Screw centers: ",Screws));
CornerRad = 10.0; // corner radius
Fixture = [2*CornerRad + FixtureGrid.x,2*CornerRad + CursorHubOD,5.0];
echo(str("Fixture plate: ",Fixture));
// Import SVG of cursor outline
// Requires our CursorHubOD to match actual cut outline
// Hub center at origin
module CursorSVG(t=CursorThick,ofs=0.0) {
hr = CursorHubOD/2;
file="/mnt/bulkdata/Project Files/Tektronix Circuit Computer/Firmware/TekCC-Cursor-Mark.svg",
// Show-n-Tell cursor
module Cursor() {
difference() {
PolyCyl(ScrewClear,CursorThick + 2*Protrusion,6);
// Sawing fixture for cursor hairline
// Plate center at origin
module Fixture() {
difference() {
hull() // basic plate shape
for (i=[-1,1], j=[-1,1])
translate([i*(Fixture.x/2 - CornerRad),j*(Fixture.y/2 - CornerRad),0])
translate([0,0,Fixture.z - ThreadThick/2 + Protrusion/2]) // will be Z=0 index
cube([2*Fixture.x,ThreadWidth,ThreadThick + Protrusion],center=true);
translate(-FixtureGrid/2) {
translate(CursorOffset + [0,0,Fixture.z - 2*PocketDepth])
difference() {
CursorSVG(2*PocketDepth + Protrusion,PocketClear);
CursorSVG(PocketDepth + Protrusion,-PocketClear);
translate([CursorOffset.x,0,Fixture.z - ThreadThick/2 + Protrusion/2]) // will be front X=0 index
cube([ThreadWidth,2*Fixture.y,ThreadThick + Protrusion],center=true);
translate([CursorOffset.x,Fixture.y/2 - ThreadThick/2 + Protrusion/2,0]) // will be top X=0 index
cube([ThreadWidth,ThreadThick + Protrusion,2*Fixture.z],center=true);
translate([CursorOffset.x + HairlineMin,0,Fixture.z - ThreadThick/2 + Protrusion/2]) // hairline min
cube([ThreadWidth,2*Fixture.y,ThreadThick + Protrusion],center=true);
translate([CursorOffset.x + HairlineMax,0,Fixture.z - ThreadThick/2 + Protrusion/2]) // hairline min
cube([ThreadWidth,2*Fixture.y,ThreadThick + Protrusion],center=true);
# translate(CursorOffset + [0,0,Fixture.z - 2*ThreadThick]) { // alignment pips
for (x=[-20.0,130.0], y=[-30.0,0.0,30.0])
# for (x=[-30.0,130.0,150.0])
for (pt=Screws)
translate(pt + [0,0,-Protrusion])
PolyCyl(ScrewClear,Fixture.z + 2*Protrusion,6);
// Build it
if (Layout == "Cursor") {
if (Layout == "Show") {
rotate([0*90,0,0]) {
translate(-FixtureGrid/2 + CursorOffset + [0,0,Fixture.z + Gap])
if (Layout == "Build"){
// rotate(90)

11 thoughts on “Tek Circuit Computer: Sawed Hairline Fixture

  1. Maybe not for this, but I was also recently looking for a small kerf cutoff blade. There were many possible options on eBay suitable for the Sherline 1/2″ arbor and they were cheaper (~$12) than these Dremel type ones. You’d expect better runout and other specs from them.

  2. Oh. Another option would be to get a teeny mill bit (I like Bits & Bits) which would likely yield perfection. As long as it doesn’t break. They have surplus, never-used 0.012″ bits for $8.

    1. I’m messing around with a hideously sharp V bit intended for engraving, with the benefit of not being as terrifyingly fragile as those teeny carbide cutters. Made some serious messes, but there’s some hope breaking through.

    1. That would violate the fatwā concerning open-air lasing …

      Also, I think UV lasers don’t work on (most?) transparent plastics, which are only opaque to 10 µm IR from CO₂ lasers, but I admit to not knowing much on the subject.

      1. It ssounds as if 1.06um (fiber laser–not familiar with it) would engrave, not cut.

        Agreed with the fatwa. My eyes have seen enough, thank you.

        FWIW, I took my ham exams this evening. All three (minor historical moment). Let’s just say I’m incredibly happy with the score. One or two educated guesses (regulations) let me get a perfect record. As far as they could tell, that was a first for the test group. That was a month of solid study and recalling what undergrad material that was actually relevant.

        1. From what little I’ve seen on Amazon, fiber lasers seem intended for marking, rather than cutting, and cost far more than my toy budget allows for a few hairlines. Unless, of course, I wanted to compete in the market for slide rule replacement parts, in which it’s all about market share!

          Congrats on the exams! Even though they’re run by folks who want you to pass, scraping all the knowledge into one pile still takes plenty of effort. Next step: antenna farm!

          1. Going to be an antenna garden, I think. [grin] The budget is a hard nope on a tower, so there’s a multiband vertical waiting for a tilt bracket. That’s waiting on FedEx to break the logjam at their terminal at the far end of the state.

            Of course, digging a hole this time of year is more interesting than I’d like. The tractor’s auger will do the job, once the mud/ice/shale mix turns into something more suitable. Particularly something that doesn’t try to eat the tractor.

            A low elevation dipole might be useful for short distance skip. There are some handy trees nearby.

Comments are closed.