def getAroundBetweenPath(self, begin, end):
'Get the path around the loops in the way of the original line segment.'
- addedJumpLine = False
aroundBetweenPath = []
boundaries = self.getBoundaries()
boundarySegments = self.getBoundarySegments(begin, boundaries, end)
segment = boundarySegment.segment
if boundarySegmentIndex < len(boundarySegments) - 1 and self.runningJumpSpace > 0.0:
segment = boundarySegment.getSegment(boundarySegmentIndex, boundarySegments, self.edgeWidth, self.runningJumpSpace)
- if not addedJumpLine:
- self.distanceFeedRate.addLine("(<nextmovehasspacejump>)")
- addedJumpLine = True
aroundBetweenPath += self.getAroundBetweenLineSegment(segment[0], boundaries, segment[1])
if boundarySegmentIndex < len(boundarySegments) - 1:
aroundBetweenPath.append(segment[1])
self.totalExtrusionDistance = 0.0
self.travelFeedRatePerSecond = None
self.zDistanceRatio = 5.0
- self.addRetraction = False
+ self.addRetraction = True
+ self.reverseRetraction = False
self.onlyRetractOnJumps = True
def addLinearMoveExtrusionDistanceLine(self, extrusionDistance):
self.absoluteDistanceMode = True
elif firstWord == 'G91':
self.absoluteDistanceMode = False
- elif firstWord == '(<nextmovehasspacejump>)' and self.onlyRetractOnJumps:
- #Check for the space jump moves for retraction, these tags are added by the comb plugin.
- self.addLinearMoveExtrusionDistanceLine(-self.repository.retractionDistance.value * self.retractionRatio)
- self.addRetraction = True
+ elif firstWord == '(<nestedRing>)':
+ if self.onlyRetractOnJumps:
+ self.addRetraction = False
+ elif firstWord == '(</nestedRing>)':
+ if self.onlyRetractOnJumps:
+ self.addRetraction = True
+ self.retractionRatio = self.getRetractionRatio(lineIndex)
+ self.addLinearMoveExtrusionDistanceLine(-self.repository.retractionDistance.value * self.retractionRatio)
+ self.reverseRetraction = True
elif firstWord == '(<layer>':
self.layerIndex += 1
settings.printProgress(self.layerIndex, 'dimension')
self.distanceFeedRate.addLine('G92 E0')
self.totalExtrusionDistance = 0.0
elif firstWord == 'M101':
- if self.addRetraction or not self.onlyRetractOnJumps:
+ if self.reverseRetraction:
self.addLinearMoveExtrusionDistanceLine(self.restartDistance * self.retractionRatio)
- self.addRetraction = False
+ self.reverseRetraction = False
if self.totalExtrusionDistance > self.repository.maximumEValueBeforeReset.value:
if not self.repository.relativeExtrusionDistance.value:
self.distanceFeedRate.addLine('G92 E0')
self.isExtruderActive = True
elif firstWord == 'M103':
self.retractionRatio = self.getRetractionRatio(lineIndex)
- if not self.onlyRetractOnJumps:
+ if self.addRetraction:
self.addLinearMoveExtrusionDistanceLine(-self.repository.retractionDistance.value * self.retractionRatio)
+ self.reverseRetraction = True
self.isExtruderActive = False
elif firstWord == 'M108':
self.flowRate = float( splitLine[1][1 :] )
fillCycle = 0\r
fillColorCycle = [[0.5,0.5,0.0],[0.0,0.5,0.5],[0.5,0.0,0.5]]\r
moveColor = [0,0,1]\r
- retractColor = [0,1,1]\r
+ retractColor = [1,0,0.5]\r
supportColor = [0,1,1]\r
extrudeColor = [1,0,0]\r
innerWallColor = [0,1,0]\r
for v in path.list:\r
glVertex3f(v.x, v.y, v.z)\r
glEnd()\r
- prevPathWasRetract = False\r
+ if not path.type == 'move':\r
+ prevPathWasRetract = False\r
if path.type == 'retract' and path.list[0].almostEqual(path.list[-1]):\r
prevPathWasRetract = True\r
glEnable(GL_CULL_FACE)\r