mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-01 08:14:22 +08:00
34 lines
2.8 KiB
Markdown
34 lines
2.8 KiB
Markdown
Repositories
|
|
====
|
|
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](https://github.com/Ultimaker/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](https://github.com/Ultimaker/Uranium) is the underlying framework the Cura repository is built on. [Uranium](https://github.com/Ultimaker/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](https://www.qt.io/))
|
|
- a 3D scene, a rendering system
|
|
- a plug-in system
|
|
- a system for stacked profiles that change settings.
|
|
* [CuraEngine](https://github.com/Ultimaker/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](https://github.com/Ultimaker/libArcus) handles the communication to CuraEngine. [libArcus](https://github.com/Ultimaker/libArcus) is a small library that wraps around [Protobuf](https://developers.google.com/protocol-buffers/) in order to make it run over a local socket.
|
|
* [cura-build](https://github.com/Ultimaker/cura-build): Cura's build scripts.
|
|
* [cura-build-environment](https://github.com/Ultimaker/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](https://github.com/Ultimaker/libSavitar) is used for loading and writing 3MF files.
|
|
* [libCharon](https://github.com/Ultimaker/libCharon) is used for loading and writing UFP files.
|
|
* [cura-binary-data](https://github.com/Ultimaker/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](https://github.com/Ultimaker/Cura-squish-tests): automated GUI tests.
|
|
* [fdm_materials](https://github.com/Ultimaker/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.
|
|
|
|
Interplay
|
|
----
|
|
At a very high level, Cura's repositories interconnect as follows:
|
|
|
|

|