Skip to content

Commit

Permalink
Add/fix documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
wawanbreton committed Jun 28, 2024
1 parent d1bae90 commit 15d4e12
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 4 deletions.
14 changes: 11 additions & 3 deletions include/PrimeTower/PrimeTower.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,18 @@ class SliceDataStorage;
class LayerPlan;

/*!
* Class for everything to do with the prime tower:
* - Generating the areas.
* Abstract class for everything to do with the prime tower:
* - Generating the occupation areas.
* - Checking up untill which height the prime tower has to be printed.
* - Generating the paths and adding them to the layer plan.
* - Inserting priming commands in extruders uses
* - Generating priming paths and adding them to the layer plan.
*
* We may adopt different strategies to generate the prime tower, thus this class is abstract and different
* implementations may co-exist. The common behavior implemented in the main class is:
* - Generate occupation areas as a cylinder with a flared base
* - Generate the base extra extrusion discs around the base cylinder
* - Generate the first layer extra inset inside the base cylinder
* Then it is the job of the specific implementation to handle the generation of extrusion paths for the base cylinder
*/
class PrimeTower
{
Expand Down
8 changes: 8 additions & 0 deletions include/PrimeTower/PrimeTowerInterleaved.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@
namespace cura
{

/*!
* Specific prime tower implementation that generates interleaved priming paths. It is optimized to waste as few
* filament as possible, while ensuring that the prime tower is still robust even if it gets very high.
* When there is no actual priming required for extruders, it will create a kind of circular zigzag pattern that acts as
* a sparse support. Otherwise it will create priming annuli, stacked on top of each other.
* This is very effective when doing multi-color printing, however it can be used only if all the filaments properly
* adhere to each other. Otherwise there is a high risk that the tower will collapse during the print.
*/
class PrimeTowerInterleaved : public PrimeTower
{
public:
Expand Down
7 changes: 7 additions & 0 deletions include/PrimeTower/PrimeTowerNormal.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@
namespace cura
{

/*!
* Specific prime tower implementation that generates nested cylinders. Each layer, all the extruders will be used to
* contribute to the prime tower, even if they don't actually need priming. In this case, a circular zigzag pattern will
* be used to act as support for upper priming extrusions.
* Although this method is not very efficient, it is required when using different materials that don't properly adhere
* to each other. By nesting the cylinders, you make sure that the tower remains consistent and strong along the print.
*/
class PrimeTowerNormal : public PrimeTower
{
public:
Expand Down
2 changes: 1 addition & 1 deletion include/utils/LayerVector.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace cura

/*!
* \brief The LayerVector class mimics a std::vector but with the index being a LayerIndex, thus it can have negative
* values (for raft layers). it also ensure that the first element in the list is always on the very first layer.
* values (for raft layers). It also ensures that the first element in the list is always on the very first layer.
* \note When calling the init() method, LayerVector will call Raft::getTotalExtraLayers() so it requires the settings
* to be setup. This is the reason why this is not done in the constructor, and has to be called manually.
* After that, it is assumed that this value will not change as long as the vector is used.
Expand Down

0 comments on commit 15d4e12

Please sign in to comment.