Skip to content

Instantly share code, notes, and snippets.

@zef
Last active March 16, 2022 18:42
Show Gist options
  • Save zef/627e90036cb3d8f6fa40e9f1fe95a4a3 to your computer and use it in GitHub Desktop.
Save zef/627e90036cb3d8f6fa40e9f1fe95a4a3 to your computer and use it in GitHub Desktop.
// This is a 3d printable tailgate latch rod clip that fits my 1995 Toyota T100.
// intended to be printed as oriented, with the insert pin facing up
// Using dependencies helps keep me sane. Please excuse the inconvenience of installation :)
// https://github.com/revarbat/BOSL/wiki
//
// Installation instructions: https://github.com/revarbat/BOSL/wiki
include <BOSL/constants.scad>
use <BOSL/transforms.scad>
use <BOSL/shapes.scad>
// the size of the hole, my rod was about 3.2mm
rod_diameter = 3.5;
// the thin part of the insert pin
insert_diameter = 6;
insert_depth = 2.5;
// the ledged part of the insert pin
ledge_diameter = 7;
ledge_depth = 4;
// the width of the cutout in the insert pin
insert_cutout = 1.5;
// the thickness of the walls on the body of the clip.
wall_thickness = 1.8;
// extra space on either side of the insert pin cylinder
clip_padding = 2;
clip_length = 6.5;
// this defines the angle of the overhang that clips onto the rod
clip_latch_offset = 2.2;
total_length = clip_padding + rod_diameter + clip_padding + clip_length;
total_insert_height = insert_depth + ledge_depth;
clip_width = rod_diameter + wall_thickness * 2;
$fn = 50;
module insert() {
difference() {
union() {
cyl(l=ledge_depth, d1=insert_diameter, d2=ledge_diameter, center=false);
zmove(ledge_depth)
// the +wall_thickness just creates some overlap of the parts, probably not necessary but I had a problem there...
cyl(l=insert_depth+wall_thickness, d=insert_diameter, center=false);
}
zmove(total_insert_height/2)
cuboid([ledge_diameter+1, insert_cutout, total_insert_height+1]);
}
}
module clip() {
difference() {
// the main body of the clip
xmove(clip_width/-2)
cuboid([clip_width, total_length, clip_width], fillet=0.5, center=false);
// a cutout for the rod
move(y=-1, z=rod_diameter/2 + wall_thickness)
ycyl(l=total_length + 2, d=rod_diameter, center=false);
// a cutout at the front of the clip, above the insert pin.
// allows the angled rod to be inserted without difficulty
move(x=rod_diameter/-2, y=-1, z=rod_diameter/2 + wall_thickness)
cuboid([rod_diameter, total_length+1-clip_length, clip_width], center=false);
// this creates an angled opening for the rod catch
move(y=total_length/2, z=rod_diameter/2+wall_thickness)
prismoid(size1=[rod_diameter-clip_latch_offset,total_length], size2=[rod_diameter,total_length], h=rod_diameter/2+wall_thickness);
}
}
zmove(clip_width) zflip()
difference() {
insert_center_move = rod_diameter/2 + clip_padding;
union() {
clip();
move(y=insert_center_move, z=-total_insert_height)
insert();
}
// vertical cutout for the rod through clip body and the insert pin
move(z=-total_insert_height-.1, y=insert_center_move)
zcyl(l=total_insert_height + clip_width, d=rod_diameter, center=false);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment