3 This page is in the table of contents.
6 Cura is a AGPL tool chain to generate a GCode path for 3D printing. Older versions of Cura where based on Skeinforge.
7 Versions up from 13.05 are based on a C++ engine called CuraEngine.
9 __copyright__ = "Copyright (C) 2013 David Braam - Released under terms of the AGPLv3 License"
11 from optparse import OptionParser
13 from Cura.util import profile
17 Main Cura entry point. Parses arguments, and starts GUI or slicing process depending on the arguments.
19 parser = OptionParser(usage="usage: %prog [options] <filename>.stl")
20 parser.add_option("-i", "--ini", action="store", type="string", dest="profileini",
21 help="Load settings from a profile ini file")
22 parser.add_option("-r", "--print", action="store", type="string", dest="printfile",
23 help="Open the printing interface, instead of the normal cura interface.")
24 parser.add_option("-p", "--profile", action="store", type="string", dest="profile",
25 help="Internal option, do not use!")
26 parser.add_option("-s", "--slice", action="store_true", dest="slice",
27 help="Slice the given files instead of opening them in Cura")
28 parser.add_option("-o", "--output", action="store", type="string", dest="output",
29 help="path to write sliced file to")
30 parser.add_option("--serialCommunication", action="store", type="string", dest="serialCommunication",
31 help="Start commandline serial monitor")
33 (options, args) = parser.parse_args()
35 if options.serialCommunication:
36 from Cura import serialCommunication
37 port, baud = options.serialCommunication.split(':')
38 serialCommunication.startMonitor(port, baud)
41 print "load preferences from " + profile.getPreferencePath()
42 profile.loadPreferences(profile.getPreferencePath())
44 if options.profile is not None:
45 profile.setProfileFromString(options.profile)
46 elif options.profileini is not None:
47 profile.loadProfile(options.profileini)
49 profile.loadProfile(profile.getDefaultProfilePath(), True)
51 if options.printfile is not None:
52 from Cura.gui import printWindow
53 printWindow.startPrintInterface(options.printfile)
54 elif options.slice is not None:
55 from Cura.util import sliceEngine
56 from Cura.util import objectScene
57 from Cura.util import meshLoader
60 def commandlineProgressCallback(progress):
62 #print 'Preparing: %d%%' % (progress * 100)
64 scene = objectScene.Scene()
65 scene.updateMachineDimensions()
66 engine = sliceEngine.Engine(commandlineProgressCallback)
67 for m in meshLoader.loadMeshes(args[0]):
69 engine.runEngine(scene)
72 if not options.output:
73 options.output = args[0] + '.gcode'
74 with open(options.output, "wb") as f:
75 f.write(engine.getResult().getGCode())
76 print 'GCode file saved : %s' % options.output
80 from Cura.gui import app
81 app.CuraApp(args).MainLoop()
83 if __name__ == '__main__':