X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=Cura%2Fcura.py;h=701b93e64a07834705a376e8064308475f21e3fd;hb=16c67477c32e8c5cdff79d23347b0713e32ee1a3;hp=24c43c0ed1405824e8408ce1ae86a392a8365fdf;hpb=39f39ce4b318009bc4e3a1dfd8d86e59d04f096c;p=cura.git diff --git a/Cura/cura.py b/Cura/cura.py index 24c43c0e..701b93e6 100644 --- a/Cura/cura.py +++ b/Cura/cura.py @@ -3,85 +3,70 @@ This page is in the table of contents. ==Overview== ===Introduction=== -Cura is a GPL tool chain to forge a gcode skein for a model. Based on Skeinforge. - -The slicing code is the same as Skeinforge. But the UI has been revamped to be... sane. - +Cura is a AGPL tool chain to generate a GCode path for 3D printing. Older versions of Cura where based on Skeinforge. +Versions up from 13.05 are based on a C++ engine called CuraEngine. """ from __future__ import absolute_import -import __init__ +__copyright__ = "Copyright (C) 2013 David Braam - Released under terms of the AGPLv3 License" -import sys -import platform from optparse import OptionParser -from util import profile - -__author__ = 'Daid' -__credits__ = """ -David Braam (daid303@gmail.com) -Enrique Perez (perez_enrique@yahoo.com) -Adrian Bowyer -Brendan Erwin -Greenarrow -Ian England -John Gilmore -Jonwise -Kyle Corbitt -Michael Duffin -Marius Kintel -Nophead -PJR -Reece.Arnott -Wade -Xsainnz -Zach Hoeken - -Organizations: -Ultimaker -Art of Illusion """ - -__license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html' +from Cura.util import profile def main(): parser = OptionParser(usage="usage: %prog [options] .stl") - parser.add_option("-i", "--ini", action="store", type="string", dest="profileini", help="Load settings from a profile ini file") - parser.add_option("-P", "--project", action="store_true", dest="openprojectplanner", help="Open the project planner") - parser.add_option("-F", "--flat", action="store_true", dest="openflatslicer", help="Open the 2D SVG slicer (unfinished)") - parser.add_option("-r", "--print", action="store", type="string", dest="printfile", help="Open the printing interface, instead of the normal cura interface.") - parser.add_option("-p", "--profile", action="store", type="string", dest="profile", help="Internal option, do not use!") - parser.add_option("-s", "--slice", action="store_true", dest="slice", help="Slice the given files instead of opening them in Cura") + parser.add_option("-i", "--ini", action="store", type="string", dest="profileini", + help="Load settings from a profile ini file") + parser.add_option("-r", "--print", action="store", type="string", dest="printfile", + help="Open the printing interface, instead of the normal cura interface.") + parser.add_option("-p", "--profile", action="store", type="string", dest="profile", + help="Internal option, do not use!") + parser.add_option("-s", "--slice", action="store_true", dest="slice", + help="Slice the given files instead of opening them in Cura") + parser.add_option("-o", "--output", action="store", type="string", dest="output", + help="path to write sliced file to") + (options, args) = parser.parse_args() - if options.profile != None: - profile.loadGlobalProfileFromString(options.profile) - if options.profileini != None: - profile.loadGlobalProfile(options.profileini) - if options.openprojectplanner != None: - from gui import projectPlanner - projectPlanner.main() - return - if options.openflatslicer != None: - from gui import flatSlicerWindow - flatSlicerWindow.main() - return - if options.printfile != None: - from gui import printWindow - printWindow.startPrintInterface(options.printfile) - return - if options.slice != None: - from util import sliceRun - sliceRun.runSlice(args) + profile.loadPreferences(profile.getPreferencePath()) + if options.profile is not None: + profile.setProfileFromString(options.profile) + elif options.profileini is not None: + profile.loadProfile(options.profileini) else: - if len(args) > 0: - profile.putPreference('lastFile', ';'.join(args)) - from gui import splashScreen - splashScreen.showSplash(mainWindowRunCallback) + profile.loadProfile(profile.getDefaultProfilePath()) -def mainWindowRunCallback(): - from gui import mainWindow - mainWindow.main() + if options.printfile is not None: + from Cura.gui import printWindow + printWindow.startPrintInterface(options.printfile) + elif options.slice is not None: + from Cura.util import sliceEngine + from Cura.util import objectScene + from Cura.util import meshLoader + import shutil + + def commandlineProgessCallback(progress, ready): + if progress >= 0 and not ready: + print 'Preparing: %d%%' % (progress * 100) + scene = objectScene.Scene() + slicer = sliceEngine.Slicer(commandlineProgessCallback) + for m in meshLoader.loadMeshes(args[0]): + scene.add(m) + slicer.runSlicer(scene) + slicer.wait() + profile.replaceGCodeTagsFromSlicer(slicer.getGCodeFilename(), slicer) + + if options.output: + shutil.copyfile(slicer.getGCodeFilename(), options.output) + print 'GCode file saved : %s' % options.output + else: + shutil.copyfile(slicer.getGCodeFilename(), args[0] + '.gcode') + print 'GCode file saved as: %s' % (args[0] + '.gcode') + + slicer.cleanup() + else: + from Cura.gui import app + app.CuraApp(args).MainLoop() if __name__ == '__main__': main() -