From aaabc7df67d4a4cece9ff99f915af3793df083bc Mon Sep 17 00:00:00 2001 From: supermerill Date: Wed, 27 Jun 2018 13:54:52 +0200 Subject: Beautification of gui options (imo) --- xs/src/libslic3r/PrintConfig.cpp | 56 ++++++++++++++++---------------- xs/src/libslic3r/PrintObject.cpp | 2 +- xs/src/slic3r/GUI/Tab.cpp | 70 +++++++++++++++++++++++++--------------- 3 files changed, 74 insertions(+), 54 deletions(-) diff --git a/xs/src/libslic3r/PrintConfig.cpp b/xs/src/libslic3r/PrintConfig.cpp index 01f1a97bf..66de606b2 100644 --- a/xs/src/libslic3r/PrintConfig.cpp +++ b/xs/src/libslic3r/PrintConfig.cpp @@ -65,7 +65,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionString(""); def = this->add("bottom_solid_layers", coInt); - def->label = L("Bottom"); + def->label = L(" Bottom"); def->category = L("Layers and Perimeters"); def->tooltip = L("Number of solid layers to generate on bottom surfaces."); def->cli = "bottom-solid-layers=i"; @@ -83,7 +83,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionFloat(0); def = this->add("bridge_angle", coFloat); - def->label = L("Bridging angle"); + def->label = L("Bridging"); def->category = L("Infill"); def->tooltip = L("Bridging angle override. If left to zero, the bridging angle will be calculated " "automatically. Otherwise the provided angle will be used for all bridges. " @@ -112,7 +112,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionInts{ 100 }; def = this->add("bridge_flow_ratio", coFloat); - def->label = L("Bridge flow ratio"); + def->label = L("Bridge"); def->category = L("Advanced"); def->tooltip = L("This factor affects the amount of plastic for bridging. " "You can decrease it slightly to pull the extrudates and prevent sagging, " @@ -124,15 +124,16 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionFloat(1); def = this->add("over_bridge_flow_ratio", coFloat); - def->label = L("Over-bridge flow ratio"); + def->label = L("Above the bridges"); def->category = L("Advanced"); def->tooltip = L("This factor affects the amount of plastic to overextrude " "when we are filling on top of a bridge surface." - "With a number >1, we can retreive the correct z-height " - "even if the bridged layer has fallen a bit."); + "With a number >1, we can retrieve a correct z-height " + "even if the bridged layer has fallen a bit. " + "It's useful if you want to have a nice flat top layer."); def->cli = "over-bridge-flow-ratio=f"; def->min = 0; - def->default_value = new ConfigOptionFloat(1); + def->default_value = new ConfigOptionFloat(1.15); def = this->add("bridge_speed", coFloat); def->label = L("Bridges"); @@ -253,10 +254,10 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionFloat(6); def = this->add("elefant_foot_compensation", coFloat); - def->label = L("Elephant foot compensation"); + def->label = L("First layer"); def->category = L("Advanced"); def->tooltip = L("The first layer will be shrunk in the XY plane by the configured value " - "to compensate for the 1st layer squish aka an Elephant Foot effect."); + "to compensate for the 1st layer squish aka an Elephant Foot effect. (must be negative = inwards)"); def->sidetext = L("mm"); def->cli = "elefant-foot-compensation=f"; def->min = 0; @@ -292,7 +293,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionBool(false); def = this->add("top_fill_pattern", coEnum); - def->label = L("Top fill pattern"); + def->label = L(" Top"); def->category = L("Infill"); def->tooltip = L("Fill pattern for top infill. This only affects the top external visible layer, and not its adjacent solid shells."); def->cli = "top-fill-pattern|solid-fill-pattern=s"; @@ -318,7 +319,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionEnum(ipRectilinear); def = this->add("bottom_fill_pattern", coEnum); - def->label = L("bottom fill pattern"); + def->label = L("Bottom"); def->category = L("Infill"); def->tooltip = L("Fill pattern for bottom infill. This only affects the bottom external visible layer, and not its adjacent solid shells."); def->cli = "bottom-fill-pattern|solid-fill-pattern=s"; @@ -336,9 +337,10 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionEnum(ipRectilinear); def = this->add("enforce_full_fill_volume", coBool); - def->label = L("Enforce full fill volume"); + def->label = L("Enforce 100% fill volume"); def->category = L("Infill"); - def->tooltip = L("Experimental option wich modify (top/bottom) fill flow to have the exact amount of plastic inside the volume to fill."); + def->tooltip = L("Experimental option wich modify (top/bottom) fill flow to have the exact amount of plastic inside the volume to fill " + "(it generally changes the flow from -7% to +4%, depending on the size of the surface to fill and the overlap parameters)."); def->cli = "enforce-full-fill-volume!"; def->default_value = new ConfigOptionBool(true); @@ -362,7 +364,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionFloatOrPercent(0, false); def = this->add("external_perimeter_speed", coFloatOrPercent); - def->label = L("External perimeters"); + def->label = L("External"); def->category = L("Speed"); def->tooltip = L("This separate setting will affect the speed of external perimeters (the visible ones). " "If expressed as percentage (for example: 80%) it will be calculated " @@ -614,7 +616,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionStrings { "" }; def = this->add("fill_angle", coFloat); - def->label = L("Fill angle"); + def->label = L("Fill"); def->category = L("Infill"); def->tooltip = L("Default base angle for infill orientation. Cross-hatching will be applied to this. " "Bridges will be infilled using the best direction Slic3r can detect, so this setting " @@ -628,7 +630,7 @@ PrintConfigDef::PrintConfigDef() def = this->add("fill_density", coPercent); def->gui_type = "f_enum_open"; def->gui_flags = "show_value"; - def->label = L("Fill density"); + def->label = L("Density"); def->category = L("Infill"); def->tooltip = L("Density of internal infill, expressed in the range 0% - 100%."); def->sidetext = L("%"); @@ -666,7 +668,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionPercent(20); def = this->add("fill_pattern", coEnum); - def->label = L("Fill pattern"); + def->label = L("Inside"); def->category = L("Infill"); def->tooltip = L("Fill pattern for general low-density infill."); def->cli = "fill-pattern=s"; @@ -873,7 +875,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionFloatOrPercent(25, true); def = this->add("infill_speed", coFloat); - def->label = L("Infill"); + def->label = L(" Sparse\t"); def->category = L("Speed"); def->tooltip = L("Speed for printing the internal fill. Set to zero for auto."); def->sidetext = L("mm/s"); @@ -1135,7 +1137,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionFloatOrPercent(0, false); def = this->add("perimeter_speed", coFloat); - def->label = L("Perimeters"); + def->label = L("Default"); def->category = L("Speed"); def->tooltip = L("Speed for perimeters (contours, aka vertical shells). Set to zero for auto."); def->sidetext = L("mm/s"); @@ -1422,7 +1424,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionInts { 5 }; def = this->add("small_perimeter_speed", coFloatOrPercent); - def->label = L("Small perimeters"); + def->label = L("Small"); def->category = L("Speed"); def->tooltip = L("This separate setting will affect the speed of perimeters having radius <= 6.5mm " "(usually holes). If expressed as percentage (for example: 80%) it will be calculated " @@ -1473,7 +1475,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionFloatOrPercent(0, false); def = this->add("solid_infill_speed", coFloatOrPercent); - def->label = L("Solid infill"); + def->label = L("Solid"); def->category = L("Speed"); def->tooltip = L("Speed for printing solid regions (top/bottom/internal horizontal shells). " "This can be expressed as a percentage (for example: 80%) over the default " @@ -1669,7 +1671,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionFloat(0); def = this->add("support_material_interface_speed", coFloatOrPercent); - def->label = L("Support material interface"); + def->label = L("Interface"); def->category = L("Support material"); def->tooltip = L("Speed for printing support material interface layers. If expressed as percentage " "(for example 50%) it will be calculated over support material speed."); @@ -1703,7 +1705,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionFloat(2.5); def = this->add("support_material_speed", coFloat); - def->label = L("Support material"); + def->label = L("Default"); def->category = L("Support material"); def->tooltip = L("Speed for printing support material."); def->sidetext = L("mm/s"); @@ -1794,7 +1796,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionFloatOrPercent(0, false); def = this->add("top_solid_infill_speed", coFloatOrPercent); - def->label = L("Top solid infill"); + def->label = L("Top solid"); def->category = L("Speed"); def->tooltip = L("Speed for printing top solid layers (it only applies to the uppermost " "external layers and not to their internal solid layers). You may want " @@ -1891,14 +1893,14 @@ PrintConfigDef::PrintConfigDef() 140.f, 140.f, 140.f, 140.f, 0.f }; def = this->add("wipe_tower_x", coFloat); - def->label = L("Position X"); + def->label = L("X"); def->tooltip = L("X coordinate of the left front corner of a wipe tower"); def->sidetext = L("mm"); def->cli = "wipe-tower-x=f"; def->default_value = new ConfigOptionFloat(180.); def = this->add("wipe_tower_y", coFloat); - def->label = L("Position Y"); + def->label = L("Y"); def->tooltip = L("Y coordinate of the left front corner of a wipe tower"); def->sidetext = L("mm"); def->cli = "wipe-tower-y=f"; @@ -1926,7 +1928,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionFloat(10.); def = this->add("xy_size_compensation", coFloat); - def->label = L("XY Size Compensation"); + def->label = L("All layers"); def->category = L("Advanced"); def->tooltip = L("The object will be grown/shrunk in the XY plane by the configured value " "(negative = inwards, positive = outwards). This might be useful " diff --git a/xs/src/libslic3r/PrintObject.cpp b/xs/src/libslic3r/PrintObject.cpp index 938fff712..00cedb37e 100644 --- a/xs/src/libslic3r/PrintObject.cpp +++ b/xs/src/libslic3r/PrintObject.cpp @@ -1465,7 +1465,7 @@ end: // Apply size compensation and perform clipping of multi-part objects. float delta = float(scale_(this->config.xy_size_compensation.value)); if (layer_id == 0) - delta -= float(scale_(this->config.elefant_foot_compensation.value)); + delta += float(scale_(this->config.elefant_foot_compensation.value)); bool scale = delta != 0.f; bool clip = this->config.clip_multipart_objects.value || delta > 0.f; if (layer->regions.size() == 1) { diff --git a/xs/src/slic3r/GUI/Tab.cpp b/xs/src/slic3r/GUI/Tab.cpp index 0d9301e76..493534c20 100644 --- a/xs/src/slic3r/GUI/Tab.cpp +++ b/xs/src/slic3r/GUI/Tab.cpp @@ -831,7 +831,8 @@ void TabPrint::build() line = { _(L("Solid layers")), "" }; line.append_option(optgroup->get_option("top_solid_layers")); line.append_option(optgroup->get_option("bottom_solid_layers")); - optgroup->append_line(line); + optgroup->append_line(line); + optgroup->append_single_option_line("enforce_full_fill_volume"); optgroup = page->new_optgroup(_(L("Quality (slower slicing)"))); optgroup->append_single_option_line("extra_perimeters"); @@ -847,11 +848,14 @@ void TabPrint::build() page = add_options_page(_(L("Infill")), "infill.png"); optgroup = page->new_optgroup(_(L("Infill"))); - optgroup->append_single_option_line("fill_density"); - optgroup->append_single_option_line("fill_pattern"); - optgroup->append_single_option_line("top_fill_pattern"); - optgroup->append_single_option_line("bottom_fill_pattern"); - optgroup->append_single_option_line("enforce_full_fill_volume"); + line = { _(L("Fill inside pattern")), "" }; + line.append_option(optgroup->get_option("fill_density")); + line.append_option(optgroup->get_option("fill_pattern")); + optgroup->append_line(line); + line = { _(L("Fill external pattern")), "" }; + line.append_option(optgroup->get_option("top_fill_pattern")); + line.append_option(optgroup->get_option("bottom_fill_pattern")); + optgroup->append_line(line); optgroup = page->new_optgroup(_(L("Reducing printing time"))); optgroup->append_single_option_line("infill_every_layers"); @@ -859,10 +863,12 @@ void TabPrint::build() optgroup = page->new_optgroup(_(L("Advanced"))); optgroup->append_single_option_line("solid_infill_every_layers"); - optgroup->append_single_option_line("fill_angle"); optgroup->append_single_option_line("solid_infill_below_area"); + line = { _(L("Angle")), "" }; + line.append_option(optgroup->get_option("fill_angle")); + line.append_option(optgroup->get_option("bridge_angle")); + optgroup->append_line(line); optgroup->append_single_option_line("external_infill_margin"); - optgroup->append_single_option_line("bridge_angle"); optgroup->append_single_option_line("only_retract_when_crossing_perimeters"); optgroup->append_single_option_line("infill_first"); @@ -901,15 +907,21 @@ void TabPrint::build() optgroup->append_single_option_line("support_material_synchronize_layers"); page = add_options_page(_(L("Speed")), "time.png"); - optgroup = page->new_optgroup(_(L("Speed for print moves"))); - optgroup->append_single_option_line("perimeter_speed"); - optgroup->append_single_option_line("small_perimeter_speed"); - optgroup->append_single_option_line("external_perimeter_speed"); - optgroup->append_single_option_line("infill_speed"); - optgroup->append_single_option_line("solid_infill_speed"); - optgroup->append_single_option_line("top_solid_infill_speed"); - optgroup->append_single_option_line("support_material_speed"); - optgroup->append_single_option_line("support_material_interface_speed"); + optgroup = page->new_optgroup(_(L("Speed for print moves"))); + line = { _(L("Perimeter speed")), "" }; + line.append_option(optgroup->get_option("perimeter_speed")); + line.append_option(optgroup->get_option("external_perimeter_speed")); + line.append_option(optgroup->get_option("small_perimeter_speed")); + optgroup->append_line(line); + line = { _(L("Infill speed")), "" }; + line.append_option(optgroup->get_option("infill_speed")); + line.append_option(optgroup->get_option("solid_infill_speed")); + line.append_option(optgroup->get_option("top_solid_infill_speed")); + optgroup->append_line(line); + line = { _(L("Support speed")), "" }; + line.append_option(optgroup->get_option("support_material_speed")); + line.append_option(optgroup->get_option("support_material_interface_speed")); + optgroup->append_line(line); optgroup->append_single_option_line("bridge_speed"); optgroup->append_single_option_line("gap_fill_speed"); @@ -945,9 +957,11 @@ void TabPrint::build() optgroup->append_single_option_line("standby_temperature_delta"); optgroup = page->new_optgroup(_(L("Wipe tower"))); - optgroup->append_single_option_line("wipe_tower"); - optgroup->append_single_option_line("wipe_tower_x"); - optgroup->append_single_option_line("wipe_tower_y"); + optgroup->append_single_option_line("wipe_tower"); + line = { _(L("Wipe tower position")), "" }; + line.append_option(optgroup->get_option("wipe_tower_x")); + line.append_option(optgroup->get_option("wipe_tower_y")); + optgroup->append_line(line); optgroup->append_single_option_line("wipe_tower_width"); optgroup->append_single_option_line("wipe_tower_rotation_angle"); optgroup->append_single_option_line("wipe_tower_bridging"); @@ -969,14 +983,18 @@ void TabPrint::build() optgroup = page->new_optgroup(_(L("Overlap"))); optgroup->append_single_option_line("infill_overlap"); - optgroup = page->new_optgroup(_(L("Flow"))); - optgroup->append_single_option_line("bridge_flow_ratio"); - optgroup->append_single_option_line("over_bridge_flow_ratio"); + optgroup = page->new_optgroup(_(L("Flow"))); + line = { _(L("Bridge flow ratio")), "" }; + line.append_option(optgroup->get_option("bridge_flow_ratio")); + line.append_option(optgroup->get_option("over_bridge_flow_ratio")); + optgroup->append_line(line); optgroup = page->new_optgroup(_(L("Other"))); - optgroup->append_single_option_line("clip_multipart_objects"); - optgroup->append_single_option_line("elefant_foot_compensation"); - optgroup->append_single_option_line("xy_size_compensation"); + optgroup->append_single_option_line("clip_multipart_objects"); + line = { _(L("XY compensation")), "" }; + line.append_option(optgroup->get_option("xy_size_compensation")); + line.append_option(optgroup->get_option("elefant_foot_compensation")); + optgroup->append_line(line); // # optgroup->append_single_option_line("threads"); optgroup->append_single_option_line("resolution"); -- cgit v1.2.3 From 0be468e893d9150cc22ae43bc4eedb5ea424bec4 Mon Sep 17 00:00:00 2001 From: supermerill Date: Wed, 27 Jun 2018 15:37:53 +0200 Subject: WipeTower brim with first layer from first layer width parameter. --- xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp | 12 +++++++----- xs/src/libslic3r/GCode/WipeTowerPrusaMM.hpp | 8 +++++--- xs/src/libslic3r/Print.cpp | 3 ++- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp b/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp index fbde83754..c16aaae0c 100644 --- a/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp +++ b/xs/src/libslic3r/GCode/WipeTowerPrusaMM.cpp @@ -646,7 +646,9 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::toolchange_Brim(bool sideOnly, flo m_wipe_tower_width, m_wipe_tower_depth); - PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width); + //use first layer width parameter + + PrusaMultiMaterial::Writer writer(m_layer_height, m_brim_width); writer.set_extrusion_flow(m_extrusion_flow * 1.1f) .set_z(m_z_pos) // Let the writer know the current Z position as a base for Z-hop. .set_initial_tool(m_current_tool) @@ -654,21 +656,21 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::toolchange_Brim(bool sideOnly, flo .append(";-------------------------------------\n" "; CP WIPE TOWER FIRST LAYER BRIM START\n"); - xy initial_position = wipeTower_box.lu - xy(m_perimeter_width * 6.f, 0); + xy initial_position = wipeTower_box.lu - xy(m_brim_width * 6.f, 0); writer.set_initial_position(initial_position); - writer.extrude_explicit(wipeTower_box.ld - xy(m_perimeter_width * 6.f, 0), // Prime the extruder left of the wipe tower. + writer.extrude_explicit(wipeTower_box.ld - xy(m_brim_width * 6.f, 0), // Prime the extruder left of the wipe tower. 1.5f * m_extrusion_flow * (wipeTower_box.lu.y - wipeTower_box.ld.y), 2400); // The tool is supposed to be active and primed at the time when the wipe tower brim is extruded. // Extrude 4 rounds of a brim around the future wipe tower. box_coordinates box(wipeTower_box); - box.expand(m_perimeter_width); + box.expand(m_brim_width); for (size_t i = 0; i < 4; ++ i) { writer.travel (box.ld, 7000) .extrude(box.lu, 2100).extrude(box.ru) .extrude(box.rd ).extrude(box.ld); - box.expand(m_perimeter_width); + box.expand(m_brim_width); } writer.travel(wipeTower_box.ld, 7000); // Move to the front left corner. diff --git a/xs/src/libslic3r/GCode/WipeTowerPrusaMM.hpp b/xs/src/libslic3r/GCode/WipeTowerPrusaMM.hpp index b7c721128..39eb2c968 100644 --- a/xs/src/libslic3r/GCode/WipeTowerPrusaMM.hpp +++ b/xs/src/libslic3r/GCode/WipeTowerPrusaMM.hpp @@ -44,7 +44,7 @@ public: // wipe_area -- space available for one toolchange in mm WipeTowerPrusaMM(float x, float y, float width, float rotation_angle, float cooling_tube_retraction, float cooling_tube_length, float parking_pos_retraction, float bridging, const std::vector& wiping_matrix, - unsigned int initial_tool) : + unsigned int initial_tool, float first_layer_width) : m_wipe_tower_pos(x, y), m_wipe_tower_width(width), m_wipe_tower_rotation_angle(rotation_angle), @@ -55,7 +55,8 @@ public: m_cooling_tube_length(cooling_tube_length), m_parking_pos_retraction(parking_pos_retraction), m_bridging(bridging), - m_current_tool(initial_tool) + m_current_tool(initial_tool), + m_brim_width(first_layer_width) { unsigned int number_of_extruders = (unsigned int)(sqrt(wiping_matrix.size())+WT_EPSILON); for (unsigned int i = 0; iconfig.wipe_tower_width.value), float(this->config.wipe_tower_rotation_angle.value), float(this->config.cooling_tube_retraction.value), float(this->config.cooling_tube_length.value), float(this->config.parking_pos_retraction.value), - float(this->config.wipe_tower_bridging), wiping_volumes, m_tool_ordering.first_extruder()); + float(this->config.wipe_tower_bridging), wiping_volumes, m_tool_ordering.first_extruder(), + float(this->config.first_layer_extrusion_width)); //wipe_tower.set_retract(); //wipe_tower.set_zhop(); -- cgit v1.2.3 From 6d73d36a2187e1c162a755f5f8a0a93f51806503 Mon Sep 17 00:00:00 2001 From: supermerill Date: Wed, 27 Jun 2018 16:01:05 +0200 Subject: Change the infill % & more adjusts --- xs/src/libslic3r/PrintConfig.cpp | 34 +++++++++++++++++++++++++++++++--- xs/src/slic3r/GUI/Tab.cpp | 6 ++---- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/xs/src/libslic3r/PrintConfig.cpp b/xs/src/libslic3r/PrintConfig.cpp index 66de606b2..832feecd1 100644 --- a/xs/src/libslic3r/PrintConfig.cpp +++ b/xs/src/libslic3r/PrintConfig.cpp @@ -630,13 +630,14 @@ PrintConfigDef::PrintConfigDef() def = this->add("fill_density", coPercent); def->gui_type = "f_enum_open"; def->gui_flags = "show_value"; - def->label = L("Density"); + def->label = L("Fill density"); def->category = L("Infill"); def->tooltip = L("Density of internal infill, expressed in the range 0% - 100%."); def->sidetext = L("%"); def->cli = "fill-density=s"; def->min = 0; def->max = 100; + /* def->enum_values.push_back("0"); def->enum_values.push_back("5"); def->enum_values.push_back("10"); @@ -665,11 +666,38 @@ PrintConfigDef::PrintConfigDef() def->enum_labels.push_back("80%"); def->enum_labels.push_back("90%"); def->enum_labels.push_back("100%"); + */ + def->enum_values.push_back("0"); + def->enum_values.push_back("4"); + def->enum_values.push_back("5.5"); + def->enum_values.push_back("7.5"); + def->enum_values.push_back("10"); + def->enum_values.push_back("13"); + def->enum_values.push_back("18"); + def->enum_values.push_back("23"); + def->enum_values.push_back("31"); + def->enum_values.push_back("42"); + def->enum_values.push_back("55"); + def->enum_values.push_back("75"); + def->enum_values.push_back("100"); + def->enum_labels.push_back("0"); + def->enum_labels.push_back("4"); + def->enum_labels.push_back("5.5"); + def->enum_labels.push_back("7.5"); + def->enum_labels.push_back("10"); + def->enum_labels.push_back("13"); + def->enum_labels.push_back("18"); + def->enum_labels.push_back("23"); + def->enum_labels.push_back("31"); + def->enum_labels.push_back("42"); + def->enum_labels.push_back("55"); + def->enum_labels.push_back("75"); + def->enum_labels.push_back("100"); def->default_value = new ConfigOptionPercent(20); def = this->add("fill_pattern", coEnum); def->label = L("Inside"); - def->category = L("Infill"); + def->category = L("Sparse fill pattern"); def->tooltip = L("Fill pattern for general low-density infill."); def->cli = "fill-pattern=s"; def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); @@ -875,7 +903,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionFloatOrPercent(25, true); def = this->add("infill_speed", coFloat); - def->label = L(" Sparse\t"); + def->label = L("Sparse"); def->category = L("Speed"); def->tooltip = L("Speed for printing the internal fill. Set to zero for auto."); def->sidetext = L("mm/s"); diff --git a/xs/src/slic3r/GUI/Tab.cpp b/xs/src/slic3r/GUI/Tab.cpp index 493534c20..a89582176 100644 --- a/xs/src/slic3r/GUI/Tab.cpp +++ b/xs/src/slic3r/GUI/Tab.cpp @@ -848,10 +848,8 @@ void TabPrint::build() page = add_options_page(_(L("Infill")), "infill.png"); optgroup = page->new_optgroup(_(L("Infill"))); - line = { _(L("Fill inside pattern")), "" }; - line.append_option(optgroup->get_option("fill_density")); - line.append_option(optgroup->get_option("fill_pattern")); - optgroup->append_line(line); + optgroup->append_single_option_line("fill_density"); + optgroup->append_single_option_line("fill_pattern"); line = { _(L("Fill external pattern")), "" }; line.append_option(optgroup->get_option("top_fill_pattern")); line.append_option(optgroup->get_option("bottom_fill_pattern")); -- cgit v1.2.3 From b78928e13db3221d49773f76eefbf4e86d3dd87f Mon Sep 17 00:00:00 2001 From: supermerill Date: Sun, 1 Jul 2018 13:54:09 +0200 Subject: update readme --- README.md | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 40c22b98a..e1a0d2ce4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -_Q: Oh cool, a new RepRap slicer?_ +_Q: Oh cool, a new fork of slic3r?_ A: Yes. @@ -18,9 +18,8 @@ See the [project homepage](http://slic3r.org/) at slic3r.org and the ### What language is it written in? -The core geometric algorithms and data structures are written in C++, -and Perl is used for high-level flow abstraction, GUI and testing. -If you're wondering why Perl, see https://xkcd.com/224/ +Almost everything are written in C++, +Perl is used a bit but the prusa fork is getting rid of it (uless for scripting, maybe). The C++ API is public and its use in other projects is encouraged. The goal is to make Slic3r fully modular so that any part of its logic @@ -41,12 +40,12 @@ Key features are: Other major features are: -* combine infill every 'n' perimeters layer to speed up printing +* combine infill every 'n' perimeters layer & varying density to speed up printing * **3D preview** (including multi-material files) * **multiple layer heights** in a single print * **spiral vase** mode for bumpless vases * fine-grained configuration of speed, acceleration, extrusion width -* several infill patterns including honeycomb, spirals, Hilbert curves +* several infill patterns including honeycomb, spirals, Hilbert curves, gyroid * support material, raft, brim, skirt * **standby temperature** and automatic wiping for multi-extruder printing * customizable **G-code macros** and output filename with variable placeholders @@ -55,24 +54,18 @@ Other major features are: ### How to install? -You can download a precompiled package from [slic3r.org](http://slic3r.org/); +You can download a precompiled package from the release page. it will run without the need for any dependency. If you want to compile the source yourself follow the instructions on one of these wiki pages: -* [Linux](https://github.com/alexrj/Slic3r/wiki/Running-Slic3r-from-git-on-GNU-Linux) -* [Windows](https://github.com/prusa3d/Slic3r/wiki/How-to-compile-Slic3r-Prusa-Edition-on-MS-Windows) -* [Mac OSX](https://github.com/alexrj/Slic3r/wiki/Running-Slic3r-from-git-on-OS-X) +* [Linux](https://github.com/supermerill/Slic3r/tree/supermerill-experiment/doc/How to build - UNIX.md) +* [Windows](https://github.com/supermerill/Slic3r/tree/supermerill-experiment/doc/How to build - Windows.md) +* [Mac OSX](https://github.com/supermerill/Slic3r/tree/supermerill-experiment/doc/How_to_build_Slic3r.txt) ### Can I help? Sure! You can do the following to find things that are available to help with: -* [Pull Request Milestone](https://github.com/alexrj/Slic3r/milestone/31) - * Please comment in the related github issue that you are working on it so that other people know. -* Items in the [TODO](https://github.com/alexrj/Slic3r/wiki/TODO) wiki page. - * Please comment in the related github issue that you are working on it so that other people know. -* Drop me a line at aar@cpan.org. -* You can also find me (rarely) in #reprap and in #slic3r on [FreeNode](https://webchat.freenode.net) with the nickname _Sound_. Another contributor, _LoH_, is also in both channels. -* Add an [issue](https://github.com/alexrj/Slic3r/issues) to the github tracker if it isn't already present. +* Add an issue to the github tracker if it isn't already present. Before sending patches and pull requests contact me (preferably through opening a github issue or commenting on an existing, related, issue) to discuss your proposed changes: this way we'll ensure nobody wastes their time and no conflicts arise @@ -87,7 +80,7 @@ The [Silk icon set](http://www.famfamfam.com/lab/icons/silk/) used in Slic3r is licensed under the _Creative Commons Attribution 3.0 License_. The author of the Silk icon set is Mark James. -### How can I invoke slic3r.pl using the command line? +### How can I invoke slic3r.pl using the command line? (not up-to-date yet) Usage: slic3r.pl [ OPTIONS ] [ file.stl ] [ file2.stl ] ... @@ -296,6 +289,7 @@ The author of the Silk icon set is Mark James. --min-fan-speed Minimum fan speed (default: 35%) --max-fan-speed Maximum fan speed (default: 100%) --bridge-fan-speed Fan speed to use when bridging (default: 100%) + --top-fan-speed Fan speed to use when printing top layer (default: 100%) --fan-below-layer-time Enable fan if layer print time is below this approximate number of seconds (default: 60) --slowdown-below-layer-time Slow down if layer print time is below this approximate number @@ -358,6 +352,7 @@ The author of the Silk icon set is Mark James. Set a different extrusion width for support material --infill-overlap Overlap between infill and perimeters (default: 15%) --bridge-flow-ratio Multiplier for extrusion when bridging (> 0, default: 1) + --over-bridge-flow-ratio Multiplier for extrusion when printing the layer above a bride (> 0, default: 1.15) Multiple extruder options: --extruder-offset Offset of each extruder, if firmware doesn't handle the displacement -- cgit v1.2.3 From a1ba36b1165349e35dd399ca4f65a74250aa371d Mon Sep 17 00:00:00 2001 From: supermerill Date: Mon, 2 Jul 2018 15:00:34 +0200 Subject: Readme update, & remove prusa as default vendor (none instead) --- README.md | 9 +++++++-- xs/src/slic3r/GUI/ConfigWizard.cpp | 14 ++++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index e1a0d2ce4..a5a58aae6 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ A: Yes. Slic3r ====== -Prebuilt Windows, OSX and Linux binaries are available through the [git releases page](https://github.com/prusa3d/Slic3r/releases). +Prebuilt Windows 32b is available through the [git releases page](https://github.com/supermerill/Slic3r/releases). @@ -19,12 +19,17 @@ See the [project homepage](http://slic3r.org/) at slic3r.org and the ### What language is it written in? Almost everything are written in C++, -Perl is used a bit but the prusa fork is getting rid of it (uless for scripting, maybe). +Perl is used a bit but the prusa fork is getting rid of it (unless for scripting, maybe). The C++ API is public and its use in other projects is encouraged. The goal is to make Slic3r fully modular so that any part of its logic can be used separately. +### What are this fork main features/differences? + +* **Ironing** top surface & many new settings to fine-tune the top surface quality. +* A denser infill option for 1-X layers before the top solid layers to better support them. + ### What are Slic3r's main features? Key features are: diff --git a/xs/src/slic3r/GUI/ConfigWizard.cpp b/xs/src/slic3r/GUI/ConfigWizard.cpp index ce06da853..556a1c334 100644 --- a/xs/src/slic3r/GUI/ConfigWizard.cpp +++ b/xs/src/slic3r/GUI/ConfigWizard.cpp @@ -23,6 +23,7 @@ namespace Slic3r { namespace GUI { +#define MAIN_VENDOR "None" // Printer model picker GUI control @@ -88,7 +89,7 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, cons auto *cbox = new Checkbox(panel, label, model_id, variant.name); const size_t idx = cboxes.size(); cboxes.push_back(cbox); - bool enabled = appconfig_vendors.get_variant("PrusaResearch", model_id, variant.name); + bool enabled = appconfig_vendors.get_variant(MAIN_VENDOR, model_id, variant.name); variants_checked += enabled; cbox->SetValue(enabled); col_sizer->Add(cbox, 0, wxBOTTOM, 3); @@ -226,7 +227,8 @@ PageWelcome::PageWelcome(ConfigWizard *parent) : } const auto &vendors = wizard_p()->vendors; - const auto vendor_prusa = vendors.find("PrusaResearch"); + printf("vendors count : %d", vendors.size()); + const auto vendor_prusa = vendors.find(MAIN_VENDOR); if (vendor_prusa != vendors.cend()) { AppConfig &appconfig_vendors = this->wizard_p()->appconfig_vendors; @@ -311,7 +313,7 @@ PageVendors::PageVendors(ConfigWizard *parent) : for (const auto vendor_pair : wizard_p()->vendors) { const auto &vendor = vendor_pair.second; - if (vendor.id == "PrusaResearch") { continue; } + if (vendor.id == MAIN_VENDOR) { continue; } auto *picker = new PrinterPicker(this, vendor, appconfig_vendors); picker->Hide(); @@ -614,8 +616,8 @@ static const std::unordered_map void ConfigWizard::priv::load_vendors() { - const auto vendor_dir = fs::path(Slic3r::data_dir()) / "vendor"; - const auto rsrc_vendor_dir = fs::path(resources_dir()) / "profiles"; + const fs::path vendor_dir = fs::path(Slic3r::data_dir()) / "vendor"; + const fs::path rsrc_vendor_dir = fs::path(resources_dir()) / "profiles"; // Load vendors from the "vendors" directory in datadir for (fs::directory_iterator it(vendor_dir); it != fs::directory_iterator(); ++it) { @@ -661,7 +663,7 @@ void ConfigWizard::priv::load_vendors() const auto &model = needle->second.first; const auto &variant = needle->second.second; - appconfig_vendors.set_variant("PrusaResearch", model, variant, true); + appconfig_vendors.set_variant(MAIN_VENDOR, model, variant, true); } } } -- cgit v1.2.3 From 4c03b73f1b5bf056d623cc090d11f885a4abdb7b Mon Sep 17 00:00:00 2001 From: supermerill Date: Thu, 5 Jul 2018 15:29:06 +0200 Subject: Change name to Slic3r++ to avoid prusa being flood with issue from my fork. --- lib/Slic3r.pm | 2 +- lib/Slic3r/GUI.pm | 2 +- lib/Slic3r/GUI/MainFrame.pm | 4 ++-- lib/Slic3r/GUI/SystemInfo.pm | 2 +- xs/src/libslic3r/libslic3r.h | 2 +- xs/src/slic3r/GUI/AboutDialog.cpp | 2 +- xs/src/slic3r/GUI/ConfigWizard.cpp | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/Slic3r.pm b/lib/Slic3r.pm index 0c6c81bb5..72164859e 100644 --- a/lib/Slic3r.pm +++ b/lib/Slic3r.pm @@ -28,7 +28,7 @@ BEGIN { use Config; use Moo; my $have_threads = $Config{useithreads} && eval "use threads; use threads::shared; use Thread::Queue; 1"; - die "Slic3r Prusa Edition requires working Perl threads.\n" if ! $have_threads; + die "Slic3r++ requires working Perl threads.\n" if ! $have_threads; die "threads.pm >= 1.96 is required, please update\n" if $threads::VERSION < 1.96; die "Perl threading is broken with this Moo version: " . $Moo::VERSION . "\n" if $Moo::VERSION == 1.003000; $debug = 1 if (defined($ENV{'SLIC3R_DEBUGOUT'}) && $ENV{'SLIC3R_DEBUGOUT'} == 1); diff --git a/lib/Slic3r/GUI.pm b/lib/Slic3r/GUI.pm index 80130fefe..a9c0fd523 100644 --- a/lib/Slic3r/GUI.pm +++ b/lib/Slic3r/GUI.pm @@ -74,7 +74,7 @@ sub OnInit { my ($self) = @_; $self->SetAppName('Slic3rPE'); - $self->SetAppDisplayName('Slic3r Prusa Edition'); + $self->SetAppDisplayName('Slic3r++'); Slic3r::debugf "wxWidgets version %s, Wx version %s\n", &Wx::wxVERSION_STRING, $Wx::VERSION; # Set the Slic3r data directory at the Slic3r XS module. diff --git a/lib/Slic3r/GUI/MainFrame.pm b/lib/Slic3r/GUI/MainFrame.pm index 910b86dd8..7acdcc3a4 100644 --- a/lib/Slic3r/GUI/MainFrame.pm +++ b/lib/Slic3r/GUI/MainFrame.pm @@ -339,8 +339,8 @@ sub _init_menubar { $self->_append_menu_item($helpMenu, L("Show &Configuration Folder"), L('Show user configuration folder (datadir)'), sub { Slic3r::GUI::desktop_open_datadir_folder(); }); - $self->_append_menu_item($helpMenu, L("Report an Issue"), L('Report an issue on the Slic3r Prusa Edition'), sub { - Wx::LaunchDefaultBrowser('http://github.com/prusa3d/slic3r/issues/new'); + $self->_append_menu_item($helpMenu, L("Report an Issue"), L('Report an issue on the Slic3r++ github'), sub { + Wx::LaunchDefaultBrowser('http://github.com/supermerill/slic3r/issues/new'); }); $self->_append_menu_item($helpMenu, L("&About Slic3r"), L('Show about dialog'), sub { Slic3r::GUI::about; diff --git a/lib/Slic3r/GUI/SystemInfo.pm b/lib/Slic3r/GUI/SystemInfo.pm index 717ff12e5..e26248e2d 100644 --- a/lib/Slic3r/GUI/SystemInfo.pm +++ b/lib/Slic3r/GUI/SystemInfo.pm @@ -10,7 +10,7 @@ use base 'Wx::Dialog'; sub new { my ($class, %params) = @_; - my $self = $class->SUPER::new($params{parent}, -1, 'Slic3r Prusa Edition - System Information', wxDefaultPosition, [600, 340], + my $self = $class->SUPER::new($params{parent}, -1, 'Slic3r++ - System Information', wxDefaultPosition, [600, 340], wxDEFAULT_DIALOG_STYLE | wxMAXIMIZE_BOX | wxRESIZE_BORDER); $self->{text_info} = $params{text_info}; diff --git a/xs/src/libslic3r/libslic3r.h b/xs/src/libslic3r/libslic3r.h index fd6b56e3a..b15f9ae03 100644 --- a/xs/src/libslic3r/libslic3r.h +++ b/xs/src/libslic3r/libslic3r.h @@ -13,7 +13,7 @@ #include #include -#define SLIC3R_FORK_NAME "Slic3r Prusa Edition" +#define SLIC3R_FORK_NAME "Slic3r++" #define SLIC3R_VERSION "1.40.0" #define SLIC3R_BUILD "UNKNOWN" diff --git a/xs/src/slic3r/GUI/AboutDialog.cpp b/xs/src/slic3r/GUI/AboutDialog.cpp index 0fed8d175..e6e061990 100644 --- a/xs/src/slic3r/GUI/AboutDialog.cpp +++ b/xs/src/slic3r/GUI/AboutDialog.cpp @@ -53,7 +53,7 @@ AboutDialog::AboutDialog() // title { - wxStaticText* title = new wxStaticText(this, wxID_ANY, "Slic3r Prusa Edition", wxDefaultPosition, wxDefaultSize); + wxStaticText* title = new wxStaticText(this, wxID_ANY, "Slic3r++", wxDefaultPosition, wxDefaultSize); wxFont title_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); title_font.SetWeight(wxFONTWEIGHT_BOLD); title_font.SetFamily(wxFONTFAMILY_ROMAN); diff --git a/xs/src/slic3r/GUI/ConfigWizard.cpp b/xs/src/slic3r/GUI/ConfigWizard.cpp index 556a1c334..22ea4d784 100644 --- a/xs/src/slic3r/GUI/ConfigWizard.cpp +++ b/xs/src/slic3r/GUI/ConfigWizard.cpp @@ -218,7 +218,7 @@ PageWelcome::PageWelcome(ConfigWizard *parent) : if (wizard_p()->run_reason == ConfigWizard::RR_DATA_EMPTY) { wxString::Format(_(L("Run %s")), ConfigWizard::name()); append_text(wxString::Format( - _(L("Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial configuration; just a few settings and you will be ready to print.")), + _(L("Hello, welcome to Slic3r++ (fork of Slic3r Prusa Edition)! This %s helps you with the initial configuration; just a few settings and you will be ready to print.")), ConfigWizard::name()) ); } else { -- cgit v1.2.3 From 1b1ebcf4c30a9f824b67b81feb746243e1053163 Mon Sep 17 00:00:00 2001 From: supermerill Date: Mon, 9 Jul 2018 18:39:00 +0200 Subject: change icons --- resources/icons/Slic3r-console.ico | Bin 17542 -> 17542 bytes resources/icons/Slic3r.ico | Bin 102134 -> 102134 bytes resources/icons/Slic3r.png | Bin 16469 -> 14688 bytes resources/icons/Slic3r_128px.png | Bin 13016 -> 11866 bytes resources/icons/Slic3r_192px.png | Bin 21962 -> 19642 bytes resources/icons/Slic3r_192px_transparent.png | Bin 21125 -> 18588 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/icons/Slic3r-console.ico b/resources/icons/Slic3r-console.ico index 64e818340..7d168c874 100644 Binary files a/resources/icons/Slic3r-console.ico and b/resources/icons/Slic3r-console.ico differ diff --git a/resources/icons/Slic3r.ico b/resources/icons/Slic3r.ico index 5765f77d2..9a92bb103 100644 Binary files a/resources/icons/Slic3r.ico and b/resources/icons/Slic3r.ico differ diff --git a/resources/icons/Slic3r.png b/resources/icons/Slic3r.png index 896cc4460..d480dc881 100644 Binary files a/resources/icons/Slic3r.png and b/resources/icons/Slic3r.png differ diff --git a/resources/icons/Slic3r_128px.png b/resources/icons/Slic3r_128px.png index e8b2e3e3e..006e95f51 100644 Binary files a/resources/icons/Slic3r_128px.png and b/resources/icons/Slic3r_128px.png differ diff --git a/resources/icons/Slic3r_192px.png b/resources/icons/Slic3r_192px.png index 9af2bfc74..2e08916fc 100644 Binary files a/resources/icons/Slic3r_192px.png and b/resources/icons/Slic3r_192px.png differ diff --git a/resources/icons/Slic3r_192px_transparent.png b/resources/icons/Slic3r_192px_transparent.png index f85c835b3..8b7165a60 100644 Binary files a/resources/icons/Slic3r_192px_transparent.png and b/resources/icons/Slic3r_192px_transparent.png differ -- cgit v1.2.3 From cd46cad56e83e2fa99702ad31a3c07d11c63c2f3 Mon Sep 17 00:00:00 2001 From: supermerill Date: Wed, 11 Jul 2018 19:14:01 +0200 Subject: remove gyroid "bridge flow" --- xs/src/libslic3r/Fill/FillGyroid.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xs/src/libslic3r/Fill/FillGyroid.hpp b/xs/src/libslic3r/Fill/FillGyroid.hpp index 17924b5ab..9c3cef940 100644 --- a/xs/src/libslic3r/Fill/FillGyroid.hpp +++ b/xs/src/libslic3r/Fill/FillGyroid.hpp @@ -14,7 +14,7 @@ public: virtual Fill* clone() const { return new FillGyroid(*this); } // require bridge flow since most of this pattern hangs in air - virtual bool use_bridge_flow() const { return true; } + virtual bool use_bridge_flow() const { return false; } protected: virtual void _fill_surface_single( -- cgit v1.2.3 From fdf2c45ff0b470bacf9f56b7da651fed23a96ce4 Mon Sep 17 00:00:00 2001 From: supermerill Date: Tue, 24 Jul 2018 00:33:25 +0200 Subject: try a little change to bridge detection: if max is equal, try to find the direction with the most number of small lines. --- xs/src/libslic3r/BridgeDetector.cpp | 9 +++++++-- xs/src/libslic3r/BridgeDetector.hpp | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/xs/src/libslic3r/BridgeDetector.cpp b/xs/src/libslic3r/BridgeDetector.cpp index a5272683f..b7b73cc1f 100644 --- a/xs/src/libslic3r/BridgeDetector.cpp +++ b/xs/src/libslic3r/BridgeDetector.cpp @@ -115,6 +115,7 @@ bool BridgeDetector::detect_angle(double bridge_direction_override) } double total_length = 0; + uint32_t nbLines = 0; double max_length = 0; { Lines clipped_lines = intersection_ln(lines, clip_area); @@ -125,10 +126,11 @@ bool BridgeDetector::detect_angle(double bridge_direction_override) double len = line.length(); total_length += len; max_length = std::max(max_length, len); + nbLines++; } } } - if (total_length == 0.) + if (total_length == 0. || nbLines == 0) continue; have_coverage = true; @@ -139,6 +141,7 @@ bool BridgeDetector::detect_angle(double bridge_direction_override) // $directions_coverage{$angle} = sum(map $_->area, @{$self->coverage($angle)}) // 0; // max length of bridged lines candidates[i_angle].max_length = max_length; + candidates[i_angle].mean_length = total_length / nbLines; } // if no direction produced coverage, then there's no bridge direction @@ -149,10 +152,12 @@ bool BridgeDetector::detect_angle(double bridge_direction_override) std::sort(candidates.begin(), candidates.end()); // if any other direction is within extrusion width of coverage, prefer it if shorter + // shorter = shorter max length, or if in espilon (10) range, the shorter mean length. // TODO: There are two options here - within width of the angle with most coverage, or within width of the currently perferred? size_t i_best = 0; for (size_t i = 1; i < candidates.size() && candidates[i_best].coverage - candidates[i].coverage < this->spacing; ++ i) - if (candidates[i].max_length < candidates[i_best].max_length) + if (candidates[i].max_length < candidates[i_best].max_length || + (candidates[i].max_length < candidates[i_best].max_length - 10 && candidates[i].mean_length < candidates[i_best].mean_length)) i_best = i; this->angle = candidates[i_best].angle; diff --git a/xs/src/libslic3r/BridgeDetector.hpp b/xs/src/libslic3r/BridgeDetector.hpp index 5c55276be..c38e6eb3e 100644 --- a/xs/src/libslic3r/BridgeDetector.hpp +++ b/xs/src/libslic3r/BridgeDetector.hpp @@ -53,6 +53,7 @@ private: double angle; double coverage; double max_length; + double mean_length; }; // Get possible briging direction candidates. -- cgit v1.2.3 From 9d93bd6a0c5109ba10dce4a16fbecf6c93a7d795 Mon Sep 17 00:00:00 2001 From: supermerill Date: Wed, 25 Jul 2018 16:17:52 +0200 Subject: update readme --- README.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index a5a58aae6..238c0a8b5 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,8 @@ can be used separately. * **Ironing** top surface & many new settings to fine-tune the top surface quality. * A denser infill option for 1-X layers before the top solid layers to better support them. +* Better overhangs (add perimeters if needed, slice them in opposite direction each layer). +* Better Thin walls (anchored inside the print, no more random bits at the ends). ### What are Slic3r's main features? @@ -63,9 +65,9 @@ You can download a precompiled package from the release page. it will run without the need for any dependency. If you want to compile the source yourself follow the instructions on one of these wiki pages: -* [Linux](https://github.com/supermerill/Slic3r/tree/supermerill-experiment/doc/How to build - UNIX.md) -* [Windows](https://github.com/supermerill/Slic3r/tree/supermerill-experiment/doc/How to build - Windows.md) -* [Mac OSX](https://github.com/supermerill/Slic3r/tree/supermerill-experiment/doc/How_to_build_Slic3r.txt) +* [Linux](https://github.com/supermerill/Slic3r/tree/master/doc/How%20to%20build%20-%20UNIX.md) +* [Windows](https://github.com/supermerill/Slic3r/tree/master/doc/How%20to%20build%20-%20Windows.md) +* [Mac OSX](https://github.com/supermerill/Slic3r/tree/master/doc/How_to_build_Slic3r.txt) ### Can I help? @@ -73,19 +75,20 @@ Sure! You can do the following to find things that are available to help with: * Add an issue to the github tracker if it isn't already present. Before sending patches and pull requests contact me (preferably through opening a github issue or commenting on an existing, related, issue) to discuss your proposed -changes: this way we'll ensure nobody wastes their time and no conflicts arise -in development. +changes: this way we'll ensure nobody wastes their time and no conflicts arise in development. ### What's Slic3r license? Slic3r is licensed under the _GNU Affero General Public License, version 3_. -The author is Alessandro Ranellucci. +The first author is Alessandro Ranellucci, and many contributors +Then the he Prusa team +Then Durand remi for this fork -The [Silk icon set](http://www.famfamfam.com/lab/icons/silk/) used in Slic3r is +The [Silk icon set](http://www.famfamfam.com/lab/icons/silk/) used (and modified) in Slic3r is licensed under the _Creative Commons Attribution 3.0 License_. The author of the Silk icon set is Mark James. -### How can I invoke slic3r.pl using the command line? (not up-to-date yet) +### How can I invoke slic3r.pl using the command line? (not up-to-date yet, use the --help command instead) Usage: slic3r.pl [ OPTIONS ] [ file.stl ] [ file2.stl ] ... -- cgit v1.2.3 From ee9ce181908125e408e5ada2a4429bfaf8f2ad0a Mon Sep 17 00:00:00 2001 From: supermerill Date: Thu, 26 Jul 2018 14:02:24 +0200 Subject: Debug gui parameters (from merge & first layer XY bug) --- xs/src/libslic3r/PrintConfig.cpp | 10 +++++----- xs/src/slic3r/GUI/Tab.cpp | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/xs/src/libslic3r/PrintConfig.cpp b/xs/src/libslic3r/PrintConfig.cpp index d38239013..df69fbe38 100644 --- a/xs/src/libslic3r/PrintConfig.cpp +++ b/xs/src/libslic3r/PrintConfig.cpp @@ -268,7 +268,7 @@ PrintConfigDef::PrintConfigDef() "to compensate for the 1st layer squish aka an Elephant Foot effect. (must be negative = inwards)"); def->sidetext = L("mm"); def->cli = "elefant-foot-compensation=f"; - def->min = 0; + def->max = 0; def->default_value = new ConfigOptionFloat(0); def = this->add("end_gcode", coString); @@ -910,10 +910,10 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionInt(0); def = this->add("infill_dense_angle", coFloat); - def->label = L("angle"); + def->label = L("Angle"); def->category = L("Infill"); def->tooltip = L("Set the Angle of dense infill."); - def->sidetext = L("layers"); + def->sidetext = L("°"); def->cli = "infill-dense-angle=i"; def->min = 0; def->default_value = new ConfigOptionFloat(0); @@ -921,7 +921,7 @@ PrintConfigDef::PrintConfigDef() def = this->add("infill_dense_density", coPercent); def->gui_type = "f_enum_open"; def->gui_flags = "show_value"; - def->label = L("Dense fill density"); + def->label = L("Density"); def->category = L("Infill"); def->tooltip = L("Density of the dense internal infill, expressed in the range 0% - 100%."); def->sidetext = L("%"); @@ -957,7 +957,7 @@ PrintConfigDef::PrintConfigDef() def->default_value = new ConfigOptionPercent(42); def = this->add("infill_dense_pattern", coEnum); - def->label = L("pattern"); + def->label = L("Pattern"); def->category = L("Sparse fill pattern"); def->tooltip = L("Fill pattern for denser-density sparse infill."); def->cli = "dense-fill-pattern=s"; diff --git a/xs/src/slic3r/GUI/Tab.cpp b/xs/src/slic3r/GUI/Tab.cpp index d0b56a25e..7ab0262de 100644 --- a/xs/src/slic3r/GUI/Tab.cpp +++ b/xs/src/slic3r/GUI/Tab.cpp @@ -849,7 +849,8 @@ void TabPrint::build() line.append_option(optgroup->get_option("fill_angle")); line.append_option(optgroup->get_option("bridge_angle")); optgroup->append_line(line); - optgroup->append_single_option_line("external_infill_margin"); + line = { _(L("Anchor solid infill by X mm")), "" }; + line.append_option(optgroup->get_option("external_infill_margin")); line.append_option(optgroup->get_option("bridged_infill_margin")); optgroup->append_line(line); optgroup->append_single_option_line("only_retract_when_crossing_perimeters"); -- cgit v1.2.3