$ git clone http://gcodetool.ion.nu/gcodetool.git
commit 3d24068f9d64114abb4f44937a69ae43efd38d24
Author: Alicia <...>
Date: Mon Oct 7 17:46:35 2019 +0200
Handle G92 better in the 'info' and 'preview' subcommands.
diff --git a/info.c b/info.c
index d450b3d..27e700e 100644
--- a/info.c
+++ b/info.c
@@ -68,6 +68,7 @@ int gtool_info(const char* filename)
unsigned int tooltempcount=0;
double* bedtemps=0;
unsigned int bedtempcount=0;
+ double eoffset=0;
// Loop through gcode and analyze commands
while((cmd=gcode_readcommand(gcode)))
{
@@ -131,7 +132,15 @@ int gtool_info(const char* filename)
if(!isnan(xval)){x.last=xval;}
if(!isnan(yval)){y.last=yval;}
if(!isnan(zval)){z.last=zval;}
- if(!isnan(eval)){e.last=eval;}
+ if(!isnan(eval))
+ {
+ if(!isnan(e.last))
+ {
+ eoffset+=e.last-eval;
+ e.max=eval;
+ }
+ e.last=eval;
+ }
}
else if(cmd->key=='M' && (cmd->num==140 || cmd->num==190 || cmd->num==104 || cmd->num==109))
{
@@ -177,7 +186,7 @@ int gtool_info(const char* filename)
printf("Retraction length: %.*fmm\n", pd(-retraction.min));
printf("Un-retraction length: %.*fmm\n", pd(retraction.max));
printf("Number of retractions: %u\n", retractcount);
- printf("Filament use: %.*fmm\n", pd(e.max-e.min));
+ printf("Filament use: %.*fmm\n", pd(e.max-e.min+eoffset));
printf("Retraction speed: %.*fmm/s - %.*fmm/s\n", pd(retractspeed.min/60), pd(retractspeed.max/60));
printf("Print speed: %.*fmm/s - %.*fmm/s\n", pd(printspeed.min/60), pd(printspeed.max/60));
printf("Travel speed: %.*fmm/s - %.*fmm/s\n", pd(travelspeed.min/60), pd(travelspeed.max/60));
diff --git a/preview.c b/preview.c
index bfa9f81..e2402ef 100644
--- a/preview.c
+++ b/preview.c
@@ -113,6 +113,11 @@ int gtool_preview(const char* filename, struct img* img, double angle, double zr
if(isnan(min[1]) || yval<min[1]){min[1]=yval;}
if(isnan(min[2]) || zval<min[2]){min[2]=zval;}
}
+ if(cmd->key=='G' && cmd->num==92)
+ {
+ double eval=gcommand_getparam(cmd, 'E');
+ if(!isnan(eval)){olde=eval;}
+ }
}
gcode_free(gcode);
double center[]={(min[0]+max[0])/2, (min[1]+max[1])/2};