Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Press <ryan@presslab.us>2014-12-14 20:08:17 +0300
committerRyan Press <ryan@presslab.us>2014-12-14 20:08:17 +0300
commit3aa638ea425980811796110bed448e5e73b1bcc5 (patch)
tree1dffab6107e9351d89cc689b066156ba51693232
parentedf2f897d10b3a6af889c0d3e81f6d15ff659981 (diff)
Reset start position for new layers
Reset the start position of the path optimizer for each new layer so that it doesn't double up on the layers, causing problems for cooling.
-rw-r--r--src/fffProcessor.h3
-rw-r--r--src/gcodeExport.cpp14
-rw-r--r--src/gcodeExport.h5
3 files changed, 20 insertions, 2 deletions
diff --git a/src/fffProcessor.h b/src/fffProcessor.h
index 6844cb96f8..6d072bc601 100644
--- a/src/fffProcessor.h
+++ b/src/fffProcessor.h
@@ -471,6 +471,7 @@ private:
}
}
gcode.setZ(z);
+ gcode.resetStartPosition();
bool printSupportFirst = (storage.support.generated && config.supportExtruder > 0 && config.supportExtruder == gcodeLayer.getExtruder());
if (printSupportFirst)
@@ -579,7 +580,7 @@ private:
}
- PathOrderOptimizer partOrderOptimizer(gcode.getPositionXY());
+ PathOrderOptimizer partOrderOptimizer(gcode.getStartPositionXY());
for(unsigned int partNr=0; partNr<layer->parts.size(); partNr++)
{
partOrderOptimizer.addPolygon(layer->parts[partNr].insets[0][0]);
diff --git a/src/gcodeExport.cpp b/src/gcodeExport.cpp
index e25de5a487..bd6036b308 100644
--- a/src/gcodeExport.cpp
+++ b/src/gcodeExport.cpp
@@ -11,7 +11,7 @@
namespace cura {
GCodeExport::GCodeExport()
-: currentPosition(0,0,0)
+: currentPosition(0,0,0), startPosition(INT32_MIN,INT32_MIN,0)
{
extrusionAmount = 0;
extrusionPerMM = 0;
@@ -129,6 +129,17 @@ Point GCodeExport::getPositionXY()
return Point(currentPosition.x, currentPosition.y);
}
+void GCodeExport::resetStartPosition()
+{
+ startPosition.x = INT32_MIN;
+ startPosition.y = INT32_MIN;
+}
+
+Point GCodeExport::getStartPositionXY()
+{
+ return Point(startPosition.x, startPosition.y);
+}
+
int GCodeExport::getPositionZ()
{
return currentPosition.z;
@@ -284,6 +295,7 @@ void GCodeExport::writeMove(Point p, int speed, int lineWidth)
}
currentPosition = Point3(p.X, p.Y, zPos);
+ startPosition = currentPosition;
estimateCalculator.plan(TimeEstimateCalculator::Position(INT2MM(currentPosition.x), INT2MM(currentPosition.y), INT2MM(currentPosition.z), extrusionAmount), speed);
}
diff --git a/src/gcodeExport.h b/src/gcodeExport.h
index aebb7bbe82..c0a6ee6375 100644
--- a/src/gcodeExport.h
+++ b/src/gcodeExport.h
@@ -27,6 +27,7 @@ private:
double minimalExtrusionBeforeRetraction;
double extrusionAmountAtPreviousRetraction;
Point3 currentPosition;
+ Point3 startPosition;
Point extruderOffset[MAX_EXTRUDERS];
char extruderCharacter[MAX_EXTRUDERS];
int currentSpeed, retractionSpeed;
@@ -67,6 +68,10 @@ public:
Point getPositionXY();
+ void resetStartPosition();
+
+ Point getStartPositionXY();
+
int getPositionZ();
int getExtruderNr();