I'll echo the sentiments about 3D printer filament types already mentioned. PETG would be my choice as well, I have replaced ABS with it for most jobs.
You could use a regular CAD program but then you have to learn:
a) what shapes to pick off menus and
b) how to position, align, push, pull, prod, poke, pinch, stretch your geometric primitives and
c) possibly use a cloud-based app that will not guarentee your model will always be hosted.
That all takes some time.
Or, since you are on a vintage computer forum, you likely know something about programming. You can
programmatically create CAD models for 3D printing with a tool like OpenSCAD.
Not only that, they are inherently
parametric - ie. you define lengths, positions, radii and the like as variables. It's on Windows, Mac and Linux and open source so you are not going to have your model hostage to any app.
So, here is my basic take on the drive rail using OpenSCAD, from about an hour's doodling on a quiet Saturday morning. All measurements are just eyeballed from the two photos of the rail and are in imperial units as some people are more comfortable with those. There is plenty of room for improvement, such as a fillet between the base and the tab, or a recessed centre of the rail, or rounded corners. etc. etc.
After installing OpenSCAD (
openscad.org) just paste in the following, press
F5 to preview, and
F6 to final render. Then press the
STL button to output your model for the slicer. It's that simple.
In the slicer, the print would have the most layer strength if it were printed on its side, so the tab layers are incorporated into the rail base extrusion layers (ie. printer hot-end describes an L traversal).
Code:
// Drive rail thingy
// ALL MEASUREMENTS ARE APPROXIMATE - YOU PLUG IN THE EXACT ONES
FACETS = 100;
$fn = FACETS;
INCH = 25.4;
RAIL_LENGTH = 6.75 * INCH;
RAIL_WIDTH = 0.625 * INCH;
RAIL_THICK = 0.125 * INCH;
TAPER_WIDTH = 0.5 * INCH;
TAPER_START = 5.75 * INCH;
// Screw obround slot
SLOT_WIDTH = 0.125 * INCH;
SLOT_LENGTH = 0.5 * INCH;
// Slot positions
INTER_SLOT_GAP = 0.25 * INCH;
SLOT1_CENTRE_FROM_END = 1.5625 * INCH + SLOT_LENGTH/2;
SLOT2_CENTRE_FROM_END = 4.5625 * INCH + SLOT_LENGTH/2;
// Tab
TAB_HEIGHT = 0.625 * INCH;
TAB_WIDTH = 0.5 * INCH;
HOLE_WIDTH = 0.14 * INCH;
HOLE_LENGTH = 1/4 * INCH;
HOLE_CENTRE_FROM_BASE = 0.375 * INCH;
// Generate the model
DriveRail();
module DriveRail()
{
HalfRail();
mirror([0,1,0])
HalfRail();
}
module HalfRail()
{
linear_extrude(RAIL_THICK)
HalfRailTemplate();
HalfTab();
}
module HalfRailTemplate()
{
railPoints = [
[0,0],
[0, RAIL_WIDTH/2],
[TAPER_START, RAIL_WIDTH/2],
[RAIL_LENGTH, TAPER_WIDTH/2],
[RAIL_LENGTH, 0]
];
difference()
{
polygon(railPoints);
// Obrounds
translate([SLOT1_CENTRE_FROM_END, INTER_SLOT_GAP/2])
Obround(SLOT_LENGTH, SLOT_WIDTH);
translate([SLOT2_CENTRE_FROM_END, INTER_SLOT_GAP/2])
Obround(SLOT_LENGTH, SLOT_WIDTH);
}
}
module HalfTab()
{
difference()
{
cube([RAIL_THICK, TAB_WIDTH/2, TAB_HEIGHT]);
translate([0, 0, HOLE_CENTRE_FROM_BASE])
rotate([0,90,0])
linear_extrude(RAIL_THICK)
Obround(HOLE_LENGTH, HOLE_WIDTH);
}
}
// obround: geometric racetrack (stadium) shape
module Obround(someLength, someWidth)
{
square([someLength - someWidth, someWidth], center=true);
translate([someLength / 2 - someWidth / 2, 0, 0])
circle(r = someWidth / 2);
translate([-someLength / 2 + someWidth / 2, 0, 0])
circle(r = someWidth / 2);
}