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("-p", "--profile", action="store", type="string", dest="profile",
23 help="Internal option, do not use!")
24 parser.add_option("-s", "--slice", action="store_true", dest="slice",
25 help="Slice the given files instead of opening them in Cura")
26 parser.add_option("-o", "--output", action="store", type="string", dest="output",
27 help="path to write sliced file to")
28 parser.add_option("--serialCommunication", action="store", type="string", dest="serialCommunication",
29 help="Start commandline serial monitor")
31 (options, args) = parser.parse_args()
33 if options.serialCommunication:
34 from Cura import serialCommunication
35 port, baud = options.serialCommunication.split(':')
36 serialCommunication.startMonitor(port, baud)
39 print "load preferences from " + profile.getPreferencePath()
40 profile.loadPreferences(profile.getPreferencePath())
42 if options.profile is not None:
43 profile.setProfileFromString(options.profile)
44 elif options.profileini is not None:
45 profile.loadProfile(options.profileini)
47 profile.loadProfile(profile.getDefaultProfilePath(), True)
49 if options.slice is not None:
50 from Cura.util import sliceEngine
51 from Cura.util import objectScene
52 from Cura.util import meshLoader
55 def commandlineProgressCallback(progress):
57 #print 'Preparing: %d%%' % (progress * 100)
59 scene = objectScene.Scene()
60 scene.updateMachineDimensions()
61 engine = sliceEngine.Engine(commandlineProgressCallback)
62 for m in meshLoader.loadMeshes(args[0]):
64 engine.runEngine(scene)
67 if not options.output:
68 options.output = args[0] + profile.getGCodeExtension()
69 with open(options.output, "wb") as f:
70 gcode = 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__':