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
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])
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)
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)
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)
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])
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))
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) )
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.
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.
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
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.
def addTemperature( self, temperature ): "Add a line of temperature." self.distanceFeedRate.addLine( 'M104 S' + euclidean.getRoundedToThreePlaces( temperature ) )
def addTemperature( self, temperature ): "Add a line of temperature." self.addLine( 'M104 S' + euclidean.getRoundedToThreePlaces( temperature ) ) # Set temperature.
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.