X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=Cura%2Fcura.py;h=701b93e64a07834705a376e8064308475f21e3fd;hb=16c67477c32e8c5cdff79d23347b0713e32ee1a3;hp=8474a661fdded4430d4b03b069f7bb71a55d4de7;hpb=6a58d9267fbb966ec2060947da1c753673656d12;p=cura.git diff --git a/Cura/cura.py b/Cura/cura.py index 8474a661..701b93e6 100644 --- a/Cura/cura.py +++ b/Cura/cura.py @@ -3,45 +3,16 @@ 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 +__copyright__ = "Copyright (C) 2013 David Braam - Released under terms of the AGPLv3 License" from optparse import OptionParser from Cura.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 -Ilya Kulakov (kulakov.ilya@gmail.com) - -Organizations: -Ultimaker -Art of Illusion """ - -__license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html' - - def main(): parser = OptionParser(usage="usage: %prog [options] .stl") parser.add_option("-i", "--ini", action="store", type="string", dest="profileini", @@ -52,29 +23,50 @@ def main(): 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() + profile.loadPreferences(profile.getPreferencePath()) if options.profile is not None: - profile.loadGlobalProfileFromString(options.profile) - if options.profileini is not None: - profile.loadGlobalProfile(options.profileini) + profile.setProfileFromString(options.profile) + elif options.profileini is not None: + profile.loadProfile(options.profileini) + else: + profile.loadProfile(profile.getDefaultProfilePath()) 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 sliceRun - sliceRun.runSlice(args) - else: - #Place any unused arguments as last file, so Cura starts with opening those files. - if len(args) > 0: - profile.putPreference('lastFile', ';'.join(args)) - profile.putProfileSetting('model_matrix', '1,0,0,0,1,0,0,0,1') - profile.setPluginConfig([]) + from Cura.util import sliceEngine + from Cura.util import objectScene + from Cura.util import meshLoader + import shutil - #Do not import anything from Cura.gui before this spot, as the above code also needs to run in pypy. + 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().MainLoop() + app.CuraApp(args).MainLoop() if __name__ == '__main__': main()