Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
executable file 150 lines (123 sloc) 5.02 KB
#!/usr/bin/perl -w
# $URL$
# $Id$
#
# top brace plate for mini-kossel
#
# Extrusion is (ideally) 240mm. Inside triangle formed by
# extrusion is (ideally) 269.445mm
require 'laserPartsUtil.pl';
# get this from file name to make SURE it matches
($wmm,$hmm) = &parseSizeFromFileName($0);
&printLaserCutHeader($wmm,$hmm);
$pi = 3.14159265359;
$deg2rad = $pi / 180;
$s60 = sin(60*$deg2rad);
$iLen = 240 + 2 * 30*$s60; # inside length of triangle (sin(60)==cos(30))
$rCurve = 4; # radius of curves
$truncOffset = 69; # how far back from vertex do we want curve
$extWidth = 15; # extrusion width
$borderWidth = $extWidth; # width of border past inside iLen triangle
$boltOffset = 61; # dist from corner of extrusion centerline triangle to put first bolt
$pulleyInsetFromInsideVertex = 45; # approx. needs calibration
$pulleyBoltSep = 12; # from pulleyHolder.scad
$pulleyBraceLen = 40;
$pulleyBraceRad = 8;
$oLen = $iLen + 2*2*$borderWidth*$s60; # outside triangle length
$sLen = $iLen + 2* $extWidth*$s60; # extrusion slot centerline triangle len
local $yLo = (sin(30*$deg2rad)/cos(30*$deg2rad)) * ($oLen/2);
local $h = sqrt(3) * $oLen / 2;
print STDERR "yLo $yLo\n";
printf("<g transform='translate(%.3f,%.3f)'>\n",$wmm/2,$hmm*0.65);
local $iyLo = $yLo-$borderWidth;
local $yHi = $yLo-$h;
local $iyHi = $yHi + 2 * $borderWidth;
# Slot center line
local $syLo = (sin(30*$deg2rad)/cos(30*$deg2rad)) * ($sLen/2);
local $sh = sqrt(3) * $sLen / 2;
local $syHi = $syLo-$sh;
&printEquilateralTriangle($oLen, $yLo,$ yHi); # outside border of plate
&printEquilateralTriangle($iLen,$iyLo,$iyHi); # inside border of extrusion
&printEquilateralTriangle($sLen,$syLo,$syHi); # centerline of extrusion slot
&printTruncTriangle(0,0,0,$oLen,$truncOffset,$rCurve);
$r3 = 2.94/2 - 0.1; # radius for hole for M3 screw
local $br = (($iLen/2) / $s60) - $pulleyInsetFromInsideVertex;
#print STDERR "iLen = $iLen\npulley bolt radius = $br\n";
&plotPulleyBoltHoles($br, 0,$pulleyBoltSep);
&plotPulleyBoltHoles($br, 120,$pulleyBoltSep);
&plotPulleyBoltHoles($br,-120,$pulleyBoltSep);
### braces for pulley bolts
local $pbr = $pulleyBraceRad;
local $pbd = 2*$pulleyBoltSep;
local $pbl = $pulleyBraceLen;
local $x0 = -60.4;
local $y0 = -110;
local $pd = $pulleyBraceLen + 2*$pulleyBraceRad + 0.2;
&plotBrace($x0,$y0,120,$r3,$pbr,$pbd,$pbl); $x0 -= 0.5*$pd; $y0 += $s60*$pd;
&plotBrace($x0,$y0,120,$r3,$pbr,$pbd,$pbl); $x0 -= 0.5*$pd; $y0 += $s60*$pd;
&plotBrace($x0,$y0,120,$r3,$pbr,$pbd,$pbl);
#&plotBrace(0,-$br,180,$r3,$pbr,$pbd,$pbl); # diag: show overlay
### edge bolt holes
local $x1 = -$sLen/2+$boltOffset;
local $nf = 24; # number of facets for bolt holes
&plotCircle(-$x1,$syLo,$r3,$nf);
&plotCircle( $x1,$syLo,$r3,$nf);
&plotCircle( 0 ,$syLo,$r3,$nf);
local $dx = -2 * $x1;
$x1 = $boltOffset/2;
local $y1 = $syHi + $s60 * $boltOffset;
print STDERR "syLo=$syLo syHi=$syHi sh=$sh y1=$y1\n";
&plotCircle( $x1,$y1,$r3,$nf);
&plotCircle(-$x1,$y1,$r3,$nf); $x1 += $dx/4; $y1 += $s60 * $dx/2;
&plotCircle( $x1,$y1,$r3,$nf);
&plotCircle(-$x1,$y1,$r3,$nf); $x1 += $dx/4; $y1 += $s60 * $dx/2;
&plotCircle( $x1,$y1,$r3,$nf);
&plotCircle(-$x1,$y1,$r3,$nf);
# decorative holes
$dx=60;
$br=30;
$nf=90;
&plotCircle( 0 ,-$dx ,$br,$nf);
&plotCircle( $dx*$s60, $dx/2,$br,$nf);
&plotCircle(-$dx*$s60, $dx/2,$br,$nf);
print "</g></g></svg>";
sub printTruncTriangle() {
local ($x0,$y0,$rot,$len,$offst,$rc) = @_;
local $h = sqrt(3) * $len / 2;
local $yLo = (sin(30*$deg2rad)/cos(30*$deg2rad)) * ($len/2);
local $yHi = $yLo - $h;
local $v1x = $len/2; local $v1y = $yLo;
local $v2x = 0; local $v2y = $yHi;
local $v3x = -$v1x; local $v3y = $v1y;
print "<path transform='translate($x0,$y0) rotate($rot)' d='";
&drawArc('M',$v1x-$offst ,$v1y-$rc , $rc, 90, 30,-3);
&drawArc('L',$v1x-$offst/2-$s60*$rc,$v1y-$s60*$offst+$rc/2, $rc, 30, -30,-3);
&drawArc('L',$v2x+$offst/2-$s60*$rc,$v2y+$s60*$offst+$rc/2, $rc, -30, -90,-3);
&drawArc('L',$v2x-$offst/2+$s60*$rc,$v2y+$s60*$offst+$rc/2, $rc, -90,-150,-3);
&drawArc('L',$v3x+$offst/2+$s60*$rc,$v3y-$s60*$offst+$rc/2, $rc,-150,-210,-3);
&drawArc('L',$v3x+$offst ,$v3y-$rc , $rc,-210,-270,-3);
print " Z'/>\n";
}
sub plotPulleyBoltHoles() {
local ($pulleyRad, $ang, $boltSep) = @_;
print "<desc>Pulley Carriage Bolt Holes</desc><g transform='rotate($ang)'>\n";
&plotCircle(-$boltSep,-$pulleyRad,$r3,18);
&plotCircle( $boltSep,-$pulleyRad,$r3,18);
print "</g>\n";
}
sub plotBrace() {
local ($x0,$y0,$rot,$ri,$ro,$len,$bLen) = @_;
print "<desc>Connector Link (pulley bolt brace)</desc>
<g transform='translate($x0,$y0) rotate($rot)'>\n";
&plotCircle(-$len/2,0,$ri,24);
&plotCircle( $len/2,0,$ri,24);
print "<path d='";
&drawArc('M', $bLen/2,0,$ro,-90, 90,6);
&drawArc('L',-$bLen/2,0,$ro, 90,270,6);
print "'/></g>\n";
}
sub printEquilateralTriangle() {
local ($len,$lo,$hi) = @_;
print "<path style='stroke:#FFAA00' d='";
printf("M%.3f,%.3f L0,%.3f L%.3f,%.3f Z'/>\n",$len/2, $lo, $hi,-$len/2, $lo);
}