mirror of
https://github.com/maduce/fosscad-repo.git
synced 2024-09-20 08:58:25 -04:00
259 lines
7.9 KiB
OpenSCAD
259 lines
7.9 KiB
OpenSCAD
// Decapping tray for hose collection V4 3.28.2013
|
|
// with heat shields to control warping
|
|
// fits RCBS Rock Chucker Supreme and replaces the
|
|
// factory piece, an inverted Y with 2 big feet.
|
|
// Spent primer falls in 0.5" ID clear plastic tubing
|
|
// for collection in bottle on floor or below shelf.
|
|
// Right hand version to give minimum
|
|
// interference with handling large cases.
|
|
|
|
// Held in place by ring that goes around the ram
|
|
// and rounded lug on left side.
|
|
// Remove shellholder before installing or removal
|
|
// Shorten travel of arm so case is loaded a little
|
|
// above the plastic ring. The lip on left edge
|
|
// holds the adapter to the groove in cast frame.
|
|
// Back centers the device close to ram.
|
|
// Configuration for righthand hose, only.
|
|
|
|
// prints on back with support.
|
|
// Clear ramp to hose after printing.
|
|
|
|
|
|
rotate([0,-90,0])
|
|
translate([5,0,0])
|
|
{
|
|
// draw RHnozzle
|
|
difference() {
|
|
union() {
|
|
translate([10.5,29.5,26.5])
|
|
rotate([-125,0,0])
|
|
cylinder(r1=8.8, r2=6.5, h=25,$fn=40);
|
|
translate([10.5,44.50,16])
|
|
rotate([-125,0,0])
|
|
cylinder(r1=7.8, r2=6.5, h=10,$fn=40);
|
|
}
|
|
translate([10.5,22,31.7])
|
|
rotate([-125,0,0])
|
|
cylinder(r1=5.5, r2=5, h=45,$fn=40);
|
|
}
|
|
// draw basebar
|
|
difference() {
|
|
union() {
|
|
translate([-5,-36,19])
|
|
cube([26.5,71,12]);
|
|
// hook on left side
|
|
translate([-5,-36,0])
|
|
cube([26.5,10.5,19]);
|
|
translate([-5,-30,0])
|
|
cube([19,7.5,7.5]);
|
|
translate([13.8,-35,3.7])
|
|
rotate([-90,0,0])
|
|
cylinder(r=3.7,h=12.5, $fn=20);
|
|
translate([-5,-23.6,3.7])
|
|
rotate([0,90,0])
|
|
cylinder(r=3.7, h=19,$fn=20);
|
|
|
|
|
|
// straight piece on right side
|
|
translate([-5,25,0])
|
|
cube([26.5,10,19]);
|
|
translate([-5,-5,25])
|
|
cube([5,10,40]);
|
|
}
|
|
translate([-6,-36,-7])
|
|
rotate(a=45, v=[90,0,0])
|
|
cube([30,8,8]);
|
|
translate([-6,-36,25.5])
|
|
rotate(a=45, v=[90,0,0])
|
|
cube([30,8,8]);
|
|
translate([14,20,4])
|
|
rotate([-90,0,0])
|
|
cylinder(r=3,h=24, $fn=20);
|
|
translate([-5,-25.5,13])
|
|
rotate(a=45, [45,0,90])
|
|
cube([50.5,8,8]);
|
|
translate([-6,-19,11.2])
|
|
rotate([5,0,0])
|
|
cube([65,20,8]);
|
|
translate([-6,-1,13])
|
|
rotate([-5,0,0])
|
|
cube([65,20,8]);
|
|
|
|
// SCAD feature! have to duplicate the cut
|
|
// drill cylinder to hose fitting
|
|
translate([10.5,0,47])
|
|
rotate([-125,0,0])
|
|
cylinder(r1=6, r2=5,h=55, $fn=40);
|
|
}
|
|
|
|
// draw ramring
|
|
difference() {
|
|
union() {
|
|
translate([20,-22,19])
|
|
cube([18,44,12]);
|
|
translate([35,0,19])
|
|
rotate([0,0,0])
|
|
cylinder(r=22,h=12, $fn=40);
|
|
translate([-5,-8.5,25])
|
|
rotate(a=45, v=[90,0,0])
|
|
cube([26.5,8,8]);
|
|
translate([19,-29,19])
|
|
rotate(a=45, v=[0,0,90])
|
|
cube([12,8,12]);
|
|
translate([16,21,19])
|
|
rotate(a=-45, v=[0,0,90])
|
|
cube([12,8,12]);
|
|
}
|
|
translate([35,0,18])
|
|
rotate([0,0,0])
|
|
cylinder(r1=14.2, r2=14.8,h=80, $fn=40);
|
|
translate([57,-20,13])
|
|
rotate([45,0,90])
|
|
cube([44,8,8]);
|
|
// cut the draft clearance again
|
|
translate([-6,-19,11.2])
|
|
rotate([5,0,0])
|
|
cube([65,20,8]);
|
|
translate([-6,-1,13])
|
|
rotate([-5,0,0])
|
|
cube([65,20,8]);
|
|
}
|
|
|
|
// draw righthand ramp
|
|
difference()
|
|
{
|
|
translate([-5,-9,26])
|
|
cube([26.5,44,62]);
|
|
// subtract primer catch zone
|
|
translate([2,-4.5,46])
|
|
cube([21.5,10,37]);
|
|
translate([2,3.8,39])
|
|
rotate([45,0,0])
|
|
cube([16,11,12]);
|
|
// cut away excess corner
|
|
union() {
|
|
translate([-6,10,52.5])
|
|
cube([34,30,40]);
|
|
translate([-6,59.3,18])
|
|
rotate([55,0,0])
|
|
cube([34,40,60]);
|
|
}
|
|
// drill cylinder to hose fitting
|
|
translate([10.5,0,47])
|
|
rotate([-125,0,0])
|
|
cylinder(r1=6, r2=5,h=55, $fn=16);
|
|
// relief for ram cylinder at top stroke
|
|
translate([35,0,82.5])
|
|
rotate([0,0,0])
|
|
cylinder(r1=15, r2=15,h=6, $fn=40);
|
|
}
|
|
|
|
// add on Heat Shields to reduce warping
|
|
// comment out next 7 lines to omit shields
|
|
rotate([0,90,0])
|
|
translate([-77,0.5,-5])
|
|
heat_shield_end(26,22,26,10,2,1);
|
|
rotate([90,-90,90]) translate([-3,-37.5,-5])
|
|
heat_shield_corner(10,20,26,10,2,1,90);
|
|
rotate([90,0,90]) translate([-38,-1.5,-5])
|
|
heat_shield_corner(20,20,26,10,2,1,90);
|
|
// end of shields
|
|
}
|
|
|
|
// Heat_Shield.scad
|
|
// available module calls:
|
|
// heat_shield_end(x,y,z,skirt,thickness,bridge)
|
|
// heat_shield_corner(x,y,z,skirt,thickness,bridge,angle)
|
|
//
|
|
// No intrinsic rotation. Long side +x direction
|
|
//
|
|
// Check lifting with ABS
|
|
// disposable heat shield for the end of a long bar....
|
|
//
|
|
// goes around long ends
|
|
// to prevent lifting while printing
|
|
// x, y, z are the inside dimensions
|
|
// skirt is the adhesion pad width
|
|
// thickness is the skirt thickness (nominal=1)
|
|
// bridge is the contact thickness connecting the long end
|
|
// Note: if no bridge is desired use bridge=-1
|
|
//
|
|
module heat_shield_end(x,y,z,skirt,thickness,bridge) {
|
|
translate ([0, 0, z/2]) {
|
|
// corner adhesion pads
|
|
color([ 1.0, 0, 0,]) {
|
|
translate ([x/2, y/2+skirt/2, -(z-thickness)/2]) {
|
|
cylinder (h=thickness, r=skirt/2, $fa=2, center = true);}
|
|
translate ([-x/2-skirt/2, y/2+skirt/2, -(z-thickness)/2]) {
|
|
cylinder (h=thickness, r=skirt/2, $fa=2, center = true);}
|
|
translate ([x/2, -y/2-skirt/2, -(z-thickness)/2]) {
|
|
cylinder (h=thickness, r=skirt/2, $fa=2, center = true);}
|
|
translate ([-x/2-skirt/2, -y/2-skirt/2, -(z-thickness)/2]) {
|
|
cylinder (h=thickness, r=skirt/2, $fa=2, center = true);}
|
|
// corner adhesion bars
|
|
translate ([-skirt/4, -y/2-skirt/2, -(z-thickness)/2]) {
|
|
cube(size=[x+skirt/2, skirt, thickness], center=true); }
|
|
translate ([-skirt/4, y/2+skirt/2, -(z-thickness)/2]) {
|
|
cube(size=[x+skirt/2, skirt, thickness], center=true); }
|
|
translate ([-x/2-skirt/2, 0, -(z-thickness)/2]) {
|
|
cube(size=[skirt, y+skirt, thickness], center=true); }
|
|
}
|
|
difference()
|
|
{
|
|
color([ 1, 0, 0,]) { cube(size=[x+1, y+2, z], center=true); }
|
|
translate ([1, 0, bridge+1]) {
|
|
cube(size=[x+1, y, z+2], center=true); }
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// disposable heat shield for a corner or side angle ....
|
|
//
|
|
// goes around long ends
|
|
// to prevent lifting while printing
|
|
// x, y, z are the lenghts of the x, y sections and z height
|
|
// skirt is the adhesion pad width
|
|
// thickness is the skirt thickness (nominal=1)
|
|
// bridge is the contact thickness connecting to the piece
|
|
// angle is the corner angle in degrees
|
|
//
|
|
module heat_shield_corner(x,y,z,skirt,thickness,bridge,angle) {
|
|
//
|
|
color([ 1.0, 0, 0,]) {
|
|
// x bar and pads
|
|
translate ([x/2, -0.5, z/2]) {
|
|
cube(size=[x+2, 1, z], center=true); }
|
|
translate ([x, -skirt/2, thickness/2]) {
|
|
cylinder (h=thickness, r=skirt/2, $fa=2, center = true);}
|
|
translate ([0, -skirt/2, thickness/2]) {
|
|
cylinder (h=thickness, r=skirt/2, $fa=2, center = true);}
|
|
// x skirt
|
|
translate ([x/2, -skirt/2, thickness/2]) {
|
|
cube(size=[x, skirt, thickness], center=true); }
|
|
// x bridge
|
|
translate ([x/2, 3*bridge-1, bridge/2]) {
|
|
cube(size=[x, 6*bridge, bridge], center=true); }
|
|
//
|
|
//
|
|
rotate ([0,0,angle]) {
|
|
// y bar and pads
|
|
translate ([y/2, 0.5, z/2]) {
|
|
cube(size=[y+2, 1, z], center=true); }
|
|
translate ([y, skirt/2, thickness/2]) {
|
|
cylinder (h=thickness, r=skirt/2, $fa=2, center = true);}
|
|
translate ([0, skirt/2, thickness/2]) {
|
|
cylinder (h=thickness, r=skirt/2, $fa=2, center = true);}
|
|
// y skirt
|
|
translate ([y/2, skirt/2, thickness/2]) {
|
|
cube(size=[y, skirt, thickness], center=true); }
|
|
// y bridge
|
|
translate ([y/2, -3*bridge+1, bridge/2]) {
|
|
cube(size=[y, 6*bridge, bridge], center=true); }
|
|
}
|
|
}
|
|
}
|
|
|
|
|