示例#1
0
文件: flow.py 项目: yazici/skeinforge
 def addFlowRateLineIfNecessary(self):
     "Add flow rate line."
     flowRateString = euclidean.getRoundedToThreePlaces(
         self.flowRepository.flowRate.value)
     if flowRateString != self.oldFlowRateString:
         self.distanceFeedRate.addLine('M108 S' + flowRateString)
     self.oldFlowRateString = flowRateString
示例#2
0
 def addInitializationToOutputSVG(self):
     "Add initialization gcode to the output."
     endOfSVGHeaderIndex = self.svgTemplateLines.index(
         '//End of svg header')
     self.addLines(self.svgTemplateLines[:endOfSVGHeaderIndex])
     self.addLine(
         '\tdecimalPlacesCarried = ' +
         str(self.decimalPlacesCarried))  # Set decimal places carried.
     self.addLine(
         '\tlayerThickness = ' +
         self.getRounded(self.layerThickness))  # Set layer thickness.
     self.addLine(
         '\textrusionWidth = ' +
         self.getRounded(self.extrusionWidth))  # Set extrusion width.
     self.addLine('\tinfillBridgeWidthOverExtrusionWidth = ' +
                  euclidean.getRoundedToThreePlaces(
                      self.carvePreferences.
                      infillBridgeWidthOverExtrusionWidth.value))
     self.addLine('\tprocedureDone = "carve"')  # The skein has been carved.
     self.addLine('\textrusionStart = 1'
                  )  # Initialization is finished, extrusion is starting.
     beginningOfPathSectionIndex = self.svgTemplateLines.index(
         '<!--Beginning of path section-->')
     self.addLines(self.svgTemplateLines[endOfSVGHeaderIndex +
                                         1:beginningOfPathSectionIndex])
示例#3
0
 def getFlowrateString(self):
     "Get the flowrate string."
     if self.speedPreferences.flowrateDoNotAddFlowratePreference.value:
         return None
     flowrate = self.getOperatingFlowrate()
     if self.isSurroundingLoopBeginning:
         flowrate *= self.speedPreferences.perimeterFlowrateOverOperatingFlowrate.value
     return euclidean.getRoundedToThreePlaces(flowrate)
示例#4
0
 def getFlowrateString(self):
     "Get the flowrate string."
     if self.speedPreferences.flowrateDoNotAddFlowratePreference.value:
         return None
     flowrate = self.getOperatingFlowrate()
     if self.isSurroundingLoopBeginning:
         flowrate *= self.speedPreferences.perimeterFlowrateOverOperatingFlowrate.value
     return euclidean.getRoundedToThreePlaces(flowrate)
示例#5
0
 def parseInitialization(self):
     "Parse gcode initialization and store the parameters."
     for self.lineIndex in xrange(len(self.lines)):
         line = self.lines[self.lineIndex]
         splitLine = line.split()
         firstWord = gcodec.getFirstWord(splitLine)
         if firstWord == "(<decimalPlacesCarried>":
             self.decimalPlacesCarried = int(splitLine[1])
         elif firstWord == "(<layerThickness>":
             self.layerThickness = float(splitLine[1])
             self.extrusionDiameter = (
                 self.speedPreferences.extrusionDiameterOverThickness.value * self.layerThickness
             )
             self.flowrateCubicMillimetersPerSecond = (
                 math.pi * self.extrusionDiameter * self.extrusionDiameter / 4.0 * self.feedratePerSecond
             )
             roundedFlowrate = euclidean.getRoundedToThreePlaces(self.flowrateCubicMillimetersPerSecond)
             self.addLine(
                 "(<flowrateCubicMillimetersPerSecond> " + roundedFlowrate + " </flowrateCubicMillimetersPerSecond>)"
             )
         elif firstWord == "(<extrusionWidth>":
             self.extrusionWidth = float(splitLine[1])
             self.addLine("(<feedrateMinute> %s </feedrateMinute>)" % (60.0 * self.feedratePerSecond))
             self.addLine("(<operatingFeedratePerSecond> %s </operatingFeedratePerSecond>)" % self.feedratePerSecond)
             self.addLine(
                 "(<orbitalFeedratePerSecond> %s </orbitalFeedratePerSecond>)" % self.orbitalFeedratePerSecond
             )
             if not self.speedPreferences.flowrateDoNotAddFlowratePreference.value:
                 supportFlowrate = (
                     self.speedPreferences.supportFlowrateOverOperatingFlowrate.value * self.getOperatingFlowrate()
                 )
                 self.addLine(
                     "(<supportFlowrate> %s </supportFlowrate)" % euclidean.getRoundedToThreePlaces(supportFlowrate)
                 )
             self.addLine(
                 "(<travelFeedratePerSecond> %s </travelFeedratePerSecond>)"
                 % self.speedPreferences.travelFeedratePerSecond.value
             )
         elif firstWord == "(</extruderInitialization>)":
             self.addLine("(<procedureDone> speed </procedureDone>)")
             self.addLine(line)
             self.lineIndex += 1
             return
         self.addLine(line)
示例#6
0
 def parseInitialization(self):
     "Parse gcode initialization and store the parameters."
     for self.lineIndex in xrange(len(self.lines)):
         line = self.lines[self.lineIndex]
         splitLine = line.split()
         firstWord = gcodec.getFirstWord(splitLine)
         if firstWord == '(<decimalPlacesCarried>':
             self.decimalPlacesCarried = int(splitLine[1])
         elif firstWord == '(<layerThickness>':
             self.layerThickness = float(splitLine[1])
             self.extrusionDiameter = self.speedPreferences.extrusionDiameterOverThickness.value * self.layerThickness
             self.flowrateCubicMillimetersPerSecond = math.pi * self.extrusionDiameter * self.extrusionDiameter / 4.0 * self.feedratePerSecond
             roundedFlowrate = euclidean.getRoundedToThreePlaces(
                 self.flowrateCubicMillimetersPerSecond)
             self.addLine('(<flowrateCubicMillimetersPerSecond> ' +
                          roundedFlowrate +
                          ' </flowrateCubicMillimetersPerSecond>)')
         elif firstWord == '(<extrusionWidth>':
             self.extrusionWidth = float(splitLine[1])
             self.addLine('(<feedrateMinute> %s </feedrateMinute>)' %
                          (60.0 * self.feedratePerSecond))
             self.addLine(
                 '(<operatingFeedratePerSecond> %s </operatingFeedratePerSecond>)'
                 % self.feedratePerSecond)
             self.addLine(
                 '(<orbitalFeedratePerSecond> %s </orbitalFeedratePerSecond>)'
                 % self.orbitalFeedratePerSecond)
             if not self.speedPreferences.flowrateDoNotAddFlowratePreference.value:
                 supportFlowrate = self.speedPreferences.supportFlowrateOverOperatingFlowrate.value * self.getOperatingFlowrate(
                 )
                 self.addLine(
                     '(<supportFlowrate> %s </supportFlowrate)' %
                     euclidean.getRoundedToThreePlaces(supportFlowrate))
             self.addLine(
                 '(<travelFeedratePerSecond> %s </travelFeedratePerSecond>)'
                 % self.speedPreferences.travelFeedratePerSecond.value)
         elif firstWord == '(</extruderInitialization>)':
             self.addLine('(<procedureDone> speed </procedureDone>)')
             self.addLine(line)
             self.lineIndex += 1
             return
         self.addLine(line)
示例#7
0
 def addInitializationToOutputSVG(self):
     "Add initialization gcode to the output."
     endOfSVGHeaderIndex = self.svgTemplateLines.index("//End of svg header")
     self.addLines(self.svgTemplateLines[:endOfSVGHeaderIndex])
     self.addLine("\tdecimalPlacesCarried = " + str(self.decimalPlacesCarried))  # Set decimal places carried.
     self.addLine("\tlayerThickness = " + self.getRounded(self.layerThickness))  # Set layer thickness.
     self.addLine("\textrusionWidth = " + self.getRounded(self.extrusionWidth))  # Set extrusion width.
     self.addLine(
         "\tinfillBridgeWidthOverExtrusionWidth = "
         + euclidean.getRoundedToThreePlaces(self.carvePreferences.infillBridgeWidthOverExtrusionWidth.value)
     )
     self.addLine('\tprocedureDone = "carve"')  # The skein has been carved.
     self.addLine("\textrusionStart = 1")  # Initialization is finished, extrusion is starting.
     beginningOfPathSectionIndex = self.svgTemplateLines.index("<!--Beginning of path section-->")
     self.addLines(self.svgTemplateLines[endOfSVGHeaderIndex + 1 : beginningOfPathSectionIndex])
示例#8
0
 def parseGcode(self, gcodeText, speedPreferences):
     "Parse gcode text and store the speed gcode."
     self.speedPreferences = speedPreferences
     self.feedratePerSecond = speedPreferences.feedratePerSecond.value
     self.orbitalFeedratePerSecond = self.feedratePerSecond * speedPreferences.orbitalFeedrateOverOperatingFeedrate.value
     self.travelFeedratePerMinute = 60.0 * self.speedPreferences.travelFeedratePerSecond.value
     self.lines = gcodec.getTextLines(gcodeText)
     self.parseInitialization()
     for line in self.lines[self.lineIndex:]:
         self.parseLine(line)
     circleArea = self.extrusionDiameter * self.extrusionDiameter * math.pi / 4.0
     print('The extrusion fill density ratio is ' +
           euclidean.getRoundedToThreePlaces(circleArea /
                                             self.extrusionWidth /
                                             self.layerThickness))
示例#9
0
 def parseGcode(self, gcodeText, speedPreferences):
     "Parse gcode text and store the speed gcode."
     self.speedPreferences = speedPreferences
     self.feedratePerSecond = speedPreferences.feedratePerSecond.value
     self.orbitalFeedratePerSecond = (
         self.feedratePerSecond * speedPreferences.orbitalFeedrateOverOperatingFeedrate.value
     )
     self.travelFeedratePerMinute = 60.0 * self.speedPreferences.travelFeedratePerSecond.value
     self.lines = gcodec.getTextLines(gcodeText)
     self.parseInitialization()
     for line in self.lines[self.lineIndex :]:
         self.parseLine(line)
     circleArea = self.extrusionDiameter * self.extrusionDiameter * math.pi / 4.0
     print(
         "The extrusion fill density ratio is "
         + euclidean.getRoundedToThreePlaces(circleArea / self.extrusionWidth / self.layerThickness)
     )
示例#10
0
 def addInitializationToOutput(self):
     "Add initialization gcode to the output."
     #		self.addLine( '(<creator> skeinforge June 8, 2009 </creator>)' ) # GCode formatted comment
     self.addLine('M110')  # GCode for compatibility with Nophead's code.
     self.addLine('(<extruderInitialization>)')  # GCode formatted comment
     #		self.addLine( 'G21' ) # Set units to mm.
     #		self.addLine( 'G90' ) # Set positioning to absolute.
     #		if self.insetPreferences.startAtHome.value:
     #			self.addLine( 'G28' ) # Start at home.
     #		self.addLine( 'M103' ) # Turn extruder off.
     #		self.addLine( 'M105' ) # Custom code for temperature reading.
     self.addFromUpperLowerFile(
         'EndOfTheBeginning.txt')  # Add a second start file if it exists.
     self.addLine(
         '(<decimalPlacesCarried> ' + str(self.decimalPlacesCarried) +
         ' </decimalPlacesCarried>)')  # Set decimal places carried.
     self.addLine('(<layerThickness> ' +
                  self.getRounded(self.layerThickness) +
                  ' </layerThickness>)')  # Set layer thickness.
     self.addLine(
         '(<extrusionPerimeterWidth> ' +
         self.getRounded(self.extrusionPerimeterWidth) +
         ' </extrusionPerimeterWidth>)')  # Set extrusion perimeter width.
     self.addLine('(<extrusionWidth> ' +
                  self.getRounded(self.extrusionWidth) +
                  ' </extrusionWidth>)')  # Set extrusion width.
     self.addLine('(<fillInset> ' + str(self.fillInset) +
                  ' </fillInset>)')  # Set fill inset.
     # Set bridge extrusion width
     self.addLine('(<infillBridgeWidthOverExtrusionWidth> ' +
                  euclidean.getRoundedToThreePlaces(
                      self.infillBridgeWidthOverExtrusionWidth) +
                  ' </infillBridgeWidthOverExtrusionWidth>)')
     self.addLine('(<procedureDone> carve </procedureDone>)'
                  )  # The skein has been carved.
     self.addLine('(<procedureDone> inset </procedureDone>)'
                  )  # The skein has been carved.
     self.addLine('(</extruderInitialization>)'
                  )  # Initialization is finished, extrusion is starting.
     self.addLine('(<extrusion>)'
                  )  # Initialization is finished, extrusion is starting.
示例#11
0
	def addInitializationToOutput( self ):
		"Add initialization gcode to the output."
#		self.addLine( '(<creator> skeinforge June 8, 2009 </creator>)' ) # GCode formatted comment
		self.addLine( 'M110' ) # GCode for compatibility with Nophead's code.
		self.addLine( '(<extruderInitialization>)' ) # GCode formatted comment
#		self.addLine( 'G21' ) # Set units to mm.
#		self.addLine( 'G90' ) # Set positioning to absolute.
#		if self.insetPreferences.startAtHome.value:
#			self.addLine( 'G28' ) # Start at home.
#		self.addLine( 'M103' ) # Turn extruder off.
#		self.addLine( 'M105' ) # Custom code for temperature reading.
		self.addFromUpperLowerFile( 'EndOfTheBeginning.txt' ) # Add a second start file if it exists.
		self.addLine( '(<decimalPlacesCarried> ' + str( self.decimalPlacesCarried ) + ' </decimalPlacesCarried>)' ) # Set decimal places carried.
		self.addLine( '(<layerThickness> ' + self.getRounded( self.layerThickness ) + ' </layerThickness>)' ) # Set layer thickness.
		self.addLine( '(<extrusionPerimeterWidth> ' + self.getRounded( self.extrusionPerimeterWidth ) + ' </extrusionPerimeterWidth>)' ) # Set extrusion perimeter width.
		self.addLine( '(<extrusionWidth> ' + self.getRounded( self.extrusionWidth ) + ' </extrusionWidth>)' ) # Set extrusion width.
		self.addLine( '(<fillInset> ' + str( self.fillInset ) + ' </fillInset>)' ) # Set fill inset.
		# Set bridge extrusion width
		self.addLine( '(<infillBridgeWidthOverExtrusionWidth> ' + euclidean.getRoundedToThreePlaces( self.infillBridgeWidthOverExtrusionWidth ) + ' </infillBridgeWidthOverExtrusionWidth>)' )
		self.addLine( '(<procedureDone> carve </procedureDone>)' ) # The skein has been carved.
		self.addLine( '(<procedureDone> inset </procedureDone>)' ) # The skein has been carved.
		self.addLine( '(</extruderInitialization>)' ) # Initialization is finished, extrusion is starting.
		self.addLine( '(<extrusion>)' ) # Initialization is finished, extrusion is starting.
示例#12
0
	def addFlowRateLineIfNecessary( self ):
		"Add flow rate line."
		flowRateString = euclidean.getRoundedToThreePlaces( self.flowRepository.flowRate.value )
		if flowRateString != self.oldFlowRateString:
			self.distanceFeedRate.addLine( 'M108 S' + flowRateString )
		self.oldFlowRateString = flowRateString
示例#13
0
	def addParameter( self, firstWord, parameter ):
		"Add the parameter if it is at least minus three hundred."
		self.distanceFeedRate.addLine( firstWord + ' S' + euclidean.getRoundedToThreePlaces( parameter ) ) # Set bed temperature.
示例#14
0
	def addTemperature( self, temperature ):
		"Add a line of temperature."
		self.distanceFeedRate.addLine( 'M104 S' + euclidean.getRoundedToThreePlaces( temperature ) ) 
示例#15
0
	def addTemperature( self, temperature ):
		"Add a line of temperature."
		self.addLine( 'M104 S' + euclidean.getRoundedToThreePlaces( temperature ) ) # Set temperature.
示例#16
0
 def addParameter(self, firstWord, parameter):
     "Add the parameter if it is at least minus three hundred."
     self.distanceFeedRate.addLine(
         firstWord + ' S' + euclidean.getRoundedToThreePlaces(parameter)
     )  # Set bed temperature.
示例#17
0
文件: cool.py 项目: yazici/skeinforge
	def addTemperature( self, temperature ):
		"Add a line of temperature."
		self.distanceFeedRate.addLine( 'M104 S' + euclidean.getRoundedToThreePlaces( temperature ) )