X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=size-tests.m-g;h=fbb666b9560dd262dd334399c05d2a39c9517975;hp=f3bfbd1126a4a57a6ea0fc74ce0adfc8ca0e7572;hb=29f7697011ed4618a0d2c02eb7fc4bfe3c574d81;hpb=27e9e319ea1bb64b39fe86b5d4172b917653fb77 diff --git a/size-tests.m-g b/size-tests.m-g old mode 100755 new mode 100644 index f3bfbd1..fbb666b --- a/size-tests.m-g +++ b/size-tests.m-g @@ -1,139 +1,6 @@ -#!/usr/bin/perl -w - -use strict; - -our @array; -our %procs; - -sub readdata () { - my $l = ''; - my $current = \@array; - while () { - chomp or die; - s/\s+$//; - s/^\!\s*/!/; - $l .= $_; - next if $l =~ s/\\$//; - - $_=$l; $l=''; - if (m/^\!(\w+)\s*\(\)\s*\{$/) { - my $pname=$1; - die if $current ne \@array; - die if exists $procs{$pname}; - $current = $procs{$pname} = []; - next; - } - if (m/^\!\}$/) { - $current = \@array; - next; - } - push @$current, $_; - } -} -readdata(); - -our %c; - -sub defvar ($;$) { - my ($cv,$v) = @_; - $c{$cv} = $v; -} - -defvar('extruderate',0.097200); -defvar('feedrate',540); -defvar('jerkfeedrate',7800); -defvar('retract',4.5); -defvar('restart',4.5); -defvar('restartfeedrate',1800); -defvar('retractfeedrate',1800); -defvar('movefeedrate',7800); -defvar('zlift',0.1); -defvar('zprint'); - -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 ($); - -sub proc ($) { - my ($aref) = @_; - local ($_); - foreach (@$aref) { - if (!m/^\!/) { - pl($_); - next; - } - pl(";$_"); - if (m/^\!(\w+)\s*\(\)$/) { - my $pname = $1; - die "$pname ?" unless $procs{$pname}; - proc($procs{$pname}); - } elsif (m/^\!draw\s+/) { - my @coords = split /\s+/, $'; - my @undefs = grep { !defined $c{$_} } qw(zprint); - die "@undefs ?" if @undefs; - @coords = map { - my $jerk = s/^\*//; - m/\,/ or die $!; - [ $`, $', !!$jerk ]; # ']; - } @coords; - my $extrudepos=$c{restart}; - pl("G92 E0"); - my $zmove=$c{zprint}+$c{zlift}; - pl("G1 F$c{movefeedrate} Z$zmove"); - pl("G1 ".coords_g($coords[0])); - pl("G1 Z$c{zprint}"); - pl("G1 F$c{restartfeedrate} E".float_g($extrudepos)); - my $lastfeedrate=-1; - foreach (my $ci=1; $ci<@coords; $ci++) { - my $g = "G1 ".coords_g($coords[$ci]); - my $wantfeedrate; - if (!$coords[$ci][2]) { - $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".float_g($extrudepos)); - pl("G1 F$c{movefeedrate} Z$zmove"); - next; - } elsif (m/^\!(\w+)\=(\S+)$/) { - die "$1 ?" unless exists $c{$1}; - $c{$1} = $2; - } else { - die "$_ ?"; - } - } -} - -proc(\@array); - -__DATA__ ; -*- fundamental -*- +; slic3r originally produced this, with these comments, and then we edited: ; layer_height = 0.4 ; perimeters = 3 ; solid_layers = 3 @@ -157,11 +24,50 @@ G21 ; set units to millimeters G92 E0 M82 ; use absolute distances for extrusion -!zprint=0.4 +!zprint=0.3 -!draw 10,10 100,10 102,12 102,14 100,16 10,16 +; "skirt" - prep extruder +!draw 5,5 100,5 101,5.5 101,6.0 100,6.5 5,6.5 + +; edge ticks for global motions sizing + +!edge_ticks(){ +!draw 20,10 10,10 10,20 +!draw 10,65 10,75 +!draw 10,120 10,130 20,130 +!draw 65,130 75,130 +!draw 120,130 130,130 130,120 +!draw 130,75 130,65 +!draw 130,20 130,10 120,10 +!draw 75,10 65,10 +!} + +;!edge_ticks() + +!outer_square(){ + !draw @0.000,@0.000 @5.000,@0.000 @5.000,@5.000 @0.000,@5.000 @0.000,@0.000 +!} +!inner_square(){ + !draw @0.500,@0.500 @4.500,@0.500 @4.500,@4.500 @0.500,@4.500 @0.500,@0.500 +!} +!outer_vlines(){ + !draw @0.000,@0.000 @0.000,@5.000 + !draw @5.000,@0.000 @5.000,@5.000 +!} +!inner_vlines(){ + !draw @0.500,@0.500 @0.500,@4.500 + !draw @4.500,@0.500 @4.500,@4.500 +!} +!outer_longrect(){ + !draw @0.000,@0.000 @5.000,@0.000 @5.000,@20.000 @0.000,@20.000 @0.000,@0.000 +!} +!inner_longrect(){ + !draw @0.500,@0.500 @4.500,@0.500 @4.500,@19.500 @0.500,@19.500 @0.500,@0.500 +!} + +!org_oblong(){ +; original test oblong -!layer(){ !draw 68.498,79.498 \ 71.502,79.498 \ 71.502,82.502 \ @@ -180,20 +86,128 @@ M82 ; use absolute distances for extrusion !} +!squares_tests(){ + +!orgy=40 + +!orgx=30 +!outer_longrect() + +!orgx=50 +!inner_longrect() +!outer_longrect() + +!orgx=90 +!inner_square() +!outer_square() + +!orgx=110 +!outer_square() + +!orgy=60 +!outer_vlines() + +!orgx=90 +!inner_vlines() +!outer_vlines() + +!orgy=80 +!outer_square() +!inner_square() + +!orgx=110 +!inner_square() + +!orgy=100 +!inner_vlines() + +!orgx=90 +!outer_vlines() +!inner_vlines() + +!orgx=50 +!orgy=80 +!outer_longrect() +!inner_longrect() + +!orgx=30 +!inner_longrect() + +!} + +!feedrate_tests(){ + +!orgx=20 +!extruderate=0.045 +!feedrate_test1() + +!orgx=30 +!extruderate=0.060 +!feedrate_test1() + +!orgx=40 +!extruderate=0.080 +!feedrate_test1() + +!orgx=50 +!extruderate=0.100 +!feedrate_test1() + +!orgx=60 +!extruderate=0.125 +!feedrate_test1() + +!orgx=70 +!extruderate=0.150 +!feedrate_test1() + +!orgx=80 +!extruderate=0.200 +!feedrate_test1() + +!} + +!feedrate_test1(){ + +!orgy=20 +!outer_longrect() + +!orgy=50 +!inner_longrect() +!outer_longrect() + +!orgy=80 +!outer_longrect() +!inner_longrect() + +!} + +!layer(){ + +;-------------------- + +;!squares_tests() +;!org_oblong() +!feedrate_tests() + +!} + !layer() M104 S210 ; set temperature M140 S60 ; set bed temperature -!zprint=0.8 +!zprint=0.7 +!layer() + +!zprint=1.1 !layer() M83 ; extruder relative G1 F1000 ;1000mm/min extrusion G1 E-10; retract -G1 F240 ;240mm/min vertical move -G1 Z70 -G28 X0 Y0 ; home X and Y axis +G1 X0 Y0 F10000 +G28 X0 Y0 M104 S0 ; turn off temperature M140 S0 ; turn off bed M84 ; disable motors