3D printer / slicing GUI built on top of the Uranium framework
Find a file
Ghostkeeper 7e10e74e9e
Don't send print job in chunks
Previously the print job was sent with multiple PUT requests. This was necessary since the request was made with the Python Requests library, which freezes the interface while it's running. By breaking the upload up in chunks, it would at least periodically keep updating the interface (4 times per second or so, depending on your internet speed and Ultimaker's). Later on, this was replaced by a QNetworkRequest which doesn't freeze the interface in a refactor, but it was still broken up in chunks.
Recently that was again refactored to use Uranium's HttpRequestManager, which under the covers also uses QNetworkRequest. This also doesn't freeze while uploading, which is good. However for some reason the second chunk would always give a QNetworkReply::ProtocolUnknownError, which is a bit of a catch-all error for any HTTP status codes not supported by Qt. I was not able to figure out what was really going wrong there, but it has something to do with the content-range header and making multiple requests.
Instead of fixing that, I've removed the chunking. This simplifies the code a lot and doesn't have any implications for the user, since it still doesn't freeze the interface while the network request is ongoing. It should be slightly faster to upload, and reduce load on the server too.

However the disadvantage is that the original bug is probably still there if it was a bug in the HttpRequestManager. If it was a bug in the ToolPathUploader I probably deleted the bug here.

Contributes to issue CURA-7488.
2020-06-08 17:55:07 +02:00
.github Fix branch checkout for PRs with GitHub workflow 2020-01-16 13:27:17 +01:00
cmake Remove trailing whitespace from Python files 2020-05-29 14:30:33 +02:00
cura Store data for metadata first 2020-06-08 10:31:40 +02:00
docker Rewrite invalid imports checker to Python 2020-01-20 16:24:26 +01:00
docs Add a page about the build volume 2020-05-08 15:35:08 +02:00
icons New application icons 2015-09-17 17:05:01 +02:00
plugins Don't send print job in chunks 2020-06-08 17:55:07 +02:00
resources Merge branch 'CURA-7480_Remove_flicabkle_config_panel' 2020-06-08 14:26:21 +02:00
scripts Remove trailing whitespace from Python files 2020-05-29 14:30:33 +02:00
tests Mock the limit_to_extruder property with an actual value 2020-06-02 14:01:09 +02:00
.dockerignore Emit backend errors so we can process them differently than through a qml notification 2018-03-05 14:33:13 +01:00
.gitignore Add correct name of settings guide to ignore list 2020-05-11 09:58:19 +02:00
.pylintrc Fix regex for private & long functions 2020-01-10 17:43:40 +01:00
build.sh Add the scripts used to build the release package (still needs some more work, but works on my desktop) 2015-05-04 13:35:53 +02:00
CMakeLists.txt CMake: Fixing warning about path conversion 2020-02-22 18:34:21 +01:00
contributing.md Add contribution guidelines 2019-03-05 14:24:31 +01:00
cura.appdata.xml Fixed incorrect appstream data XML. 2018-06-18 08:08:28 +02:00
cura.desktop.in Add StartupWMClass=cura.real in order to group windows properly in Gnome and more. 2019-09-27 02:50:20 +01:00
cura.sharedmimeinfo Update desktop and mimeinfo to add gcode mime type 2018-11-22 15:47:12 +01:00
cura_app.py Prevent crash when sentry could not be initialized 2020-05-19 14:14:44 +02:00
Dockerfile Emit backend errors so we can process them differently than through a qml notification 2018-03-05 14:33:13 +01:00
Jenkinsfile Use generated Makefiles to run tests 2018-11-20 09:53:17 +01:00
LICENSE Changing AGPLv3 to LGPLv3 2017-09-28 13:00:43 +02:00
pytest.ini Added unit test stub 2016-04-29 11:32:33 +02:00
README.md Write a new starter text and add a screenshot 2020-05-29 09:34:00 +02:00
requirements.txt Add pytest to requirements 2020-03-20 10:57:23 +01:00
run_coverage.py Add convenience script for running complete coverage 2019-08-30 16:32:11 +02:00
run_in_docker.sh Cleanup 2018-03-01 11:00:49 +01:00
run_mypy.py Remove trailing spaces 2020-02-17 15:25:17 +01:00
screenshot.png Write a new starter text and add a screenshot 2020-05-29 09:34:00 +02:00
test-in-docker.sh Add a script to execute the CI scripts on a local Docker instance 2020-01-13 14:43:11 +01:00

Cura

Ultimaker Cura is a state-of-the-art slicer application to prepare your 3D models for printing with a 3D printer. With hundreds of settings and hundreds of community-managed print profiles, Ultimaker Cura is sure to lead your next project to a success.

Screenshot

Logging Issues

For crashes and similar issues, please attach the following information:

  • (On Windows) The log as produced by dxdiag (start -> run -> dxdiag -> save output)
  • The Cura GUI log file, located at
    • %APPDATA%\cura\<Cura version>\cura.log (Windows), or usually C:\Users\\<your username>\AppData\Roaming\cura\<Cura version>\cura.log
    • $USER/Library/Application Support/cura/<Cura version>/cura.log (OSX)
    • $USER/.local/share/cura/<Cura version>/cura.log (Ubuntu/Linux)

If the Cura user interface still starts, you can also reach this directory from the application menu in Help -> Show settings folder

For additional support, you could also ask in the #cura channel on FreeNode IRC. For help with development, there is also the #cura-dev channel.

Dependencies

  • Uranium Cura is built on top of the Uranium framework.
  • CuraEngine This will be needed at runtime to perform the actual slicing.
  • fdm_materials Required to load a printer that has swappable material profiles.
  • PySerial Only required for USB printing support.
  • python-zeroconf Only required to detect mDNS-enabled printers.

Build scripts

Please checkout cura-build for detailed building instructions.

Running from Source

Please check our Wiki page for details about running Cura from source.

Plugins

Please check our Wiki page for details about creating and using plugins.

Supported printers

Please check our Wiki page for guidelines about adding support for new machines.

Configuring Cura

Please check out Wiki page about configuration options for developers.

Translating Cura

Please check out Wiki page about how to translate Cura into other languages.

License

Cura is released under the terms of the LGPLv3 or higher. A copy of this license should be included with the software.