Project Overview - lulzbot3d/CuraLE GitHub Wiki
Project Overview
CuraLE uses a number of repositories where parts of our source code are separated, in order to get a cleaner architecture. Those repositories are:
CuraLE
CuraLE is the main repository for the front-end of Cura LulzBot Edition. 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
UraniumLE
UraniumLE is the underlying framework the CuraLE repository is built on. UraniumLE is a framework for desktop applications that handle 3D models. It has a separate back-end. This provides CuraLE with:
- a basic GUI framework (Qt)
- a 3D scene, a rendering system
- a plug-in system
- a system for stacked profiles that change settings.
CuraEngineLE
CuraEngineLE is the slicer used by Cura in the background. This does the actual process that converts 3D models into a toolpath for the printer.
libArcusLE
libArcusLE handles the communication to CuraEngineLE. It is a small library that wraps around Protobuf in order to make it run over a local socket.
Others
There are also a number of repositories under our control that are not integral parts of CuraLE's architecture, but more like separated side-gigs:
libSavitarLE
Used for loading and writing 3MF files.
libCharonLE
Used for loading and writing UFP files. (Not currently used by LulzBot Edition)
CuraLEBinaryData
Contains 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
CuraLE_Resources
Stores LulzBot specific resources files, mostly consisting of printer definitions and quality profiles. This is seperated out from CuraLE and combined during the build process in order to make merging upstream changes from UltiMaker a little less tedious since we don't use non-LulzBot printer definitions.
FDM_MaterialsLE
Stores Material profiles. This is separated out and combined in our build process for the same reason as CuraLE_Resources. The materials are in a seperate independent repo for sole reason that UltiMaker has it set up this way as well.
Interplay
At a very high level, CuraLE's repositories interconnect as follows: