Example #1
0
	def addInitializationToOutput( self ):
		"Add initialization gcode to the output."
		self.addFromUpperLowerFile( self.prefaceRepository.nameOfStartFile.value ) # Add a start file if it exists.
		self.distanceFeedRate.addTagBracketedLine( 'creation', 'skeinforge' ) # GCode formatted comment
		absoluteFilePathUntilDot = os.path.abspath( __file__ )[ : os.path.abspath( __file__ ).rfind( '.' ) ]
		if absoluteFilePathUntilDot == '/home/enrique/Desktop/backup/babbleold/script/reprap/fabmetheus/skeinforge_application/skeinforge_plugins/craft_plugins/preface': #is this script on Enrique's computer?
			gcodec.writeFileText( gcodec.getVersionFileName(), date.today().isoformat() )
		versionText = gcodec.getFileText( gcodec.getVersionFileName() )
		self.distanceFeedRate.addTagBracketedLine( 'version', versionText ) # GCode formatted comment
		self.distanceFeedRate.addLine( '(<extruderInitialization>)' ) # GCode formatted comment
		if self.prefaceRepository.setPositioningToAbsolute.value:
			self.distanceFeedRate.addLine( 'G90' ) # Set positioning to absolute.
		if self.prefaceRepository.setUnitsToMillimeters.value:
			self.distanceFeedRate.addLine( 'G21' ) # Set units to millimeters.
		if self.prefaceRepository.startAtHome.value:
			self.distanceFeedRate.addLine( 'G28' ) # Start at home.
		if self.prefaceRepository.turnExtruderOffAtStartUp.value:
			self.distanceFeedRate.addLine( 'M103' ) # Turn extruder off.
		craftTypeName = skeinforge_profile.getCraftTypeName()
		self.distanceFeedRate.addTagBracketedLine( 'craftTypeName', craftTypeName )
		self.distanceFeedRate.addTagBracketedLine( 'decimalPlacesCarried', self.distanceFeedRate.decimalPlacesCarried )
		self.distanceFeedRate.addTagBracketedLine( 'layerThickness', self.distanceFeedRate.getRounded( self.layerThickness ) )
		if self.prefaceRepository.meta.value:
			self.distanceFeedRate.addTagBracketedLine( 'meta', self.prefaceRepository.meta.value )
		self.distanceFeedRate.addTagBracketedLine( 'perimeterWidth', self.distanceFeedRate.getRounded( self.perimeterWidth ) )
		self.distanceFeedRate.addTagBracketedLine( 'profileName', skeinforge_profile.getProfileName( craftTypeName ) )
		self.distanceFeedRate.addTagBracketedLine( 'procedureDone', 'carve' )
		self.distanceFeedRate.addTagBracketedLine( 'procedureDone', 'preface' )
		self.distanceFeedRate.addLine( '(</extruderInitialization>)' ) # Initialization is finished, extrusion is starting.
		self.distanceFeedRate.addLine( '(<extrusion>)' ) # Initialization is finished, extrusion is starting.
Example #2
0
 def addInitializationToOutput(self):
     "Add initialization gcode to the output."
     self.addFromUpperLowerFile(self.prefaceRepository.nameOfStartFile.value
                                )  # Add a start file if it exists.
     self.distanceFeedRate.addTagBracketedLine(
         'creation', 'skeinforge')  # GCode formatted comment
     absoluteFilePathUntilDot = os.path.abspath(
         __file__)[:os.path.abspath(__file__).rfind('.')]
     if absoluteFilePathUntilDot == '/home/enrique/Desktop/backup/babbleold/script/reprap/fabmetheus/skeinforge_application/skeinforge_plugins/craft_plugins/preface':  #is this script on Enrique's computer?
         gcodec.writeFileText(
             gcodec.getVersionFileName(),
             date.today().isoformat().replace('-', '.')[2:])
     versionText = gcodec.getFileText(gcodec.getVersionFileName())
     self.distanceFeedRate.addTagBracketedLine(
         'version', versionText)  # GCode formatted comment
     self.distanceFeedRate.addLine(
         '(<extruderInitialization>)')  # GCode formatted comment
     if self.prefaceRepository.setPositioningToAbsolute.value:
         self.distanceFeedRate.addLine(
             'G90')  # Set positioning to absolute.
     if self.prefaceRepository.setUnitsToMillimeters.value:
         self.distanceFeedRate.addLine('G21')  # Set units to millimeters.
     if self.prefaceRepository.startAtHome.value:
         self.distanceFeedRate.addLine('G28')  # Start at home.
     if self.prefaceRepository.turnExtruderOffAtStartUp.value:
         self.distanceFeedRate.addLine('M103')  # Turn extruder off.
     craftTypeName = skeinforge_profile.getCraftTypeName()
     self.distanceFeedRate.addTagBracketedLine('craftTypeName',
                                               craftTypeName)
     self.distanceFeedRate.addTagBracketedLine(
         'decimalPlacesCarried', self.distanceFeedRate.decimalPlacesCarried)
     layerThickness = float(
         self.svgReader.sliceDictionary['layerThickness'])
     self.distanceFeedRate.addTagBracketedLine(
         'layerThickness', self.distanceFeedRate.getRounded(layerThickness))
     if self.prefaceRepository.meta.value:
         self.distanceFeedRate.addTagBracketedLine(
             'meta', self.prefaceRepository.meta.value)
     perimeterWidth = float(
         self.svgReader.sliceDictionary['perimeterWidth'])
     self.distanceFeedRate.addTagBracketedLine(
         'perimeterWidth', self.distanceFeedRate.getRounded(perimeterWidth))
     self.distanceFeedRate.addTagBracketedLine(
         'profileName', skeinforge_profile.getProfileName(craftTypeName))
     self.distanceFeedRate.addTagBracketedLine(
         'procedureDone', self.svgReader.sliceDictionary['procedureDone'])
     self.distanceFeedRate.addTagBracketedLine('procedureDone', 'preface')
     self.distanceFeedRate.addLine(
         '(</extruderInitialization>)'
     )  # Initialization is finished, extrusion is starting.
     self.distanceFeedRate.addLine(
         '(<extrusion>)'
     )  # Initialization is finished, extrusion is starting.
Example #3
0
 def __init__(self):
     "Set the default settings, execute title & settings fileName."
     settings.addListsToRepository("skeinforge_application.skeinforge.html", "", self)
     self.fileNameInput = settings.FileNameInput().getFromFileName(
         fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(), "Open File for Skeinforge", self, ""
     )
     self.profileType = settings.MenuButtonDisplay().getFromName("Profile Type: ", self)
     self.profileSelection = settings.MenuButtonDisplay().getFromName("Profile Selection: ", self)
     addToProfileMenu(self.profileSelection, self.profileType, self)
     settings.LabelDisplay().getFromName("Search:", self)
     reprapSearch = settings.HelpPage().getFromNameAfterHTTP(
         "members.axion.net/~enrique/search_reprap.html", "Reprap", self
     )
     skeinforgeSearch = settings.HelpPage().getFromNameAfterHTTP(
         "members.axion.net/~enrique/search_skeinforge.html", "Skeinforge", self
     )
     skeinforgeSearch.column += 2
     webSearch = settings.HelpPage().getFromNameAfterHTTP("members.axion.net/~enrique/search_web.html", "Web", self)
     webSearch.column += 4
     versionText = gcodec.getFileText(gcodec.getVersionFileName())
     self.version = settings.LabelDisplay().getFromName("Version: " + versionText, self)
     settings.LabelDisplay().getFromName("", self)
     importantFileNames = ["craft", "profile"]
     getRadioPluginsAddPluginGroupFrame(getPluginsDirectoryPath(), importantFileNames, getPluginFileNames(), self)
     self.executeTitle = "Skeinforge"
Example #4
0
 def __init__(self):
     "Set the default settings, execute title & settings fileName."
     settings.addListsToRepository('skeinforge.skeinforge.html', '', self)
     self.fileNameInput = settings.FileNameInput().getFromFileName(
         fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(),
         'Open File for Skeinforge', self, '')
     versionText = gcodec.getFileText(gcodec.getVersionFileName())
     self.createdOnLabel = settings.LabelDisplay().getFromName(
         'Created On: ' + versionText, self)
     self.profileType = settings.MenuButtonDisplay().getFromName(
         'Profile Type: ', self)
     self.profileSelection = settings.MenuButtonDisplay().getFromName(
         'Profile Selection: ', self)
     addToProfileMenu(self.profileSelection, self.profileType, self)
     settings.LabelDisplay().getFromName('Search:', self)
     reprapSearch = settings.HelpPage().getFromNameAfterHTTP(
         'members.axion.net/~enrique/search_reprap.html', 'Reprap', self)
     skeinforgeSearch = settings.HelpPage().getFromNameAfterHTTP(
         'members.axion.net/~enrique/search_skeinforge.html', 'Skeinforge',
         self)
     skeinforgeSearch.column += 2
     webSearch = settings.HelpPage().getFromNameAfterHTTP(
         'members.axion.net/~enrique/search_web.html', 'Web', self)
     webSearch.column += 4
     settings.LabelDisplay().getFromName('', self)
     importantFileNames = ['craft', 'profile']
     getRadioPluginsAddPluginGroupFrame(getPluginsDirectoryPath(),
                                        importantFileNames,
                                        getPluginFileNames(), self)
     self.executeTitle = 'Skeinforge'
Example #5
0
	def __init__( self ):
		"Set the default settings, execute title & settings fileName."
		settings.addListsToRepository( 'skeinforge.html', '', self )
		self.fileNameInput = settings.FileNameInput().getFromFileName( fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(), 'Open File for Skeinforge', self, '' )
		versionText = gcodec.getFileText( gcodec.getVersionFileName() )
		self.profileType = settings.MenuButtonDisplay().getFromName( 'Profile Type: ', self )
		self.profileSelection = settings.MenuButtonDisplay().getFromName( 'Profile Selection: ', self )
		addToProfileMenu( self.profileSelection, self.profileType, self )
		settings.LabelDisplay().getFromName( 'Web Help:', self )
		reprapSearch = settings.HelpPage().getFromNameAfterHTTP( 'www.bitsfrombytes.com/wiki/index.php?title=Skeinforge', 'Bfb Wiki', self )
		settings.LabelDisplay().getFromName( '', self )
		importantFileNames = [ 'craft', 'profile' ]
		getRadioPluginsAddPluginGroupFrame( getPluginsDirectoryPath(), importantFileNames, getPluginFileNames(), self )
		self.executeTitle = 'Skeinforge'
Example #6
0
	def __init__( self ):
		"Set the default settings, execute title & settings fileName."
		settings.addListsToRepository( 'skeinforge.skeinforge.html', '', self )
		self.fileNameInput = settings.FileNameInput().getFromFileName( fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(), 'Open File for Skeinforge', self, '' )
		versionText = gcodec.getFileText( gcodec.getVersionFileName() )
		self.createdOnLabel = settings.LabelDisplay().getFromName( 'Created On: ' + versionText, self )
		self.profileType = settings.MenuButtonDisplay().getFromName( 'Profile Type: ', self )
		self.profileSelection = settings.MenuButtonDisplay().getFromName( 'Profile Selection: ', self )
		addToProfileMenu( self.profileSelection, self.profileType, self )
		settings.LabelDisplay().getFromName( 'Search:', self )
		reprapSearch = settings.HelpPage().getFromNameAfterHTTP( 'members.axion.net/~enrique/search_reprap.html', 'Reprap', self )
		skeinforgeSearch = settings.HelpPage().getFromNameAfterHTTP( 'members.axion.net/~enrique/search_skeinforge.html', 'Skeinforge', self )
		skeinforgeSearch.column += 2
		webSearch = settings.HelpPage().getFromNameAfterHTTP( 'members.axion.net/~enrique/search_web.html', 'Web', self )
		webSearch.column += 4
		settings.LabelDisplay().getFromName( '', self )
		importantFileNames = [ 'craft', 'profile' ]
		getRadioPluginsAddPluginGroupFrame( getPluginsDirectoryPath(), importantFileNames, getPluginFileNames(), self )
		self.executeTitle = 'Skeinforge'
Example #7
0
 def __init__(self):
     "Set the default settings, execute title & settings fileName."
     settings.addListsToRepository('skeinforge.html', '', self)
     self.fileNameInput = settings.FileNameInput().getFromFileName(
         fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(),
         'Open File for Skeinforge', self, '')
     versionText = gcodec.getFileText(gcodec.getVersionFileName())
     self.profileType = settings.MenuButtonDisplay().getFromName(
         'Profile Type: ', self)
     self.profileSelection = settings.MenuButtonDisplay().getFromName(
         'Profile Selection: ', self)
     addToProfileMenu(self.profileSelection, self.profileType, self)
     settings.LabelDisplay().getFromName('Web Help:', self)
     reprapSearch = settings.HelpPage().getFromNameAfterHTTP(
         'www.bitsfrombytes.com/wiki/index.php?title=Skeinforge',
         'Bfb Wiki', self)
     settings.LabelDisplay().getFromName('', self)
     importantFileNames = ['craft', 'profile']
     getRadioPluginsAddPluginGroupFrame(getPluginsDirectoryPath(),
                                        importantFileNames,
                                        getPluginFileNames(), self)
     self.executeTitle = 'Skeinforge'
Example #8
0
	def addInitializationToOutput( self ):
		"Add initialization gcode to the output."
		self.addFromUpperLowerFile( self.prefaceRepository.nameOfStartFile.value ) # Add a start file if it exists.
		self.distanceFeedRate.addTagBracketedLine( 'creator', 'skeinforge' ) # GCode formatted comment
		absoluteFilePathUntilDot = os.path.abspath( __file__ )[ : os.path.abspath( __file__ ).rfind( '.' ) ]
		if absoluteFilePathUntilDot == '/home/enrique/Desktop/backup/babbleold/script/reprap/pyRepRap/skeinforge_tools/craft_plugins/preface': #check to see if this script is on Enrique's computer
			gcodec.writeFileText( gcodec.getVersionFileName(), date.today().isoformat() )
		versionText = gcodec.getFileText( gcodec.getVersionFileName() )
		self.distanceFeedRate.addTagBracketedLine( 'version', versionText ) # GCode formatted comment
		self.distanceFeedRate.addLine( '(<extruderInitialization>)' ) # GCode formatted comment
		"BFB CODE 1st INITIALIZATION OF EXTRUDERS --------------------------------------------------------------------------------------------"
		self.bfbclass = bfb.BfbRepository()
		self.bfbclass = settings.getReadRepository( self.bfbclass )
		self.raftclass = raft.RaftRepository()
		self.raftclass = settings.getReadRepository( self.raftclass )
		self.secondHeadPrimeRev = chan(self.bfbclass.secondHeadPrimeRev.value, 6400)
		self.secondHeadPrimeSpeed = chan(self.bfbclass.secondHeadPrimeSpeed.value, 10)
		self.secondHeadPrintRev = chan(self.bfbclass.secondHeadPrintRev.value, 6400)
		self.secondHeadPrintPrime = chan(self.bfbclass.secondHeadPrintPrime.value, 6400)
		self.firstHeadPrimeRev = chan(self.bfbclass.firstHeadPrimeRev.value, 6400)
		self.firsHeadPrimeSpeed = chan(self.bfbclass.firsHeadPrimeSpeed.value, 10)
		self.firstHeadPrintRev = chan(self.bfbclass.firstHeadPrintRev.value, 6400)
		self.firstHeadPrintPrime = chan(self.bfbclass.firstHeadPrintPrime.value, 6400)
		self.speedclass = speed.SpeedRepository()
		self.speedclass = settings.getReadRepository( self.speedclass )
		travelfeedRateMinute=60*self.speedclass.travelFeedRatePerSecond.value
		version=settings.getfirmware()
		version=version[0:2]
		
		
		if self.raftclass.activateRaft.value == True:
			"use second extruder for raft"
			if self.bfbclass.useRaft.value == True:
				if version == "x1":
                                        self.distanceFeedRate.addLine( '#v3.00' )
					self.distanceFeedRate.addLine( 'G90' )
					self.distanceFeedRate.addLine( 'M228' )
					self.distanceFeedRate.addLine( 'M103' )
					self.distanceFeedRate.addLine( 'G92 X'+str(self.bfbclass.secondHeadOffsetX.value)+' Y'+str(self.bfbclass.secondHeadOffsetY.value)+' F'+str(travelfeedRateMinute) )
					self.distanceFeedRate.addLine( 'M107' )
					self.distanceFeedRate.addLine( 'M204 S'+str(self.bfbclass.RaftT.value) )
					self.distanceFeedRate.addLine( 'M552 P'+str(self.secondHeadPrimeRev)+' S'+str(self.secondHeadPrimeSpeed) )
					self.distanceFeedRate.addLine( 'M103 P3200 S1000' )
					self.distanceFeedRate.addLine( 'M543' )
					if self.bfbclass.useM227.value== True:
						self.distanceFeedRate.addLine( 'M227 P'+str(self.secondHeadPrintPrime)+' S'+str(self.secondHeadPrintRev) )
				if version == "x2":
                                        self.distanceFeedRate.addLine( '#v4.00' )
					self.distanceFeedRate.addLine( 'G90' )
					self.distanceFeedRate.addLine( 'G92 X'+str(self.bfbclass.secondHeadOffsetX.value)+' Y'+str(self.bfbclass.secondHeadOffsetY.value)+' F'+str(travelfeedRateMinute) )
					if self.bfbclass.useM227.value== True:
						self.distanceFeedRate.addLine( 'M227 P'+str(self.secondHeadPrintPrime)+' S'+str(self.secondHeadPrintRev) )
					self.distanceFeedRate.addLine( 'M107' )
					self.distanceFeedRate.addLine( 'M204 S'+str(self.bfbclass.RaftT.value) )
					self.distanceFeedRate.addLine( 'M552 P'+str(self.secondHeadPrimeRev)+' S'+str(self.secondHeadPrimeSpeed) )
					self.distanceFeedRate.addLine( 'M543' )
				if self.bfbclass.UseFanEx2.value== True:
					"Turn ON FAN"
					self.distanceFeedRate.addLine( 'M106')
				else:
					"Turn OFF FAN"
					self.distanceFeedRate.addLine( 'M107')
			
			else:
				if version == "x1":
					"use just one extruder for raft"
					self.distanceFeedRate.addLine( 'G90' )
					self.distanceFeedRate.addLine( 'M228' )
					self.distanceFeedRate.addLine( 'M103' )
					self.distanceFeedRate.addLine( 'M107' )
					self.distanceFeedRate.addLine( 'M104 S'+str(self.bfbclass.RaftT.value) )
					self.distanceFeedRate.addLine( 'M551 P'+str(self.firstHeadPrimeRev)+' S'+str(self.firsHeadPrimeSpeed) )
					self.distanceFeedRate.addLine( 'M103 P3200 S1000' )
					self.distanceFeedRate.addLine( 'M543' )
					
				if version == "x2":
					"use just one extruder for raft"
					self.distanceFeedRate.addLine( 'G90' )
					self.distanceFeedRate.addLine( 'M107' )
					self.distanceFeedRate.addLine( 'M104 S'+str(self.bfbclass.RaftT.value) )
					self.distanceFeedRate.addLine( 'M551 P'+str(self.firstHeadPrimeRev)+' S'+str(self.firsHeadPrimeSpeed) )
					self.distanceFeedRate.addLine( 'M543' )
				if self.bfbclass.useM227.value== True:
						self.distanceFeedRate.addLine( 'M227 P'+str(self.firstHeadPrintPrime)+' S'+str(self.firstHeadPrintRev) )
				if self.bfbclass.UseFanEx1.value== True:
					"Turn ON FAN"
					self.distanceFeedRate.addLine( 'M106')
				else:
					"Turn OFF FAN"
					self.distanceFeedRate.addLine( 'M107')
		else:
			if version == "x1":
				"NO RAFT"
				self.distanceFeedRate.addLine( 'G90' )
				self.distanceFeedRate.addLine( 'M228' )
				self.distanceFeedRate.addLine( 'M103' )
				self.distanceFeedRate.addLine( 'M107' )
				self.distanceFeedRate.addLine( 'M104 S'+str(self.bfbclass.firstWorkT.value) )
				self.distanceFeedRate.addLine( 'M551 P'+str(self.firstHeadPrimeRev)+' S'+str(self.firsHeadPrimeSpeed) )
				self.distanceFeedRate.addLine( 'M103 P3200 S1000' )
				self.distanceFeedRate.addLine( 'M543' )
			if version == "x2":
				self.distanceFeedRate.addLine( 'G90' )
				self.distanceFeedRate.addLine( 'M107' )
				self.distanceFeedRate.addLine( 'M104 S'+str(self.bfbclass.firstWorkT.value) )
				self.distanceFeedRate.addLine( 'M551 P'+str(self.firstHeadPrimeRev)+' S'+str(self.firsHeadPrimeSpeed) )
				self.distanceFeedRate.addLine( 'M543' )
			if self.bfbclass.useM227.value== True:
				self.distanceFeedRate.addLine( 'M227 P'+str(self.firstHeadPrintPrime)+' S'+str(self.firstHeadPrintRev) )
			if self.bfbclass.UseFanEx1.value== True:
				"Turn ON FAN"
				self.distanceFeedRate.addLine( 'M106')
			else:
				"Turn OFF FAN"
				self.distanceFeedRate.addLine( 'M107')
		if self.prefaceRepository.setPositioningToAbsolute.value:
			self.distanceFeedRate.addLine( 'G90' ) # Set positioning to absolute.
		if self.prefaceRepository.setUnitsToMillimeters.value:
			self.distanceFeedRate.addLine( 'G21' ) # Set units to millimeters.
		if self.prefaceRepository.startAtHome.value:
			self.distanceFeedRate.addLine( 'G28' ) # Start at home.
		if self.prefaceRepository.turnExtruderOffAtStartUp.value:
			self.distanceFeedRate.addLine( 'M103' ) # Turn extruder off.
		craftTypeName = skeinforge_profile.getCraftTypeName()
		self.distanceFeedRate.addTagBracketedLine( 'craftTypeName', craftTypeName )
		self.distanceFeedRate.addTagBracketedLine( 'decimalPlacesCarried', self.distanceFeedRate.decimalPlacesCarried )
		self.distanceFeedRate.addTagBracketedLine( 'layerThickness', self.distanceFeedRate.getRounded( self.layerThickness ) )
		if self.prefaceRepository.meta.value:
			self.distanceFeedRate.addTagBracketedLine( 'meta', self.prefaceRepository.meta.value )
		self.distanceFeedRate.addTagBracketedLine( 'perimeterWidth', self.distanceFeedRate.getRounded( self.perimeterWidth ) )
		self.distanceFeedRate.addTagBracketedLine( 'profileName', skeinforge_profile.getProfileName( craftTypeName ) )
		self.distanceFeedRate.addTagBracketedLine( 'procedureDone', 'carve' )
		self.distanceFeedRate.addTagBracketedLine( 'procedureDone', 'preface' )
		self.distanceFeedRate.addLine( '(</extruderInitialization>)' ) # Initialization is finished, extrusion is starting.
		self.distanceFeedRate.addLine( '(<extrusion>)' ) # Initialization is finished, extrusion is starting.
Example #9
0
    def addInitializationToOutput(self):
        "Add initialization gcode to the output."
        self.addFromUpperLowerFile(self.prefaceRepository.nameOfStartFile.value
                                   )  # Add a start file if it exists.
        self.distanceFeedRate.addTagBracketedLine(
            'creator', 'skeinforge')  # GCode formatted comment
        absoluteFilePathUntilDot = os.path.abspath(
            __file__)[:os.path.abspath(__file__).rfind('.')]
        if absoluteFilePathUntilDot == '/home/enrique/Desktop/backup/babbleold/script/reprap/pyRepRap/skeinforge_tools/craft_plugins/preface':  #check to see if this script is on Enrique's computer
            gcodec.writeFileText(gcodec.getVersionFileName(),
                                 date.today().isoformat())
        versionText = gcodec.getFileText(gcodec.getVersionFileName())
        self.distanceFeedRate.addTagBracketedLine(
            'version', versionText)  # GCode formatted comment
        self.distanceFeedRate.addLine(
            '(<extruderInitialization>)')  # GCode formatted comment
        "BFB CODE 1st INITIALIZATION OF EXTRUDERS --------------------------------------------------------------------------------------------"
        self.bfbclass = bfb.BfbRepository()
        self.bfbclass = settings.getReadRepository(self.bfbclass)
        self.raftclass = raft.RaftRepository()
        self.raftclass = settings.getReadRepository(self.raftclass)
        self.secondHeadPrimeRev = chan(self.bfbclass.secondHeadPrimeRev.value,
                                       6400)
        self.secondHeadPrimeSpeed = chan(
            self.bfbclass.secondHeadPrimeSpeed.value, 10)
        self.secondHeadPrintRev = chan(self.bfbclass.secondHeadPrintRev.value,
                                       6400)
        self.secondHeadPrintPrime = chan(
            self.bfbclass.secondHeadPrintPrime.value, 6400)
        self.firstHeadPrimeRev = chan(self.bfbclass.firstHeadPrimeRev.value,
                                      6400)
        self.firsHeadPrimeSpeed = chan(self.bfbclass.firsHeadPrimeSpeed.value,
                                       10)
        self.firstHeadPrintRev = chan(self.bfbclass.firstHeadPrintRev.value,
                                      6400)
        self.firstHeadPrintPrime = chan(
            self.bfbclass.firstHeadPrintPrime.value, 6400)
        self.speedclass = speed.SpeedRepository()
        self.speedclass = settings.getReadRepository(self.speedclass)
        travelfeedRateMinute = 60 * self.speedclass.travelFeedRatePerSecond.value
        version = settings.getfirmware()
        version = version[0:2]

        if self.raftclass.activateRaft.value == True:
            "use second extruder for raft"
            if self.bfbclass.useRaft.value == True:
                if version == "x1":
                    self.distanceFeedRate.addLine('#v3.00')
                    self.distanceFeedRate.addLine('G90')
                    self.distanceFeedRate.addLine('M228')
                    self.distanceFeedRate.addLine('M103')
                    self.distanceFeedRate.addLine(
                        'G92 X' + str(self.bfbclass.secondHeadOffsetX.value) +
                        ' Y' + str(self.bfbclass.secondHeadOffsetY.value) +
                        ' F' + str(travelfeedRateMinute))
                    self.distanceFeedRate.addLine('M107')
                    self.distanceFeedRate.addLine(
                        'M204 S' + str(self.bfbclass.RaftT.value))
                    self.distanceFeedRate.addLine(
                        'M552 P' + str(self.secondHeadPrimeRev) + ' S' +
                        str(self.secondHeadPrimeSpeed))
                    self.distanceFeedRate.addLine('M103 P3200 S1000')
                    self.distanceFeedRate.addLine('M543')
                    if self.bfbclass.useM227.value == True:
                        self.distanceFeedRate.addLine(
                            'M227 P' + str(self.secondHeadPrintPrime) + ' S' +
                            str(self.secondHeadPrintRev))
                if version == "x2":
                    self.distanceFeedRate.addLine('#v4.00')
                    self.distanceFeedRate.addLine('G90')
                    self.distanceFeedRate.addLine(
                        'G92 X' + str(self.bfbclass.secondHeadOffsetX.value) +
                        ' Y' + str(self.bfbclass.secondHeadOffsetY.value) +
                        ' F' + str(travelfeedRateMinute))
                    if self.bfbclass.useM227.value == True:
                        self.distanceFeedRate.addLine(
                            'M227 P' + str(self.secondHeadPrintPrime) + ' S' +
                            str(self.secondHeadPrintRev))
                    self.distanceFeedRate.addLine('M107')
                    self.distanceFeedRate.addLine(
                        'M204 S' + str(self.bfbclass.RaftT.value))
                    self.distanceFeedRate.addLine(
                        'M552 P' + str(self.secondHeadPrimeRev) + ' S' +
                        str(self.secondHeadPrimeSpeed))
                    self.distanceFeedRate.addLine('M543')
                if self.bfbclass.UseFanEx2.value == True:
                    "Turn ON FAN"
                    self.distanceFeedRate.addLine('M106')
                else:
                    "Turn OFF FAN"
                    self.distanceFeedRate.addLine('M107')

            else:
                if version == "x1":
                    "use just one extruder for raft"
                    self.distanceFeedRate.addLine('G90')
                    self.distanceFeedRate.addLine('M228')
                    self.distanceFeedRate.addLine('M103')
                    self.distanceFeedRate.addLine('M107')
                    self.distanceFeedRate.addLine(
                        'M104 S' + str(self.bfbclass.RaftT.value))
                    self.distanceFeedRate.addLine('M551 P' +
                                                  str(self.firstHeadPrimeRev) +
                                                  ' S' +
                                                  str(self.firsHeadPrimeSpeed))
                    self.distanceFeedRate.addLine('M103 P3200 S1000')
                    self.distanceFeedRate.addLine('M543')

                if version == "x2":
                    "use just one extruder for raft"
                    self.distanceFeedRate.addLine('G90')
                    self.distanceFeedRate.addLine('M107')
                    self.distanceFeedRate.addLine(
                        'M104 S' + str(self.bfbclass.RaftT.value))
                    self.distanceFeedRate.addLine('M551 P' +
                                                  str(self.firstHeadPrimeRev) +
                                                  ' S' +
                                                  str(self.firsHeadPrimeSpeed))
                    self.distanceFeedRate.addLine('M543')
                if self.bfbclass.useM227.value == True:
                    self.distanceFeedRate.addLine(
                        'M227 P' + str(self.firstHeadPrintPrime) + ' S' +
                        str(self.firstHeadPrintRev))
                if self.bfbclass.UseFanEx1.value == True:
                    "Turn ON FAN"
                    self.distanceFeedRate.addLine('M106')
                else:
                    "Turn OFF FAN"
                    self.distanceFeedRate.addLine('M107')
        else:
            if version == "x1":
                "NO RAFT"
                self.distanceFeedRate.addLine('G90')
                self.distanceFeedRate.addLine('M228')
                self.distanceFeedRate.addLine('M103')
                self.distanceFeedRate.addLine('M107')
                self.distanceFeedRate.addLine(
                    'M104 S' + str(self.bfbclass.firstWorkT.value))
                self.distanceFeedRate.addLine('M551 P' +
                                              str(self.firstHeadPrimeRev) +
                                              ' S' +
                                              str(self.firsHeadPrimeSpeed))
                self.distanceFeedRate.addLine('M103 P3200 S1000')
                self.distanceFeedRate.addLine('M543')
            if version == "x2":
                self.distanceFeedRate.addLine('G90')
                self.distanceFeedRate.addLine('M107')
                self.distanceFeedRate.addLine(
                    'M104 S' + str(self.bfbclass.firstWorkT.value))
                self.distanceFeedRate.addLine('M551 P' +
                                              str(self.firstHeadPrimeRev) +
                                              ' S' +
                                              str(self.firsHeadPrimeSpeed))
                self.distanceFeedRate.addLine('M543')
            if self.bfbclass.useM227.value == True:
                self.distanceFeedRate.addLine('M227 P' +
                                              str(self.firstHeadPrintPrime) +
                                              ' S' +
                                              str(self.firstHeadPrintRev))
            if self.bfbclass.UseFanEx1.value == True:
                "Turn ON FAN"
                self.distanceFeedRate.addLine('M106')
            else:
                "Turn OFF FAN"
                self.distanceFeedRate.addLine('M107')
        if self.prefaceRepository.setPositioningToAbsolute.value:
            self.distanceFeedRate.addLine(
                'G90')  # Set positioning to absolute.
        if self.prefaceRepository.setUnitsToMillimeters.value:
            self.distanceFeedRate.addLine('G21')  # Set units to millimeters.
        if self.prefaceRepository.startAtHome.value:
            self.distanceFeedRate.addLine('G28')  # Start at home.
        if self.prefaceRepository.turnExtruderOffAtStartUp.value:
            self.distanceFeedRate.addLine('M103')  # Turn extruder off.
        craftTypeName = skeinforge_profile.getCraftTypeName()
        self.distanceFeedRate.addTagBracketedLine('craftTypeName',
                                                  craftTypeName)
        self.distanceFeedRate.addTagBracketedLine(
            'decimalPlacesCarried', self.distanceFeedRate.decimalPlacesCarried)
        self.distanceFeedRate.addTagBracketedLine(
            'layerThickness',
            self.distanceFeedRate.getRounded(self.layerThickness))
        if self.prefaceRepository.meta.value:
            self.distanceFeedRate.addTagBracketedLine(
                'meta', self.prefaceRepository.meta.value)
        self.distanceFeedRate.addTagBracketedLine(
            'perimeterWidth',
            self.distanceFeedRate.getRounded(self.perimeterWidth))
        self.distanceFeedRate.addTagBracketedLine(
            'profileName', skeinforge_profile.getProfileName(craftTypeName))
        self.distanceFeedRate.addTagBracketedLine('procedureDone', 'carve')
        self.distanceFeedRate.addTagBracketedLine('procedureDone', 'preface')
        self.distanceFeedRate.addLine(
            '(</extruderInitialization>)'
        )  # Initialization is finished, extrusion is starting.
        self.distanceFeedRate.addLine(
            '(<extrusion>)'
        )  # Initialization is finished, extrusion is starting.