Пример #1
0
def processXMLElement( xmlElement, xmlProcessor ):
	"Process the xml element."
	fileName = evaluate.getEvaluatedValue('file', xmlElement )
	if fileName == None:
		return
	parserFileName = xmlElement.getRoot().parser.fileName
	absoluteFileName = gcodec.getAbsoluteFolderPath( parserFileName, fileName )
	xmlText = ''
	if fileName.endswith('.xml'):
		xmlText = gcodec.getFileText( absoluteFileName )
	else:
		xmlText = getXMLFromCarvingFileName( absoluteFileName )
	if xmlText == '':
		print('The file %s could not be found in the folder which the fabmetheus xml file is in.' % fileName )
		return
	if '_importname' in xmlElement.attributeDictionary:
		xmlElement.importName = xmlElement.attributeDictionary['_importname']
	else:
		xmlElement.importName = gcodec.getUntilDot( fileName )
		xmlElement.attributeDictionary['_importname'] = xmlElement.importName
	XMLSimpleReader( parserFileName, xmlElement, xmlText )
	originalChildren = xmlElement.children[ : ]
	xmlElement.children = []
	for child in originalChildren:
		for subchild in child.children:
			subchild.setParentAddToChildren(xmlElement)
		for attributeDictionaryKey in child.attributeDictionary.keys():
			if attributeDictionaryKey != 'version':
				xmlElement.attributeDictionary[ attributeDictionaryKey ] = child.attributeDictionary[ attributeDictionaryKey ]
	group.processShape( group.Group, xmlElement, xmlProcessor )
	root = xmlElement.getRoot()
	root.idDictionary[ xmlElement.importName ] = evaluate.ElementID(xmlElement)
	root.nameDictionary[ xmlElement.importName ] = evaluate.ElementName(xmlElement)
Пример #2
0
def writeOutput( fileName, gcodeText = '' ):
	"Write statistics for a skeinforge gcode file, if 'Write Statistics File for Skeinforge Chain' is selected."
	repository = settings.getReadRepository( StatisticRepository() )
	if gcodeText == '':
		gcodeText = gcodec.getFileText( fileName )
	if repository.activateStatistic.value:
		analyzeFileGivenText( fileName, gcodeText, repository )
Пример #3
0
def writeOutput( fileName, fileNameSuffix, gcodeText = ''):
	"Write a commented gcode file for a skeinforge gcode file, if 'Write Commented File for Skeinforge Chain' is selected."
	repository = settings.getReadRepository( CommentRepository() )
	if gcodeText == '':
		gcodeText = gcodec.getFileText( fileNameSuffix )
	if repository.activateComment.value:
		getWindowAnalyzeFileGivenText( fileNameSuffix, gcodeText )
Пример #4
0
def getChainText(fileName, procedure):
    "Get a crafted shape file."
    text = ''
    if fileName.endswith('.gcode') or fileName.endswith('.svg'):
        text = gcodec.getFileText(fileName)
    procedures = getProcedures(procedure, text)
    return getChainTextFromProcedures(fileName, procedures, text)
Пример #5
0
def processXMLElement(xmlElement):
    "Process the xml element."
    fileName = evaluate.getEvaluatedValue('file', xmlElement)
    if fileName == None:
        return
    parserFileName = xmlElement.getRoot().parser.fileName
    absoluteFileName = gcodec.getAbsoluteFolderPath(parserFileName, fileName)
    xmlText = ''
    if fileName.endswith('.xml'):
        xmlText = gcodec.getFileText(absoluteFileName)
    else:
        xmlText = getXMLFromCarvingFileName(absoluteFileName)
    if xmlText == '':
        print(
            'The file %s could not be found in the folder which the fabmetheus xml file is in.'
            % fileName)
        return
    if '_importname' in xmlElement.attributeDictionary:
        xmlElement.importName = xmlElement.attributeDictionary['_importname']
    else:
        xmlElement.importName = gcodec.getUntilDot(fileName)
        xmlElement.attributeDictionary['_importname'] = xmlElement.importName
    XMLSimpleReader(parserFileName, xmlElement, xmlText)
    originalChildren = xmlElement.children[:]
    xmlElement.children = []
    for child in originalChildren:
        for subchild in child.children:
            subchild.setParentAddToChildren(xmlElement)
        for attributeDictionaryKey in child.attributeDictionary.keys():
            if attributeDictionaryKey != 'version':
                xmlElement.attributeDictionary[
                    attributeDictionaryKey] = child.attributeDictionary[
                        attributeDictionaryKey]
    group.processShape(group.Group, xmlElement)
Пример #6
0
def getXMLFromXMLFileName(fileName):
    "Get xml text from xml text."
    xmlText = gcodec.getFileText(fileName)
    xmlText = str(FabmetheusParser(xmlText))
    if xmlText != '':
        return xmlText
    return getXMLFromCarvingFileName(fileName)
Пример #7
0
def getChainText( fileName, procedure ):
	"Get a crafted shape file."
	text = ''
	if fileName.endswith('.gcode') or fileName.endswith('.svg'):
		text = gcodec.getFileText(fileName)
	procedures = getProcedures( procedure, text )
	return getChainTextFromProcedures( fileName, procedures, text )
Пример #8
0
def getXMLFromXMLFileName( fileName ):
	"Get xml text from xml text."
	xmlText = gcodec.getFileText( fileName )
	xmlText = str( FabmetheusParser( xmlText ) )
	if xmlText != '':
		return xmlText
	return getXMLFromCarvingFileName( fileName )
Пример #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( '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.
Пример #10
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'
Пример #11
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"
Пример #12
0
def writeOutput(fileName, fileNameSuffix, gcodeText=''):
    "Write a commented gcode file for a skeinforge gcode file, if 'Write Commented File for Skeinforge Chain' is selected."
    repository = settings.getReadRepository(CommentRepository())
    if gcodeText == '':
        gcodeText = gcodec.getFileText(fileNameSuffix)
    if repository.activateComment.value:
        getWindowAnalyzeFileGivenText(fileNameSuffix, gcodeText)
Пример #13
0
def processXMLElement(xmlElement):
    "Process the xml element."
    fileName = evaluate.getEvaluatedValue("file", xmlElement)
    if fileName == None:
        return
    parserFileName = xmlElement.getRoot().parser.fileName
    absoluteFileName = gcodec.getAbsoluteFolderPath(parserFileName, fileName)
    xmlText = ""
    if fileName.endswith(".xml"):
        xmlText = gcodec.getFileText(absoluteFileName)
    else:
        xmlText = getXMLFromCarvingFileName(absoluteFileName)
    if xmlText == "":
        print("The file %s could not be found in the folder which the fabmetheus xml file is in." % fileName)
        return
    if "_importname" in xmlElement.attributeDictionary:
        xmlElement.importName = xmlElement.attributeDictionary["_importname"]
    else:
        xmlElement.importName = gcodec.getUntilDot(fileName)
        xmlElement.attributeDictionary["_importname"] = xmlElement.importName
    XMLSimpleReader(parserFileName, xmlElement, xmlText)
    originalChildren = xmlElement.children[:]
    xmlElement.children = []
    for child in originalChildren:
        for subchild in child.children:
            subchild.setParentAddToChildren(xmlElement)
        for attributeDictionaryKey in child.attributeDictionary.keys():
            if attributeDictionaryKey != "version":
                xmlElement.attributeDictionary[attributeDictionaryKey] = child.attributeDictionary[
                    attributeDictionaryKey
                ]
    group.processShape(group.Group, xmlElement)
Пример #14
0
def readWriteNavigationHelp( documentDirectoryPath, transferredFileNameIndex, transferredFileNames ):
	"Read the hypertext help documents, and add the navigation lines to them."
	fileName = transferredFileNames[ transferredFileNameIndex ]
	print(fileName)
	filePath = os.path.join( documentDirectoryPath, fileName )
	fileText = gcodec.getFileText(filePath)
	fileText = getNavigationHypertext( fileText, transferredFileNameIndex, transferredFileNames )
	gcodec.writeFileText( filePath, fileText )
Пример #15
0
def readWriteNavigationHelp(documentDirectoryPath, transferredFileNameIndex,
                            transferredFileNames):
    "Read the hypertext help documents, and add the navigation lines to them."
    fileName = transferredFileNames[transferredFileNameIndex]
    print(fileName)
    filePath = os.path.join(documentDirectoryPath, fileName)
    fileText = gcodec.getFileText(filePath)
    fileText = getNavigationHypertext(fileText, transferredFileNameIndex,
                                      transferredFileNames)
    gcodec.writeFileText(filePath, fileText)
Пример #16
0
def getCarving( fileName = ''):
	"Get the triangle mesh for the obj file."
	if fileName == '':
		return None
	objText = gcodec.getFileText( fileName, 'rb')
	if objText == '':
		return None
	triangleMesh = trianglemesh.TriangleMesh()
	addFacesGivenText( objText, triangleMesh )
	triangleMesh.setEdgesForAllFaces()
	return triangleMesh
Пример #17
0
def getCarving( fileName = ''):
	"Get the carving for the csv file."
	csvText = gcodec.getFileText( fileName )
	if csvText == '':
		return None
	csvParser = CSVSimpleParser( fileName, None, csvText )
	lowerClassName = csvParser.getRoot().className.lower()
	pluginModule = gcodec.getModuleWithDirectoryPath( getPluginsDirectoryPath(), lowerClassName )
	if pluginModule == None:
		return None
	return pluginModule.getCarvingFromParser( csvParser )
Пример #18
0
def getCarving(fileName=''):
    "Get the triangle mesh for the obj file."
    if fileName == '':
        return None
    objText = gcodec.getFileText(fileName, 'rb')
    if objText == '':
        return None
    triangleMesh = trianglemesh.TriangleMesh()
    addFacesGivenText(objText, triangleMesh)
    triangleMesh.setEdgesForAllFaces()
    return triangleMesh
Пример #19
0
def getCarving( fileName = ''):
	"Get the carving for the xml file."
	xmlText = gcodec.getFileText( fileName )
	if xmlText == '':
		return None
	xmlParser = XMLSimpleReader( fileName, None, xmlText )
	lowerClassName = xmlParser.getRoot().className.lower()
	pluginModule = gcodec.getModuleWithDirectoryPath( getPluginsDirectoryPath(), lowerClassName )
	if pluginModule == None:
		return None
	return pluginModule.getCarvingFromParser( xmlParser )
Пример #20
0
def readWriteDeleteHypertextHelp( documentDirectoryPath, hypertextFileIndex, hypertextFiles, transferredFileNames ):
	"Read the pydoc hypertext help documents, write them in the documentation folder then delete the originals."
	fileName = hypertextFiles[ hypertextFileIndex ]
	print(fileName)
	filePath = os.path.join( documentDirectoryPath, fileName )
	fileText = gcodec.getFileText(fileName)
	fileText = getWrappedHypertext( fileText, hypertextFileIndex, hypertextFiles )
	if fileText.find('This page is in the table of contents.') > - 1:
		fileText = fileText.replace('This page is in the table of contents.', '')
		transferredFileNames.append(fileName)
	gcodec.writeFileText( filePath, fileText )
	os.remove(fileName)
Пример #21
0
def getCarving(fileName=''):
    "Get the carving for the csv file."
    csvText = gcodec.getFileText(fileName)
    if csvText == '':
        return None
    csvParser = CSVSimpleParser(fileName, None, csvText)
    lowerClassName = csvParser.getRoot().className.lower()
    pluginModule = gcodec.getModuleWithDirectoryPath(getPluginsDirectoryPath(),
                                                     lowerClassName)
    if pluginModule == None:
        return None
    return pluginModule.getCarvingFromParser(csvParser)
Пример #22
0
def getCarving(fileName=''):
    "Get the carving for the xml file."
    xmlText = gcodec.getFileText(fileName)
    if xmlText == '':
        return None
    xmlParser = XMLSimpleReader(fileName, None, xmlText)
    lowerClassName = xmlParser.getRoot().className.lower()
    pluginModule = gcodec.getModuleWithDirectoryPath(getPluginsDirectoryPath(),
                                                     lowerClassName)
    if pluginModule == None:
        return None
    return pluginModule.getCarvingFromParser(xmlParser)
Пример #23
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.
Пример #24
0
def getTriangleMesh( fileName = '' ):
	"Carve a GNU Triangulated Surface file.  If no fileName is specified, carve the first GNU Triangulated Surface file in this folder."
	if fileName == '':
		unmodified = gcodec.getGNUTriangulatedSurfaceFiles()
		if len( unmodified ) == 0:
			print( "There are no GNU Triangulated Surface files in this folder." )
			return None
		fileName = unmodified[ 0 ]
	gnuTriangulatedSurfaceText = gcodec.getFileText( fileName )
	if gnuTriangulatedSurfaceText == '':
		return None
	triangleMesh = TriangleMesh().getFromGNUTriangulatedSurfaceText( gnuTriangulatedSurfaceText )
	return triangleMesh
Пример #25
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'
Пример #26
0
	def __init__(self, fontFamily):
		"Initialize."
		self.fontFamily = fontFamily
		self.glyphDictionary = {}
		self.glyphXMLElementDictionary = {}
		self.missingGlyph = None
		fileName = os.path.join(getFontsDirectoryPath(), fontFamily + '.svg')
		self.xmlParser = XMLSimpleReader(fileName, None, gcodec.getFileText(fileName))
		self.fontXMLElement = self.xmlParser.getRoot().getFirstChildWithClassName('defs').getFirstChildWithClassName('font')
		self.fontFaceXMLElement = self.fontXMLElement.getFirstChildWithClassName('font-face')
		self.unitsPerEM = float(self.fontFaceXMLElement.attributeDictionary['units-per-em'])
		glyphXMLElements = self.fontXMLElement.getChildrenWithClassName('glyph')
		for glyphXMLElement in glyphXMLElements:
			self.glyphXMLElementDictionary[glyphXMLElement.attributeDictionary['unicode']] = glyphXMLElement
Пример #27
0
	def __init__(self, fontFamily):
		"Initialize."
		self.fontFamily = fontFamily
		self.glyphDictionary = {}
		self.glyphXMLElementDictionary = {}
		self.missingGlyph = None
		fileName = os.path.join(getFontsDirectoryPath(), fontFamily + '.svg')
		self.xmlParser = XMLSimpleReader(fileName, None, gcodec.getFileText(fileName))
		self.fontXMLElement = self.xmlParser.getRoot().getFirstChildWithClassName('defs').getFirstChildWithClassName('font')
		self.fontFaceXMLElement = self.fontXMLElement.getFirstChildWithClassName('font-face')
		self.unitsPerEM = float(self.fontFaceXMLElement.attributeDictionary['units-per-em'])
		glyphXMLElements = self.fontXMLElement.getChildrenWithClassName('glyph')
		for glyphXMLElement in glyphXMLElements:
			self.glyphXMLElementDictionary[glyphXMLElement.attributeDictionary['unicode']] = glyphXMLElement
Пример #28
0
def getTriangleMesh(fileName=''):
    "Carve a GNU Triangulated Surface file.  If no fileName is specified, carve the first GNU Triangulated Surface file in this folder."
    if fileName == '':
        unmodified = gcodec.getGNUTriangulatedSurfaceFiles()
        if len(unmodified) == 0:
            print(
                "There are no GNU Triangulated Surface files in this folder.")
            return None
        fileName = unmodified[0]
    gnuTriangulatedSurfaceText = gcodec.getFileText(fileName)
    if gnuTriangulatedSurfaceText == '':
        return None
    triangleMesh = TriangleMesh().getFromGNUTriangulatedSurfaceText(
        gnuTriangulatedSurfaceText)
    return triangleMesh
Пример #29
0
def readWriteDeleteHypertextHelp(documentDirectoryPath, hypertextFileIndex,
                                 hypertextFiles, transferredFileNames):
    "Read the pydoc hypertext help documents, write them in the documentation folder then delete the originals."
    fileName = hypertextFiles[hypertextFileIndex]
    print(fileName)
    filePath = os.path.join(documentDirectoryPath, fileName)
    fileText = gcodec.getFileText(fileName)
    fileText = getWrappedHypertext(fileText, hypertextFileIndex,
                                   hypertextFiles)
    if fileText.find('This page is in the table of contents.') > -1:
        fileText = fileText.replace('This page is in the table of contents.',
                                    '')
        transferredFileNames.append(fileName)
    gcodec.writeFileText(filePath, fileText)
    os.remove(fileName)
Пример #30
0
def getCarving(fileName=''):
    "Get the triangle mesh for the stl file."
    if fileName == '':
        return None
    stlData = gcodec.getFileText(fileName, 'rb')
    if stlData == '':
        return None
    triangleMesh = trianglemesh.TriangleMesh()
    vertexIndexTable = {}
    numberOfVertexStrings = stlData.count('vertex')
    requiredVertexStringsForText = max(2, len(stlData) / 8000)
    if numberOfVertexStrings > requiredVertexStringsForText:
        addFacesGivenText(stlData, triangleMesh, vertexIndexTable)
    else:
        #	A binary stl should never start with the word "solid".  Because this error is common the file is been parsed as binary regardless.
        addFacesGivenBinary(stlData, triangleMesh, vertexIndexTable)
    triangleMesh.setEdgesForAllFaces()
    return triangleMesh
Пример #31
0
def getCarving( fileName = '' ):
	"Get the triangle mesh for the stl file."
	if fileName == '':
		return None
	stlData = gcodec.getFileText( fileName, 'rb' )
	if stlData == '':
		return None
	triangleMesh = trianglemesh.TriangleMesh()
	vertexIndexTable = {}
	numberOfVertexStrings = stlData.count( 'vertex' )
	requiredVertexStringsForText = max( 2, len( stlData ) / 8000 )
	if numberOfVertexStrings > requiredVertexStringsForText:
		addFacesGivenText( stlData, triangleMesh, vertexIndexTable )
	else:
#	A binary stl should never start with the word "solid".  Because this error is common the file is been parsed as binary regardless.
		addFacesGivenBinary( stlData, triangleMesh, vertexIndexTable )
	triangleMesh.setEdgesForAllFaces()
	return triangleMesh
Пример #32
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'
Пример #33
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'
Пример #34
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.
Пример #35
0
def analyzeFile(fileName):
    "Behold a gcode file."
    gcodeText = gcodec.getFileText(fileName)
    analyzeFileGivenText(fileName, gcodeText)
Пример #36
0
def getWindowAnalyzeFile(fileName):
	"Behold a gcode file."
	gcodeText = gcodec.getFileText(fileName)
	return getWindowAnalyzeFileGivenText(fileName, gcodeText)
Пример #37
0
def getWindowAnalyzeFile(fileName):
	"Write scalable vector graphics for a gcode file."
	gcodeText = gcodec.getFileText(fileName)
	return getWindowAnalyzeFileGivenText(fileName, gcodeText)
Пример #38
0
def analyzeFile( fileName ):
	"Display a gcode file in a skeinview window."
	gcodeText = gcodec.getFileText( fileName )
	analyzeFileGivenText( fileName, gcodeText )
Пример #39
0
def getWindowAnalyzeFile( fileName ):
	"Write statistics for a gcode file."
	return getWindowAnalyzeFileGivenText( fileName, gcodec.getFileText( fileName ) )
Пример #40
0
def getWindowAnalyzeFile(fileName):
	"Display a gcode file in a skeinview window."
	gcodeText = gcodec.getFileText(fileName)
	return getWindowAnalyzeFileGivenText(fileName, gcodeText)
Пример #41
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.
Пример #42
0
def analyzeFile( fileName ):
	"Write scalable vector graphics for a gcode file."
	gcodeText = gcodec.getFileText( fileName )
	analyzeFileGivenText( fileName, gcodeText )
Пример #43
0
def analyzeFile(fileName):
    "Write scalable vector graphics for a gcode file."
    gcodeText = gcodec.getFileText(fileName)
    analyzeFileGivenText(fileName, gcodeText)
Пример #44
0
def getWindowAnalyzeFile(fileName):
	"Display a gcode file in a skeinview window."
	gcodeText = gcodec.getFileText(fileName)
	return getWindowAnalyzeFileGivenText(fileName, gcodeText)
Пример #45
0
def analyzeFile( fileName ):
	"Comment a gcode file."
	gcodeText = gcodec.getFileText( fileName )
	analyzeFileGivenText( fileName, gcodeText )
Пример #46
0
def getWindowAnalyzeFile(fileName):
    "Comment a gcode file."
    gcodeText = gcodec.getFileText(fileName)
    return getWindowAnalyzeFileGivenText(fileName, gcodeText)
def getChainText(fileName, procedure):
    "Get a crafted shape file."
    text = gcodec.getFileText(fileName)
    procedures = getProcedures(procedure, text)
    return getChainTextFromProcedures(fileName, procedures, text)
Пример #48
0
def getChainText( fileName, procedure ):
	"Get a crafted shape file."
	text = gcodec.getFileText( fileName )
	procedures = getProcedures( procedure, text )
	return getChainTextFromProcedures( fileName, procedures, text )
Пример #49
0
	def getCarving( self, fileName = ''):
		"Get the triangle mesh for the gts file."
		carving = SVGCarving()
		carving.parseSVG( fileName, gcodec.getFileText(fileName) )
		return carving
Пример #50
0
def getWindowAnalyzeFile( fileName ):
	"Write scalable vector graphics for a gcode file."
	gcodeText = gcodec.getFileText( fileName )
	return getWindowAnalyzeFileGivenText( fileName, gcodeText )
Пример #51
0
def analyzeFile(fileName):
    "Display a gcode file in a skeinview window."
    gcodeText = gcodec.getFileText(fileName)
    analyzeFileGivenText(fileName, gcodeText)
Пример #52
0
def getCarving(fileName=''):
    "Get the triangle mesh for the gts file."
    carving = SVGCarving()
    carving.parseSVG(fileName, gcodec.getFileText(fileName))
    return carving
Пример #53
0
def getCarving(fileName):
	"Get the carving for the gts file."
	return getFromGNUTriangulatedSurfaceText( gcodec.getFileText(fileName), trianglemesh.TriangleMesh() )
Пример #54
0
def analyzeFile(fileName):
    "Comment a gcode file."
    gcodeText = gcodec.getFileText(fileName)
    analyzeFileGivenText(fileName, gcodeText)
Пример #55
0
def analyzeFile( fileName ):
	"Write statistics for a gcode file."
	analyzeFileGivenText( fileName, gcodec.getFileText( fileName ) )
Пример #56
0
def getWindowAnalyzeFile(fileName):
    "Write statistics for a gcode file."
    return getWindowAnalyzeFileGivenText(fileName,
                                         gcodec.getFileText(fileName))