Browse files

Added enhancements to allow firmware (or this code) to compute accele…

…rations,

and to select between E codes that represent length out of the nozzle
and ones that represent length of fed-in filament.
  • Loading branch information...
1 parent 5e19520 commit b1f031130ae815bc2bfd8ce4bc586e8470bf6c08 @reprappro reprappro committed Jul 17, 2012
View
BIN bin/org/reprap/Extruder.class
Binary file not shown.
View
BIN bin/org/reprap/Printer.class
Binary file not shown.
View
BIN bin/org/reprap/devices/GenericExtruder.class
Binary file not shown.
View
BIN bin/org/reprap/geometry/LayerProducer.class
Binary file not shown.
View
BIN bin/org/reprap/geometry/LayerRules.class
Binary file not shown.
View
BIN bin/org/reprap/geometry/Producer.class
Binary file not shown.
View
BIN bin/org/reprap/geometry/polygons/Polygon.class
Binary file not shown.
View
BIN bin/org/reprap/geometry/polyhedra/AllSTLsToBuild.class
Binary file not shown.
View
BIN bin/org/reprap/machines/GCodeRepRap.class
Binary file not shown.
View
BIN bin/org/reprap/machines/GenericRepRap.class
Binary file not shown.
View
BIN bin/org/reprap/machines/Simulator.class
Binary file not shown.
View
1 lib/epilogue.gcode
@@ -1 +1,2 @@
+G1 X5.0 Y135.0 F2000.0
M0
View
29 lib/reprap.properties.dist
@@ -1,5 +1,5 @@
#RepRap machine parameters. See http://reprap.org/wiki/Java_Software_Preferences_File
-#Wed May 30 10:17:15 BST 2012
+#Tue Jul 17 20:07:10 BST 2012
BaudRate=115200
BedTemperature(C)=66
BuildBaseSTL(name)=mendel-base.stl
@@ -26,11 +26,12 @@ Extruder0_ExtrusionInfillWidth(mm)=0.5
Extruder0_ExtrusionLastFoundationWidth(mm)=2
Extruder0_ExtrusionOverRun(mm)=-1
Extruder0_ExtrusionPWM(0..1)=-1
-Extruder0_ExtrusionSize(mm)=0.5
+Extruder0_ExtrusionSize(mm)=0.3
Extruder0_ExtrusionSpeed(mm/minute)=2500
Extruder0_ExtrusionTemp(C)=205
Extruder0_FastEFeedrate(mm/minute)=18000.0
Extruder0_FastXYFeedrate(mm/minute)=2500.0
+Extruder0_FeedDiameter(mm)=1.75
Extruder0_InFillMaterialType(name)=PLA-infill
Extruder0_InfillOverlap(mm)=0.2
Extruder0_InfillSpeed(0..1)=1
@@ -72,11 +73,12 @@ Extruder1_ExtrusionInfillWidth(mm)=0.5
Extruder1_ExtrusionLastFoundationWidth(mm)=2
Extruder1_ExtrusionOverRun(mm)=-1
Extruder1_ExtrusionPWM(0..1)=-1
-Extruder1_ExtrusionSize(mm)=0.5
+Extruder1_ExtrusionSize(mm)=0.3
Extruder1_ExtrusionSpeed(mm/minute)=2500
Extruder1_ExtrusionTemp(C)=205
Extruder1_FastEFeedrate(mm/minute)=18000.0
Extruder1_FastXYFeedrate(mm/minute)=2500.0
+Extruder1_FeedDiameter(mm)=1.75
Extruder1_InFillMaterialType(name)=PLA-infill
Extruder1_InfillOverlap(mm)=0.2
Extruder1_InfillSpeed(0..1)=1
@@ -118,11 +120,12 @@ Extruder2_ExtrusionInfillWidth(mm)=2
Extruder2_ExtrusionLastFoundationWidth(mm)=1
Extruder2_ExtrusionOverRun(mm)=3
Extruder2_ExtrusionPWM(0..1)=-1
-Extruder2_ExtrusionSize(mm)=0.5
+Extruder2_ExtrusionSize(mm)=0.3
Extruder2_ExtrusionSpeed(mm/minute)=2500
Extruder2_ExtrusionTemp(C)=205
Extruder2_FastEFeedrate(mm/minute)=18000.0
Extruder2_FastXYFeedrate(mm/minute)=2500.0
+Extruder2_FeedDiameter(mm)=1.75
Extruder2_InFillMaterialType(name)=PLA-support
Extruder2_InfillOverlap(mm)=0
Extruder2_InfillSpeed(0..1)=1
@@ -164,11 +167,12 @@ Extruder3_ExtrusionInfillWidth(mm)=1.3
Extruder3_ExtrusionLastFoundationWidth(mm)=2
Extruder3_ExtrusionOverRun(mm)=0
Extruder3_ExtrusionPWM(0..1)=-1
-Extruder3_ExtrusionSize(mm)=0.5
+Extruder3_ExtrusionSize(mm)=0.3
Extruder3_ExtrusionSpeed(mm/minute)=2500
Extruder3_ExtrusionTemp(C)=205
Extruder3_FastEFeedrate(mm/minute)=18000.0
Extruder3_FastXYFeedrate(mm/minute)=2500.0
+Extruder3_FeedDiameter(mm)=1.75
Extruder3_InFillMaterialType(name)=PLA-infill
Extruder3_InfillOverlap(mm)=0.2
Extruder3_InfillSpeed(0..1)=1
@@ -215,6 +219,7 @@ Extruder4_ExtrusionSpeed(mm/minute)=2500
Extruder4_ExtrusionTemp(C)=0
Extruder4_FastEFeedrate(mm/minute)=8000.0
Extruder4_FastXYFeedrate(mm/minute)=2500.0
+Extruder4_FeedDiameter(mm)=-1
Extruder4_InFillMaterialType(name)=null
Extruder4_InfillOverlap(mm)=0.2
Extruder4_InfillSpeed(0..1)=0.9
@@ -238,23 +243,23 @@ Extruder4_ValveDelayForLayer(ms)=200
Extruder4_ValveDelayForPolygon(ms)=200
Extruder4_ValveOverRun(mm)=2
Extruder4_ValvePulseTime(ms)=-500
-FinishX(mm)=10
-FinishY(mm)=190
+ExtrusionRelative=true
FiveD=true
FoundationLayers=0
InterLayerCooling=false
MaxXYAcceleration(mm/mininute/minute)=1200000
MaxZAcceleration(mm/mininute/minute)=3000
-MaximumFeedrateX(mm/minute)=2500
-MaximumFeedrateY(mm/minute)=2500
+MaximumFeedrateX(mm/minute)=6000
+MaximumFeedrateY(mm/minute)=6000
MaximumFeedrateZ(mm/minute)=50
NumberOfExtruders=5
PathOptimise=true
Port(name)=/dev/ttyUSB0
+RepRapAccelerations=false
Shield=false
SlowXYFeedrate(mm/minute)=1500.0
SlowZFeedrate(mm/minute)=15.0
-StartRectangle=true
-WorkingX(mm)=300
-WorkingY(mm)=300
+StartRectangle=false
+WorkingX(mm)=200
+WorkingY(mm)=200
WorkingZ(mm)=300
View
6 src/org/reprap/Extruder.java
@@ -614,5 +614,9 @@
*/
public boolean getSingleLine();
-
+ /**
+ * Get the input filament diameter (if any)
+ * @return
+ */
+ public double getFeedDiameter();
}
View
4 src/org/reprap/Printer.java
@@ -211,8 +211,8 @@
* The location to go to at the end
* @return
*/
- public double getFinishX();
- public double getFinishY();
+// public double getFinishX();
+// public double getFinishY();
/**
* Move to the purge point
View
37 src/org/reprap/devices/GenericExtruder.java
@@ -186,7 +186,12 @@
/**
* Where to put the nozzle
*/
- protected double offsetX, offsetY, offsetZ;
+ protected double offsetX, offsetY, offsetZ;
+
+ /**
+ * The diameter of the feedstock (if any)
+ */
+ protected double feedDiameter = -1;
/**
*
@@ -485,6 +490,7 @@ public int refreshPreferences()
materialColour.setMaterial(new Material(col, black, col, black, 101f));
surfaceLayers = Preferences.loadGlobalInt(prefName + "SurfaceLayers(0..N)");
singleLine = Preferences.loadGlobalBool(prefName + "SingleLine");
+ feedDiameter = Preferences.loadGlobalDouble(prefName + "FeedDiameter(mm)");
} catch (Exception ex)
{
Debug.e("Refresh extruder preferences: " + ex.toString());
@@ -1266,6 +1272,21 @@ public boolean getReversing()
}
/**
+ * If we are working with feedstock lengths, compute that from the
+ * actual length we want to extrude from the nozzle, otherwise
+ * just return the extruded length.
+ * @param distance
+ * @return
+ */
+ private double filamentDistance(double distance)
+ {
+ if(getFeedDiameter() < 0)
+ return distance;
+
+ return distance*getExtrusionHeight()*getExtrusionSize()/(getFeedDiameter()*getFeedDiameter()*Math.PI/4);
+ }
+
+ /**
* Get how much extrudate is deposited in a given time (in milliseconds)
* currentSpeed is in mm per minute. Valve extruders cannot know, so return 0.
* @param time (ms)
@@ -1275,7 +1296,8 @@ public double getDistanceFromTime(double time)
{
if(!es.isExtruding() || valvePulseTime > 0)
return 0;
- return es.speed()*time/60000.0;
+
+ return filamentDistance(extrudeRatio*es.speed()*time/60000.0);
}
/**
@@ -1289,7 +1311,7 @@ public double getDistance(double distance)
{
if(!es.isExtruding() || valvePulseTime > 0)
return 0;
- return extrudeRatio*distance;
+ return filamentDistance(extrudeRatio*distance);
}
/**
@@ -1431,4 +1453,13 @@ public boolean getSingleLine()
{
return singleLine;
}
+
+ /**
+ * The diameter of the input filament
+ * @return
+ */
+ public double getFeedDiameter()
+ {
+ return feedDiameter;
+ }
}
View
15 src/org/reprap/geometry/LayerProducer.java
@@ -386,7 +386,10 @@ private void plot(Polygon p, boolean firstOneInLayer) throws Exception
{
// The next line tells the printer that it is already at the first point. It is not, but code will be added just before this
// to put it there by the LayerRules function that reverses the top-down order of the layers.
- printer.singleMove(p.point(0).x(), p.point(0).y(), currentZ, printer.getSlowXYFeedrate(), false);
+ if(Preferences.loadGlobalBool("RepRapAccelerations"))
+ printer.singleMove(p.point(0).x(), p.point(0).y(), currentZ, printer.getSlowXYFeedrate(), false);
+ else
+ printer.singleMove(p.point(0).x(), p.point(0).y(), currentZ, printer.getFastXYFeedrate(), false);
printer.forceNextExtruder();
}
printer.selectExtruder(att);
@@ -400,8 +403,14 @@ private void plot(Polygon p, boolean firstOneInLayer) throws Exception
Boolean lift = att.getExtruder().getMinLiftedZ() >= 0 || liftZ > 0;
if(acc)
- p.setSpeeds(att.getExtruder().getSlowXYFeedrate(), p.isClosed()?outlineFeedrate:infillFeedrate,
+ {
+ if(Preferences.loadGlobalBool("RepRapAccelerations"))
+ p.setSpeeds(printer.getFastXYFeedrate(), att.getExtruder().getSlowXYFeedrate(), p.isClosed()?outlineFeedrate:infillFeedrate,
att.getExtruder().getMaxAcceleration());
+ else
+ p.setSpeeds(printer.getFastXYFeedrate(), att.getExtruder().getFastXYFeedrate(), p.isClosed()?outlineFeedrate:infillFeedrate,
+ att.getExtruder().getMaxAcceleration());
+ }
double extrudeBackLength = att.getExtruder().getExtrusionOverRun();
double valveBackLength = att.getExtruder().getValveOverRun();
@@ -421,7 +430,7 @@ private void plot(Polygon p, boolean firstOneInLayer) throws Exception
if(liftZ > 0)
printer.singleMove(printer.getX(), printer.getY(), currentZ, printer.getFastFeedrateZ(), true);
- if(acc)
+ if(acc | (!Preferences.loadGlobalBool("RepRapAccelerations")))
currentFeedrate = p.speed(0);
else
{
View
9 src/org/reprap/geometry/LayerRules.java
@@ -228,7 +228,7 @@ public LayerRules(Printer p, AllSTLsToBuild astls, boolean found)
}
int foundationLayers = Math.max(0, printer.getFoundationLayers());
- modelLayerMax = (int)(modelZMax/zStep);
+ modelLayerMax = (int)(modelZMax/zStep) + 1;
machineLayerMax = modelLayerMax + foundationLayers;
machineZMax = modelZMax + foundationLayers*zStep;
if(topDown)
@@ -613,7 +613,7 @@ public void reverseLayers()
{
getPrinter().startRun(this); // Sets current X, Y, Z to 0
int top = realTopLayer();
- for(machineLayer = 0; machineLayer <= top; machineLayer++)
+ for(machineLayer = 1; machineLayer <= top; machineLayer++)
{
machineZ = layerZ[machineLayer];
getPrinter().startingLayer(this);
@@ -622,7 +622,10 @@ public void reverseLayers()
//System.out.println("Layer: " + machineLayer + " z: " + machineZ +
// " first point: " + getFirstPoint(machineLayer) + " last point: " + getLastPoint(machineLayer)
// + " " + getLayerFileName(machineLayer));
- getPrinter().singleMove(getLastPoint(machineLayer).x(), getLastPoint(machineLayer).y(), machineZ, getPrinter().getSlowXYFeedrate(), false);
+ if(Preferences.loadGlobalBool("RepRapAccelerations"))
+ getPrinter().singleMove(getLastPoint(machineLayer).x(), getLastPoint(machineLayer).y(), machineZ, getPrinter().getSlowXYFeedrate(), false);
+ else
+ getPrinter().singleMove(getLastPoint(machineLayer).x(), getLastPoint(machineLayer).y(), machineZ, getPrinter().getFastXYFeedrate(), false);
getPrinter().finishedLayer(this);
getPrinter().betweenLayers(this);
}
View
2 src/org/reprap/geometry/Producer.java
@@ -259,7 +259,7 @@ private void produceAdditiveTopDown() throws Exception
boolean firstTimeRound = true;
- while(layerRules.getModelLayer() >= 0 )
+ while(layerRules.getModelLayer() > 0 )
{
if(layerRules.getModelLayer() == 0)
reprap.setSeparating(true);
View
27 src/org/reprap/geometry/polygons/Polygon.java
@@ -68,6 +68,7 @@
package org.reprap.geometry.polygons;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@@ -1249,7 +1250,7 @@ private void backTrack(int j, double v, double vAccMin, double minSpeed, double
* @param maxSpeed
* @param maxAcceleration
*/
- public void setSpeeds(double minSpeed, double maxSpeed, double acceleration)
+ public void setSpeeds(double airSpeed, double minSpeed, double maxSpeed, double acceleration)
{
//if(isClosed())System.out.println(toString());
//RrPolygon pg = simplify(Preferences.gridRes());
@@ -1258,6 +1259,30 @@ public void setSpeeds(double minSpeed, double maxSpeed, double acceleration)
//box = pg.box;
//if(isClosed())System.out.println(toString());
+
+ // If not doing RepRap style accelerations, just move in air to the
+ // first point and then go round as fast as possible.
+ try
+ {
+ if(!Preferences.loadGlobalBool("RepRapAccelerations"))
+ {
+ setSpeed(0, airSpeed);
+ for(int i = 1; i < size(); i++)
+ {
+ setSpeed(i, maxSpeed);
+ }
+ return;
+ }
+ } catch (IOException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ return;
+ }
+
+
+ // RepRap-style accelerations
+
boolean fixup[] = new boolean[size()];
setSpeed(0, minSpeed);
Point2D a, b, c, ab, bc;
View
2 src/org/reprap/geometry/polyhedra/AllSTLsToBuild.java
@@ -1096,7 +1096,7 @@ public PolygonList computeInfill(int stl)
// Get the bottom out of the way - no fancy calculations needed.
- if(layer < surfaceLayers)
+ if(layer <= surfaceLayers)
{
slice = slice.offset(layerRules, false, -1);
slice = neededThisLayer(slice, false, false);
View
108 src/org/reprap/machines/GCodeRepRap.java
@@ -98,11 +98,28 @@ private void qXYMove(double x, double y, double feedrate) throws Exception
double dx = x - currentX;
double dy = y - currentY;
+ double extrudeLength = extruders[extruder].getDistance(Math.sqrt(dx*dx + dy*dy));
+ String se = "";
+
+ if(extrudeLength > 0)
+ {
+ if(extruders[extruder].getReversing())
+ extrudeLength = -extrudeLength;
+ extruders[extruder].getExtruderState().add(extrudeLength);
+ if(extruders[extruder].get5D())
+ {
+ if(Preferences.loadGlobalBool("ExtrusionRelative"))
+ se = " E" + round(extrudeLength, 2);
+ else
+ se = " E" + round(extruders[extruder].getExtruderState().length(), 2);
+ }
+ }
+
double xyFeedrate = round(extruders[extruder].getFastXYFeedrate(), 1);
- if(xyFeedrate < feedrate)
+ if(xyFeedrate < feedrate && Math.abs(extrudeLength) > Preferences.tiny())
{
- Debug.d("GCodeRepRap().qXYMove: feedrate (" + feedrate + ") exceeds maximum (" + xyFeedrate + ").");
+ Debug.d("GCodeRepRap().qXYMove: extruding feedrate (" + feedrate + ") exceeds maximum (" + xyFeedrate + ").");
feedrate = xyFeedrate;
}
@@ -117,25 +134,15 @@ private void qXYMove(double x, double y, double feedrate) throws Exception
return;
}
- double extrudeLength;
+
String s = "G1 ";
if (dx != 0)
s += "X" + x;
if (dy != 0)
s += " Y" + y;
- extrudeLength = extruders[extruder].getDistance(Math.sqrt(dx*dx + dy*dy));
-
- if(extrudeLength > 0)
- {
- if(extruders[extruder].getReversing())
- extruders[extruder].getExtruderState().add(-extrudeLength);
- else
- extruders[extruder].getExtruderState().add(extrudeLength);
- if(extruders[extruder].get5D())
- s += " E" + round(extruders[extruder].getExtruderState().length(), 1);
- }
+ s += se;
if (currentFeedrate != feedrate)
{
@@ -180,11 +187,15 @@ private void qZMove(double z, double feedrate) throws Exception
if(extrudeLength > 0)
{
if(extruders[extruder].getReversing())
- extruders[extruder].getExtruderState().add(-extrudeLength);
- else
- extruders[extruder].getExtruderState().add(extrudeLength);
+ extrudeLength = -extrudeLength;
+ extruders[extruder].getExtruderState().add(extrudeLength);
if(extruders[extruder].get5D())
- s += " E" + round(extruders[extruder].getExtruderState().length(), 1);
+ {
+ if(Preferences.loadGlobalBool("ExtrusionRelative"))
+ s += " E" + round(extrudeLength, 2);
+ else
+ s += " E" + round(extruders[extruder].getExtruderState().length(), 2);
+ }
}
if (currentFeedrate != feedrate)
@@ -325,6 +336,19 @@ public void singleMove(double x, double y, double z, double feedrate, boolean re
return;
}
+ try
+ {
+ if(!Preferences.loadGlobalBool("RepRapAccelerations"))
+ {
+ moveTo(x, y, z, feedrate, false, false);
+ return;
+ }
+ }catch (Exception e1)
+ {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+
try
{
if(xyMove && getExtruder().getMaxAcceleration() <= 0)
@@ -462,9 +486,9 @@ public void dispose() {
*/
public void moveToFinish(LayerRules lc)
{
- currentFeedrate = -100; // Force it to set the feedrate
- singleMove(getX(), getY(), getZ() + 1, getFastFeedrateZ(), lc.getReversing());
- singleMove(getFinishX(), getFinishY(), getZ(), getExtruder().getFastXYFeedrate(), lc.getReversing());
+ //currentFeedrate = -100; // Force it to set the feedrate
+ //singleMove(getX(), getY(), getZ() + 1, getFastFeedrateZ(), lc.getReversing());
+ //singleMove(getFinishX(), getFinishY(), getZ(), getExtruder().getFastXYFeedrate(), lc.getReversing());
}
@@ -531,7 +555,7 @@ public void startingLayer(LayerRules lc) throws Exception
currentFeedrate = -1; // Force it to set the feedrate
gcode.startingLayer(lc);
if(lc.getReversing())
- gcode.queue(";#!LAYER: " + (lc.getMachineLayer() + 1) + "/" + lc.getMachineLayerMax());
+ gcode.queue(";#!LAYER: " + (lc.getMachineLayer()) + "/" + (lc.getMachineLayerMax() - 1));
super.startingLayer(lc);
}
@@ -630,36 +654,56 @@ private void delay(long millis, boolean fastExtrude, boolean really) throws Exce
fr = getExtruder().getFastEFeedrate();
else
fr = getExtruder().getFastXYFeedrate();
+
+ currentFeedrate = fr;
+ // Fix the value for possible feedrate change
+ extrudeLength = getExtruder().getDistanceFromTime(millis);
+
+ if(getExtruder().getFeedDiameter() > 0)
+ {
+ fr = fr*getExtruder().getExtrusionHeight()*getExtruder().getExtrusionSize()/
+ (getExtruder().getFeedDiameter()*getExtruder().getFeedDiameter()*Math.PI/4);
+ }
+
+ fr = round(fr, 1);
+
if(really)
+ {
+ currentFeedrate = 0; // force it to output feedrate
qFeedrate(fr);
- else
- currentFeedrate = fr;
- // Fix the value for possible feedrate change
- extrudeLength = getExtruder().getDistanceFromTime(millis);
+ }
}
if(extruders[extruder].getReversing())
- extruders[extruder].getExtruderState().add(-extrudeLength);
- else
- extruders[extruder].getExtruderState().add(extrudeLength);
+ extrudeLength = -extrudeLength;
+
+ extruders[extruder].getExtruderState().add(extrudeLength);
if(extruders[extruder].get5D())
{
- s = "G1 E" + round(extruders[extruder].getExtruderState().length(), 1);
+ if(Preferences.loadGlobalBool("ExtrusionRelative"))
+ s = "G1 E" + round(extrudeLength, 2);
+ else
+ s = "G1 E" + round(extruders[extruder].getExtruderState().length(), 2);
if(Debug.d())
{
if(extruders[extruder].getReversing())
s += " ; extruder retraction";
else
s += " ; extruder dwell";
}
+ double fr;
+ if(Preferences.loadGlobalBool("RepRapAccelerations"))
+ fr = getExtruder().getSlowXYFeedrate();
+ else
+ fr = getExtruder().getFastXYFeedrate();
if(really)
{
gcode.queue(s);
- qFeedrate(getExtruder().getSlowXYFeedrate());
+ qFeedrate(fr);
} else
- currentFeedrate = getExtruder().getSlowXYFeedrate();
+ currentFeedrate = fr;
return;
}
}
View
24 src/org/reprap/machines/GenericRepRap.java
@@ -74,7 +74,7 @@
/**
* The location of the place to go at the end
*/
- protected double finishX, finishY;
+ //protected double finishX, finishY;
/**
* Rezero X and y every...
@@ -301,8 +301,8 @@ public void refreshPreferences()
dumpX = Preferences.loadGlobalDouble("DumpX(mm)");
dumpY = Preferences.loadGlobalDouble("DumpY(mm)");
- finishX = Preferences.loadGlobalDouble("FinishX(mm)");
- finishY = Preferences.loadGlobalDouble("FinishY(mm)");
+ //finishX = Preferences.loadGlobalDouble("FinishX(mm)");
+ //finishY = Preferences.loadGlobalDouble("FinishY(mm)");
bedTemperatureTarget = Preferences.loadGlobalDouble("BedTemperature(C)");
}
@@ -1364,15 +1364,15 @@ public double getDumpY()
* The XY location to go to at the end of a build
* @return
*/
- public double getFinishX()
- {
- return finishX;
- }
-
- public double getFinishY()
- {
- return finishY;
- }
+// public double getFinishX()
+// {
+// return finishX;
+// }
+//
+// public double getFinishY()
+// {
+// return finishY;
+// }
/**
View
2 src/org/reprap/machines/Simulator.java
@@ -49,7 +49,7 @@ public boolean iAmPaused()
public void terminate(LayerRules lr) throws Exception
{
//Debug.e("Generic terminate: " + getFinishX() + " " + getFinishY());
- moveTo(getFinishX(), getFinishY(), getZ(), getExtruder().getFastXYFeedrate(), true, true);
+ //moveTo(getFinishX(), getFinishY(), getZ(), getExtruder().getFastXYFeedrate(), true, true);
getExtruder().setMotor(false);
getExtruder().setValve(false);
getExtruder().setTemperature(0, false);

0 comments on commit b1f0311

Please sign in to comment.