mirror of
https://github.com/revarbat/snappy-reprap.git
synced 2025-11-02 23:56:45 -08:00
Split NEMA modules out of GDMUtils.scad. Split T-slot modules out of joiners.scad.
This commit is contained in:
211
GDMUtils.scad
211
GDMUtils.scad
@@ -634,216 +634,5 @@ module torus(or=1, ir=0.5)
|
||||
|
||||
|
||||
|
||||
module nema11_stepper(h=24, shaft=5, shaft_len=20)
|
||||
{
|
||||
motor_width = 28.2;
|
||||
plinth_height = 1.5;
|
||||
plinth_diam = 22;
|
||||
screw_spacing = 23.11;
|
||||
screw_size = 2.6;
|
||||
screw_depth = 3.0;
|
||||
|
||||
difference() {
|
||||
color([0.4, 0.4, 0.4]) {
|
||||
translate([0, 0, -h/2]) {
|
||||
rrect(size=[motor_width, motor_width, h], r=2, center=true);
|
||||
}
|
||||
}
|
||||
grid_of(
|
||||
xa = [-screw_spacing/2, screw_spacing/2],
|
||||
ya = [-screw_spacing/2, screw_spacing/2],
|
||||
za = [-screw_depth/2+0.05]
|
||||
) {
|
||||
cylinder(r=screw_size/2, h=screw_depth, center=true, $fn=8);
|
||||
}
|
||||
}
|
||||
color("silver") {
|
||||
translate([0, 0, plinth_height/2])
|
||||
cylinder(h=plinth_height, r=plinth_diam/2, center=true);
|
||||
translate([0, 0, shaft_len/2])
|
||||
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=12);
|
||||
}
|
||||
}
|
||||
//!nema11_stepper();
|
||||
|
||||
|
||||
|
||||
module nema14_stepper(h=24, shaft=5, shaft_len=24)
|
||||
{
|
||||
motor_width = 35.2;
|
||||
plinth_height = 2;
|
||||
plinth_diam = 22;
|
||||
screw_spacing = 26;
|
||||
screw_size = 3;
|
||||
screw_depth = 4.5;
|
||||
|
||||
difference() {
|
||||
color([0.4, 0.4, 0.4]) {
|
||||
translate([0, 0, -h/2]) {
|
||||
rrect(size=[motor_width, motor_width, h], r=2, center=true);
|
||||
}
|
||||
}
|
||||
grid_of(
|
||||
xa = [-screw_spacing/2, screw_spacing/2],
|
||||
ya = [-screw_spacing/2, screw_spacing/2],
|
||||
za = [-screw_depth/2+0.05]
|
||||
) {
|
||||
cylinder(r=screw_size/2, h=screw_depth, center=true, $fn=8);
|
||||
}
|
||||
}
|
||||
color("silver") {
|
||||
translate([0, 0, plinth_height/2])
|
||||
cylinder(h=plinth_height, r=plinth_diam/2, center=true);
|
||||
translate([0, 0, shaft_len/2])
|
||||
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=12);
|
||||
}
|
||||
}
|
||||
//!nema14_stepper();
|
||||
|
||||
|
||||
|
||||
module nema17_stepper(h=34, shaft=5, shaft_len=20)
|
||||
{
|
||||
motor_width = 42.3;
|
||||
plinth_height = 2;
|
||||
plinth_diam = 22;
|
||||
screw_spacing = 30.99;
|
||||
screw_size = 3;
|
||||
screw_depth = 4.5;
|
||||
|
||||
difference() {
|
||||
color([0.4, 0.4, 0.4]) {
|
||||
translate([0, 0, -h/2]) {
|
||||
rrect(size=[motor_width, motor_width, h], r=2, center=true);
|
||||
}
|
||||
}
|
||||
grid_of(
|
||||
xa = [-screw_spacing/2, screw_spacing/2],
|
||||
ya = [-screw_spacing/2, screw_spacing/2],
|
||||
za = [-screw_depth/2+0.05]
|
||||
) {
|
||||
cylinder(r=screw_size/2, h=screw_depth, center=true, $fn=8);
|
||||
}
|
||||
}
|
||||
color("silver") {
|
||||
translate([0, 0, plinth_height/2])
|
||||
cylinder(h=plinth_height, r=plinth_diam/2, center=true);
|
||||
translate([0, 0, shaft_len/2])
|
||||
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=12);
|
||||
}
|
||||
}
|
||||
//!nema17_stepper();
|
||||
|
||||
|
||||
|
||||
module nema23_stepper(h=50, shaft=6.35, shaft_len=25)
|
||||
{
|
||||
motor_width = 57.0;
|
||||
plinth_height = 1.6;
|
||||
plinth_diam = 38.1;
|
||||
screw_spacing = 47.14;
|
||||
screw_size = 5.1;
|
||||
screw_depth = 4.8;
|
||||
|
||||
screw_inset = motor_width - screw_spacing + 1;
|
||||
difference() {
|
||||
union() {
|
||||
color([0.4, 0.4, 0.4]) {
|
||||
translate([0, 0, -h/2]) {
|
||||
rrect(size=[motor_width, motor_width, h], r=2, center=true);
|
||||
}
|
||||
}
|
||||
color("silver") {
|
||||
translate([0, 0, plinth_height/2])
|
||||
cylinder(h=plinth_height, r=plinth_diam/2, center=true, $fn=32);
|
||||
translate([0, 0, shaft_len/2])
|
||||
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=24);
|
||||
}
|
||||
}
|
||||
grid_of(
|
||||
xa = [-screw_spacing/2, screw_spacing/2],
|
||||
ya = [-screw_spacing/2, screw_spacing/2]
|
||||
) {
|
||||
translate([0, 0, -screw_depth/2+1])
|
||||
cylinder(r=screw_size/2, h=screw_depth+2, center=true, $fn=12);
|
||||
translate([0, 0, -screw_depth-h/2])
|
||||
cube(size=[screw_inset, screw_inset, h], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
//!nema23_stepper();
|
||||
|
||||
|
||||
|
||||
module nema34_stepper(h=75, shaft=12.7, shaft_len=32)
|
||||
{
|
||||
motor_width = 86;
|
||||
plinth_height = 2.03;
|
||||
plinth_diam = 73.0;
|
||||
screw_spacing = 69.6;
|
||||
screw_size = 5.5;
|
||||
screw_depth = 9;
|
||||
|
||||
screw_inset = motor_width - screw_spacing + 1;
|
||||
difference() {
|
||||
union() {
|
||||
color([0.4, 0.4, 0.4]) {
|
||||
translate([0, 0, -h/2]) {
|
||||
rrect(size=[motor_width, motor_width, h], r=2, center=true);
|
||||
}
|
||||
}
|
||||
color("silver") {
|
||||
translate([0, 0, plinth_height/2])
|
||||
cylinder(h=plinth_height, r=plinth_diam/2, center=true, $fn=32);
|
||||
translate([0, 0, shaft_len/2])
|
||||
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=24);
|
||||
}
|
||||
}
|
||||
grid_of(
|
||||
xa = [-screw_spacing/2, screw_spacing/2],
|
||||
ya = [-screw_spacing/2, screw_spacing/2]
|
||||
) {
|
||||
translate([0, 0, -screw_depth/2+1])
|
||||
cylinder(r=screw_size/2, h=screw_depth+2, center=true, $fn=12);
|
||||
translate([0, 0, -screw_depth-h/2])
|
||||
cube(size=[screw_inset, screw_inset, h], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
//!nema34_stepper();
|
||||
|
||||
|
||||
|
||||
module nema17_mount_holes(depth=5, len=5)
|
||||
{
|
||||
plinth_diam = 22;
|
||||
screw_spacing = 30.99;
|
||||
screw_size = 3;
|
||||
|
||||
union() {
|
||||
grid_of(
|
||||
xa=[-screw_spacing/2, screw_spacing/2],
|
||||
ya=[-screw_spacing/2, screw_spacing/2]
|
||||
) {
|
||||
hull() {
|
||||
translate([0, -len/2, 0])
|
||||
cylinder(h=depth, r=screw_size/2, center=true, $fn=8);
|
||||
translate([0, len/2, 0])
|
||||
cylinder(h=depth, r=screw_size/2, center=true, $fn=8);
|
||||
}
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
translate([0, -len/2, 0])
|
||||
cylinder(h=depth, r=plinth_diam/2, center=true);
|
||||
translate([0, len/2, 0])
|
||||
cylinder(h=depth, r=plinth_diam/2, center=true);
|
||||
}
|
||||
}
|
||||
//!nema17_mount_holes(depth=5, len=5);
|
||||
|
||||
|
||||
|
||||
// vim: tabstop=4 noexpandtab shiftwidth=4 softtabstop=4 nowrap
|
||||
|
||||
|
||||
|
||||
216
NEMA.scad
Normal file
216
NEMA.scad
Normal file
@@ -0,0 +1,216 @@
|
||||
use <GDMUtils.scad>
|
||||
|
||||
|
||||
|
||||
module nema11_stepper(h=24, shaft=5, shaft_len=20)
|
||||
{
|
||||
motor_width = 28.2;
|
||||
plinth_height = 1.5;
|
||||
plinth_diam = 22;
|
||||
screw_spacing = 23.11;
|
||||
screw_size = 2.6;
|
||||
screw_depth = 3.0;
|
||||
|
||||
difference() {
|
||||
color([0.4, 0.4, 0.4]) {
|
||||
translate([0, 0, -h/2]) {
|
||||
rrect(size=[motor_width, motor_width, h], r=2, center=true);
|
||||
}
|
||||
}
|
||||
grid_of(
|
||||
xa = [-screw_spacing/2, screw_spacing/2],
|
||||
ya = [-screw_spacing/2, screw_spacing/2],
|
||||
za = [-screw_depth/2+0.05]
|
||||
) {
|
||||
cylinder(r=screw_size/2, h=screw_depth, center=true, $fn=8);
|
||||
}
|
||||
}
|
||||
color("silver") {
|
||||
translate([0, 0, plinth_height/2])
|
||||
cylinder(h=plinth_height, r=plinth_diam/2, center=true);
|
||||
translate([0, 0, shaft_len/2])
|
||||
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=12);
|
||||
}
|
||||
}
|
||||
//!nema11_stepper();
|
||||
|
||||
|
||||
|
||||
module nema14_stepper(h=24, shaft=5, shaft_len=24)
|
||||
{
|
||||
motor_width = 35.2;
|
||||
plinth_height = 2;
|
||||
plinth_diam = 22;
|
||||
screw_spacing = 26;
|
||||
screw_size = 3;
|
||||
screw_depth = 4.5;
|
||||
|
||||
difference() {
|
||||
color([0.4, 0.4, 0.4]) {
|
||||
translate([0, 0, -h/2]) {
|
||||
rrect(size=[motor_width, motor_width, h], r=2, center=true);
|
||||
}
|
||||
}
|
||||
grid_of(
|
||||
xa = [-screw_spacing/2, screw_spacing/2],
|
||||
ya = [-screw_spacing/2, screw_spacing/2],
|
||||
za = [-screw_depth/2+0.05]
|
||||
) {
|
||||
cylinder(r=screw_size/2, h=screw_depth, center=true, $fn=8);
|
||||
}
|
||||
}
|
||||
color("silver") {
|
||||
translate([0, 0, plinth_height/2])
|
||||
cylinder(h=plinth_height, r=plinth_diam/2, center=true);
|
||||
translate([0, 0, shaft_len/2])
|
||||
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=12);
|
||||
}
|
||||
}
|
||||
//!nema14_stepper();
|
||||
|
||||
|
||||
|
||||
module nema17_stepper(h=34, shaft=5, shaft_len=20)
|
||||
{
|
||||
motor_width = 42.3;
|
||||
plinth_height = 2;
|
||||
plinth_diam = 22;
|
||||
screw_spacing = 30.99;
|
||||
screw_size = 3;
|
||||
screw_depth = 4.5;
|
||||
|
||||
difference() {
|
||||
color([0.4, 0.4, 0.4]) {
|
||||
translate([0, 0, -h/2]) {
|
||||
rrect(size=[motor_width, motor_width, h], r=2, center=true);
|
||||
}
|
||||
}
|
||||
grid_of(
|
||||
xa = [-screw_spacing/2, screw_spacing/2],
|
||||
ya = [-screw_spacing/2, screw_spacing/2],
|
||||
za = [-screw_depth/2+0.05]
|
||||
) {
|
||||
cylinder(r=screw_size/2, h=screw_depth, center=true, $fn=8);
|
||||
}
|
||||
}
|
||||
color("silver") {
|
||||
translate([0, 0, plinth_height/2])
|
||||
cylinder(h=plinth_height, r=plinth_diam/2, center=true);
|
||||
translate([0, 0, shaft_len/2])
|
||||
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=12);
|
||||
}
|
||||
}
|
||||
//!nema17_stepper();
|
||||
|
||||
|
||||
|
||||
module nema23_stepper(h=50, shaft=6.35, shaft_len=25)
|
||||
{
|
||||
motor_width = 57.0;
|
||||
plinth_height = 1.6;
|
||||
plinth_diam = 38.1;
|
||||
screw_spacing = 47.14;
|
||||
screw_size = 5.1;
|
||||
screw_depth = 4.8;
|
||||
|
||||
screw_inset = motor_width - screw_spacing + 1;
|
||||
difference() {
|
||||
union() {
|
||||
color([0.4, 0.4, 0.4]) {
|
||||
translate([0, 0, -h/2]) {
|
||||
rrect(size=[motor_width, motor_width, h], r=2, center=true);
|
||||
}
|
||||
}
|
||||
color("silver") {
|
||||
translate([0, 0, plinth_height/2])
|
||||
cylinder(h=plinth_height, r=plinth_diam/2, center=true, $fn=32);
|
||||
translate([0, 0, shaft_len/2])
|
||||
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=24);
|
||||
}
|
||||
}
|
||||
grid_of(
|
||||
xa = [-screw_spacing/2, screw_spacing/2],
|
||||
ya = [-screw_spacing/2, screw_spacing/2]
|
||||
) {
|
||||
translate([0, 0, -screw_depth/2+1])
|
||||
cylinder(r=screw_size/2, h=screw_depth+2, center=true, $fn=12);
|
||||
translate([0, 0, -screw_depth-h/2])
|
||||
cube(size=[screw_inset, screw_inset, h], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
//!nema23_stepper();
|
||||
|
||||
|
||||
|
||||
module nema34_stepper(h=75, shaft=12.7, shaft_len=32)
|
||||
{
|
||||
motor_width = 86;
|
||||
plinth_height = 2.03;
|
||||
plinth_diam = 73.0;
|
||||
screw_spacing = 69.6;
|
||||
screw_size = 5.5;
|
||||
screw_depth = 9;
|
||||
|
||||
screw_inset = motor_width - screw_spacing + 1;
|
||||
difference() {
|
||||
union() {
|
||||
color([0.4, 0.4, 0.4]) {
|
||||
translate([0, 0, -h/2]) {
|
||||
rrect(size=[motor_width, motor_width, h], r=2, center=true);
|
||||
}
|
||||
}
|
||||
color("silver") {
|
||||
translate([0, 0, plinth_height/2])
|
||||
cylinder(h=plinth_height, r=plinth_diam/2, center=true, $fn=32);
|
||||
translate([0, 0, shaft_len/2])
|
||||
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=24);
|
||||
}
|
||||
}
|
||||
grid_of(
|
||||
xa = [-screw_spacing/2, screw_spacing/2],
|
||||
ya = [-screw_spacing/2, screw_spacing/2]
|
||||
) {
|
||||
translate([0, 0, -screw_depth/2+1])
|
||||
cylinder(r=screw_size/2, h=screw_depth+2, center=true, $fn=12);
|
||||
translate([0, 0, -screw_depth-h/2])
|
||||
cube(size=[screw_inset, screw_inset, h], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
//!nema34_stepper();
|
||||
|
||||
|
||||
|
||||
module nema17_mount_holes(depth=5, len=5)
|
||||
{
|
||||
plinth_diam = 22;
|
||||
screw_spacing = 30.99;
|
||||
screw_size = 3;
|
||||
|
||||
union() {
|
||||
grid_of(
|
||||
xa=[-screw_spacing/2, screw_spacing/2],
|
||||
ya=[-screw_spacing/2, screw_spacing/2]
|
||||
) {
|
||||
hull() {
|
||||
translate([0, -len/2, 0])
|
||||
cylinder(h=depth, r=screw_size/2, center=true, $fn=8);
|
||||
translate([0, len/2, 0])
|
||||
cylinder(h=depth, r=screw_size/2, center=true, $fn=8);
|
||||
}
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
translate([0, -len/2, 0])
|
||||
cylinder(h=depth, r=plinth_diam/2, center=true);
|
||||
translate([0, len/2, 0])
|
||||
cylinder(h=depth, r=plinth_diam/2, center=true);
|
||||
}
|
||||
}
|
||||
//!nema17_mount_holes(depth=5, len=5);
|
||||
|
||||
|
||||
|
||||
// vim: tabstop=4 noexpandtab shiftwidth=4 softtabstop=4 nowrap
|
||||
|
||||
@@ -1,6 +1,27 @@
|
||||
include <config.scad>
|
||||
use <GDMUtils.scad>
|
||||
use <joiners.scad>
|
||||
|
||||
|
||||
|
||||
module cap(r=roller_axle/2-3, h=10, wall=3, cap=2, lip=2)
|
||||
{
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,-cap/2])
|
||||
cylinder(r=r+lip+wall, h=cap, center=true, $fn=32);
|
||||
translate([0,0,h*3/8])
|
||||
cylinder(r1=r-0.5, r2=r, h=h*3/4, center=true, $fn=32);
|
||||
translate([0,0,h*7/8])
|
||||
cylinder(r1=r, r2=r-wall/2, h=h*1/4, center=true, $fn=32);
|
||||
}
|
||||
translate([0,0,h/2+1])
|
||||
cylinder(r=r-wall, h=h+1, center=true, $fn=12);
|
||||
zrot_copies([0,90]) translate([0,0,h*5/8])
|
||||
cube(size=[1,r*2,h],center=true);
|
||||
}
|
||||
}
|
||||
//cap();
|
||||
|
||||
|
||||
|
||||
module cap_parts() { // make me
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
snappy_version = 0.90;
|
||||
|
||||
|
||||
platform_length = 100;
|
||||
platform_width = 150;
|
||||
platform_height = 40;
|
||||
|
||||
60
joiners.scad
60
joiners.scad
@@ -1,6 +1,7 @@
|
||||
include <config.scad>
|
||||
use <GDMUtils.scad>
|
||||
|
||||
|
||||
module joiner(h=40, w=9, l=10, a=30, screwsize=undef, guides=true)
|
||||
{
|
||||
dmnd_height = h/2;
|
||||
@@ -81,64 +82,5 @@ module joiner(h=40, w=9, l=10, a=30, screwsize=undef, guides=true)
|
||||
|
||||
|
||||
|
||||
module lock_tab(h=30, wall=3, slop=0.0)
|
||||
{
|
||||
s1 = 2*wall-slop/2;
|
||||
s2 = wall-slop/2;
|
||||
ang = atan(((s1-s2)/2)/(h-2));
|
||||
translate([0, -(1.5*wall), 0]) union () {
|
||||
intersection() {
|
||||
yrot( ang) translate([0,0,(h+5)/2]) cube(size=[s1*2, wall-slop, h+10], center=true);
|
||||
yrot(-ang) translate([0,0,(h+5)/2]) cube(size=[s1*2, wall-slop, h+10], center=true);
|
||||
translate([0,0,(h-wall-slop)/2]) cube(size=[s1*2, wall-slop, h-wall-slop+0.05], center=true);
|
||||
}
|
||||
}
|
||||
translate([0, -(wall+slop/2)/2-0.05, (h-wall-slop)/2]) cube(size=[wall-slop, wall+slop/2+0.1, h-wall-slop+0.05], center=true);
|
||||
}
|
||||
//lock_tab(h=30, wall=2, slop=-0.9);
|
||||
|
||||
|
||||
|
||||
module lock_slot(h=30, wall=3, backing=0, slop=0.2)
|
||||
{
|
||||
s1 = 2*wall+slop/2;
|
||||
s2 = wall+slop/2;
|
||||
w = 2*s1+2*wall;
|
||||
d = wall*3+slop;
|
||||
ang = atan(((s1-s2)/2)/(h-2));
|
||||
translate([0, (d+backing)/2, 0]) difference() {
|
||||
intersection() {
|
||||
yrot( ang) translate([0, 0, (h+5)/2]) cube(size=[w, d+backing, h+10], center=true);
|
||||
yrot(-ang) translate([0, 0, (h+5)/2]) cube(size=[w, d+backing, h+10], center=true);
|
||||
translate([0, 0, h/2]) cube(size=[w, d+backing, h], center=true);
|
||||
}
|
||||
translate([0, (d+backing)/2+0.05, -0.05]) lock_tab(h=h, wall=wall, slop=-slop);
|
||||
}
|
||||
}
|
||||
//!lock_slot(h=30, wall=2, slop=0.1);
|
||||
|
||||
|
||||
|
||||
module cap(r=roller_axle/2-3, h=10, wall=3, cap=2, lip=2)
|
||||
{
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,-cap/2])
|
||||
cylinder(r=r+lip+wall, h=cap, center=true, $fn=32);
|
||||
translate([0,0,h*3/8])
|
||||
cylinder(r1=r-0.5, r2=r, h=h*3/4, center=true, $fn=32);
|
||||
translate([0,0,h*7/8])
|
||||
cylinder(r1=r, r2=r-wall/2, h=h*1/4, center=true, $fn=32);
|
||||
}
|
||||
translate([0,0,h/2+1])
|
||||
cylinder(r=r-wall, h=h+1, center=true, $fn=12);
|
||||
zrot_copies([0,90]) translate([0,0,h*5/8])
|
||||
cube(size=[1,r*2,h],center=true);
|
||||
}
|
||||
}
|
||||
//cap();
|
||||
|
||||
|
||||
|
||||
// vim: noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
include <config.scad>
|
||||
use <GDMUtils.scad>
|
||||
use <NEMA.scad>
|
||||
use <joiners.scad>
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
include <config.scad>
|
||||
use <GDMUtils.scad>
|
||||
use <NEMA.scad>
|
||||
use <joiners.scad>
|
||||
use <tslot.scad>
|
||||
use <motor_mount_plate_parts.scad>
|
||||
use <drive_gear_parts.scad>
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
include <config.scad>
|
||||
use <GDMUtils.scad>
|
||||
use <joiners.scad>
|
||||
use <tslot.scad>
|
||||
|
||||
|
||||
module rails_90deg_joint()
|
||||
|
||||
@@ -6,6 +6,7 @@ use <roller_parts.scad>
|
||||
use <cap_parts.scad>
|
||||
|
||||
|
||||
|
||||
module herringbone_rack(l=100, h=10, w=10, tooth_size=5, CA=30)
|
||||
{
|
||||
render(convexity=10) translate([-(rack_tooth_size/2), 0, 0]) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
include <config.scad>
|
||||
use <GDMUtils.scad>
|
||||
use <joiners.scad>
|
||||
use <tslot.scad>
|
||||
|
||||
|
||||
module support_leg(h=30, l=100, wall=3)
|
||||
|
||||
32
testslot_part.scad
Normal file
32
testslot_part.scad
Normal file
@@ -0,0 +1,32 @@
|
||||
include <config.scad>
|
||||
use <GDMUtils.scad>
|
||||
use <tslot.scad>
|
||||
|
||||
|
||||
module testslot(h=30, l=100, wall=3)
|
||||
{
|
||||
ang = atan((h-10)/l);
|
||||
union() {
|
||||
translate([0, -1, h/2])
|
||||
cube(size=[platform_length/2+6*wall, 5, h], center=true);
|
||||
grid_of(xa=[-platform_length/4, platform_length/4]) {
|
||||
lock_slot(h=h, wall=wall);
|
||||
}
|
||||
}
|
||||
}
|
||||
//!testslot();
|
||||
|
||||
|
||||
|
||||
module testslot_part() { // make me
|
||||
testslot();
|
||||
}
|
||||
|
||||
|
||||
|
||||
testslot_part();
|
||||
|
||||
|
||||
|
||||
// vim: noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap
|
||||
|
||||
55
tslot.scad
Normal file
55
tslot.scad
Normal file
@@ -0,0 +1,55 @@
|
||||
include <config.scad>
|
||||
use <GDMUtils.scad>
|
||||
|
||||
|
||||
|
||||
module lock_tab(h=30, wall=3, slop=0.0)
|
||||
{
|
||||
s1 = 2*wall-slop/2;
|
||||
s2 = wall-slop/2;
|
||||
ang = atan(((s1-s2)/2)/(h-2));
|
||||
translate([0, -(1.5*wall), 0]) union () {
|
||||
intersection() {
|
||||
yrot( ang) translate([0,0,(h+5)/2])
|
||||
cube(size=[s1*2, wall-2*slop, h+10], center=true);
|
||||
yrot(-ang) translate([0,0,(h+5)/2])
|
||||
cube(size=[s1*2, wall-2*slop, h+10], center=true);
|
||||
translate([0,0,(h-wall-slop)/2])
|
||||
cube(size=[s1*2, wall-2*slop, h-wall-slop+0.05], center=true);
|
||||
}
|
||||
}
|
||||
translate([0, -(wall+slop/2)/2-0.05, (h-wall-slop)/2])
|
||||
cube(size=[wall-2*slop, wall+slop/2+0.1, h-wall-slop+0.05], center=true);
|
||||
}
|
||||
//lock_tab(h=30, wall=2, slop=-0.9);
|
||||
|
||||
|
||||
|
||||
module lock_slot(h=30, wall=3, backing=0, slop=0.3)
|
||||
{
|
||||
s1 = 2*wall+slop/2;
|
||||
s2 = wall+slop/2;
|
||||
w = 2*s1+2*wall;
|
||||
d = wall*3+slop;
|
||||
ang = atan(((s1-s2)/2)/(h-2));
|
||||
translate([0, (d+backing)/2, 0]) {
|
||||
difference() {
|
||||
intersection() {
|
||||
yrot( ang) translate([0, 0, (h+5)/2])
|
||||
cube(size=[w, d+backing, h+10], center=true);
|
||||
yrot(-ang) translate([0, 0, (h+5)/2])
|
||||
cube(size=[w, d+backing, h+10], center=true);
|
||||
translate([0, 0, h/2])
|
||||
cube(size=[w, d+backing, h], center=true);
|
||||
}
|
||||
translate([0, (d+backing)/2+0.05, -0.05])
|
||||
lock_tab(h=h, wall=wall, slop=-slop);
|
||||
}
|
||||
}
|
||||
}
|
||||
//!lock_slot(h=30, wall=2, slop=0.5);
|
||||
|
||||
|
||||
|
||||
// vim: noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
include <config.scad>
|
||||
use <GDMUtils.scad>
|
||||
use <joiners.scad>
|
||||
use <tslot.scad>
|
||||
|
||||
|
||||
module xy_joiner()
|
||||
|
||||
Reference in New Issue
Block a user