diff options
-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(); |