X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=size-tests.m-g;h=36cabf8505ec782f9f5aa35c5beb8fa2e1d25c99;hb=8857a4a34caef63793d84b321fab7ae5662f2672;hp=05297840334ad3092bddd8f59650620c52168a42;hpb=c836b9b5f28a90b7270f4d59a9e38b9fb59a817b;p=reprap-play.git diff --git a/size-tests.m-g b/size-tests.m-g old mode 100644 new mode 100755 index 0529784..36cabf8 --- a/size-tests.m-g +++ b/size-tests.m-g @@ -1,4 +1,103 @@ -; generated by Slic3r 0.9.1 on 2012-08-11 at 00:02:52 +#!/usr/bin/perl -w + +use strict; + +our @array = ; + +our %c; + +sub defvar ($;$) { + my ($cv,$v) = @_; + $c{$cv} = $v; +} + +defvar('extruderate',0.97200); +defvar('feedrate',540); +defvar('jerkfeedrate',7800); +defvar('retract',4.5); +defvar('restart',4.5); +defvar('restartfeedrate',1800); +defvar('retractfeedrate',1800); +defvar('movefeedrate',7800); +defvar('zprint'); +defvar('zmove'); + +sub float_g ($) { + my ($f) = @_; + return sprintf "%.5f", $f; +} +sub coords_g ($) { + my ($coords) = @_; + return "X".float_g($coords->[0])." Y".float_g($coords->[1]); +} + +sub p ($) { print "$_[0]" or die $!; } +sub pl ($) { p("$_[0]\n"); } + +sub proc ($$) { + my ($start,$end) = @_; + foreach my $lno ($start..$end) { + $_ = $array[$lno]; + if (!m/^\!/) { + p($_); + next; + } + p(";$_"); + if (s/^\!draw\s+//) { + my @undefs = grep { !defined $c{$_} } qw(zprint zmove); + die "@undefs ?" if @undefs; + my @coords = split /\s+/, $_; + @coords = map { + my $jerk = s/^\*//; + m/\,/ or die $!; + [ $`, $', !!$jerk ]; # ']; + } @coords; + pl("G92 E0"); + pl("G1 F$c{movefeedrate} Z$c{zmove}"); + pl("G1 ".coords_g($coords[0])); + pl("G1 Z$c{zprint}"); + pl("G1 F$c{restartfeedrate} E$c{restart}"); + my $lastfeedrate=-1; + my $extrudepos=0; + foreach (my $ci=1; $ci<@coords; $ci++) { + my $g = "G1 ".coords_g($coords[$ci]); + my $wantfeedrate; + if (!$coords[$ci][3]) { + $wantfeedrate=$c{feedrate}; + my $dist = 0; + foreach my $xy (qw(0 1)) { + my $dxy = $coords[$ci][$xy] - $coords[$ci-1][$xy]; + $dist += $dxy + $dxy; + } + $dist = sqrt($dist); + $extrudepos += $dist * $c{extruderate}; + $g .= " E".float_g($extrudepos); + } else { + $wantfeedrate=$c{jerkfeedrate}; + } + if ($wantfeedrate != $lastfeedrate) { + $g .= " F$wantfeedrate"; + $lastfeedrate = $wantfeedrate; + } + pl($g); + } + $extrudepos -= $c{retract}; + pl("G1 F$c{retractfeedrate} E$extrudepos"); + pl("G1 F$c{movefeedrate} Z$c{zmove}"); + next; + } elsif (m/^\!(\w+)\=(\S+)$/) { + die "$1 ?" unless exists $c{$1}; + $c{$1} = $2; + } else { + die "$_ ?"; + } + } +} + +proc(0, scalar @array); + +__DATA__ +; -*- fundamental -*- ; layer_height = 0.4 ; perimeters = 3 @@ -22,8 +121,15 @@ G90 ; use absolute coordinates G21 ; set units to millimeters G92 E0 M82 ; use absolute distances for extrusion -G1 Z0.400 F7800.000 -G1 X52.950 Y47.500 + +!zprint=0.4 +!zmove=0.5 + +!draw 10,10 100,10 + + + +G1 X10 Y10 G1 F1800.000 E4.50000 G1 X53.200 Y47.220 F540.000 E4.53648 G1 X53.720 Y46.700 E4.60795 @@ -174,16 +280,17 @@ G1 X53.140 Y48.190 E34.99963 G1 X53.321 Y47.978 E35.02672 G1 F1800.000 E30.52672 G1 Z0.500 F7800.000 + G92 E0 G1 X68.498 Y79.498 G1 Z0.400 G1 F1800.000 E4.50000 -G1 X71.502 Y79.498 F540.000 E4.79199 -G1 X71.502 Y82.502 E5.08397 -G1 X68.498 Y82.502 E5.37596 -G1 X68.498 Y79.588 E5.65919 -G1 X67.899 Y78.899 F7800.000 -G1 X72.101 Y78.899 F540.000 E6.06760 +G1 X71.502 Y79.498 F540.000 E4.79199 dist 3.004 extrude .29199 rate .097200 +G1 X71.502 Y82.502 E5.08397 dist 3.004 extrude .29198 +G1 X68.498 Y82.502 E5.37596 dist 3.004 extrude .29199 +G1 X68.498 Y79.588 E5.65919 dist 2.914 extrude .28323 rate .097196 +G1 X67.899 Y78.899 F7800.000 dist 0.913 no extrude, fast +G1 X72.101 Y78.899 F540.000 E6.06760 dist 4.202 .40841 rate .097194 G1 X72.101 Y83.101 E6.47600 G1 X67.899 Y83.101 E6.88441 G1 X67.899 Y78.989 E7.28406 @@ -191,9 +298,10 @@ G1 X67.300 Y78.300 F7800.000 G1 X72.700 Y78.300 F540.000 E7.80888 G1 X72.700 Y83.700 E8.33371 G1 X67.300 Y83.700 E8.85853 -G1 X67.300 Y78.390 E9.37461 -G1 F1800.000 E4.87461 +G1 X67.300 Y78.390 E9.37461 dist 5.310 .51608 rate .097190 +G1 F1800.000 E4.87461 -4.5 G1 Z0.500 F7800.000 + G92 E0 G1 X65.502 Y67.998 G1 Z0.400