diff --git a/resources/calibration/bed_leveling/bed_leveling.html b/resources/calibration/bed_leveling/bed_leveling.html
index 6b5d53a49..54e78703a 100644
--- a/resources/calibration/bed_leveling/bed_leveling.html
+++ b/resources/calibration/bed_leveling/bed_leveling.html
@@ -5,7 +5,16 @@
Bed Level Calibration
+
+
+
+
Bed Level Calibration
+ |
+need: nothing |
+
+
+
This calibration is the first one to do, because it's mandatory to make a print stick well on the build plate.
This calibration is made to do the fine tuning. Please roughly level the printer before you start, move your nozzle to 0.2mm, then you must be able to move a paper between the nozzle and the plater, but you have to be able to feel the nozzle touching it. With that, you should be able to level the bed with a ~0.1mm precision.
How it works
diff --git a/resources/calibration/bridge_flow/bridge_flow.html b/resources/calibration/bridge_flow/bridge_flow.html
index 59a744ea7..54079f13a 100644
--- a/resources/calibration/bridge_flow/bridge_flow.html
+++ b/resources/calibration/bridge_flow/bridge_flow.html
@@ -5,7 +5,21 @@
Bridge Flow Ratio Calibration
+
+
+
+
+
Bridge Flow Ratio Calibration
+ |
+
+
+
+ |
+
+
+
You need to do the bed level calibration and the filament flow calibration before this one. It's better if you have done the filament temperature calibration also.
This test will print tests samples with various level of bridge flow ratio. It starts at your current setting, so you may want to set them to 100% before clicking on the button.
diff --git a/resources/calibration/cube/cube.html b/resources/calibration/cube/cube.html
index 0d358b679..0c06236d9 100644
--- a/resources/calibration/cube/cube.html
+++ b/resources/calibration/cube/cube.html
@@ -5,7 +5,21 @@
Calibration Cube
+
+
+
+
+
Calibration Cube
+ |
+
+ needs: | Bed |
+ | Flow | | Temperature |
+
+ |
+
+
+
This page allow you to print the loved calibration cube. It's useful to see if your printer is accurate and calibrate some settings. First thing is to select your goal.
Goal: Dimensional accuracy
You have to print two cubes, with different sizes. If the dimensional inaccuracy scale with the size of the cubes, then it's the steps/mm of your steppers that needs some adjustments (note: if it's the case, you should also adjust the flow, and maybe redo some calibrations if the change is big). If it doesn't scale, you can correct it by adjusting your xy compensation (slicing tab). With the voron cube, you can also test the hole calibration, as these are often too small.
diff --git a/resources/calibration/filament_flow/filament_flow.html b/resources/calibration/filament_flow/filament_flow.html
index 1cc42e368..de0828b82 100644
--- a/resources/calibration/filament_flow/filament_flow.html
+++ b/resources/calibration/filament_flow/filament_flow.html
@@ -5,7 +5,21 @@
Filament Flow Calibration
+
+
+
+
+
Filament Flow Calibration
+ |
+
+
+
+ |
+
+
+
You need to do the bed level calibration before this one.
This test will print five test samples with various level of flow. You can choose the flow difference between each steps. You should start with the 10% one.
After verifying the result with the help of the table below, you have to modify the filament extrusion multiplier in your filament preset (if the -20 is the best, change the multiplier from 1 to 0.8, see the formula below). Don't forget to save it afterwards! You can continue with the 2.5 step if you want a bit more precision.
diff --git a/resources/calibration/filament_temp/filament_temp.html b/resources/calibration/filament_temp/filament_temp.html
index 47521de4d..2e925fd80 100644
--- a/resources/calibration/filament_temp/filament_temp.html
+++ b/resources/calibration/filament_temp/filament_temp.html
@@ -5,7 +5,21 @@
Filament Temperature Calibration
+
+
+
+
+
Filament Temperature Calibration
+ |
+
+
+
+ |
+
+
+
You need to have done the bed level calibration before this one, and it's preferable to have also done the flow calibration.
This calibration will help you to choose the right temperature in respect of bonding, overhangs and oozing.
Note that this test is dependant of the cooling you selected. You can print this multiple times with more or less cooling to find the sweet spot.
diff --git a/resources/calibration/introduction.html b/resources/calibration/introduction.html
new file mode 100644
index 000000000..8466dd6da
--- /dev/null
+++ b/resources/calibration/introduction.html
@@ -0,0 +1,36 @@
+
+
+
+
+ Calibrations
+
+
+Introduction
+Welcome to the calibration menu. This menu is here to help you print quick & efficient calibrations.
+Why?
+Most printer’s profile should work pretty good with default settings, but if you encounter problems, or if you want to go a step above in quality, you have to ensure that everything is well calibrated. Calibrations can be divided in three groups: printer, filament and slicer.
+The printer has to be calibrated first, then the filament and then the slicer.
+Printer calibration
+This is the first thing to calibrate. Each printer is different in this domain, and you should look first into your printer’s manual for more informations.
+Extruder calibration
+This one doesn't have a menu entry because it can't be calibrated by a print. It's not mandatory but it may avoid you some problems. Most of it is explained in the flow calibration menu entry.
+Bed levelling
+Most printer doesn't have auto-bed levelling, and even the ones with one have to be calibrated at least one time. Everything should be explain in the menu how to level your printer, but be sure to have read your printer documentation before, in case there is some specific steps. This calibration print is particularly useful if you want to verify / refine the end result, or just check if it hasn't changed since the last time.
+It will create 5 small patch and you should be able to see where the bed is level and where it needs some adjustments.
+Filament calibration
+Every filament has different properties, and so may need adjustments. Default profile should work most of the time, but it may create avoidable artifacts. Also some specials filaments like wood-filled need extra care.
+Filament flow calibration
+The extruder bite in the filament to push it, and the way the spring compress the filament, and by how much it's bitten may change the flow needed. Also, if your extruder is not very well calibrated, this step will help you to counteract this problem.
+Note that if your filament has a variable diameter or isn't round, you will encounter flow problem but these issues can't been addressed. You should change your filament provider or investing in a filament width sensor.
+Filament temperature calibration
+Some filaments need more heat to stick, some need less heat to prevent too much ooze or loose overhangs. This calibration is here to help you enter the good value for the temperature. You can also so do multiple trials with different fan speed, to try to find the best combination.
+Slicer calibration
+These calibrations are here to help you to find the best super Slicer settings that will go well with your printer and filament combination.
+Bridge flow calibration
+Bridges are sometimes a bit hard to print with a good look. This calibration will help you to choose the best setting for the bridge flow. You can also try with different value of bridge fan speed
+Ironing pattern calibration
+It's difficult to be sure you have a flat top, as it may drop a bit in the centre of a large flat area. This calibration will help you to find the best setting to compensate for that.
+Calibration cube calibration
+This entry will allow you to always have a calibration cube ready to print. It's useful to see if the print has a good dimensional accuracy. This may be compensated with the various xy size compensation settings.
+
+
\ No newline at end of file
diff --git a/resources/calibration/over-bridge_tuning/over-bridge_tuning.html b/resources/calibration/over-bridge_tuning/over-bridge_tuning.html
index ab4267802..2ec92aeb2 100644
--- a/resources/calibration/over-bridge_tuning/over-bridge_tuning.html
+++ b/resources/calibration/over-bridge_tuning/over-bridge_tuning.html
@@ -5,7 +5,21 @@
Ironing Pattern Calibration
+
+
+
+
+
Ironing Pattern Calibration
+ |
+
+
+
+ |
+
+
+
You need to do the filament flow calibration and the bridge flow ratio before this one. It's better if you have done the filament temperature.
This calibration method will print test samples with various levels of over-bridge flow ratio, between 100 and 125. Choose the lowest value on which the top surface is smooth without rough "holes".
Results
diff --git a/src/slic3r/GUI/CalibrationAbstractDialog.hpp b/src/slic3r/GUI/CalibrationAbstractDialog.hpp
index 6e978b074..3964735e4 100644
--- a/src/slic3r/GUI/CalibrationAbstractDialog.hpp
+++ b/src/slic3r/GUI/CalibrationAbstractDialog.hpp
@@ -36,6 +36,18 @@ protected:
};
+
+class HtmlDialog : public CalibrationAbstractDialog
+{
+
+public:
+ HtmlDialog(GUI_App* app, MainFrame* mainframe, std::string title, std::string html_path) : CalibrationAbstractDialog(app, mainframe, title) { create(html_path); }
+ virtual ~HtmlDialog() {}
+protected:
+ void create_buttons(wxStdDialogButtonSizer* sizer) override {}
+
+};
+
} // namespace GUI
} // namespace Slic3r
diff --git a/src/slic3r/GUI/CalibrationCubeDialog.cpp b/src/slic3r/GUI/CalibrationCubeDialog.cpp
index ec0b02d47..255d6a64c 100644
--- a/src/slic3r/GUI/CalibrationCubeDialog.cpp
+++ b/src/slic3r/GUI/CalibrationCubeDialog.cpp
@@ -27,7 +27,7 @@ void CalibrationCubeDialog::create_buttons(wxStdDialogButtonSizer* buttons){
scale->SetToolTip(_(L("You can choose the dimension of the cube. It's a simple scale, you can modify it in the right panel yourself if you prefer. It's just quicker to select it here.")));
scale->SetSelection(1);
wxString choices_goal[] = { "Dimensional accuracy (default)" , "infill/perimeter overlap"/*, "external perimeter overlap"*/};
- calibrate = new wxComboBox(this, wxID_ANY, wxString{ "Dimensional accuracy (default)" }, wxDefaultPosition, wxDefaultSize, 3, choices_goal);
+ calibrate = new wxComboBox(this, wxID_ANY, wxString{ "Dimensional accuracy (default)" }, wxDefaultPosition, wxDefaultSize, 2, choices_goal);
calibrate->SetToolTip(_(L("Select a goal, this will change settings to increase the effects to search.")));
calibrate->SetSelection(0);
diff --git a/src/slic3r/GUI/CalibrationFlowDialog.cpp b/src/slic3r/GUI/CalibrationFlowDialog.cpp
index a4cf69681..42f4ef593 100644
--- a/src/slic3r/GUI/CalibrationFlowDialog.cpp
+++ b/src/slic3r/GUI/CalibrationFlowDialog.cpp
@@ -114,11 +114,12 @@ void CalibrationFlowDialog::create_geometry(float start, float delta) {
new_print_config.set_key_value("complete_objects_one_skirt", new ConfigOptionBool(true));
}
-
/// --- custom config ---
for (size_t i = 0; i < 5; i++) {
//brim to have some time to build up pressure in the nozzle
model.objects[objs_idx[i]]->config.set_key_value("brim_width", new ConfigOptionFloat(brim_width));
+ model.objects[objs_idx[i]]->config.set_key_value("external_perimeter_overlap", new ConfigOptionPercent(100));
+ model.objects[objs_idx[i]]->config.set_key_value("perimeter_overlap", new ConfigOptionPercent(100));
model.objects[objs_idx[i]]->config.set_key_value("brim_ears", new ConfigOptionBool(false));
model.objects[objs_idx[i]]->config.set_key_value("perimeters", new ConfigOptionInt(3));
model.objects[objs_idx[i]]->config.set_key_value("only_one_perimeter_top", new ConfigOptionBool(true));
@@ -133,7 +134,7 @@ void CalibrationFlowDialog::create_geometry(float start, float delta) {
model.objects[objs_idx[i]]->config.set_key_value("external_infill_margin", new ConfigOptionFloatOrPercent(100, true));
model.objects[objs_idx[i]]->config.set_key_value("solid_fill_pattern", new ConfigOptionEnum(ipRectilinearWGapFill));
model.objects[objs_idx[i]]->config.set_key_value("top_fill_pattern", new ConfigOptionEnum(ipSmooth));
- //set extrusion mult : 80 90 100 110 120
+ //set extrusion mult: 80 90 100 110 120
model.objects[objs_idx[i]]->config.set_key_value("print_extrusion_multiplier", new ConfigOptionPercent(start + (float)i * delta));
}
diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp
index 670ef68a3..c1ecf3232 100644
--- a/src/slic3r/GUI/GUI_App.cpp
+++ b/src/slic3r/GUI/GUI_App.cpp
@@ -574,6 +574,10 @@ void GUI_App::change_calibration_dialog(const wxDialog* have_to_destroy, wxDialo
}
+void GUI_App::html_dialog()
+{
+ change_calibration_dialog(nullptr, new HtmlDialog(this, mainframe,"Introduction to calibrations", "/calibration/introduction.html"));
+}
void GUI_App::bed_leveling_dialog()
{
change_calibration_dialog(nullptr, new CalibrationBedDialog(this, mainframe));
diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp
index 8e3560832..38fd60b09 100644
--- a/src/slic3r/GUI/GUI_App.hpp
+++ b/src/slic3r/GUI/GUI_App.hpp
@@ -132,6 +132,7 @@ public:
void system_info();
void keyboard_shortcuts();
void change_calibration_dialog(const wxDialog* have_to_destroy = nullptr, wxDialog* new_one = nullptr);
+ void html_dialog();
void bed_leveling_dialog();
void flow_ratio_dialog();
void filament_temperature_dialog();
diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp
index 81b687082..bd746f308 100644
--- a/src/slic3r/GUI/MainFrame.cpp
+++ b/src/slic3r/GUI/MainFrame.cpp
@@ -762,20 +762,26 @@ void MainFrame::init_menubar()
[this]() { return m_plater->is_view3D_shown(); }, [this]() { return m_plater->are_view3D_labels_shown(); }, this);
}
- // objects menu
- auto objectsMenu = new wxMenu();
+ // calibration menu
+ auto calibrationMenu = new wxMenu();
{
- append_menu_item(objectsMenu, wxID_ANY, _(L("Bed/Extruder levelling")), _(L("Create a test print to help you to level your printer bed.")),
+ append_menu_item(calibrationMenu, wxID_ANY, _(L("Introduction")), _(L("How to use this menu and calibrations.")),
+ [this](wxCommandEvent&) { wxGetApp().html_dialog(); });
+ calibrationMenu->AppendSeparator();
+ append_menu_item(calibrationMenu, wxID_ANY, _(L("Bed/Extruder levelling")), _(L("Create a test print to help you to level your printer bed.")),
[this](wxCommandEvent&) { wxGetApp().bed_leveling_dialog(); });
- append_menu_item(objectsMenu, wxID_ANY, _(L("Flow calibration")), _(L("Create a test print to help you to set your filament extrusion multiplier.")),
+ calibrationMenu->AppendSeparator();
+ append_menu_item(calibrationMenu, wxID_ANY, _(L("Filament Flow calibration")), _(L("Create a test print to help you to set your filament extrusion multiplier.")),
[this](wxCommandEvent&) { wxGetApp().flow_ratio_dialog(); });
- append_menu_item(objectsMenu, wxID_ANY, _(L("Filament temperature calibration")), _(L("Create a test print to help you to set your filament temperature.")),
+ append_menu_item(calibrationMenu, wxID_ANY, _(L("Filament temperature calibration")), _(L("Create a test print to help you to set your filament temperature.")),
[this](wxCommandEvent&) { wxGetApp().filament_temperature_dialog(); });
- append_menu_item(objectsMenu, wxID_ANY, _(L("Bridge flow calibration")), _(L("Create a test print to help you to set your bridge flow ratio.")),
+ calibrationMenu->AppendSeparator();
+ append_menu_item(calibrationMenu, wxID_ANY, _(L("Bridge flow calibration")), _(L("Create a test print to help you to set your bridge flow ratio.")),
[this](wxCommandEvent&) { wxGetApp().bridge_tuning_dialog(); });
- append_menu_item(objectsMenu, wxID_ANY, _(L("Ironing pattern calibration")), _(L("Create a test print to help you to set your over-bridge flow ratio and ironing pattern.")),
+ append_menu_item(calibrationMenu, wxID_ANY, _(L("Ironing pattern calibration")), _(L("Create a test print to help you to set your over-bridge flow ratio and ironing pattern.")),
[this](wxCommandEvent&) { wxGetApp().over_bridge_dialog(); });
- append_menu_item(objectsMenu, wxID_ANY, _(L("Calibration cube")), _(L("Print a calibration cube, for various calibration goals.")),
+ calibrationMenu->AppendSeparator();
+ append_menu_item(calibrationMenu, wxID_ANY, _(L("Calibration cube")), _(L("Print a calibration cube, for various calibration goals.")),
[this](wxCommandEvent&) { wxGetApp().calibration_cube_dialog(); });
}
@@ -784,6 +790,8 @@ void MainFrame::init_menubar()
{
append_menu_item(generationMenu, wxID_ANY, _(L("FreeCad python script")), _(L("Create an object by writing little easy script.")),
[this](wxCommandEvent&) { wxGetApp().freecad_script_dialog(); });
+ append_menu_item(generationMenu, wxID_ANY, _(L("Script help page")), _(L("How to use the FreeCad python script window.")),
+ [this](wxCommandEvent&) { wxLaunchDefaultBrowser("https://github.com/supermerill/SuperSlicer/wiki/FreePySCAD-script-window"); });
}
@@ -837,7 +845,7 @@ void MainFrame::init_menubar()
if (viewMenu) menubar->Append(viewMenu, _(L("&View")));
// Add additional menus from C++
wxGetApp().add_config_menu(menubar);
- menubar->Append(objectsMenu, _(L("C&alibration")));
+ menubar->Append(calibrationMenu, _(L("C&alibration")));
menubar->Append(generationMenu, _(L("&Generate")));
menubar->Append(helpMenu, _(L("&Help")));
SetMenuBar(menubar);