chiark
/
gitweb
/
~ianmdlvl
/
reprap-play.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
c8d124d
)
size-tests - wip - movement generator seems to work a bit
author
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Sun, 12 Aug 2012 16:12:15 +0000
(17:12 +0100)
committer
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Sun, 12 Aug 2012 16:12:15 +0000
(17:12 +0100)
size-tests.m-g
patch
|
blob
|
history
diff --git
a/size-tests.m-g
b/size-tests.m-g
index 3f3b38feb2f7c3f1ba0adc3a95eee60a9ae9b519..36cabf8505ec782f9f5aa35c5beb8fa2e1d25c99 100755
(executable)
--- a/
size-tests.m-g
+++ b/
size-tests.m-g
@@
-4,46
+4,76
@@
use strict;
our @array = <DATA>;
our @array = <DATA>;
-our
$height
;
+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) = @_;
sub coords_g ($) {
my ($coords) = @_;
- return "X
$coords->[0] Y$coords->[1]"
;
+ 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];
sub proc ($$) {
my ($start,$end) = @_;
foreach my $lno ($start..$end) {
$_ = $array[$lno];
+ if (!m/^\!/) {
+ p($_);
+ next;
+ }
+ p(";$_");
if (s/^\!draw\s+//) {
if (s/^\!draw\s+//) {
+ my @undefs = grep { !defined $c{$_} } qw(zprint zmove);
+ die "@undefs ?" if @undefs;
my @coords = split /\s+/, $_;
my @coords = split /\s+/, $_;
-
my
@coords = map {
+ @coords = map {
my $jerk = s/^\*//;
m/\,/ or die $!;
[ $`, $', !!$jerk ]; # '];
} @coords;
pl("G92 E0");
my $jerk = s/^\*//;
m/\,/ or die $!;
[ $`, $', !!$jerk ]; # '];
} @coords;
pl("G92 E0");
- pl("G1 F$
movefeedrate Z$zmove
");
+ pl("G1 F$
c{movefeedrate} Z$c{zmove}
");
pl("G1 ".coords_g($coords[0]));
pl("G1 ".coords_g($coords[0]));
- pl("G1 Z$
zprint
");
- pl("G1 F$
restartfeedrate E$restart
");
+ 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]) {
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
;
+ $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);
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"
;
+ $extrudepos += $dist * $
c{extruderate}
;
+ $g .= " E
".float_g($extrudepos)
;
} else {
} else {
- $wantfeedrate=$
jerkfeedrate
;
+ $wantfeedrate=$
c{jerkfeedrate}
;
}
if ($wantfeedrate != $lastfeedrate) {
$g .= " F$wantfeedrate";
}
if ($wantfeedrate != $lastfeedrate) {
$g .= " F$wantfeedrate";
@@
-51,11
+81,16
@@
sub proc ($$) {
}
pl($g);
}
}
pl($g);
}
- $extrudepos -= $retract;
- pl("G1 F$retractfeedrate E$extrudepos");
- pl("G1 F$movefeedrate Z$zmove");
+ $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 "$_ ?";
}
}
- print or die $!;
}
}
}
}
@@
-87,16
+122,8
@@
G21 ; set units to millimeters
G92 E0
M82 ; use absolute distances for extrusion
G92 E0
M82 ; use absolute distances for extrusion
-! $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
+!zprint=0.4
+!zmove=0.5
!draw 10,10 100,10
!draw 10,10 100,10