Added minimal feedrate setting to cool settings (enhancing skeinforge!)

This commit is contained in:
daid 2012-03-19 18:15:44 +01:00
parent f6eca8e280
commit b3888e4410
3 changed files with 12 additions and 4 deletions

View file

@ -283,6 +283,7 @@ def getSkeinPyPyProfileInformation():
'Orbital_Outset_millimeters': DEFSET,
'Turn_Fan_On_at_Beginning': DEFSET,
'Turn_Fan_Off_at_Ending': DEFSET,
'Minimum_feed_rate_mm/s': storedSetting("cool_min_feedrate"),
},'hop': {
'Activate_Hop': "False",
'Hop_Over_Layer_Thickness_ratio': DEFSET,

View file

@ -26,6 +26,12 @@ class advancedConfigWindow(configBase.configWindowBase):
c = configBase.SettingRow(left, "Print order sequence", 'sequence', ['Loops > Perimeter > Infill', 'Loops > Infill > Perimeter', 'Infill > Loops > Perimeter', 'Infill > Perimeter > Loops', 'Perimeter > Infill > Loops', 'Perimeter > Loops > Infill'], 'Sequence of printing. The perimeter is the outer print edge, the loops are the insides of the walls, and the infill is the insides.');
c = configBase.SettingRow(left, "Force first layer sequence", 'force_first_layer_sequence', True, 'This setting forces the order of the first layer to be \'Perimeter > Loops > Infill\'')
configBase.TitleRow(left, "Cool")
c = configBase.SettingRow(left, "Minimum feedrate (mm/s)", 'cool_min_feedrate', False, 'The minimal layer time can cause the print to slow down so much it starts to ooze. The minimal feedrate protects against this. Even if a print gets slown down it will never be slower then this minimal feedrate.')
configBase.TitleRow(left, "Joris")
c = configBase.SettingRow(left, "Joris the outer edge", 'joris', False, '[Joris] is a code name for smoothing out the Z move of the outer edge. This will create a steady Z increase over the whole print. It is intended to be used with a single walled wall thickness to make cups/vases.')
configBase.TitleRow(right, "Infill")
c = configBase.SettingRow(right, "Infill pattern", 'infill_type', ['Line', 'Grid Circular', 'Grid Hexagonal', 'Grid Rectangular'], 'Pattern of the none-solid infill. Line is default, but grids can provide a strong print.')
c = configBase.SettingRow(right, "Solid infill top", 'solid_top', True, 'Create a solid top surface, if set to false the top is filled with the fill percentage. Useful for cups/vases.')
@ -35,9 +41,6 @@ class advancedConfigWindow(configBase.configWindowBase):
c = configBase.SettingRow(right, "Support material amount (%)", 'support_rate', '100', 'Amount of material used for support, less material gives a weaker support structure which is easier to remove.')
c = configBase.SettingRow(right, "Support distance from object (mm)", 'support_distance', '0.5', 'Distance between the support structure and the object.')
configBase.TitleRow(left, "Joris")
c = configBase.SettingRow(left, "Joris the outer edge", 'joris', False, '[Joris] is a code name for smoothing out the Z move of the outer edge. This will create a steady Z increase over the whole print. It is intended to be used with a single walled wall thickness to make cups/vases.')
main.Fit()
self.Fit()

View file

@ -161,6 +161,8 @@ class CoolRepository:
self.turnFanOnAtBeginning = settings.BooleanSetting().getFromValue('Turn Fan On at Beginning', self, True)
self.turnFanOffAtEnding = settings.BooleanSetting().getFromValue('Turn Fan Off at Ending', self, True)
self.executeTitle = 'Cool'
self.minimumFeedRate = settings.FloatSpin().getFromValue(0.0, 'Minimum feed rate (mm/s):', self, 10.0, 5.0)
def execute(self):
'Cool button has been clicked.'
@ -188,6 +190,7 @@ class CoolSkein:
self.oldFlowRateString = None
self.oldLocation = None
self.oldTemperature = None
self.minFeedrate = 0
def addCoolOrbits(self, remainingOrbitTime):
'Add the minimum radius cool orbits.'
@ -245,7 +248,7 @@ class CoolSkein:
def getCoolMove(self, line, location, splitLine):
'Get cool line according to time spent on layer.'
self.feedRateMinute = gcodec.getFeedRateMinute(self.feedRateMinute, splitLine)
return self.distanceFeedRate.getLineWithFeedRate(self.multiplier * self.feedRateMinute, line, splitLine)
return self.distanceFeedRate.getLineWithFeedRate(max(self.minFeedrate, self.multiplier * self.feedRateMinute), line, splitLine)
def getCraftedGcode(self, gcodeText, repository):
'Parse gcode text and store the cool gcode.'
@ -255,6 +258,7 @@ class CoolSkein:
self.halfCorner = complex(repository.minimumOrbitalRadius.value, repository.minimumOrbitalRadius.value)
self.lines = archive.getTextLines(gcodeText)
self.minimumArea = 4.0 * repository.minimumOrbitalRadius.value * repository.minimumOrbitalRadius.value
self.minFeedrate = repository.minimumFeedRate.value * 60
self.parseInitialization()
self.boundingRectangle = gcodec.BoundingRectangle().getFromGcodeLines(self.lines[self.lineIndex :], 0.5 * self.edgeWidth)
margin = 0.2 * self.edgeWidth