X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=Cura%2Fcura.py;h=701b93e64a07834705a376e8064308475f21e3fd;hb=16c67477c32e8c5cdff79d23347b0713e32ee1a3;hp=3c07d642c44815fbbce9c5106e88ae208a5750ad;hpb=7bf2035281529087c71373034518aa1ae1946c5e;p=cura.git diff --git a/Cura/cura.py b/Cura/cura.py index 3c07d642..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,11 +23,14 @@ 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.loadProfileFromString(options.profile) + profile.setProfileFromString(options.profile) elif options.profileini is not None: profile.loadProfile(options.profileini) else: @@ -66,18 +40,33 @@ def main(): 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 + + 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) - #Do not import anything from Cura.gui before this spot, as the above code also needs to run in pypy. + 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()