diff options
author | Ryan Press <ryan@presslab.us> | 2014-12-14 20:08:17 +0300 |
---|---|---|
committer | Ryan Press <ryan@presslab.us> | 2014-12-14 20:08:17 +0300 |
commit | 3aa638ea425980811796110bed448e5e73b1bcc5 (patch) | |
tree | 1dffab6107e9351d89cc689b066156ba51693232 | |
parent | edf2f897d10b3a6af889c0d3e81f6d15ff659981 (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.h | 3 | ||||
-rw-r--r-- | src/gcodeExport.cpp | 14 | ||||
-rw-r--r-- | src/gcodeExport.h | 5 |
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(); |