* Overhang perimeter handling Updated code to handle overhang perimeters as an overhang and not as a bridge. * Preparing to add curled extrusions identification * Porting curling calculations from Prusa Slier 2.6.1 * Prototype 1 - slowdown extended to detect curled edges and further reduce speed First prototype of the code submitted. * Working prototype - 2 Code is now finally working - external perimeters are slowed down as needed when there is likelyhood of curling up. ToDo: 1. Reslicing the model causes the algorithm not to run - need to find where this fails to trigger the call for this. 2. Slowdown of internal perimeters not working yet. * Updated to use overhang wall speed instead of bridging speed for this algorithm * Fixed bug in speed calculation and tweaked parameters for high speed printer Fixed bug in speed calculation and tweaked parameters for high speed printer * Attempting to fix "set started" not being set * Parameter tweak after print tests * Fixed estimation not running when model is re-sliced. * Removing debug printf statements and fixed threading flag. * Fixed threading * Parameter tweaks following print tests * Made this as an option in the GUI * Reintroduced handling of bridges as per original design * UI line toggling when option makes sense to be visible. * Fixed bug in field visibility & made it default to off * Code optimisation * Initial commit of code from Prusa Slicer 2.6.1 * Ported ExtrusionRole from Prusa Slicer 2.6.1 * fix compile errors * Update GCode.hpp * code changes to invoke pressure equalizer * attempting to trigger pressure equalizer (Not compiling) * Update Fill.cpp * Update Fill.cpp * Pressure equaliser layer result update * Further commits * Merged PR https://github.com/prusa3d/PrusaSlicer/pull/9622 * First complete working version * Update PressureEqualizer.cpp * Implemented parameter in GUI * Toggle fields according to compatibility * Updated UI toggles between extrusion rate slope and arc fitting. * Updated tooltip * Introduced parameter smoothing segment length This parameter influences the number of division a line will undergo in response to the requirement to adhere to the extrusion rate flow adjustment. * Internal parameter and tool tip tweaking * Parameter and tool tip tweaking * Updated parameters and tooltip following testing. * Sync PressureEq with latest PrusaSlicer * Revert "Sync PressureEq with latest PrusaSlicer" This reverts commit 131fb94c6bebe0a6abb3ca28d4a162aacbe75f40. --------- Co-authored-by: MGunlogson <MGunlogson@users.noreply.github.com> Co-authored-by: Vojtech Bubnik <bubnikv@gmail.com>
84 lines
2.4 KiB
C++
84 lines
2.4 KiB
C++
///|/ Copyright (c) 2023 Robert Schiele @schiele
|
|
///|/ Copyright (c) Prusa Research 2023 Vojtěch Bubník @bubnikv
|
|
///|/
|
|
///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
|
|
///|/
|
|
#ifndef slic3r_ExtrusionRole_hpp_
|
|
#define slic3r_ExtrusionRole_hpp_
|
|
|
|
#include "enum_bitmask.hpp"
|
|
#include "ExtrusionEntity.hpp"
|
|
|
|
#include <string>
|
|
#include <string_view>
|
|
#include <cstdint>
|
|
|
|
namespace Slic3r {
|
|
|
|
enum class ExtrusionRoleModifier : uint16_t {
|
|
// 1) Extrusion types
|
|
// Perimeter (external, inner, ...)
|
|
Perimeter,
|
|
// Infill (top / bottom / solid inner / sparse inner / bridging inner ...)
|
|
Infill,
|
|
// Variable width extrusion
|
|
Thin,
|
|
// Support material extrusion
|
|
Support,
|
|
Skirt,
|
|
Wipe,
|
|
// 2) Extrusion modifiers
|
|
External,
|
|
Solid,
|
|
Ironing,
|
|
Bridge,
|
|
// 3) Special types
|
|
// Indicator that the extrusion role was mixed from multiple differing extrusion roles,
|
|
// for example from Support and SupportInterface.
|
|
Mixed,
|
|
// Stopper, there should be maximum 16 modifiers defined for uint16_t bit mask.
|
|
Count
|
|
};
|
|
// There should be maximum 16 modifiers defined for uint16_t bit mask.
|
|
static_assert(int(ExtrusionRoleModifier::Count) <= 16, "ExtrusionRoleModifier: there must be maximum 16 modifiers defined to fit a 16 bit bitmask");
|
|
|
|
using ExtrusionRoleModifiers = enum_bitmask<ExtrusionRoleModifier>;
|
|
ENABLE_ENUM_BITMASK_OPERATORS(ExtrusionRoleModifier);
|
|
|
|
|
|
|
|
// Be careful when editing this list as many parts of the code depend
|
|
// on the values of these ordinars, for example
|
|
// GCodeViewer::Extrusion_Role_Colors
|
|
enum class GCodeExtrusionRole : uint8_t {
|
|
None,
|
|
Perimeter,
|
|
ExternalPerimeter,
|
|
OverhangPerimeter,
|
|
InternalInfill,
|
|
SolidInfill,
|
|
TopSolidInfill,
|
|
Ironing,
|
|
BridgeInfill,
|
|
GapFill,
|
|
Skirt,
|
|
SupportMaterial,
|
|
SupportMaterialInterface,
|
|
WipeTower,
|
|
// Custom (user defined) G-code block, for example start / end G-code.
|
|
Custom,
|
|
// Stopper to count number of enums.
|
|
Count
|
|
};
|
|
|
|
// Convert a rich bitmask based ExtrusionRole to a less expressive ordinal GCodeExtrusionRole.
|
|
// GCodeExtrusionRole is to be serialized into G-code and deserialized by G-code viewer,
|
|
GCodeExtrusionRole extrusion_role_to_gcode_extrusion_role(ExtrusionRole role);
|
|
|
|
std::string gcode_extrusion_role_to_string(GCodeExtrusionRole role);
|
|
GCodeExtrusionRole string_to_gcode_extrusion_role(const std::string_view role);
|
|
|
|
}
|
|
|
|
#endif // slic3r_ExtrusionRole_hpp_
|