From: Ian Jackson Date: Sun, 12 Aug 2012 15:21:30 +0000 (+0100) Subject: size-tests - wip - movement generator X-Git-Tag: filamentspool-v2-release~955 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=commitdiff_plain;h=c8d124d6163b67b9d2132adbb92aeee047ddfd45 size-tests - wip - movement generator --- diff --git a/size-tests.m-g b/size-tests.m-g old mode 100644 new mode 100755 index 1b8d50a..3f3b38f --- a/size-tests.m-g +++ b/size-tests.m-g @@ -1,3 +1,67 @@ +#!/usr/bin/perl -w + +use strict; + +our @array = ; + +our $height; + +sub coords_g ($) { + my ($coords) = @_; + return "X$coords->[0] Y$coords->[1]"; +} + +sub proc ($$) { + my ($start,$end) = @_; + foreach my $lno ($start..$end) { + $_ = $array[$lno]; + if (s/^\!draw\s+//) { + my @coords = split /\s+/, $_; + my @coords = map { + my $jerk = s/^\*//; + m/\,/ or die $!; + [ $`, $', !!$jerk ]; # ']; + } @coords; + pl("G92 E0"); + pl("G1 F$movefeedrate Z$zmove"); + pl("G1 ".coords_g($coords[0])); + pl("G1 Z$zprint"); + pl("G1 F$restartfeedrate E$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=$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 * $extruderate; + $g .= " E$extrudepos"; + } else { + $wantfeedrate=$jerkfeedrate; + } + if ($wantfeedrate != $lastfeedrate) { + $g .= " F$wantfeedrate"; + $lastfeedrate = $wantfeedrate; + } + pl($g); + } + $extrudepos -= $retract; + pl("G1 F$retractfeedrate E$extrudepos"); + pl("G1 F$movefeedrate Z$zmove"); + } + print or die $!; + } +} + +proc(0, scalar @array); + +__DATA__ ; -*- fundamental -*- ; layer_height = 0.4 @@ -23,7 +87,17 @@ G21 ; set units to millimeters G92 E0 M82 ; use absolute distances for extrusion -G1 Z0.400 F7800.000 +! $extruderate=0.97200 +! $feedrate=540 +! $jerkfeedrate=7800 +! $retract=4.5 +! $restart=4.5 +! $restartfeedrate=1800 +! $retractfeedrate=1800 +! $movefeedrate=7800 +! $zprint=0.4 +! $zmove=0.5 + !draw 10,10 100,10