From 7cae28682d7f87903a03a34fdda687dcd6a654ef Mon Sep 17 00:00:00 2001 From: Adrian Mariano Date: Fri, 3 Feb 2023 07:03:44 -0500 Subject: [PATCH] renamed --- hingesnaps.scad | 205 ------------------------------------------------ 1 file changed, 205 deletions(-) delete mode 100644 hingesnaps.scad diff --git a/hingesnaps.scad b/hingesnaps.scad deleted file mode 100644 index be29e5a6..00000000 --- a/hingesnaps.scad +++ /dev/null @@ -1,205 +0,0 @@ -////////////////////////////////////////////////////////////////////// -// LibFile: hingesnaps.scad -// Modules for creating snap-locking foldable hined parts. Includes the mask to create the hinge and -// modules to create the snap-locks. -// Includes: -// include -// include -// FileGroup: Parts -// FileSummary: Foldable, snap-locking parts. -////////////////////////////////////////////////////////////////////// - -// Section: Hinges and Snaps - -// Module: apply_folding_hinges_and_snaps() -// Usage: -// apply_folding_hinges_and_snaps(thick, [foldangle=], [hinges=], [snaps=], [sockets=], [snaplen=], [snapdiam=], [hingegap=], [layerheight=], [$slop=]) CHILDREN; -// Description: -// Adds snaplocks and create hinges in children at the given positions. -// Arguments: -// thick = Thickness in mm of the material to make the hinge in. -// foldangle = The interior angle in degrees of the joint to be created with the hinge. Default: 90 -// hinges = List of [LENGTH, POSITION, SPIN] for each hinge to difference from the children. -// snaps = List of [POSITION, SPIN] for each central snaplock to add to the children. -// sockets = List of [POSITION, SPIN] for each outer snaplock sockets to add to the children. -// snaplen = Length of locking snaps. -// snapdiam = Diameter/width of locking snaps. -// hingegap = Size in mm of the gap at the bottom of the hinge, to make room for folding. -// layerheight = The expected printing layer height in mm. -// --- -// $slop = increase hinge gap by twice this amount -// Example(Med): -// size=100; -// apply_folding_hinges_and_snaps( -// thick=3, foldangle=54.74, -// hinges=[ -// for (a=[0,120,240], b=[-size/2,size/4]) each [ -// [200, polar_to_xy(b,a), a+90] -// ] -// ], -// snaps=[ -// for (a=[0,120,240]) each [ -// [rot(a,p=[ size/4, 0 ]), a+90], -// [rot(a,p=[-size/2,-size/2.33]), a-90] -// ] -// ], -// sockets=[ -// for (a=[0,120,240]) each [ -// [rot(a,p=[ size/4, 0 ]), a+90], -// [rot(a,p=[-size/2, size/2.33]), a+90] -// ] -// ] -// ) { -// $fn=3; -// difference() { -// cylinder(r=size-1, h=3); -// down(0.01) cylinder(r=size/4.5, h=3.1, spin=180); -// down(0.01) for (a=[0:120:359.9]) zrot(a) right(size/2) cylinder(r=size/4.5, h=3.1); -// } -// } -module apply_folding_hinges_and_snaps(thick, foldangle=90, hinges=[], snaps=[], sockets=[], snaplen=5, snapdiam=5, hingegap=undef, layerheight=0.2) -{ - hingegap = default(hingegap, layerheight)+2*get_slop(); - difference() { - children(); - for (hinge = hinges) { - translate(hinge[1]) { - folding_hinge_mask( - l=hinge[0], thick=thick, layerheight=layerheight, - foldangle=foldangle, hingegap=hingegap, spin=hinge[2] - ); - } - } - } - for (snap = snaps) { - translate(snap[0]) { - snap_lock( - thick=thick, snaplen=snaplen, snapdiam=snapdiam, - layerheight=layerheight, foldangle=foldangle, - hingegap=hingegap, spin=snap[1] - ); - } - } - for (socket = sockets) { - translate(socket[0]) { - snap_socket( - thick=thick, snaplen=snaplen, snapdiam=snapdiam, - layerheight=layerheight, foldangle=foldangle, - hingegap=hingegap, spin=socket[1] - ); - } - } -} - - - -// Module: folding_hinge_mask() -// Usage: -// folding_hinge_mask(l, thick, [layerheight=], [foldangle=], [hingegap=], [$slop=], [anchor=], [spin=], [orient=]) [ATTACHMENTS]; -// Description: -// Creates a mask to be differenced away from a plate to create a foldable hinge. -// Center the mask at the bottom of the plate you want to make a hinge in. -// The mask will leave hinge material two `layerheight`s thick on the bottom of the hinge. -// Arguments: -// l = Length of the hinge in mm. -// thick = Thickness in mm of the material to make the hinge in. -// --- -// layerheight = The expected printing layer height in mm. -// foldangle = The interior angle in degrees of the joint to be created with the hinge. Default: 90 -// hingegap = Size in mm of the gap at the bottom of the hinge, to make room for folding. -// $slop = Increase size of hinge gap by double this amount -// anchor = Translate so anchor point is at origin (0,0,0). See [anchor](attachments.scad#subsection-anchor). Default: `CENTER` -// spin = Rotate this many degrees around the Z axis. See [spin](attachments.scad#subsection-spin). Default: `0` -// orient = Vector to rotate top towards. See [orient](attachments.scad#subsection-orient). Default: `UP` -// Example: -// folding_hinge_mask(l=100, thick=3, foldangle=60); -module folding_hinge_mask(l, thick, layerheight=0.2, foldangle=90, hingegap=undef, anchor=CENTER, spin=0, orient=UP) -{ - hingegap = default(hingegap, layerheight)+2*get_slop(); - size = [l, hingegap, 2*thick]; - size2 = [l, hingegap+2*thick*tan(foldangle/2)]; - attachable(anchor,spin,orient, size=size, size2=size2) { - up(layerheight*2) prismoid([l,hingegap], [l, hingegap+2*thick/tan(foldangle/2)], h=thick, anchor=BOT); - children(); - } -} - - -// Module: snap_lock() -// Usage: -// snap_lock(thick, [snaplen=], [snapdiam=], [layerheight=], [foldangle=], [hingegap=], [$slop=], [anchor=], [spin=], [orient=]) [ATTACHMENTS]; -// Description: -// Creates the central snaplock part. -// Arguments: -// thick = Thickness in mm of the material to make the hinge in. -// --- -// snaplen = Length of locking snaps. -// snapdiam = Diameter/width of locking snaps. -// layerheight = The expected printing layer height in mm. -// foldangle = The interior angle in degrees of the joint to be created with the hinge. Default: 90 -// hingegap = Size in mm of the gap at the bottom of the hinge, to make room for folding. -// $slop = increase size of hinge gap by double this amount -// anchor = Translate so anchor point is at origin (0,0,0). See [anchor](attachments.scad#subsection-anchor). Default: `CENTER` -// spin = Rotate this many degrees around the Z axis. See [spin](attachments.scad#subsection-spin). Default: `0` -// orient = Vector to rotate top towards. See [orient](attachments.scad#subsection-orient). Default: `UP` -// Example: -// snap_lock(thick=3, foldangle=60); -module snap_lock(thick, snaplen=5, snapdiam=5, layerheight=0.2, foldangle=90, hingegap=undef, anchor=CENTER, spin=0, orient=UP) -{ - hingegap = default(hingegap, layerheight)+2*get_slop(); - snap_x = (snapdiam/2) / tan(foldangle/2) + (thick-2*layerheight)/tan(foldangle/2) + hingegap/2; - size = [snaplen, snapdiam, 2*thick]; - attachable(anchor,spin,orient, size=size) { - back(snap_x) { - cube([snaplen, snapdiam, snapdiam/2+thick], anchor=BOT) { - attach(TOP) xcyl(l=snaplen, d=snapdiam, $fn=16); - attach(TOP) xcopies(snaplen-snapdiam/4/3) xscale(0.333) sphere(d=snapdiam*0.8, $fn=12); - } - } - children(); - } -} - - -// Module: snap_socket() -// Usage: -// snap_socket(thick, [snaplen=], [snapdiam=], [layerheight=], [foldangle=], [hingegap=], [$slop=], [anchor=], [spin=], [orient=]) [ATTACHMENTS]; -// Description: -// Creates the outside snaplock socketed part. -// Arguments: -// thick = Thickness in mm of the material to make the hinge in. -// --- -// snaplen = Length of locking snaps. -// snapdiam = Diameter/width of locking snaps. -// layerheight = The expected printing layer height in mm. -// foldangle = The interior angle in degrees of the joint to be created with the hinge. Default: 90 -// hingegap = Size in mm of the gap at the bottom of the hinge, to make room for folding. -// $slop = Increase size of hinge gap by double this amount -// anchor = Translate so anchor point is at origin (0,0,0). See [anchor](attachments.scad#subsection-anchor). Default: `CENTER` -// spin = Rotate this many degrees around the Z axis. See [spin](attachments.scad#subsection-spin). Default: `0` -// orient = Vector to rotate top towards. See [orient](attachments.scad#subsection-orient). Default: `UP` -// Example: -// snap_socket(thick=3, foldangle=60); -module snap_socket(thick, snaplen=5, snapdiam=5, layerheight=0.2, foldangle=90, hingegap=undef, anchor=CENTER, spin=0, orient=UP) -{ - hingegap = default(hingegap, layerheight)+2*get_slop(); - snap_x = (snapdiam/2) / tan(foldangle/2) + (thick-2*layerheight)/tan(foldangle/2) + hingegap/2; - size = [snaplen, snapdiam, 2*thick]; - attachable(anchor,spin,orient, size=size) { - fwd(snap_x) { - zrot_copies([0,180], r=snaplen+get_slop()) { - diff("divot") - cube([snaplen, snapdiam, snapdiam/2+thick], anchor=BOT) { - attach(TOP) xcyl(l=snaplen, d=snapdiam, $fn=16); - tag("divot") attach(TOP) left((snaplen+snapdiam/4/3)/2) xscale(0.333) sphere(d=snapdiam*0.8, $fn=12); - } - } - } - children(); - } -} - - - - -// vim: expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap