def getWindowAnalyzeFile(fileName, repository=None): 'Open penultimate file with outside program.' print('') if repository == None: repository = settings.getReadRepository(ClairvoyanceRepository()) gcodeProgram = repository.gcodeProgram.value if gcodeProgram == '': print('Warning, nothing will be done in getWindowAnalyzeFile in clairvoyance because the Gcode Program field is empty.') print('') return if gcodeProgram == 'webbrowser': print('Clairvoyance will use a web browser to open the file:') print(archive.getSummarizedFileName(fileName)) settings.openWebPage(fileName) return try: subprocess.Popen([gcodeProgram, fileName]) print('Clairvoyance has opened the file:') print(archive.getSummarizedFileName(fileName)) print('with the gcode program:') print(gcodeProgram) except: print('Warning, getWindowAnalyzeFile in clairvoyance could not open the file:') print(fileName) print('with the gcode program:') print(gcodeProgram) print('Error traceback is the following:') traceback.print_exc(file=sys.stdout) print('')
def getWindowAnalyzeFile(fileName, repository=None): 'Open penultimate file with outside program.' print('') if repository == None: repository = settings.getReadRepository(ClairvoyanceRepository()) gcodeProgram = repository.gcodeProgram.value if gcodeProgram == '': print( 'Warning, nothing will be done in getWindowAnalyzeFile in clairvoyance because the Gcode Program field is empty.' ) print('') return if gcodeProgram == 'webbrowser': print('Clairvoyance will use a web browser to open the file:') print(archive.getSummarizedFileName(fileName)) settings.openWebPage(fileName) return try: subprocess.Popen([gcodeProgram, fileName]) print('Clairvoyance has opened the file:') print(archive.getSummarizedFileName(fileName)) print('with the gcode program:') print(gcodeProgram) except: print( 'Warning, getWindowAnalyzeFile in clairvoyance could not open the file:' ) print(fileName) print('with the gcode program:') print(gcodeProgram) print('Error traceback is the following:') traceback.print_exc(file=sys.stdout) print('')
def getOutput(fileName): 'Export a gcode linear move file.' if fileName == '': return None repository = ExportRepository() settings.getReadRepository(repository) startTime = time.time() print('File ' + archive.getSummarizedFileName(fileName.encode('ascii', 'replace')) + ' is being chain exported.') gcodeText = gcodec.getGcodeFileText(fileName, '') procedures = skeinforge_craft.getProcedures('export', gcodeText) gcodeText = skeinforge_craft.getChainTextFromProcedures(fileName, procedures[: -1], gcodeText) if gcodeText == '': return None fileNamePenultimate = fileName[: fileName.rfind('.')] + '_penultimate.gcode' if repository.savePenultimateGcode.value: archive.writeFileText(fileNamePenultimate, gcodeText) print('The penultimate file is saved as ' + archive.getSummarizedFileName(fileNamePenultimate)) exportGcode = getCraftedTextFromText(gcodeText, repository) replaceableExportGcode = None selectedPluginModule = getSelectedPluginModule(repository.exportPlugins) if selectedPluginModule is None: replaceableExportGcode = exportGcode else: if selectedPluginModule.globalIsReplaceable: replaceableExportGcode = selectedPluginModule.getOutput(exportGcode) #else: # selectedPluginModule.writeOutput(outputFilename, exportGcode) if replaceableExportGcode is not None: replaceableExportGcode = getReplaceableExportGcode(repository.nameOfReplaceFile.value, replaceableExportGcode) if repository.alsoSendOutputTo.value != '': if replaceableExportGcode == None: replaceableExportGcode = selectedPluginModule.getOutput(exportGcode) sendOutputTo(repository.alsoSendOutputTo.value, replaceableExportGcode) print('It took %s to export the file.' % euclidean.getDurationString(time.time() - startTime)) return replaceableExportGcode
def writeOutput(fileName, shouldAnalyze=True): "Export a gcode linear move file." if fileName == "": return None repository = ExportRepository() settings.getReadRepository(repository) startTime = time.time() print("File " + archive.getSummarizedFileName(fileName) + " is being chain exported.") fileNameSuffix = fileName[: fileName.rfind(".")] if repository.addExportSuffix.value: fileNameSuffix += "_export" gcodeText = gcodec.getGcodeFileText(fileName, "") if repository.addProfileExtension.value: profileName = skeinforge_profile.getProfileName(skeinforge_profile.getCraftTypeName()) if profileName: fileNameSuffix += "." + string.replace(profileName, " ", "_") if repository.addDescriptiveExtension.value: fileNameSuffix += getDescriptiveExtension(gcodeText) if repository.addTimestampExtension.value: fileNameSuffix += "." + getFirstValue(gcodeText, "(<timeStampPreface>") fileNameSuffix += "." + repository.fileExtension.value procedures = skeinforge_craft.getProcedures("export", gcodeText) gcodeText = skeinforge_craft.getChainTextFromProcedures(fileName, procedures[:-1], gcodeText) if gcodeText == "": return None fileNamePenultimate = fileName[: fileName.rfind(".")] + "_penultimate.gcode" filePenultimateWritten = False if repository.savePenultimateGcode.value: archive.writeFileText(fileNamePenultimate, gcodeText) filePenultimateWritten = True print("The penultimate file is saved as " + archive.getSummarizedFileName(fileNamePenultimate)) exportGcode = getCraftedTextFromText(gcodeText, repository) window = None if shouldAnalyze: window = skeinforge_analyze.writeOutput( fileName, fileNamePenultimate, fileNameSuffix, filePenultimateWritten, gcodeText ) replaceableExportGcode = None selectedPluginModule = getSelectedPluginModule(repository.exportPlugins) if selectedPluginModule == None: replaceableExportGcode = exportGcode else: if selectedPluginModule.globalIsReplaceable: replaceableExportGcode = selectedPluginModule.getOutput(exportGcode) else: selectedPluginModule.writeOutput(fileNameSuffix, exportGcode) if replaceableExportGcode != None: replaceableExportGcode = getReplaceableExportGcode(repository.nameOfReplaceFile.value, replaceableExportGcode) archive.writeFileText(fileNameSuffix, replaceableExportGcode) print("The exported file is saved as " + archive.getSummarizedFileName(fileNameSuffix)) if repository.alsoSendOutputTo.value != "": if replaceableExportGcode == None: replaceableExportGcode = selectedPluginModule.getOutput(exportGcode) sendOutputTo(repository.alsoSendOutputTo.value, replaceableExportGcode) print("It took %s to export the file." % euclidean.getDurationString(time.time() - startTime)) return window
def writeOutput(fileName=''): 'Export a gcode linear move file.' fileName = fabmetheus_interpret.getFirstTranslatorFileNameUnmodified( fileName) if fileName == '': return repository = ExportRepository() settings.getReadRepository(repository) startTime = time.time() print('File ' + archive.getSummarizedFileName(fileName) + ' is being chain exported.') suffixFileName = fileName[:fileName.rfind('.')] if repository.addExportSuffix.value: suffixFileName += '_export' suffixFileName += '.' + repository.fileExtension.value gcodeText = gcodec.getGcodeFileText(fileName, '') procedures = skeinforge_craft.getProcedures('export', gcodeText) gcodeText = skeinforge_craft.getChainTextFromProcedures( fileName, procedures[:-1], gcodeText) if gcodeText == '': return window = skeinforge_analyze.writeOutput(fileName, suffixFileName, gcodeText) if repository.savePenultimateGcode.value: penultimateFileName = fileName[:fileName. rfind('.')] + '_penultimate.gcode' archive.writeFileText(penultimateFileName, gcodeText) print('The penultimate file is saved as ' + archive.getSummarizedFileName(penultimateFileName)) exportChainGcode = getCraftedTextFromText(gcodeText, repository) replaceableExportChainGcode = None selectedPluginModule = getSelectedPluginModule(repository.exportPlugins) if selectedPluginModule == None: replaceableExportChainGcode = exportChainGcode else: if selectedPluginModule.globalIsReplaceable: replaceableExportChainGcode = selectedPluginModule.getOutput( exportChainGcode) else: selectedPluginModule.writeOutput(suffixFileName, exportChainGcode) if replaceableExportChainGcode != None: replaceableExportChainGcode = getReplaced(replaceableExportChainGcode) archive.writeFileText(suffixFileName, replaceableExportChainGcode) print('The exported file is saved as ' + archive.getSummarizedFileName(suffixFileName)) if repository.alsoSendOutputTo.value != '': if replaceableExportChainGcode == None: replaceableExportChainGcode = selectedPluginModule.getOutput( exportChainGcode) exec('print >> ' + repository.alsoSendOutputTo.value + ', replaceableExportChainGcode') print('It took %s to export the file.' % euclidean.getDurationString(time.time() - startTime)) return window
def writeOutput(fileName, shouldAnalyze=True): 'Export a gcode linear move file.' if fileName == '': return None repository = ExportRepository() settings.getReadRepository(repository) startTime = time.time() print('File ' + archive.getSummarizedFileName(fileName) + ' is being chain exported.') fileNameSuffix = fileName[: fileName.rfind('.')] if repository.addExportSuffix.value: fileNameSuffix += '_export' gcodeText = gcodec.getGcodeFileText(fileName, '') procedures = skeinforge_craft.getProcedures('export', gcodeText) gcodeText = skeinforge_craft.getChainTextFromProcedures(fileName, procedures[: -1], gcodeText) if gcodeText == '': return None if repository.addProfileExtension.value: fileNameSuffix += '.' + getFirstValue(gcodeText, '(<profileName>') if repository.addDescriptiveExtension.value: print( 'getDescriptiveExtension(gcodeText)') print( getDescriptiveExtension(gcodeText)) fileNameSuffix += getDescriptiveExtension(gcodeText) if repository.addTimestampExtension.value: fileNameSuffix += '.' + getFirstValue(gcodeText, '(<timeStampPreface>') fileNameSuffix += '.' + repository.fileExtension.value fileNamePenultimate = fileName[: fileName.rfind('.')] + '_penultimate.gcode' filePenultimateWritten = False if repository.savePenultimateGcode.value: archive.writeFileText(fileNamePenultimate, gcodeText) filePenultimateWritten = True print('The penultimate file is saved as ' + archive.getSummarizedFileName(fileNamePenultimate)) exportGcode = getCraftedTextFromText(gcodeText, repository) window = None if shouldAnalyze and repository.analyzeGcode.value: window = skeinforge_analyze.writeOutput(fileName, fileNamePenultimate, fileNameSuffix, filePenultimateWritten, gcodeText) replaceableExportGcode = None selectedPluginModule = getSelectedPluginModule(repository.exportPlugins) if selectedPluginModule == None: replaceableExportGcode = exportGcode else: if selectedPluginModule.globalIsReplaceable: replaceableExportGcode = selectedPluginModule.getOutput(exportGcode) else: selectedPluginModule.writeOutput(fileNameSuffix, exportGcode) if replaceableExportGcode != None: replaceableExportGcode = getReplaceableExportGcode(repository.nameOfReplaceFile.value, replaceableExportGcode) archive.writeFileText( fileNameSuffix, replaceableExportGcode ) print('The exported file is saved as ' + archive.getSummarizedFileName(fileNameSuffix)) if repository.alsoSendOutputTo.value != '': if replaceableExportGcode == None: replaceableExportGcode = selectedPluginModule.getOutput(exportGcode) sendOutputTo(repository.alsoSendOutputTo.value, replaceableExportGcode) print('It took %s to export the file.' % euclidean.getDurationString(time.time() - startTime)) return window
def writeOutput(fileName, shouldAnalyze=True): 'Export a gcode linear move file.' if fileName == '': return None repository = ExportRepository() settings.getReadRepository(repository) startTime = time.time() print('File ' + archive.getSummarizedFileName(fileName) + ' is being chain exported.') fileNameSuffix = fileName[:fileName.rfind('.')] if repository.addExportSuffix.value: fileNameSuffix += '_export' fileNameSuffix += '.' + repository.fileExtension.value gcodeText = gcodec.getGcodeFileText(fileName, '') procedures = skeinforge_craft.getProcedures('export', gcodeText) gcodeText = skeinforge_craft.getChainTextFromProcedures( fileName, procedures[:-1], gcodeText) if gcodeText == '': return None if repository.savePenultimateGcode.value: penultimateFileName = fileName[:fileName. rfind('.')] + '_penultimate.gcode' archive.writeFileText(penultimateFileName, gcodeText) print('The penultimate file is saved as ' + archive.getSummarizedFileName(penultimateFileName)) exportGcode = getCraftedTextFromText(gcodeText, repository) window = None if shouldAnalyze: window = skeinforge_analyze.writeOutput(fileName, fileNameSuffix, gcodeText) replaceableExportGcode = None selectedPluginModule = getSelectedPluginModule(repository.exportPlugins) if selectedPluginModule == None: replaceableExportGcode = exportGcode else: if selectedPluginModule.globalIsReplaceable: replaceableExportGcode = selectedPluginModule.getOutput( exportGcode) else: selectedPluginModule.writeOutput(fileNameSuffix, exportGcode) if replaceableExportGcode != None: replaceableExportGcode = getReplaceableExportGcode( repository.nameOfReplaceFile.value, replaceableExportGcode) archive.writeFileText(fileNameSuffix, replaceableExportGcode) print('The exported file is saved as ' + archive.getSummarizedFileName(fileNameSuffix)) if repository.alsoSendOutputTo.value != '': if replaceableExportGcode == None: replaceableExportGcode = selectedPluginModule.getOutput( exportGcode) sendOutputTo(replaceableExportGcode, repository.alsoSendOutputTo.value) print('It took %s to export the file.' % euclidean.getDurationString(time.time() - startTime)) return window
def writeOutput(fileName=''): "Carve a GNU Triangulated Surface file." startTime = time.time() print('File ' + archive.getSummarizedFileName(fileName) + ' is being carved.') repository = CarveRepository() settings.getReadRepository(repository) carveGcode = getCraftedText( fileName, '', repository ) if carveGcode == '': return suffixFileName = archive.getFilePathWithUnderscoredBasename( fileName, '_carve.svg') archive.writeFileText( suffixFileName, carveGcode ) print('The carved file is saved as ' + archive.getSummarizedFileName(suffixFileName) ) print('It took %s to carve the file.' % euclidean.getDurationString( time.time() - startTime ) ) settings.openSVGPage( suffixFileName, repository.svgViewer.value )
def writeOutput(fileName, shouldAnalyze=True): "Carve a GNU Triangulated Surface file." startTime = time.time() print("File " + archive.getSummarizedFileName(fileName) + " is being carved.") repository = CarveRepository() settings.getReadRepository(repository) carveGcode = getCraftedText(fileName, "", repository) if carveGcode == "": return suffixFileName = archive.getFilePathWithUnderscoredBasename(fileName, "_carve.svg") archive.writeFileText(suffixFileName, carveGcode) print("The carved file is saved as " + archive.getSummarizedFileName(suffixFileName)) print("It took %s to carve the file." % euclidean.getDurationString(time.time() - startTime)) if shouldAnalyze: settings.openSVGPage(suffixFileName, repository.svgViewer.value)
def getWindowAnalyzeFile(fileName): "Get file interpretion." startTime = time.time() carving = getCarving(fileName) if carving == None: return None interpretGcode = str( carving ) if interpretGcode == '': return None repository = settings.getReadRepository( InterpretRepository() ) if repository.printInterpretion.value: print(interpretGcode) suffixFileName = fileName[ : fileName.rfind('.') ] + '_interpret.' + carving.getInterpretationSuffix() suffixDirectoryName = os.path.dirname(suffixFileName) suffixReplacedBaseName = os.path.basename(suffixFileName).replace(' ', '_') suffixFileName = os.path.join( suffixDirectoryName, suffixReplacedBaseName ) archive.writeFileText( suffixFileName, interpretGcode ) print('The interpret file is saved as ' + archive.getSummarizedFileName(suffixFileName) ) print('It took %s to interpret the file.' % euclidean.getDurationString( time.time() - startTime ) ) textProgram = repository.textProgram.value if textProgram == '': return None if textProgram == 'webbrowser': settings.openWebPage(suffixFileName) return None textFilePath = '"' + os.path.normpath(suffixFileName) + '"' # " to send in file name with spaces shellCommand = textProgram + ' ' + textFilePath print('Sending the shell command:') print(shellCommand) commandResult = os.system(shellCommand) if commandResult != 0: print('It may be that the system could not find the %s program.' % textProgram ) print('If so, try installing the %s program or look for another one, like Open Office which can be found at:' % textProgram ) print('http://www.openoffice.org/') print('Open office writer can then be started from the command line with the command "soffice -writer".')
def exportProfileAsZipFile(abridgedSettings, suffixDirectoryPath, suffixFileNameWithoutExtension): 'Export the profile from the gcode text as a zip file.' if len(abridgedSettings) < 1: print('Warning, the synopsis zip file could not be generated because there are no setting comments in the file.') return suffixFileName = suffixFileNameWithoutExtension + 'zip' abridgedSettingsDictionary = {} for abridgedSetting in abridgedSettings: euclidean.addElementToListDictionary(abridgedSetting, abridgedSetting.procedure, abridgedSettingsDictionary) abridgedSettingFileNamePaths = [] for abridgedSettingsKey in abridgedSettingsDictionary: abridgedSettings = abridgedSettingsDictionary[abridgedSettingsKey] repositoryWriter = settings.getRepositoryWriter(abridgedSettingsKey) addAbridgedSettings(abridgedSettings, repositoryWriter) abridgedSettingFileNamePath = FileNamePath(suffixDirectoryPath, abridgedSettingsKey + '.csv') abridgedSettingFileNamePaths.append(abridgedSettingFileNamePath) archive.writeFileText(abridgedSettingFileNamePath.path, repositoryWriter.getvalue()) time.sleep(0.2) # the sleep is so that the file system is sure to be consistent zipArchive = zipfile.ZipFile(suffixFileName, 'w', compression=zipfile.ZIP_DEFLATED) for abridgedSettingFileNamePath in abridgedSettingFileNamePaths: zipArchive.write(abridgedSettingFileNamePath.path, abridgedSettingFileNamePath.fileName) zipArchive.close() time.sleep(0.2) # the sleep is so that the file system is sure to be consistent for abridgedSettingFileNamePath in abridgedSettingFileNamePaths: os.remove(abridgedSettingFileNamePath.path) print('The synopsis zip file is saved as ' + archive.getSummarizedFileName(suffixFileName))
def getWindowAnalyzeFile(fileName): "Get file interpretion." startTime = time.time() carving = getCarving(fileName) if carving is None: return None interpretGcode = str( carving ) if interpretGcode == '': return None repository = settings.getReadRepository( InterpretRepository() ) if repository.printInterpretion.value: print( interpretGcode ) suffixFileName = fileName[ : fileName.rfind('.') ] + '_interpret.' + carving.getInterpretationSuffix() suffixDirectoryName = os.path.dirname(suffixFileName) suffixReplacedBaseName = os.path.basename(suffixFileName).replace(' ', '_') suffixFileName = os.path.join( suffixDirectoryName, suffixReplacedBaseName ) archive.writeFileText( suffixFileName, interpretGcode ) print('The interpret file is saved as ' + archive.getSummarizedFileName(suffixFileName) ) print('It took %s to interpret the file.' % euclidean.getDurationString( time.time() - startTime ) ) textProgram = repository.textProgram.value if textProgram == '': return None if textProgram == 'webbrowser': settings.openWebPage(suffixFileName) return None textFilePath = '"' + os.path.normpath(suffixFileName) + '"' # " to send in file name with spaces shellCommand = textProgram + ' ' + textFilePath print('Sending the shell command:') print(shellCommand) commandResult = os.system(shellCommand) if commandResult != 0: print('It may be that the system could not find the %s program.' % textProgram ) print('If so, try installing the %s program or look for another one, like Open Office which can be found at:' % textProgram ) print('http://www.openoffice.org/') print('Open office writer can then be started from the command line with the command "soffice -writer".')
def writeOutput(fileName=""): "Chop a GNU Triangulated Surface file. If no fileName is specified, chop the first GNU Triangulated Surface file in this folder." startTime = time.time() print("File " + archive.getSummarizedFileName(fileName) + " is being chopped.") repository = ChopRepository() settings.getReadRepository(repository) chopGcode = getCraftedText(fileName, "", repository) if chopGcode == "": return suffixFileName = fileName[: fileName.rfind(".")] + "_chop.svg" suffixDirectoryName = os.path.dirname(suffixFileName) suffixReplacedBaseName = os.path.basename(suffixFileName).replace(" ", "_") suffixFileName = os.path.join(suffixDirectoryName, suffixReplacedBaseName) archive.writeFileText(suffixFileName, chopGcode) print("The chopped file is saved as " + archive.getSummarizedFileName(suffixFileName)) print("It took %s to chop the file." % euclidean.getDurationString(time.time() - startTime)) settings.openSVGPage(suffixFileName, repository.svgViewer.value)
def writeOutput(fileName=''): "Cleave a GNU Triangulated Surface file. If no fileName is specified, cleave the first GNU Triangulated Surface file in this folder." startTime = time.time() print('File ' + archive.getSummarizedFileName(fileName) + ' is being cleaved.') repository = CleaveRepository() settings.getReadRepository(repository) cleaveGcode = getCraftedText( fileName, '', repository ) if cleaveGcode == '': return suffixFileName = fileName[ : fileName.rfind('.') ] + '_cleave.svg' suffixDirectoryName = os.path.dirname(suffixFileName) suffixReplacedBaseName = os.path.basename(suffixFileName).replace(' ', '_') suffixFileName = os.path.join( suffixDirectoryName, suffixReplacedBaseName ) archive.writeFileText( suffixFileName, cleaveGcode ) print('The cleaved file is saved as ' + archive.getSummarizedFileName(suffixFileName) ) print('It took %s to cleave the file.' % euclidean.getDurationString( time.time() - startTime ) ) settings.openSVGPage( suffixFileName, repository.svgViewer.value )
def writeOutput( fileName, gcodeText = ''): "Write the exported version of a gcode file." gcodeText = gcodec.getGcodeFileText(fileName, gcodeText) repository = GcodeTimeSegmentRepository() settings.getReadRepository(repository) output = getOutput(gcodeText, repository) suffixFileName = fileName[ : fileName.rfind('.') ] + '_gcode_time_segment.gcode' archive.writeFileText( suffixFileName, output ) print('The converted file is saved as ' + archive.getSummarizedFileName(suffixFileName) )
def writeOutput( fileName, gcodeText = ''): "Write the exported version of a gcode file." binary16ByteRepository = Binary16ByteRepository() settings.getReadRepository( binary16ByteRepository ) gcodeText = gcodec.getGcodeFileText(fileName, gcodeText) skeinOutput = getOutput( gcodeText, binary16ByteRepository ) suffixFileName = fileName[ : fileName.rfind('.') ] + '.' + binary16ByteRepository.fileExtension.value archive.writeFileText( suffixFileName, skeinOutput ) print('The converted file is saved as ' + archive.getSummarizedFileName(suffixFileName) )
def exportProfileAsCSVFile(abridgedSettings, suffixFileNameWithoutExtension): 'Export the profile from the gcode text as a csv file.' if len(abridgedSettings) < 1: print('Warning, the synopsis csv file could not be generated because there are no setting comments in the file.') return repositoryWriter = settings.getRepositoryWriter('profile') suffixFileName = suffixFileNameWithoutExtension + 'csv' addAbridgedSettings(abridgedSettings, repositoryWriter) archive.writeFileText(suffixFileName, repositoryWriter.getvalue()) print('The synopsis csv file is saved as ' + archive.getSummarizedFileName(suffixFileName))
def getOutput(fileName): 'Export a gcode linear move file.' if fileName == '': return None repository = ExportRepository() settings.getReadRepository(repository) startTime = time.time() print('File ' + archive.getSummarizedFileName(fileName.encode('ascii', 'replace')) + ' is being chain exported.') gcodeText = gcodec.getGcodeFileText(fileName, '') procedures = skeinforge_craft.getProcedures('export', gcodeText) gcodeText = skeinforge_craft.getChainTextFromProcedures( fileName, procedures[:-1], gcodeText) if gcodeText == '': return None fileNamePenultimate = fileName[:fileName.rfind('.')] + '_penultimate.gcode' if repository.savePenultimateGcode.value: archive.writeFileText(fileNamePenultimate, gcodeText) print('The penultimate file is saved as ' + archive.getSummarizedFileName(fileNamePenultimate)) exportGcode = getCraftedTextFromText(gcodeText, repository) replaceableExportGcode = None selectedPluginModule = getSelectedPluginModule(repository.exportPlugins) if selectedPluginModule is None: replaceableExportGcode = exportGcode else: if selectedPluginModule.globalIsReplaceable: replaceableExportGcode = selectedPluginModule.getOutput( exportGcode) #else: # selectedPluginModule.writeOutput(outputFilename, exportGcode) if replaceableExportGcode is not None: replaceableExportGcode = getReplaceableExportGcode( repository.nameOfReplaceFile.value, replaceableExportGcode) if repository.alsoSendOutputTo.value != '': if replaceableExportGcode == None: replaceableExportGcode = selectedPluginModule.getOutput( exportGcode) sendOutputTo(repository.alsoSendOutputTo.value, replaceableExportGcode) print('It took %s to export the file.' % euclidean.getDurationString(time.time() - startTime)) return replaceableExportGcode
def writeOutput(fileName=''): 'Export a gcode linear move file.' fileName = fabmetheus_interpret.getFirstTranslatorFileNameUnmodified(fileName) if fileName == '': return repository = ExportRepository() settings.getReadRepository(repository) startTime = time.time() print('File ' + archive.getSummarizedFileName(fileName) + ' is being chain exported.') suffixFileName = fileName[: fileName.rfind('.')] if repository.addExportSuffix.value: suffixFileName += '_export' suffixFileName += '.' + repository.fileExtension.value gcodeText = gcodec.getGcodeFileText(fileName, '') procedures = skeinforge_craft.getProcedures('export', gcodeText) gcodeText = skeinforge_craft.getChainTextFromProcedures(fileName, procedures[ : - 1 ], gcodeText) if gcodeText == '': return window = skeinforge_analyze.writeOutput(fileName, suffixFileName, gcodeText) if repository.savePenultimateGcode.value: penultimateFileName = fileName[: fileName.rfind('.')] + '_penultimate.gcode' archive.writeFileText(penultimateFileName, gcodeText) print('The penultimate file is saved as ' + archive.getSummarizedFileName(penultimateFileName)) exportChainGcode = getCraftedTextFromText(gcodeText, repository) replaceableExportChainGcode = None selectedPluginModule = getSelectedPluginModule(repository.exportPlugins) if selectedPluginModule == None: replaceableExportChainGcode = exportChainGcode else: if selectedPluginModule.globalIsReplaceable: replaceableExportChainGcode = selectedPluginModule.getOutput(exportChainGcode) else: selectedPluginModule.writeOutput(suffixFileName, exportChainGcode) if replaceableExportChainGcode != None: replaceableExportChainGcode = getReplaced(replaceableExportChainGcode) archive.writeFileText( suffixFileName, replaceableExportChainGcode ) print('The exported file is saved as ' + archive.getSummarizedFileName(suffixFileName)) if repository.alsoSendOutputTo.value != '': if replaceableExportChainGcode == None: replaceableExportChainGcode = selectedPluginModule.getOutput(exportChainGcode) exec('print >> ' + repository.alsoSendOutputTo.value + ', replaceableExportChainGcode') print('It took %s to export the file.' % euclidean.getDurationString(time.time() - startTime)) return window
def getWindowAnalyzeFileGivenText( fileName, gcodeText, repository=None): "Write statistics for a gcode file." print('') print('') print('Statistics are being generated for the file ' + archive.getSummarizedFileName(fileName) ) if repository == None: repository = settings.getReadRepository( StatisticRepository() ) skein = StatisticSkein() statisticGcode = skein.getCraftedGcode(gcodeText, repository) if repository.printStatistics.value: print(statisticGcode) if repository.saveStatistics.value: archive.writeFileMessageEnd('.txt', fileName, statisticGcode, 'The statistics file is saved as ')
def getWindowAnalyzeFileGivenText( fileName, gcodeText, repository=None): """Write statistics for a gcode file.""" print('') print('') print('Statistics are being generated for the file ' + archive.getSummarizedFileName(fileName) ) if repository is None: repository = settings.getReadRepository( StatisticRepository() ) skein = StatisticSkein() statisticGcode = skein.getCraftedGcode(gcodeText, repository) if repository.printStatistics.value: print( statisticGcode ) if repository.saveStatistics.value: archive.writeFileMessageEnd('.txt', fileName, statisticGcode, 'The statistics file is saved as ')
def execute(self): "Export the canvas as an svg file." svgFileName = archive.getFilePathWithUnderscoredBasename( self.fileName, self.suffix ) boundingBox = self.canvas.bbox( settings.Tkinter.ALL ) # tuple (w, n, e, s) self.boxW = boundingBox[0] self.boxN = boundingBox[1] boxWidth = boundingBox[2] - self.boxW boxHeight = boundingBox[3] - self.boxN print('Exported svg file saved as ' + svgFileName ) svgTemplateText = archive.getFileTextInFileDirectory( settings.__file__, os.path.join('templates', 'canvas_template.svg') ) output = cStringIO.StringIO() lines = archive.getTextLines( svgTemplateText ) firstWordTable = {} firstWordTable['height="999px"'] = ' height="%spx"' % int( round( boxHeight ) ) firstWordTable['<!--replaceLineWith_coloredLines-->'] = self.getCanvasLinesOutput() firstWordTable['replaceLineWithTitle'] = archive.getSummarizedFileName( self.fileName ) firstWordTable['width="999px"'] = ' width="%spx"' % int( round( boxWidth ) ) for line in lines: parseLineReplace( firstWordTable, line, output ) archive.writeFileText( svgFileName, output.getvalue() ) fileExtension = self.fileExtension.value svgViewer = self.svgViewer.value if svgViewer == '': return if svgViewer == 'webbrowser': settings.openWebPage( svgFileName ) return svgFilePath = '"' + os.path.normpath( svgFileName ) + '"' # " to send in file name with spaces shellCommand = svgViewer + ' ' + svgFilePath print('') if fileExtension == '': print('Sending the shell command:') print( shellCommand ) commandResult = os.system( shellCommand ) if commandResult != 0: print('It may be that the system could not find the %s program.' % svgViewer ) print('If so, try installing the %s program or look for another svg viewer, like Netscape which can be found at:' % svgViewer ) print('http://www.netscape.org/') return convertedFileName = archive.getFilePathWithUnderscoredBasename( svgFilePath, '.' + fileExtension + '"') shellCommand += ' ' + convertedFileName print('Sending the shell command:') print( shellCommand ) commandResult = os.system( shellCommand ) if commandResult != 0: print('The %s program could not convert the svg to the %s file format.' % ( svgViewer, fileExtension ) ) print('Try installing the %s program or look for another one, like Image Magick which can be found at:' % svgViewer ) print('http://www.imagemagick.org/script/index.php')
def getWindowAnalyzeFileGivenText( fileName, gcodeText, repository=None): 'Write scalable vector graphics for a gcode file given the settings.' if gcodeText == '': return None if repository == None: repository = settings.getReadRepository( VectorwriteRepository() ) startTime = time.time() vectorwriteGcode = VectorwriteSkein().getCarvedSVG( fileName, gcodeText, repository ) if vectorwriteGcode == '': return None suffixFileName = fileName[ : fileName.rfind('.') ] + '_vectorwrite.svg' suffixDirectoryName = os.path.dirname(suffixFileName) suffixReplacedBaseName = os.path.basename(suffixFileName).replace(' ', '_') suffixFileName = os.path.join( suffixDirectoryName, suffixReplacedBaseName ) archive.writeFileText( suffixFileName, vectorwriteGcode ) print('The vectorwrite file is saved as ' + archive.getSummarizedFileName(suffixFileName) ) print('It took %s to vectorwrite the file.' % euclidean.getDurationString( time.time() - startTime ) ) settings.openSVGPage( suffixFileName, repository.svgViewer.value )
def writeOutput(fileName, shouldAnalyze=True): """Export a gcode linear move file.""" if fileName == '': return None repository = ExportRepository() settings.getReadRepository(repository) startTime = time.time() print('File ' + archive.getSummarizedFileName(fileName) + ' is being chain exported.') fileNameSuffix = fileName[: fileName.rfind('.')] if repository.addExportSuffix.value: fileNameSuffix += '_export' if repository.profileFileExtension.value: profileName = skeinforge_profile.getProfileName(skeinforge_profile.getCraftTypeName()) if profileName: fileNameSuffix += '.' + string.replace(profileName, ' ', '_') if repository.descriptiveExtension.value: fileNameSuffix += descriptiveExtension() if repository.timestampExtension.value: fileNameSuffix += '.'+strftime("%Y%m%d_%H%M%S") if repository.archiveProfile.value: profileName = skeinforge_profile.getProfileName(skeinforge_profile.getCraftTypeName()) if profileName: profileZipFileName = fileNameSuffix + '.zip' zipper(archive.getProfilesPath(skeinforge_profile.getProfileDirectory()), profileName+'/', profileZipFileName) print('Profile archived to ' + profileZipFileName) if repository.exportProfileAsCsv.value: csvExportFilename = fileNameSuffix + '.csv' archive.writeFileText(csvExportFilename, Condenser().readSettings()) fileNameSuffix += '.' + repository.fileExtension.value gcodeText = gcodec.getGcodeFileText(fileName, '') procedures = skeinforge_craft.getProcedures('export', gcodeText) gcodeText = skeinforge_craft.getChainTextFromProcedures(fileName, procedures[ : - 1 ], gcodeText) if gcodeText == '': return None fileNamePenultimate = fileName[: fileName.rfind('.')] + '_penultimate.gcode' filePenultimateWritten = False if repository.savePenultimateGcode.value: archive.writeFileText(fileNamePenultimate, gcodeText) filePenultimateWritten = True print('The penultimate file is saved as ' + archive.getSummarizedFileName(fileNamePenultimate)) exportGcode = getCraftedTextFromText(gcodeText, repository) window = None if shouldAnalyze: window = skeinforge_analyze.writeOutput(fileName, fileNamePenultimate, fileNameSuffix, filePenultimateWritten, gcodeText) replaceableExportGcode = None selectedPluginModule = getSelectedPluginModule(repository.exportPlugins) if selectedPluginModule is None: replaceableExportGcode = exportGcode else: if selectedPluginModule.globalIsReplaceable: replaceableExportGcode = selectedPluginModule.getOutput(exportGcode) else: selectedPluginModule.writeOutput(fileNameSuffix, exportGcode) if replaceableExportGcode is not None: replaceableExportGcode = getReplaceableExportGcode(repository.nameOfReplaceFile.value, replaceableExportGcode) archive.writeFileText( fileNameSuffix, replaceableExportGcode ) print('The exported file is saved as ' + archive.getSummarizedFileName(fileNameSuffix)) if repository.alsoSendOutputTo.value != '': if replaceableExportGcode is None: replaceableExportGcode = selectedPluginModule.getOutput(exportGcode) sendOutputTo(replaceableExportGcode, repository.alsoSendOutputTo.value) print('It took %s to export the file.' % euclidean.getDurationString(time.time() - startTime)) return window
def writeOutput(fileName, shouldAnalyze=True): 'Export a gcode linear move file.' if fileName == '': return None repository = ExportRepository() settings.getReadRepository(repository) startTime = time.time() print('File ' + archive.getSummarizedFileName(fileName) + ' is being chain exported.') fileNameSuffix = fileName[:fileName.rfind('.')] if repository.addExportSuffix.value: fileNameSuffix += '_export' if (repository.profileFileExtension.value == True): profileName = skeinforge_profile.getProfileName( skeinforge_profile.getCraftTypeName()) if profileName: fileNameSuffix += '.' + string.replace(profileName, ' ', '_') if (repository.descriptiveExtension.value == True): fileNameSuffix += descriptiveExtension() if (repository.timestampExtension.value == True): fileNameSuffix += '.' + strftime("%Y%m%d_%H%M%S") if (repository.archiveProfile.value == True): profileName = skeinforge_profile.getProfileName( skeinforge_profile.getCraftTypeName()) if profileName: profileZipFileName = fileNameSuffix + '.zip' zipper( archive.getProfilesPath( skeinforge_profile.getProfileDirectory()), profileName + '/', profileZipFileName) print('Profile archived to ' + profileZipFileName) if (repository.exportProfileAsCsv.value == True): csvExportFilename = fileNameSuffix + '.csv' archive.writeFileText(csvExportFilename, Condenser().readSettings()) fileNameSuffix += '.' + repository.fileExtension.value gcodeText = gcodec.getGcodeFileText(fileName, '') procedures = skeinforge_craft.getProcedures('export', gcodeText) gcodeText = skeinforge_craft.getChainTextFromProcedures( fileName, procedures[:-1], gcodeText) if gcodeText == '': return None if repository.savePenultimateGcode.value: penultimateFileName = fileName[:fileName. rfind('.')] + '_penultimate.gcode' archive.writeFileText(penultimateFileName, gcodeText) print('The penultimate file is saved as ' + archive.getSummarizedFileName(penultimateFileName)) exportGcode = getCraftedTextFromText(gcodeText, repository) window = None if shouldAnalyze: window = skeinforge_analyze.writeOutput(fileName, fileNameSuffix, gcodeText) replaceableExportGcode = None selectedPluginModule = getSelectedPluginModule(repository.exportPlugins) if selectedPluginModule == None: replaceableExportGcode = exportGcode else: if selectedPluginModule.globalIsReplaceable: replaceableExportGcode = selectedPluginModule.getOutput( exportGcode) else: selectedPluginModule.writeOutput(fileNameSuffix, exportGcode) if replaceableExportGcode != None: replaceableExportGcode = getReplaceableExportGcode( repository.nameOfReplaceFile.value, replaceableExportGcode) archive.writeFileText(fileNameSuffix, replaceableExportGcode) print('The exported file is saved as ' + archive.getSummarizedFileName(fileNameSuffix)) if repository.alsoSendOutputTo.value != '': if replaceableExportGcode == None: replaceableExportGcode = selectedPluginModule.getOutput( exportGcode) sendOutputTo(replaceableExportGcode, repository.alsoSendOutputTo.value) print('It took %s to export the file.' % euclidean.getDurationString(time.time() - startTime)) return window