-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Project Overview
Joey de l'Arago edited this page Feb 17, 2023
·
1 revision
Cura uses a number of repositories where parts of our source code are separated, in order to get a cleaner architecture. Those repositories are:
-
Cura is the main repository for the front-end of Cura. This contains:
- all of the business logic for the front-end, including the specific types of profiles that are available
- the concept of 3D printers and materials
- specific tools for handling 3D printed models
- pretty much all of the GUI
- Ultimaker services such as the Marketplace and accounts.
-
Uranium is the underlying framework the Cura repository is built on. Uranium is a framework for desktop applications that handle 3D models. It has a separate back-end. This provides Cura with:
- a basic GUI framework (Qt)
- a 3D scene, a rendering system
- a plug-in system
- a system for stacked profiles that change settings.
- CuraEngine is the slicer used by Cura in the background. This does the actual process that converts 3D models into a toolpath for the printer.
- libArcus handles the communication to CuraEngine. libArcus is a small library that wraps around Protobuf in order to make it run over a local socket.
- cura-build: Cura's build scripts.
- cura-build-environment build scripts for building dependencies.
There are also a number of repositories under our control that are not integral parts of Cura's architecture, but more like separated side-gigs:
- libSavitar is used for loading and writing 3MF files.
- libCharon is used for loading and writing UFP files.
-
cura-binary-data pre-compiled parts to make the build system a bit simpler. This holds things which would require considerable tooling to build automatically like:
- the machine-readable translation files
- the Marlin builds for firmware updates
- Cura-squish-tests: automated GUI tests.
- fdm_materials stores Material profiles. This is separated out and combined in our build process, so that the firmware for Ultimaker's printers can use the same set of profiles too.
At a very high level, Cura's repositories interconnect as follows:
- Welcome
- Getting Started
- Reporting An Issue
- Core Development
- Plugins & Material Packages
- Printers
- Translations
- Best Practices
- Settings
- 3D Scene
- Profiling
- Cura User Files
- GitHub Actions