MrDraw/patches/41

732 lines
47 KiB
Text

diff -r -x'*.pyc' -N -u ori/41/fabmetheus_utilities/archive.py target/SF41/fabmetheus_utilities/archive.py
--- ori/41/fabmetheus_utilities/archive.py 2011-04-12 00:32:25.000000000 +0200
+++ target/SF41/fabmetheus_utilities/archive.py 2011-12-15 11:43:14.000000000 +0100
@@ -18,7 +18,7 @@
__license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html'
-globalTemporarySettingsPath = os.path.join(os.path.expanduser('~'), '.skeinforge')
+globalTemporarySettingsPath = os.path.join(os.path.expanduser('~'), '.skeinforge_pypy')
def addToNamePathDictionary(directoryPath, namePathDictionary):
diff -r -x'*.pyc' -N -u ori/41/fabmetheus_utilities/euclidean.py target/SF41/fabmetheus_utilities/euclidean.py
--- ori/41/fabmetheus_utilities/euclidean.py 2011-04-15 02:32:27.000000000 +0200
+++ target/SF41/fabmetheus_utilities/euclidean.py 2011-12-15 11:43:14.000000000 +0100
@@ -64,7 +64,7 @@
def addElementToPixelList( element, pixelDictionary, x, y ):
'Add an element to the pixel list.'
- stepKey = getStepKey(x, y)
+ stepKey = (x, y)
addElementToListDictionary( element, stepKey, pixelDictionary )
def addElementToPixelListFromPoint( element, pixelDictionary, point ):
@@ -116,7 +116,7 @@
def addPixelToPixelTable( pixelDictionary, value, x, y ):
'Add pixel to the pixel table.'
- pixelDictionary[getStepKey(x, y)] = value
+ pixelDictionary[(x, y)] = value
def addPixelToPixelTableWithSteepness( isSteep, pixelDictionary, value, x, y ):
'Add pixels to the pixel table with steepness.'
@@ -174,12 +174,20 @@
xBegin = int(round(beginComplex.real))
xEnd = int(round(endComplex.real))
yIntersection = beginComplex.imag - beginComplex.real * gradient
- addPixelToPixelTableWithSteepness( isSteep, pixelDictionary, None, xBegin, int( round( beginComplex.imag ) ) )
- addPixelToPixelTableWithSteepness( isSteep, pixelDictionary, None, xEnd, int( round( endComplex.imag ) ) )
- for x in xrange( xBegin + 1, xEnd ):
- y = int( math.floor( yIntersection + x * gradient ) )
- addPixelToPixelTableWithSteepness( isSteep, pixelDictionary, None, x, y )
- addPixelToPixelTableWithSteepness( isSteep, pixelDictionary, None, x, y + 1 )
+ if isSteep:
+ pixelDictionary[( int( round( beginComplex.imag ) ), xBegin)] = None
+ pixelDictionary[( int( round( endComplex.imag ) ), xEnd )] = None
+ for x in xrange( xBegin + 1, xEnd ):
+ y = int( math.floor( yIntersection + x * gradient ) )
+ pixelDictionary[(y, x)] = None
+ pixelDictionary[(y + 1, x)] = None
+ else:
+ pixelDictionary[(xBegin, int( round( beginComplex.imag ) ) )] = None
+ pixelDictionary[(xEnd, int( round( endComplex.imag ) ) )] = None
+ for x in xrange( xBegin + 1, xEnd ):
+ y = int( math.floor( yIntersection + x * gradient ) )
+ pixelDictionary[(x, y)] = None
+ pixelDictionary[(x, y + 1)] = None
def addSquareTwoToPixelDictionary(pixelDictionary, point, value, width):
'Add square with two pixels around the center to pixel dictionary.'
@@ -188,7 +196,7 @@
y = int(round(point.imag))
for xStep in xrange(x - 2, x + 3):
for yStep in xrange(y - 2, y + 3):
- pixelDictionary[getStepKey(xStep, yStep)] = value
+ pixelDictionary[(xStep, yStep)] = value
def addSurroundingLoopBeginning( distanceFeedRate, loop, z ):
'Add surrounding loop beginning to gcode output.'
@@ -244,12 +252,20 @@
xBegin = int(round(beginComplex.real))
xEnd = int(round(endComplex.real))
yIntersection = beginComplex.imag - beginComplex.real * gradient
- addPixelToPixelTableWithSteepness( isSteep, pixelDictionary, value, xBegin, int( round( beginComplex.imag ) ) )
- addPixelToPixelTableWithSteepness( isSteep, pixelDictionary, value, xEnd, int( round( endComplex.imag ) ) )
- for x in xrange( xBegin + 1, xEnd ):
- y = int( math.floor( yIntersection + x * gradient ) )
- addPixelToPixelTableWithSteepness( isSteep, pixelDictionary, value, x, y )
- addPixelToPixelTableWithSteepness( isSteep, pixelDictionary, value, x, y + 1 )
+ if isSteep:
+ pixelDictionary[(int( round( beginComplex.imag ) ), xBegin)] = value
+ pixelDictionary[(int( round( endComplex.imag ) ), xEnd)] = value
+ for x in xrange( xBegin + 1, xEnd ):
+ y = int( math.floor( yIntersection + x * gradient ) )
+ pixelDictionary[(y, x)] = value
+ pixelDictionary[(y + 1, x)] = value
+ else:
+ pixelDictionary[(xBegin, int( round( beginComplex.imag ) ))] = value
+ pixelDictionary[(xEnd, int( round( endComplex.imag ) ))] = value
+ for x in xrange( xBegin + 1, xEnd ):
+ y = int( math.floor( yIntersection + x * gradient ) )
+ pixelDictionary[(x, y)] = value
+ pixelDictionary[(x, y + 1)] = value
def addValueToOutput(depth, keyInput, output, value):
'Add value to the output.'
@@ -468,8 +484,7 @@
y = int(point.imag * oneOverOverlapDistance)
if not getSquareIsOccupied(pixelDictionary, x, y):
away.append(point)
- stepKey = getStepKey(x, y)
- pixelDictionary[stepKey] = None
+ pixelDictionary[(x, y)] = None
return away
def getBackOfLoops(loops):
@@ -1592,7 +1607,7 @@
squareValues = []
for xStep in xrange(x - 1, x + 2):
for yStep in xrange(y - 1, y + 2):
- stepKey = getStepKey(xStep, yStep)
+ stepKey = (xStep, yStep)
if stepKey in pixelDictionary:
return True
return False
@@ -1608,7 +1623,7 @@
squareValues = []
for xStep in xrange(x - 1, x + 2):
for yStep in xrange(y - 1, y + 2):
- stepKey = getStepKey(xStep, yStep)
+ stepKey = (xStep, yStep)
if stepKey in pixelDictionary:
squareValues += pixelDictionary[ stepKey ]
return squareValues
diff -r -x'*.pyc' -N -u ori/41/fabmetheus_utilities/settings.py target/SF41/fabmetheus_utilities/settings.py
--- ori/41/fabmetheus_utilities/settings.py 2011-04-26 10:32:32.000000000 +0200
+++ target/SF41/fabmetheus_utilities/settings.py 2011-12-15 11:43:14.000000000 +0100
@@ -271,7 +271,7 @@
if repository.baseNameSynonym != None:
text = archive.getFileText(archive.getProfilesPath(getProfileBaseNameSynonym(repository)), False)
if text == '':
- print('The default %s will be written in the .skeinforge folder in the home directory.' % repository.title.lower() )
+ print('The default %s will be written in the .skeinforge_pypy folder in the home directory.' % repository.title.lower() )
text = archive.getFileText(getProfilesDirectoryInAboveDirectory(getProfileBaseName(repository)), False)
if text != '':
readSettingsFromText(repository, text)
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/alterations/end.gcode target/SF41/skeinforge_application/alterations/end.gcode
--- ori/41/skeinforge_application/alterations/end.gcode 1970-01-01 01:00:00.000000000 +0100
+++ target/SF41/skeinforge_application/alterations/end.gcode 2011-12-15 11:43:14.000000000 +0100
@@ -0,0 +1,10 @@
+(start of end.gcode)
+M104 S0 (extruder heat off)
+M106 (fan on)
+G91 (relative positioning)
+G1 Z+10 E-5 F400 (move Z up a bit and retract filament by 5mm)
+G1 X-20 Y-20 F1500 (move X and Y over a bit)
+M84 (steppers off)
+G90 (absolute positioning)
+(end of end.gcode)
+
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/alterations/start.gcode target/SF41/skeinforge_application/alterations/start.gcode
--- ori/41/skeinforge_application/alterations/start.gcode 1970-01-01 01:00:00.000000000 +0100
+++ target/SF41/skeinforge_application/alterations/start.gcode 2011-12-15 11:43:14.000000000 +0100
@@ -0,0 +1,30 @@
+(start of start.txt)
+M92 E926.5 (the number of extruder steps to take in 1mm of filament)
+G21 (metric values)
+G21
+G21 (all the extra G21 commands are comments - skeinforge eats lines without a gcode)
+G21
+G90 (absolute positioning)
+G21
+G28 (move X/Y/Z to min endstops)
+G21
+G21 ( if your prints start too high, try changing the Z0.0 below )
+G21 ( to Z1.0 - the number after the Z is the actual, physical )
+G21 ( height of the nozzle in mm. This can take some messing around )
+G21 ( with to get just right... )
+G21
+G92 X-105 Y-105 Z0.0 E0 (reset software position to front/left/z=0.0)
+G21
+G1 Z15.0 F400 (move the platform down 15mm)
+G1 X0 Y0 F3500 (go to the middle of the platform)
+G92 E0 (zero the extruded length)
+G21
+G1 F75 E15 (extrude 15mm of feed stock)
+G1 F75 E13.5 (reverse feed stock by 1.5mm)
+G92 E0 (zero the extruded length again)
+G21
+M1 (Clean the nozzle then press YES to continue...)
+G21
+G1 Z0.0 F400 (back to Z=0 and start the print!)
+(end of start.txt)
+
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/analyze_plugins/skeiniso.py target/SF41/skeinforge_application/skeinforge_plugins/analyze_plugins/skeiniso.py
--- ori/41/skeinforge_application/skeinforge_plugins/analyze_plugins/skeiniso.py 2011-04-14 06:57:37.000000000 +0200
+++ target/SF41/skeinforge_application/skeinforge_plugins/analyze_plugins/skeiniso.py 2011-12-15 11:43:14.000000000 +0100
@@ -297,7 +297,7 @@
self.baseNameSynonym = 'behold.csv'
self.fileNameInput = settings.FileNameInput().getFromFileName( [ ('Gcode text files', '*.gcode') ], 'Open File for Skeiniso', self, '')
self.openWikiManualHelpPage = settings.HelpPage().getOpenFromAbsolute('http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Skeiniso')
- self.activateSkeiniso = settings.BooleanSetting().getFromValue('Activate Skeiniso', self, True )
+ self.activateSkeiniso = settings.BooleanSetting().getFromValue('Activate Skeiniso', self, False )
self.addAnimation()
self.axisRulings = settings.BooleanSetting().getFromValue('Axis Rulings', self, True )
settings.LabelSeparator().getFromRepository(self)
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/analyze_plugins/skeinlayer.py target/SF41/skeinforge_application/skeinforge_plugins/analyze_plugins/skeinlayer.py
--- ori/41/skeinforge_application/skeinforge_plugins/analyze_plugins/skeinlayer.py 2011-04-14 06:57:37.000000000 +0200
+++ target/SF41/skeinforge_application/skeinforge_plugins/analyze_plugins/skeinlayer.py 2011-12-15 11:43:14.000000000 +0100
@@ -195,7 +195,7 @@
self.baseNameSynonym = 'skeinview.csv'
self.fileNameInput = settings.FileNameInput().getFromFileName( [ ('Gcode text files', '*.gcode') ], 'Open File for Skeinlayer', self, '')
self.openWikiManualHelpPage = settings.HelpPage().getOpenFromAbsolute('http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Skeinlayer')
- self.activateSkeinlayer = settings.BooleanSetting().getFromValue('Activate Skeinlayer', self, True )
+ self.activateSkeinlayer = settings.BooleanSetting().getFromValue('Activate Skeinlayer', self, False )
self.addAnimation()
self.drawArrows = settings.BooleanSetting().getFromValue('Draw Arrows', self, True )
self.goAroundExtruderOffTravel = settings.BooleanSetting().getFromValue('Go Around Extruder Off Travel', self, False )
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py 2011-04-08 10:20:48.000000000 +0200
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py 2011-12-15 11:43:14.000000000 +0100
@@ -157,7 +157,7 @@
self.extraDecimalPlaces = settings.FloatSpin().getFromValue(0.0, 'Extra Decimal Places (float):', self, 3.0, 2.0)
self.importCoarseness = settings.FloatSpin().getFromValue( 0.5, 'Import Coarseness (ratio):', self, 2.0, 1.0 )
self.infillInDirectionOfBridge = settings.BooleanSetting().getFromValue('Infill in Direction of Bridge', self, True )
- self.layerThickness = settings.FloatSpin().getFromValue( 0.1, 'Layer Thickness (mm):', self, 1.0, 0.4 )
+ self.layerThickness = settings.FloatSpin().getFromValue( 0.1, 'Layer Thickness (mm):', self, 1.0, 0.2 )
settings.LabelSeparator().getFromRepository(self)
settings.LabelDisplay().getFromName('- Layers -', self )
self.layersFrom = settings.IntSpin().getFromValue( 0, 'Layers From (index):', self, 20, 0 )
@@ -167,7 +167,7 @@
importLatentStringVar = settings.LatentStringVar()
self.correctMesh = settings.Radio().getFromRadio( importLatentStringVar, 'Correct Mesh', self, True )
self.unprovenMesh = settings.Radio().getFromRadio( importLatentStringVar, 'Unproven Mesh', self, False )
- self.perimeterWidthOverThickness = settings.FloatSpin().getFromValue( 1.4, 'Perimeter Width over Thickness (ratio):', self, 2.2, 1.8 )
+ self.perimeterWidth = settings.FloatSpin().getFromValue( 0.1, 'Perimeter Width:', self, 2.2, 0.4 )
self.svgViewer = settings.StringSetting().getFromValue('SVG Viewer:', self, 'webbrowser')
settings.LabelSeparator().getFromRepository(self)
self.executeTitle = 'Carve'
@@ -184,7 +184,7 @@
def getCarvedSVG(self, carving, fileName, repository):
"Parse gnu triangulated surface text and store the carved gcode."
layerThickness = repository.layerThickness.value
- perimeterWidth = repository.perimeterWidthOverThickness.value * layerThickness
+ perimeterWidth = repository.perimeterWidth.value
carving.setCarveInfillInDirectionOfBridge(repository.infillInDirectionOfBridge.value)
carving.setCarveLayerThickness(layerThickness)
importRadius = 0.5 * repository.importCoarseness.value * abs(perimeterWidth)
@@ -196,7 +196,7 @@
return ''
layerThickness = carving.getCarveLayerThickness()
decimalPlacesCarried = euclidean.getDecimalPlacesCarried(repository.extraDecimalPlaces.value, layerThickness)
- perimeterWidth = repository.perimeterWidthOverThickness.value * layerThickness
+ perimeterWidth = repository.perimeterWidth.value
svgWriter = svg_writer.SVGWriter(
repository.addLayerTemplateToSVG.value,
carving.getCarveCornerMaximum(),
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py 2011-02-09 08:31:34.000000000 +0100
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py 2011-12-15 11:43:14.000000000 +0100
@@ -166,7 +166,7 @@
skeinforge_profile.addListsToCraftTypeRepository('skeinforge_application.skeinforge_plugins.craft_plugins.chamber.html', self )
self.fileNameInput = settings.FileNameInput().getFromFileName( fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(), 'Open File for Chamber', self, '')
self.openWikiManualHelpPage = settings.HelpPage().getOpenFromAbsolute('http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Chamber')
- self.activateChamber = settings.BooleanSetting().getFromValue('Activate Chamber:', self, True )
+ self.activateChamber = settings.BooleanSetting().getFromValue('Activate Chamber:', self, False )
self.bedTemperature = settings.FloatSpin().getFromValue( 20.0, 'Bed Temperature (Celcius):', self, 90.0, 60.0 )
self.chamberTemperature = settings.FloatSpin().getFromValue( 20.0, 'Chamber Temperature (Celcius):', self, 90.0, 30.0 )
self.holdingForce = settings.FloatSpin().getFromValue( 0.0, 'Holding Force (bar):', self, 100.0, 0.0 )
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py 2011-02-22 08:41:38.000000000 +0100
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py 2011-12-15 11:43:14.000000000 +0100
@@ -86,7 +86,7 @@
skeinforge_profile.addListsToCraftTypeRepository('skeinforge_application.skeinforge_plugins.craft_plugins.clip.html', self )
self.fileNameInput = settings.FileNameInput().getFromFileName( fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(), 'Open File for Clip', self, '')
self.openWikiManualHelpPage = settings.HelpPage().getOpenFromAbsolute('http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Clip')
- self.activateClip = settings.BooleanSetting().getFromValue('Activate Clip', self, True )
+ self.activateClip = settings.BooleanSetting().getFromValue('Activate Clip', self, False )
self.clipOverPerimeterWidth = settings.FloatSpin().getFromValue( 0.1, 'Clip Over Perimeter Width (ratio):', self, 0.8, 0.5 )
self.maximumConnectionDistanceOverPerimeterWidth = settings.FloatSpin().getFromValue( 1.0, 'Maximum Connection Distance Over Perimeter Width (ratio):', self, 20.0, 10.0 )
self.executeTitle = 'Clip'
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py 2011-02-22 08:41:38.000000000 +0100
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py 2011-12-15 11:43:14.000000000 +0100
@@ -126,7 +126,7 @@
skeinforge_profile.addListsToCraftTypeRepository('skeinforge_application.skeinforge_plugins.craft_plugins.comb.html', self )
self.fileNameInput = settings.FileNameInput().getFromFileName( fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(), 'Open File for Comb', self, '')
self.openWikiManualHelpPage = settings.HelpPage().getOpenFromAbsolute('http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Comb')
- self.activateComb = settings.BooleanSetting().getFromValue('Activate Comb', self, False )
+ self.activateComb = settings.BooleanSetting().getFromValue('Activate Comb', self, True )
self.executeTitle = 'Comb'
def execute(self):
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py 2011-03-08 08:30:18.000000000 +0100
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py 2011-12-15 11:43:14.000000000 +0100
@@ -142,7 +142,7 @@
self.orbit = settings.MenuRadio().getFromMenuButtonDisplay(self.coolType, 'Orbit', self, False)
self.slowDown = settings.MenuRadio().getFromMenuButtonDisplay(self.coolType, 'Slow Down', self, True)
self.maximumCool = settings.FloatSpin().getFromValue(0.0, 'Maximum Cool (Celcius):', self, 10.0, 2.0)
- self.minimumLayerTime = settings.FloatSpin().getFromValue(0.0, 'Minimum Layer Time (seconds):', self, 120.0, 60.0)
+ self.minimumLayerTime = settings.FloatSpin().getFromValue(0.0, 'Minimum Layer Time (seconds):', self, 120.0, 10.0)
self.minimumOrbitalRadius = settings.FloatSpin().getFromValue(
0.0, 'Minimum Orbital Radius (millimeters):', self, 20.0, 10.0)
settings.LabelSeparator().getFromRepository(self)
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py 2011-03-22 21:08:23.000000000 +0100
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py 2011-12-15 11:43:14.000000000 +0100
@@ -124,7 +124,7 @@
skeinforge_profile.addListsToCraftTypeRepository('skeinforge_application.skeinforge_plugins.craft_plugins.dimension.html', self )
self.fileNameInput = settings.FileNameInput().getFromFileName( fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(), 'Open File for Dimension', self, '')
self.openWikiManualHelpPage = settings.HelpPage().getOpenFromAbsolute('http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Dimension')
- self.activateDimension = settings.BooleanSetting().getFromValue('Activate Dimension', self, False )
+ self.activateDimension = settings.BooleanSetting().getFromValue('Activate Dimension', self, True )
extrusionDistanceFormatLatentStringVar = settings.LatentStringVar()
self.extrusionDistanceFormatChoiceLabel = settings.LabelDisplay().getFromName('Extrusion Distance Format Choice: ', self )
settings.Radio().getFromRadio( extrusionDistanceFormatLatentStringVar, 'Absolute Extrusion Distance', self, True )
@@ -132,7 +132,7 @@
self.extruderRetractionSpeed = settings.FloatSpin().getFromValue( 4.0, 'Extruder Retraction Speed (mm/s):', self, 34.0, 13.3 )
settings.LabelSeparator().getFromRepository(self)
settings.LabelDisplay().getFromName('- Filament -', self )
- self.filamentDiameter = settings.FloatSpin().getFromValue(1.0, 'Filament Diameter (mm):', self, 6.0, 2.8)
+ self.filamentDiameter = settings.FloatSpin().getFromValue(1.0, 'Filament Diameter (mm):', self, 6.0, 2.89)
self.filamentPackingDensity = settings.FloatSpin().getFromValue(0.7, 'Filament Packing Density (ratio):', self, 1.0, 0.85)
settings.LabelSeparator().getFromRepository(self)
self.retractionDistance = settings.FloatSpin().getFromValue( 0.0, 'Retraction Distance (millimeters):', self, 100.0, 0.0 )
@@ -160,9 +160,11 @@
def addLinearMoveExtrusionDistanceLine( self, extrusionDistance ):
"Get the extrusion distance string from the extrusion distance."
- self.distanceFeedRate.output.write('G1 F%s\n' % self.extruderRetractionSpeedMinuteString )
- self.distanceFeedRate.output.write('G1%s\n' % self.getExtrusionDistanceStringFromExtrusionDistance( extrusionDistance ) )
- self.distanceFeedRate.output.write('G1 F%s\n' % self.distanceFeedRate.getRounded( self.feedRateMinute ) )
+
+ if self.repository.retractionDistance.value != 0.0:
+ self.distanceFeedRate.output.write('G1 F%s\n' % self.extruderRetractionSpeedMinuteString )
+ self.distanceFeedRate.output.write('G1%s\n' % self.getExtrusionDistanceStringFromExtrusionDistance( extrusionDistance ) )
+ self.distanceFeedRate.output.write('G1 F%s\n' % self.distanceFeedRate.getRounded( self.feedRateMinute ) )
def getCraftedGcode(self, gcodeText, repository):
"Parse gcode text and store the dimension gcode."
@@ -262,9 +264,12 @@
self.absoluteDistanceMode = False
elif firstWord == 'M101':
self.addLinearMoveExtrusionDistanceLine( self.restartDistance )
- if not self.repository.relativeExtrusionDistance.value:
- self.distanceFeedRate.addLine('G92 E0')
- self.totalExtrusionDistance = 0.0
+
+ if self.totalExtrusionDistance > 999999.0:
+ if not self.repository.relativeExtrusionDistance.value:
+ self.distanceFeedRate.addLine('G92 E0')
+ self.totalExtrusionDistance = 0.0
+
self.isExtruderActive = True
elif firstWord == 'M103':
self.addLinearMoveExtrusionDistanceLine( - self.repository.retractionDistance.value )
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_tiny.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_tiny.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_tiny.py 1970-01-01 01:00:00.000000000 +0100
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_tiny.py 2011-12-15 16:23:55.000000000 +0100
@@ -0,0 +1,117 @@
+"""
+This page is in the table of contents.
+Gcode_tiny is an export plugin to remove the comments and the redundant z and feed rate parameters from a gcode file.
+
+An export plugin is a script in the export_plugins folder which has the getOutput function, the globalIsReplaceable variable and if it's output is not replaceable, the writeOutput function. It is meant to be run from the export tool. To ensure that the plugin works on platforms which do not handle file capitalization properly, give the plugin a lower case name.
+
+The getOutput function of this script takes a gcode text and returns that text without comments and redundant z and feed rate parameters. The writeOutput function of this script takes a gcode text and writes that text without comments and redundant z and feed rate parameters to a file.
+
+Many of the functions in this script are copied from gcodec in skeinforge_utilities. They are copied rather than imported so developers making new plugins do not have to learn about gcodec, the code here is all they need to learn.
+
+"""
+
+from __future__ import absolute_import
+import cStringIO
+import os
+
+
+__author__ = 'Enrique Perez (perez_enrique@yahoo.com)'
+__date__ = '$Date: 2008/21/04 $'
+__license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html'
+
+
+# This is true if the output is text and false if it is binary."
+globalIsReplaceable = True
+
+
+def getOutput(gcodeText):
+ 'Get the exported version of a gcode file.'
+ return GcodeTinySkein().getCraftedGcode(gcodeText)
+
+def getSplitLineBeforeBracketSemicolon(line):
+ "Get the split line before a bracket or semicolon."
+ bracketSemicolonIndex = min( line.find(';'), line.find('(') )
+ if bracketSemicolonIndex < 0:
+ return line.split()
+ return line[ : bracketSemicolonIndex ].split()
+
+def getStringFromCharacterSplitLine(character, splitLine):
+ "Get the string after the first occurence of the character in the split line."
+ indexOfCharacter = getIndexOfStartingWithSecond(character, splitLine)
+ if indexOfCharacter < 0:
+ return None
+ return splitLine[indexOfCharacter][1 :]
+
+def getSummarizedFileName(fileName):
+ "Get the fileName basename if the file is in the current working directory, otherwise return the original full name."
+ if os.getcwd() == os.path.dirname(fileName):
+ return os.path.basename(fileName)
+ return fileName
+
+def getTextLines(text):
+ "Get the all the lines of text of a text."
+ return text.replace('\r', '\n').split('\n')
+
+def getIndexOfStartingWithSecond(letter, splitLine):
+ "Get index of the first occurence of the given letter in the split line, starting with the second word. Return - 1 if letter is not found"
+ for wordIndex in xrange( 1, len(splitLine) ):
+ word = splitLine[ wordIndex ]
+ firstLetter = word[0]
+ if firstLetter == letter:
+ return wordIndex
+ return - 1
+
+
+class GcodeTinySkein:
+ "A class to remove redundant z and feed rate parameters from a skein of extrusions."
+ "Also remove spaces and minimize the exported numbers, this will create GCode which not every tool will understand."
+ def __init__(self):
+ self.lastFeedRateString = None
+ self.lastZString = None
+ self.output = cStringIO.StringIO()
+
+ def getCraftedGcode( self, gcodeText ):
+ "Parse gcode text and store the gcode."
+ lines = getTextLines(gcodeText)
+ for line in lines:
+ self.parseLine(line)
+ return self.output.getvalue()
+
+ def fixStringNumber(self, s):
+ if s == None:
+ return None
+ return str(float(s))
+
+ def parseLine(self, line):
+ "Parse a gcode line."
+ splitLine = getSplitLineBeforeBracketSemicolon(line)
+ if len(splitLine) < 1:
+ return
+ firstWord = splitLine[0]
+ if len(firstWord) < 1:
+ return
+ if firstWord[0] == '(':
+ return
+ if firstWord != 'G1':
+ self.output.write(line + '\n')
+ return
+ eString = self.fixStringNumber(getStringFromCharacterSplitLine('E', splitLine ))
+ xString = self.fixStringNumber(getStringFromCharacterSplitLine('X', splitLine ))
+ yString = self.fixStringNumber(getStringFromCharacterSplitLine('Y', splitLine ))
+ zString = self.fixStringNumber(getStringFromCharacterSplitLine('Z', splitLine ))
+ feedRateString = self.fixStringNumber(getStringFromCharacterSplitLine('F', splitLine ))
+ self.output.write('G1')
+ if xString != None:
+ self.output.write('X' + xString )
+ if yString != None:
+ self.output.write('Y' + yString )
+ if zString != None and zString != self.lastZString:
+ self.output.write('Z' + zString )
+ if feedRateString != None and feedRateString != self.lastFeedRateString:
+ self.output.write('F' + feedRateString )
+ if eString != None:
+ self.output.write('E' + eString )
+ self.lastFeedRateString = feedRateString
+ self.lastZString = zString
+ self.output.write('\n')
+
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/export.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/export.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/export.py 2011-02-09 08:28:22.000000000 +0100
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/export.py 2011-12-15 16:14:40.000000000 +0100
@@ -214,17 +214,20 @@
self.exportLabel = settings.LabelDisplay().getFromName('Export Operations: ', self)
self.exportPlugins = []
exportLatentStringVar = settings.LatentStringVar()
- self.doNotChangeOutput = settings.RadioCapitalized().getFromRadio(exportLatentStringVar, 'Do Not Change Output', self, True)
+ self.doNotChangeOutput = settings.RadioCapitalized().getFromRadio(exportLatentStringVar, 'Do Not Change Output', self, False)
self.doNotChangeOutput.directoryPath = None
allExportPluginFileNames = exportPluginFileNames + exportStaticPluginFileNames
for exportPluginFileName in allExportPluginFileNames:
exportPlugin = None
+ default = False
+ if exportPluginFileName == "gcode_small":
+ default = True
if exportPluginFileName in exportPluginFileNames:
path = os.path.join(exportPluginsFolderPath, exportPluginFileName)
- exportPlugin = settings.RadioCapitalizedButton().getFromPath(exportLatentStringVar, exportPluginFileName, path, self, False)
+ exportPlugin = settings.RadioCapitalizedButton().getFromPath(exportLatentStringVar, exportPluginFileName, path, self, default)
exportPlugin.directoryPath = exportPluginsFolderPath
else:
- exportPlugin = settings.RadioCapitalized().getFromRadio(exportLatentStringVar, exportPluginFileName, self, False)
+ exportPlugin = settings.RadioCapitalized().getFromRadio(exportLatentStringVar, exportPluginFileName, self, default)
exportPlugin.directoryPath = exportStaticDirectoryPath
self.exportPlugins.append(exportPlugin)
self.fileExtension = settings.StringSetting().getFromValue('File Extension:', self, 'gcode')
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py 2011-03-29 22:07:15.000000000 +0200
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py 2011-12-15 11:43:14.000000000 +0100
@@ -808,7 +808,7 @@
self.infillPatternLine = settings.Radio().getFromRadio( infillLatentStringVar, 'Line', self, True )
self.infillPerimeterOverlap = settings.FloatSpin().getFromValue( 0.0, 'Infill Perimeter Overlap (ratio):', self, 0.4, 0.15 )
self.infillSolidity = settings.FloatSpin().getFromValue( 0.04, 'Infill Solidity (ratio):', self, 0.3, 0.2 )
- self.infillWidthOverThickness = settings.FloatSpin().getFromValue( 1.3, 'Infill Width over Thickness (ratio):', self, 1.7, 1.5 )
+ self.infillWidth = settings.FloatSpin().getFromValue( 0.1, 'Infill Width:', self, 1.7, 0.4 )
settings.LabelSeparator().getFromRepository(self)
self.solidSurfaceThickness = settings.IntSpin().getFromValue( 0, 'Solid Surface Thickness (layers):', self, 5, 3 )
self.startFromChoice = settings.MenuButtonDisplay().getFromName('Start From Choice:', self)
@@ -1273,7 +1273,7 @@
self.bridgeWidthMultiplier = float(splitLine[1])
elif firstWord == '(<layerThickness>':
self.layerThickness = float(splitLine[1])
- self.infillWidth = self.repository.infillWidthOverThickness.value * self.layerThickness
+ self.infillWidth = self.repository.infillWidth.value
self.distanceFeedRate.addTagRoundedLine('infillWidth', self.infillWidth)
self.distanceFeedRate.addLine(line)
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/home.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/home.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/home.py 2011-02-22 08:41:38.000000000 +0100
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/home.py 2011-12-15 11:43:14.000000000 +0100
@@ -82,7 +82,7 @@
skeinforge_profile.addListsToCraftTypeRepository('skeinforge_application.skeinforge_plugins.craft_plugins.home.html', self)
self.fileNameInput = settings.FileNameInput().getFromFileName( fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(), 'Open File for Home', self, '')
self.openWikiManualHelpPage = settings.HelpPage().getOpenFromAbsolute('http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_home')
- self.activateHome = settings.BooleanSetting().getFromValue('Activate Home', self, True )
+ self.activateHome = settings.BooleanSetting().getFromValue('Activate Home', self, False )
self.nameOfHomingFile = settings.StringSetting().getFromValue('Name of Homing File:', self, 'homing.gcode')
self.executeTitle = 'Home'
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py 2011-04-19 09:36:28.000000000 +0200
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py 2011-12-15 11:43:14.000000000 +0100
@@ -113,7 +113,7 @@
skeinforge_profile.addListsToCraftTypeRepository('skeinforge_application.skeinforge_plugins.craft_plugins.jitter.html', self)
self.fileNameInput = settings.FileNameInput().getFromFileName( fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(), 'Open File for Jitter', self, '')
self.openWikiManualHelpPage = settings.HelpPage().getOpenFromAbsolute('http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Jitter')
- self.activateJitter = settings.BooleanSetting().getFromValue('Activate Jitter', self, True)
+ self.activateJitter = settings.BooleanSetting().getFromValue('Activate Jitter', self, False)
self.jitterOverPerimeterWidth = settings.FloatSpin().getFromValue(1.0, 'Jitter Over Perimeter Width (ratio):', self, 3.0, 2.0)
self.executeTitle = 'Jitter'
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py 2011-02-09 08:31:44.000000000 +0100
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py 2011-12-15 11:43:14.000000000 +0100
@@ -88,7 +88,7 @@
'Set the default settings, execute title & settings fileName.'
skeinforge_profile.addListsToCraftTypeRepository('skeinforge_application.skeinforge_plugins.craft_plugins.limit.html', self )
self.fileNameInput = settings.FileNameInput().getFromFileName( fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(), 'Open File for Limit', self, '')
- self.activateLimit = settings.BooleanSetting().getFromValue('Activate Limit', self, True)
+ self.activateLimit = settings.BooleanSetting().getFromValue('Activate Limit', self, False)
self.maximumInitialFeedRate = settings.FloatSpin().getFromValue(0.5, 'Maximum Initial Feed Rate (mm/s):', self, 10.0, 1.0)
self.maximumZFeedRatePerSecond = settings.FloatSpin().getFromValue(0.5, 'Maximum Z Feed Rate (mm/s):', self, 10.0, 1.0)
self.executeTitle = 'Limit'
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py 2011-02-09 08:33:32.000000000 +0100
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py 2011-12-15 11:43:14.000000000 +0100
@@ -105,7 +105,7 @@
self.fileNameInput = settings.FileNameInput().getFromFileName(
fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(), 'Open File for Multiply', self, '')
self.openWikiManualHelpPage = settings.HelpPage().getOpenFromAbsolute('http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Multiply')
- self.activateMultiply = settings.BooleanSetting().getFromValue('Activate Multiply:', self, False )
+ self.activateMultiply = settings.BooleanSetting().getFromValue('Activate Multiply:', self, True )
settings.LabelSeparator().getFromRepository(self)
settings.LabelDisplay().getFromName('- Center -', self )
self.centerX = settings.FloatSpin().getFromValue(-100.0, 'Center X (mm):', self, 100.0, 0.0)
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py 2011-04-23 09:44:37.000000000 +0200
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py 2011-12-15 14:36:04.000000000 +0100
@@ -358,7 +358,7 @@
self.baseInfillDensity = settings.FloatSpin().getFromValue(0.3, 'Base Infill Density (ratio):', self, 0.9, 0.5)
self.baseLayerThicknessOverLayerThickness = settings.FloatSpin().getFromValue(
1.0, 'Base Layer Thickness over Layer Thickness:', self, 3.0, 2.0)
- self.baseLayers = settings.IntSpin().getFromValue(0, 'Base Layers (integer):', self, 3, 1)
+ self.baseLayers = settings.IntSpin().getFromValue(0, 'Base Layers (integer):', self, 3, 0)
self.baseNozzleLiftOverBaseLayerThickness = settings.FloatSpin().getFromValue(
0.2, 'Base Nozzle Lift over Base Layer Thickness (ratio):', self, 0.8, 0.4)
settings.LabelSeparator().getFromRepository(self)
@@ -376,7 +376,7 @@
self.interfaceLayerThicknessOverLayerThickness = settings.FloatSpin().getFromValue(
1.0, 'Interface Layer Thickness over Layer Thickness:', self, 3.0, 1.0)
self.interfaceLayers = settings.IntSpin().getFromValue(
- 0, 'Interface Layers (integer):', self, 3, 2)
+ 0, 'Interface Layers (integer):', self, 3, 0)
self.interfaceNozzleLiftOverInterfaceLayerThickness = settings.FloatSpin().getFromValue(
0.25, 'Interface Nozzle Lift over Interface Layer Thickness (ratio):', self, 0.85, 0.45)
settings.LabelSeparator().getFromRepository(self)
@@ -385,7 +385,7 @@
self.nameOfSupportStartFile = settings.StringSetting().getFromValue(
'Name of Support Start File:', self, 'support_start.gcode')
settings.LabelSeparator().getFromRepository(self)
- settings.LabelDisplay().getFromName('- Object First Layer -', self)
+ settings.LabelDisplay().getFromName('- Object First Layers -', self)
self.objectFirstLayerFeedRateInfillMultiplier = settings.FloatSpin().getFromValue(
0.2, 'Object First Layer Feed Rate Infill Multiplier (ratio):', self, 1.0, 0.4)
self.objectFirstLayerFeedRatePerimeterMultiplier = settings.FloatSpin().getFromValue(
@@ -394,6 +394,8 @@
0.2, 'Object First Layer Flow Rate Infill Multiplier (ratio):', self, 1.0, 0.4)
self.objectFirstLayerFlowRatePerimeterMultiplier = settings.FloatSpin().getFromValue(
0.2, 'Object First Layer Flow Rate Perimeter Multiplier (ratio):', self, 1.0, 0.4)
+ self.objectFirstLayersLayerAmount = settings.IntSpin().getFromValue(
+ 1, 'Object First Layers Amount Of Layers For Speed Change:', self, 10, 3)
settings.LabelSeparator().getFromRepository(self)
self.operatingNozzleLiftOverLayerThickness = settings.FloatSpin().getFromValue(
0.3, 'Operating Nozzle Lift over Layer Thickness (ratio):', self, 0.7, 0.5)
@@ -744,9 +746,9 @@
paths = euclidean.getPathsFromEndpoints(endpoints, 1.5 * self.interfaceStep, aroundPixelTable, aroundWidth)
feedRateMinuteMultiplied = self.feedRateMinute
supportFlowRateMultiplied = self.supportFlowRate
- if self.layerIndex == 0:
- feedRateMinuteMultiplied *= self.repository.objectFirstLayerFeedRateInfillMultiplier.value
- supportFlowRateMultiplied *= self.repository.objectFirstLayerFlowRateInfillMultiplier.value
+ if self.layerIndex < self.repository.objectFirstLayersLayerAmount.value:
+ feedRateMinuteMultiplied *= ((self.repository.objectFirstLayerFeedRateInfillMultiplier.value * (self.repository.objectFirstLayersLayerAmount.value - self.layerIndex)) + self.layerIndex) / self.repository.objectFirstLayersLayerAmount.value
+ supportFlowRateMultiplied *= ((self.repository.objectFirstLayerFlowRatePerimeterMultiplier.value * (self.repository.objectFirstLayersLayerAmount.value - self.layerIndex)) + self.layerIndex) / self.repository.objectFirstLayersLayerAmount.value
self.addFlowRateValueIfDifferent(supportFlowRateMultiplied)
for path in paths:
self.distanceFeedRate.addGcodeFromFeedRateThreadZ(feedRateMinuteMultiplied, path, self.travelFeedRateMinute, z)
@@ -874,14 +876,17 @@
z += self.operatingJump
flowRate = self.oldFlowRateInput
temperature = self.objectNextLayersTemperature
+ if self.layerIndex < self.repository.objectFirstLayersLayerAmount.value:
+ if self.isPerimeterPath:
+ feedRateMinuteMultiplied *= ((self.repository.objectFirstLayerFeedRatePerimeterMultiplier.value * (self.repository.objectFirstLayersLayerAmount.value - self.layerIndex)) + self.layerIndex) / self.repository.objectFirstLayersLayerAmount.value
+ flowRate *= ((self.repository.objectFirstLayerFlowRatePerimeterMultiplier.value * (self.repository.objectFirstLayersLayerAmount.value - self.layerIndex)) + self.layerIndex) / self.repository.objectFirstLayersLayerAmount.value
+ else:
+ feedRateMinuteMultiplied *= ((self.repository.objectFirstLayerFeedRateInfillMultiplier.value * (self.repository.objectFirstLayersLayerAmount.value - self.layerIndex)) + self.layerIndex) / self.repository.objectFirstLayersLayerAmount.value
+ flowRate *= ((self.repository.objectFirstLayerFlowRateInfillMultiplier.value * (self.repository.objectFirstLayersLayerAmount.value - self.layerIndex)) + self.layerIndex) / self.repository.objectFirstLayersLayerAmount.value
if self.layerIndex == 0:
if self.isPerimeterPath:
- feedRateMinuteMultiplied *= self.repository.objectFirstLayerFeedRatePerimeterMultiplier.value
- flowRate *= self.repository.objectFirstLayerFlowRatePerimeterMultiplier.value
temperature = self.objectFirstLayerPerimeterTemperature
else:
- feedRateMinuteMultiplied *= self.repository.objectFirstLayerFeedRateInfillMultiplier.value
- flowRate *= self.repository.objectFirstLayerFlowRateInfillMultiplier.value
temperature = self.objectFirstLayerInfillTemperature
self.addFlowRateValueIfDifferent(flowRate)
self.addTemperatureLineIfDifferent(temperature)
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py 2011-02-22 08:41:38.000000000 +0100
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py 2011-12-15 11:43:14.000000000 +0100
@@ -148,15 +148,15 @@
self.dutyCycleAtBeginning = settings.FloatSpin().getFromValue( 0.0, 'Duty Cyle at Beginning (portion):', self, 1.0, 1.0 )
self.dutyCycleAtEnding = settings.FloatSpin().getFromValue( 0.0, 'Duty Cyle at Ending (portion):', self, 1.0, 0.0 )
settings.LabelSeparator().getFromRepository(self)
- self.feedRatePerSecond = settings.FloatSpin().getFromValue( 2.0, 'Feed Rate (mm/s):', self, 50.0, 16.0 )
- self.flowRateSetting = settings.FloatSpin().getFromValue( 50.0, 'Flow Rate Setting (float):', self, 250.0, 210.0 )
+ self.feedRatePerSecond = settings.FloatSpin().getFromValue( 2.0, 'Feed Rate (mm/s):', self, 250.0, 50.0 )
+ self.flowRateSetting = settings.FloatSpin().getFromValue( 50.0, 'Flow Rate Setting (float):', self, 250.0, 50.0 )
self.orbitalFeedRateOverOperatingFeedRate = settings.FloatSpin().getFromValue( 0.1, 'Orbital Feed Rate over Operating Feed Rate (ratio):', self, 0.9, 0.5 )
settings.LabelSeparator().getFromRepository(self)
settings.LabelDisplay().getFromName('- Perimeter -', self )
- self.perimeterFeedRateOverOperatingFeedRate = settings.FloatSpin().getFromValue( 0.5, 'Perimeter Feed Rate over Operating Feed Rate (ratio):', self, 1.0, 1.0 )
- self.perimeterFlowRateOverOperatingFlowRate = settings.FloatSpin().getFromValue( 0.5, 'Perimeter Flow Rate over Operating Flow Rate (ratio):', self, 1.0, 1.0 )
+ self.perimeterFeedRateOverOperatingFeedRate = settings.FloatSpin().getFromValue( 0.5, 'Perimeter Feed Rate over Operating Feed Rate (ratio):', self, 1.0, 0.5 )
+ self.perimeterFlowRateOverOperatingFlowRate = settings.FloatSpin().getFromValue( 0.5, 'Perimeter Flow Rate over Operating Flow Rate (ratio):', self, 1.0, 0.5 )
settings.LabelSeparator().getFromRepository(self)
- self.travelFeedRatePerSecond = settings.FloatSpin().getFromValue( 2.0, 'Travel Feed Rate (mm/s):', self, 50.0, 16.0 )
+ self.travelFeedRatePerSecond = settings.FloatSpin().getFromValue( 2.0, 'Travel Feed Rate (mm/s):', self, 350.0, 250.0 )
self.executeTitle = 'Speed'
def execute(self):
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py
--- ori/41/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py 2011-02-09 08:31:01.000000000 +0100
+++ target/SF41/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py 2011-12-15 11:43:14.000000000 +0100
@@ -122,7 +122,7 @@
"Set the default settings, execute title & settings fileName."
skeinforge_profile.addListsToCraftTypeRepository('skeinforge_application.skeinforge_plugins.craft_plugins.temperature.html', self )
self.fileNameInput = settings.FileNameInput().getFromFileName( fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(), 'Open File for Temperature', self, '')
- self.activateTemperature = settings.BooleanSetting().getFromValue('Activate Temperature:', self, True )
+ self.activateTemperature = settings.BooleanSetting().getFromValue('Activate Temperature:', self, False )
settings.LabelSeparator().getFromRepository(self)
settings.LabelDisplay().getFromName('- Rate -', self )
self.coolingRate = settings.FloatSpin().getFromValue( 1.0, 'Cooling Rate (Celcius/second):', self, 20.0, 3.0 )
diff -r -x'*.pyc' -N -u ori/41/skeinforge_application/skeinforge.py target/SF41/skeinforge_application/skeinforge.py
--- ori/41/skeinforge_application/skeinforge.py 2011-04-27 02:14:25.000000000 +0200
+++ target/SF41/skeinforge_application/skeinforge.py 2011-12-15 15:28:29.000000000 +0100
@@ -228,6 +228,7 @@
from skeinforge_application.skeinforge_utilities import skeinforge_profile
import os
import sys
+import platform
# infill or inset bug
@@ -545,7 +546,6 @@
repository = getNewRepository()
repository.fileNameInput.value = fileName
repository.execute()
- settings.startMainLoopFromConstructor(repository)
class SkeinforgeRepository:
@@ -568,13 +568,36 @@
settings.LabelDisplay().getFromName('', self)
importantFileNames = ['craft', 'profile']
getRadioPluginsAddPluginGroupFrame(archive.getSkeinforgePluginsPath(), importantFileNames, getPluginFileNames(), self)
- self.executeTitle = 'Skeinforge'
+ self.executeTitle = 'Skeinforge a file...'
+
+ def getPyPyExe(self):
+ pypyExe = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../pypy-1.7/pypy.exe"));
+ if os.path.exists(pypyExe):
+ return pypyExe
+ pypyExe = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../pypy-1.7/bin/pypy"));
+ if os.path.exists(pypyExe):
+ return pypyExe
+ pypyExe = "/bin/pypy";
+ if os.path.exists(pypyExe):
+ return pypyExe
+ pypyExe = "/usr/bin/pypy";
+ if os.path.exists(pypyExe):
+ return pypyExe
+ pypyExe = "/usr/local/bin/pypy";
+ if os.path.exists(pypyExe):
+ return pypyExe
+ return False
def execute(self):
'Skeinforge button has been clicked.'
fileNames = skeinforge_polyfile.getFileOrDirectoryTypesUnmodifiedGcode(self.fileNameInput.value, fabmetheus_interpret.getImportPluginFileNames(), self.fileNameInput.wasCancelled)
+ pypyExe = self.getPyPyExe()
for fileName in fileNames:
- skeinforge_craft.writeOutput(fileName)
+ if pypyExe == False or platform.python_implementation() == "PyPy":
+ skeinforge_craft.writeOutput(fileName)
+ else:
+ if os.system(pypyExe + " '" + fileName + "'") > 0:
+ skeinforge_craft.writeOutput(fileName)
def save(self):
'Profile has been saved and profile menu should be updated.'