poging om autmatisch betere onderdelen voor frame te laten genereren
This commit is contained in:
parent
1fa6600c5c
commit
9b668948cd
1 changed files with 160 additions and 0 deletions
160
Frame_vertex_huxley/vertex_foot.scad
Normal file
160
Frame_vertex_huxley/vertex_foot.scad
Normal file
|
|
@ -0,0 +1,160 @@
|
||||||
|
//------------------------------------------------------------
|
||||||
|
// Huxley vertex feet for higher z and more clearance
|
||||||
|
//
|
||||||
|
// http://www.thingiverse.com/wardwouts
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//------------------------------------------------------------
|
||||||
|
// Inspired by:
|
||||||
|
// http://www.thingiverse.com/thing:19160 -- eMaker Huxley Higher Z (burtyb)
|
||||||
|
// http://www.thingiverse.com/thing:28045 -- eMaker Huxley Extended Vertex Parts (Snille)
|
||||||
|
|
||||||
|
// Length measured between the bottom feet (207 is default for emaker huxley)
|
||||||
|
baserodlength=207;
|
||||||
|
// Length measure between top vertex and feet (207 is default for emaker huxley)
|
||||||
|
siderodlength=280;
|
||||||
|
|
||||||
|
partstyle = "top"; // [top,bottom]
|
||||||
|
|
||||||
|
// size of the M6 holes
|
||||||
|
M6 = 6.5;
|
||||||
|
// thickness of the part
|
||||||
|
thickness = 14;
|
||||||
|
// distance between tear and hole
|
||||||
|
teardist = 2;
|
||||||
|
// 80 for pretty curves; 16 for quick ones
|
||||||
|
FN=80;
|
||||||
|
|
||||||
|
zaxisliftrod = sqrt(pow(siderodlength,2) - pow((baserodlength/2),2));
|
||||||
|
|
||||||
|
echo ("===========================================");
|
||||||
|
echo ("Lengths measured between the parts");
|
||||||
|
echo (str("Base rod length: ", baserodlength));
|
||||||
|
echo (str("Side rod length: ", siderodlength));
|
||||||
|
echo ("===========================================");
|
||||||
|
echo ("Shopping list (approximate size):");
|
||||||
|
echo (str("2 x ", baserodlength + 50 ,"mm M6 threaded bar for the base rods"));
|
||||||
|
echo (str("4 x ", siderodlength + 50 ,"mm M6 threaded bar for the side rods"));
|
||||||
|
echo (str("2 x ", round(zaxisliftrod + 72) ,"mm x 6mm smooth bar for the z-axis"));
|
||||||
|
echo (str("2 x ", round(zaxisliftrod + 22) ,"mm M5 threaded bar smooth bar for the z-axis"));
|
||||||
|
echo ("===========================================");
|
||||||
|
|
||||||
|
toprodangle = asin( (baserodlength/2) / siderodlength ) ;
|
||||||
|
//echo ("Top rod angle: ", toprodangle);
|
||||||
|
bottomrodangle = acos((baserodlength/2) / siderodlength ) ;
|
||||||
|
//echo ("Bottom rod angle: ", bottomrodangle);
|
||||||
|
|
||||||
|
distance = 38; // distance between the original holes
|
||||||
|
|
||||||
|
// http://www.hhofstede.nl/modules/soscastoa.htm
|
||||||
|
|
||||||
|
barlength = (distance / 2) / cos(30) ;
|
||||||
|
//echo("Length of a single bar piece: ", barlength);
|
||||||
|
|
||||||
|
module bar(){
|
||||||
|
// bar is een balkje met afgeronde uiteinden en 2 gaten
|
||||||
|
// + een tear op teardist van een van de gaten
|
||||||
|
difference(){
|
||||||
|
union(){
|
||||||
|
cylinder(h=thickness, r=thickness/2, $fn=FN);
|
||||||
|
translate([0,-thickness/2,0]){
|
||||||
|
cube([barlength,thickness,thickness]);
|
||||||
|
}
|
||||||
|
translate([barlength,0,0]){
|
||||||
|
cylinder(h=thickness, r=thickness/2, $fn=FN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
union(){
|
||||||
|
translate([0,0,-thickness/2]){
|
||||||
|
cylinder(h=thickness*2, r=M6/2, $fn=FN);
|
||||||
|
}
|
||||||
|
translate([barlength,0,0]){
|
||||||
|
translate([0,0,-thickness/2]){
|
||||||
|
cylinder(h=thickness*2, r=M6/2, $fn=FN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translate([teardist+M6,-thickness,thickness/2]){
|
||||||
|
rotate([0,0,90]){
|
||||||
|
tear(thickness*2, M6/2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module foot(){
|
||||||
|
// draw a foot which is just a bunch of cubes
|
||||||
|
// side 1
|
||||||
|
translate([-14,3,0]){ cube([16,2,thickness]); }
|
||||||
|
// side 2
|
||||||
|
translate([-14,-5,0]){ cube([16,2,thickness]); }
|
||||||
|
// bottom
|
||||||
|
translate([-16,-6,0]){ cube([2,12,thickness]); }
|
||||||
|
//top
|
||||||
|
translate([-8,-4,0]){ cube([4,8,thickness]); }
|
||||||
|
}
|
||||||
|
|
||||||
|
module mainbody(){
|
||||||
|
// in dit deel is de standaard hoek van het onderdeel altijd 120 graden
|
||||||
|
// dit omdat het standaard frame altijd hoeken van 60 graden heeft
|
||||||
|
// omdat de afstand tussen de 2 standaard gaten altijd de contante
|
||||||
|
// 'distance' afstand is roteer ik 30 graden (90 - 60)
|
||||||
|
// en wandel ik 'distance' die richting in vervolgens teken ik een bar
|
||||||
|
// 90 + 120 - 60 = 150
|
||||||
|
// (30 + 150 = 180 dus zo wordt ie omgekeerd)
|
||||||
|
// dit allemaal niet erg parametrisch, want het moet gewoon
|
||||||
|
// in het basis frame passen
|
||||||
|
bar();
|
||||||
|
footextend();
|
||||||
|
rotate([0,0,-30]){
|
||||||
|
translate([distance, 0,0 ]){
|
||||||
|
rotate([0,0,150]){
|
||||||
|
bar();
|
||||||
|
extend();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module extend(){
|
||||||
|
// we staan al goed voor de hoek van 60, dus alleen verschil
|
||||||
|
// verder roteren
|
||||||
|
if ( partstyle == "bottom" ){
|
||||||
|
rotate([0,0,60-bottomrodangle]){
|
||||||
|
translate([-barlength,0,0]){
|
||||||
|
bar();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( partstyle == "top") {
|
||||||
|
rotate([0,0,30-toprodangle]){
|
||||||
|
translate([-barlength,0,0]){
|
||||||
|
bar();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module footextend(){
|
||||||
|
if ( partstyle == "top") {
|
||||||
|
rotate([0,0,-30+toprodangle]){
|
||||||
|
translate([-barlength,0,0]){
|
||||||
|
bar();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( partstyle == "bottom" ){
|
||||||
|
foot();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module tear(height,radius){
|
||||||
|
rotate([90,0,90]){
|
||||||
|
cylinder(h=height,r=radius,$fn=FN);
|
||||||
|
rotate([0,0,45]){
|
||||||
|
cube([radius, radius, height]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mainbody();
|
||||||
Loading…
Add table
Add a link
Reference in a new issue