... | ... | @@ -11,10 +11,10 @@ This is the official documentation of the IceSL plugin system. In here you will |
|
|
2. [Infill Plugin](#infill)
|
|
|
3. [Post-processing Plugin](#post-processing)
|
|
|
4. [Machine Code Plugin](#machinecode)
|
|
|
5. [Inerface Structures](#structures)
|
|
|
5. [Interface Structures](#structures)
|
|
|
|
|
|
4. [Creating Your Own Plugin](#creating)
|
|
|
1. [The Shared Library Interface]
|
|
|
1. [The Shared Library Interface](#sharedlibrary)
|
|
|
1. [EEE; Examples Explained Explicitly](#examples)
|
|
|
|
|
|
## The Plugin System <a name="general"></a>
|
... | ... | @@ -362,7 +362,7 @@ protected: |
|
|
|
|
|
### Post-processing Plugin <a name="post-processing"></a>
|
|
|
|
|
|
A post-processing plugin implements infill patterns that are applied for each resulting printing layer. Derive from class `IPostProcessingPlugin` when creating one.
|
|
|
A post-processing plugin can alter, reorder or add deposition trajectories that resulted from the slicing process. Derive from class `IPostProcessingPlugin` when creating one.
|
|
|
|
|
|
```c++
|
|
|
namespace IceSLInterface
|
... | ... | @@ -403,13 +403,6 @@ public: |
|
|
{}
|
|
|
virtual ~IPostProcessingInterface() = default;
|
|
|
|
|
|
/// \brief PostProcess layer on a per-extruder basis. This function is called by IceSL for each layer (top to bottom) for each extruder that deposits material.
|
|
|
/// \param extruder extruder used in subset '_layer' of the whole layer
|
|
|
/// \param layerID layer number
|
|
|
/// \param spiral if layer is to be spiralized
|
|
|
/// \param start starting point of layer
|
|
|
/// \param layer subset of layer to post-process (add paths + reorder existing paths)
|
|
|
/// \result true post-processing successful
|
|
|
// Post-process (per-extruder) the layer. This function is called by IceSL for each layer
|
|
|
// (top to bottom) for each extruder that deposits material. Return 'true' if successful.
|
|
|
virtual bool postProcessLayer(
|
... | ... | @@ -433,6 +426,31 @@ In function 'postProcessLayer', the parameter '_layerprocessed' contains the dep |
|
|
|
|
|
### Machine Code Plugin <a name="machinecode"></a>
|
|
|
|
|
|
A Machine Code plugin has the ability to transform trajectories (deposition, traveling, etc) resulting from the slicing process to machine instructions (e.g., G-Code). This makes possible targeting printing machines that do not conform to G-Code or other machine code Slice doesn't support.
|
|
|
|
|
|
```c++
|
|
|
namespace IceSLInterface
|
|
|
{
|
|
|
class IMachineCodePlugin : public IPlugin
|
|
|
{
|
|
|
public:
|
|
|
|
|
|
IMachineCodePlugin() = default;
|
|
|
~IMachineCodePlugin() override = default;
|
|
|
|
|
|
// Output file extension
|
|
|
virtual std::string extension() const = 0;
|
|
|
|
|
|
/// TODO!!!!
|
|
|
/// \brief Implement this function to return the machine code writer's implementation of the IMachineCodeInterface interface
|
|
|
virtual std::unique_ptr<IMachineCodeInterface> createMachineCode(
|
|
|
std::unique_ptr<const ILayerSet> layers,
|
|
|
const EnumerableSettingsInterface* settings,
|
|
|
const std::set<int>& used_brushes) = 0;
|
|
|
};
|
|
|
}
|
|
|
```
|
|
|
|
|
|
### Interface Structures <a name="structures"></a>
|
|
|
|
|
|
IPath, ILayer, ILayerSet |
|
|
\ No newline at end of file |