mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-22 12:45:17 +00:00
ENH:add flat_irong as print preset
jira: none Change-Id: Ic29634780e1ece2d0cffddd0c2cf7cafb1318fa2 (cherry picked from commit 2acd313f72d5e9531cf1394c218dc3bc6b8d9521)
This commit is contained in:
@@ -117,5 +117,6 @@
|
|||||||
"symmetric_infill_y_axis": "0",
|
"symmetric_infill_y_axis": "0",
|
||||||
"prime_tower_lift_speed": "90",
|
"prime_tower_lift_speed": "90",
|
||||||
"prime_tower_lift_height": "-1",
|
"prime_tower_lift_height": "-1",
|
||||||
"prime_tower_max_speed": "90"
|
"prime_tower_max_speed": "90",
|
||||||
|
"prime_tower_flat_ironing":"0"
|
||||||
}
|
}
|
||||||
@@ -43,5 +43,7 @@
|
|||||||
"top_surface_acceleration": "2000",
|
"top_surface_acceleration": "2000",
|
||||||
"top_surface_speed": "200",
|
"top_surface_speed": "200",
|
||||||
"travel_speed": "500",
|
"travel_speed": "500",
|
||||||
"travel_speed_z": "0"
|
"travel_speed_z": "0",
|
||||||
|
"z_direction_outwall_speed_continuous": "1",
|
||||||
|
"prime_tower_flat_ironing":"1"
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
namespace Slic3r
|
namespace Slic3r
|
||||||
{
|
{
|
||||||
bool flat_ironing = true; // Whether to enable flat ironing for the wipe tower
|
|
||||||
static constexpr float flat_iron_area = 4.f;
|
static constexpr float flat_iron_area = 4.f;
|
||||||
constexpr float flat_iron_speed = 10.f * 60.f;
|
constexpr float flat_iron_speed = 10.f * 60.f;
|
||||||
static const double wipe_tower_wall_infill_overlap = 0.0;
|
static const double wipe_tower_wall_infill_overlap = 0.0;
|
||||||
@@ -1504,8 +1503,10 @@ WipeTower::WipeTower(const PrintConfig& config, int plate_idx, Vec3d plate_origi
|
|||||||
m_rib_width((float)config.prime_tower_rib_width.value),
|
m_rib_width((float)config.prime_tower_rib_width.value),
|
||||||
m_used_fillet(config.prime_tower_fillet_wall.value),
|
m_used_fillet(config.prime_tower_fillet_wall.value),
|
||||||
m_extra_spacing((float)config.prime_tower_infill_gap.value/100.f),
|
m_extra_spacing((float)config.prime_tower_infill_gap.value/100.f),
|
||||||
m_tower_framework(config.prime_tower_enable_framework.value)
|
m_tower_framework(config.prime_tower_enable_framework.value),
|
||||||
|
m_flat_ironing(config.prime_tower_flat_ironing.value)
|
||||||
{
|
{
|
||||||
|
m_flat_ironing = (m_flat_ironing && m_use_gap_wall);
|
||||||
// Read absolute value of first layer speed, if given as percentage,
|
// Read absolute value of first layer speed, if given as percentage,
|
||||||
// it is taken over following default. Speeds from config are not
|
// it is taken over following default. Speeds from config are not
|
||||||
// easily accessible here.
|
// easily accessible here.
|
||||||
@@ -1547,7 +1548,6 @@ WipeTower::WipeTower(const PrintConfig& config, int plate_idx, Vec3d plate_origi
|
|||||||
m_bed_bottom_left = m_bed_shape == RectangularBed
|
m_bed_bottom_left = m_bed_shape == RectangularBed
|
||||||
? Vec2f(bed_points.front().x(), bed_points.front().y())
|
? Vec2f(bed_points.front().x(), bed_points.front().y())
|
||||||
: Vec2f::Zero();
|
: Vec2f::Zero();
|
||||||
flat_ironing = config.nozzle_diameter.values.size() > 1;//Only used for dual extrusion
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -3397,7 +3397,7 @@ void WipeTower::toolchange_wipe_new(WipeTowerWriter &writer, const box_coordinat
|
|||||||
writer.extrude(writer.x() + ironing_length, writer.y(), wipe_speed);
|
writer.extrude(writer.x() + ironing_length, writer.y(), wipe_speed);
|
||||||
writer.retract(retract_length, retract_speed);
|
writer.retract(retract_length, retract_speed);
|
||||||
writer.travel(writer.x() - 1.5 * ironing_length, writer.y(), 600.);
|
writer.travel(writer.x() - 1.5 * ironing_length, writer.y(), 600.);
|
||||||
if (flat_ironing) {
|
if (m_flat_ironing) {
|
||||||
writer.travel(writer.x() + 0.5f * ironing_length, writer.y(), 240.);
|
writer.travel(writer.x() + 0.5f * ironing_length, writer.y(), 240.);
|
||||||
Vec2f pos{writer.x() + 1.f * ironing_length, writer.y()};
|
Vec2f pos{writer.x() + 1.f * ironing_length, writer.y()};
|
||||||
writer.spiral_flat_ironing(writer.pos(), flat_iron_area, m_perimeter_width, flat_iron_speed);
|
writer.spiral_flat_ironing(writer.pos(), flat_iron_area, m_perimeter_width, flat_iron_speed);
|
||||||
@@ -3412,7 +3412,7 @@ void WipeTower::toolchange_wipe_new(WipeTowerWriter &writer, const box_coordinat
|
|||||||
writer.extrude(writer.x() - ironing_length, writer.y(), wipe_speed);
|
writer.extrude(writer.x() - ironing_length, writer.y(), wipe_speed);
|
||||||
writer.retract(retract_length, retract_speed);
|
writer.retract(retract_length, retract_speed);
|
||||||
writer.travel(writer.x() + 1.5 * ironing_length, writer.y(), 600.);
|
writer.travel(writer.x() + 1.5 * ironing_length, writer.y(), 600.);
|
||||||
if (flat_ironing) {
|
if (m_flat_ironing) {
|
||||||
writer.travel(writer.x() - 0.5f * ironing_length, writer.y(), 240.);
|
writer.travel(writer.x() - 0.5f * ironing_length, writer.y(), 240.);
|
||||||
Vec2f pos{writer.x() - 1.0f * ironing_length, writer.y()};
|
Vec2f pos{writer.x() - 1.0f * ironing_length, writer.y()};
|
||||||
writer.spiral_flat_ironing(writer.pos(), flat_iron_area, m_perimeter_width, flat_iron_speed);
|
writer.spiral_flat_ironing(writer.pos(), flat_iron_area, m_perimeter_width, flat_iron_speed);
|
||||||
|
|||||||
@@ -488,7 +488,7 @@ private:
|
|||||||
std::vector<Vec2f> m_wall_skip_points;
|
std::vector<Vec2f> m_wall_skip_points;
|
||||||
std::map<float,Polylines> m_outer_wall;
|
std::map<float,Polylines> m_outer_wall;
|
||||||
bool is_first_layer() const { return size_t(m_layer_info - m_plan.begin()) == m_first_layer_idx; }
|
bool is_first_layer() const { return size_t(m_layer_info - m_plan.begin()) == m_first_layer_idx; }
|
||||||
|
bool m_flat_ironing=false;
|
||||||
// Calculates length of extrusion line to extrude given volume
|
// Calculates length of extrusion line to extrude given volume
|
||||||
float volume_to_length(float volume, float line_width, float layer_height) const {
|
float volume_to_length(float volume, float line_width, float layer_height) const {
|
||||||
return std::max(0.f, volume / (layer_height * (line_width - layer_height * (1.f - float(M_PI) / 4.f))));
|
return std::max(0.f, volume / (layer_height * (line_width - layer_height * (1.f - float(M_PI) / 4.f))));
|
||||||
|
|||||||
@@ -817,6 +817,7 @@ static std::vector<std::string> s_Preset_print_options {
|
|||||||
"elefant_foot_compensation", "elefant_foot_compensation_layers", "xy_contour_compensation", "xy_hole_compensation", "resolution", "enable_prime_tower", "prime_tower_enable_framework",
|
"elefant_foot_compensation", "elefant_foot_compensation_layers", "xy_contour_compensation", "xy_hole_compensation", "resolution", "enable_prime_tower", "prime_tower_enable_framework",
|
||||||
"prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points",
|
"prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points",
|
||||||
"prime_tower_rib_wall","prime_tower_extra_rib_length","prime_tower_rib_width","prime_tower_fillet_wall","prime_tower_infill_gap",
|
"prime_tower_rib_wall","prime_tower_extra_rib_length","prime_tower_rib_width","prime_tower_fillet_wall","prime_tower_infill_gap",
|
||||||
|
"prime_tower_flat_ironing",
|
||||||
"wipe_tower_no_sparse_layers", "compatible_printers", "compatible_printers_condition", "inherits",
|
"wipe_tower_no_sparse_layers", "compatible_printers", "compatible_printers_condition", "inherits",
|
||||||
"flush_into_infill", "flush_into_objects", "flush_into_support",
|
"flush_into_infill", "flush_into_objects", "flush_into_support",
|
||||||
"tree_support_branch_angle", "tree_support_angle_slow", "tree_support_wall_count", "tree_support_top_rate", "tree_support_branch_distance", "tree_support_tip_diameter",
|
"tree_support_branch_angle", "tree_support_angle_slow", "tree_support_wall_count", "tree_support_top_rate", "tree_support_branch_distance", "tree_support_tip_diameter",
|
||||||
|
|||||||
@@ -300,6 +300,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
|
|||||||
|| opt_key == "prime_tower_width"
|
|| opt_key == "prime_tower_width"
|
||||||
|| opt_key == "prime_tower_brim_width"
|
|| opt_key == "prime_tower_brim_width"
|
||||||
|| opt_key == "prime_tower_skip_points"
|
|| opt_key == "prime_tower_skip_points"
|
||||||
|
|| opt_key == "prime_tower_flat_ironing"
|
||||||
|| opt_key == "prime_tower_rib_wall"
|
|| opt_key == "prime_tower_rib_wall"
|
||||||
|| opt_key == "prime_tower_extra_rib_length"
|
|| opt_key == "prime_tower_extra_rib_length"
|
||||||
|| opt_key == "prime_tower_rib_width"
|
|| opt_key == "prime_tower_rib_width"
|
||||||
|
|||||||
@@ -6092,6 +6092,10 @@ void PrintConfigDef::init_fff_params()
|
|||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionBool(true));
|
def->set_default_value(new ConfigOptionBool(true));
|
||||||
|
|
||||||
|
def = this->add("prime_tower_flat_ironing", coBool);
|
||||||
|
def->mode = comAdvanced;
|
||||||
|
def->set_default_value(new ConfigOptionBool(false));
|
||||||
|
|
||||||
def = this->add("prime_tower_rib_wall", coBool);
|
def = this->add("prime_tower_rib_wall", coBool);
|
||||||
def->label = L("Rib wall");
|
def->label = L("Rib wall");
|
||||||
def->tooltip = L("The wall of prime tower will add four ribs and make its "
|
def->tooltip = L("The wall of prime tower will add four ribs and make its "
|
||||||
|
|||||||
@@ -1464,6 +1464,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
|
|||||||
((ConfigOptionFloat, prime_tower_rib_width))
|
((ConfigOptionFloat, prime_tower_rib_width))
|
||||||
((ConfigOptionPercent, prime_tower_infill_gap))
|
((ConfigOptionPercent, prime_tower_infill_gap))
|
||||||
((ConfigOptionBool, prime_tower_skip_points))
|
((ConfigOptionBool, prime_tower_skip_points))
|
||||||
|
((ConfigOptionBool, prime_tower_flat_ironing))
|
||||||
((ConfigOptionBool, prime_tower_rib_wall))
|
((ConfigOptionBool, prime_tower_rib_wall))
|
||||||
((ConfigOptionBool, prime_tower_fillet_wall))
|
((ConfigOptionBool, prime_tower_fillet_wall))
|
||||||
((ConfigOptionFloat, wipe_tower_bridging))
|
((ConfigOptionFloat, wipe_tower_bridging))
|
||||||
|
|||||||
Reference in New Issue
Block a user