diff --git a/resources/calibration/bridge_flow/bridge_flow.html b/resources/calibration/bridge_flow/bridge_flow.html
index dfc4dae70..6e5f46b2c 100644
--- a/resources/calibration/bridge_flow/bridge_flow.html
+++ b/resources/calibration/bridge_flow/bridge_flow.html
@@ -2,11 +2,29 @@
- Document HTML
+ Bridge flow ratio calibration
-hello you
-bonjour le monde
+Bridge flow 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, and then you can also tune your bridge overlap ratio, if lines of bridges are too far apart from each other. It start at your current setting, so you may want to set them to 100% before clicking on the button.
+Results
+
+
+Exemple:
+
+TODO |
+
+
+TODO |
+
+
+Advice
+TODO
+
+Notes
+This test set the setting "complete individual objects" to true, so you may want to reset your print settings afterwards
+Licence for models used for this calibration test: CC BY-SA 3.0
\ No newline at end of file
diff --git a/resources/calibration/bridge_flow/bridge_test.amf b/resources/calibration/bridge_flow/bridge_test.amf
new file mode 100644
index 000000000..3e9aac802
Binary files /dev/null and b/resources/calibration/bridge_flow/bridge_test.amf differ
diff --git a/resources/calibration/bridge_flow/f100.amf b/resources/calibration/bridge_flow/f100.amf
new file mode 100644
index 000000000..f3d4ab320
Binary files /dev/null and b/resources/calibration/bridge_flow/f100.amf differ
diff --git a/resources/calibration/bridge_flow/f105.amf b/resources/calibration/bridge_flow/f105.amf
new file mode 100644
index 000000000..b90678a51
Binary files /dev/null and b/resources/calibration/bridge_flow/f105.amf differ
diff --git a/resources/calibration/bridge_flow/f110.amf b/resources/calibration/bridge_flow/f110.amf
new file mode 100644
index 000000000..552a7b74a
Binary files /dev/null and b/resources/calibration/bridge_flow/f110.amf differ
diff --git a/resources/calibration/bridge_flow/f115.amf b/resources/calibration/bridge_flow/f115.amf
new file mode 100644
index 000000000..f098d5c1e
Binary files /dev/null and b/resources/calibration/bridge_flow/f115.amf differ
diff --git a/resources/calibration/bridge_flow/f120.amf b/resources/calibration/bridge_flow/f120.amf
new file mode 100644
index 000000000..09906d270
Binary files /dev/null and b/resources/calibration/bridge_flow/f120.amf differ
diff --git a/resources/calibration/bridge_flow/f125.amf b/resources/calibration/bridge_flow/f125.amf
new file mode 100644
index 000000000..57ca52a11
Binary files /dev/null and b/resources/calibration/bridge_flow/f125.amf differ
diff --git a/resources/calibration/bridge_flow/f130.amf b/resources/calibration/bridge_flow/f130.amf
new file mode 100644
index 000000000..9aa70ad5b
Binary files /dev/null and b/resources/calibration/bridge_flow/f130.amf differ
diff --git a/resources/calibration/bridge_flow/f135.amf b/resources/calibration/bridge_flow/f135.amf
new file mode 100644
index 000000000..a3af97547
Binary files /dev/null and b/resources/calibration/bridge_flow/f135.amf differ
diff --git a/resources/calibration/bridge_flow/f140.amf b/resources/calibration/bridge_flow/f140.amf
new file mode 100644
index 000000000..f21ab81b1
Binary files /dev/null and b/resources/calibration/bridge_flow/f140.amf differ
diff --git a/resources/calibration/bridge_flow/f145.amf b/resources/calibration/bridge_flow/f145.amf
new file mode 100644
index 000000000..bd668ef32
Binary files /dev/null and b/resources/calibration/bridge_flow/f145.amf differ
diff --git a/resources/calibration/bridge_flow/f150.amf b/resources/calibration/bridge_flow/f150.amf
new file mode 100644
index 000000000..f07f6fb98
Binary files /dev/null and b/resources/calibration/bridge_flow/f150.amf differ
diff --git a/resources/calibration/bridge_flow/f155.amf b/resources/calibration/bridge_flow/f155.amf
new file mode 100644
index 000000000..ca578e95f
Binary files /dev/null and b/resources/calibration/bridge_flow/f155.amf differ
diff --git a/resources/calibration/bridge_flow/f160.amf b/resources/calibration/bridge_flow/f160.amf
new file mode 100644
index 000000000..ed947ef70
Binary files /dev/null and b/resources/calibration/bridge_flow/f160.amf differ
diff --git a/resources/calibration/bridge_flow/f165.amf b/resources/calibration/bridge_flow/f165.amf
new file mode 100644
index 000000000..c7040bfac
Binary files /dev/null and b/resources/calibration/bridge_flow/f165.amf differ
diff --git a/resources/calibration/bridge_flow/f170.amf b/resources/calibration/bridge_flow/f170.amf
new file mode 100644
index 000000000..33394f17a
Binary files /dev/null and b/resources/calibration/bridge_flow/f170.amf differ
diff --git a/resources/calibration/bridge_flow/f175.amf b/resources/calibration/bridge_flow/f175.amf
new file mode 100644
index 000000000..8910fcd67
Binary files /dev/null and b/resources/calibration/bridge_flow/f175.amf differ
diff --git a/resources/calibration/bridge_flow/f20.amf b/resources/calibration/bridge_flow/f20.amf
new file mode 100644
index 000000000..0a9c44bc0
Binary files /dev/null and b/resources/calibration/bridge_flow/f20.amf differ
diff --git a/resources/calibration/bridge_flow/f25.amf b/resources/calibration/bridge_flow/f25.amf
new file mode 100644
index 000000000..a255ef361
Binary files /dev/null and b/resources/calibration/bridge_flow/f25.amf differ
diff --git a/resources/calibration/bridge_flow/f30.amf b/resources/calibration/bridge_flow/f30.amf
new file mode 100644
index 000000000..ebdb8013e
Binary files /dev/null and b/resources/calibration/bridge_flow/f30.amf differ
diff --git a/resources/calibration/bridge_flow/f35.amf b/resources/calibration/bridge_flow/f35.amf
new file mode 100644
index 000000000..4880e39e8
Binary files /dev/null and b/resources/calibration/bridge_flow/f35.amf differ
diff --git a/resources/calibration/bridge_flow/f40.amf b/resources/calibration/bridge_flow/f40.amf
new file mode 100644
index 000000000..d2172ccf8
Binary files /dev/null and b/resources/calibration/bridge_flow/f40.amf differ
diff --git a/resources/calibration/bridge_flow/f45.amf b/resources/calibration/bridge_flow/f45.amf
new file mode 100644
index 000000000..2e80b4b8a
Binary files /dev/null and b/resources/calibration/bridge_flow/f45.amf differ
diff --git a/resources/calibration/bridge_flow/f50.amf b/resources/calibration/bridge_flow/f50.amf
new file mode 100644
index 000000000..748187052
Binary files /dev/null and b/resources/calibration/bridge_flow/f50.amf differ
diff --git a/resources/calibration/bridge_flow/f55.amf b/resources/calibration/bridge_flow/f55.amf
new file mode 100644
index 000000000..63697bd8f
Binary files /dev/null and b/resources/calibration/bridge_flow/f55.amf differ
diff --git a/resources/calibration/bridge_flow/f60.amf b/resources/calibration/bridge_flow/f60.amf
new file mode 100644
index 000000000..22e413dc8
Binary files /dev/null and b/resources/calibration/bridge_flow/f60.amf differ
diff --git a/resources/calibration/bridge_flow/f65.amf b/resources/calibration/bridge_flow/f65.amf
new file mode 100644
index 000000000..5c3fea1b7
Binary files /dev/null and b/resources/calibration/bridge_flow/f65.amf differ
diff --git a/resources/calibration/bridge_flow/f70.amf b/resources/calibration/bridge_flow/f70.amf
new file mode 100644
index 000000000..a36fa6131
Binary files /dev/null and b/resources/calibration/bridge_flow/f70.amf differ
diff --git a/resources/calibration/bridge_flow/f75.amf b/resources/calibration/bridge_flow/f75.amf
new file mode 100644
index 000000000..32bdd8be6
Binary files /dev/null and b/resources/calibration/bridge_flow/f75.amf differ
diff --git a/resources/calibration/bridge_flow/f80.amf b/resources/calibration/bridge_flow/f80.amf
new file mode 100644
index 000000000..dae2fa5ad
Binary files /dev/null and b/resources/calibration/bridge_flow/f80.amf differ
diff --git a/resources/calibration/bridge_flow/f85.amf b/resources/calibration/bridge_flow/f85.amf
new file mode 100644
index 000000000..674c7ff21
Binary files /dev/null and b/resources/calibration/bridge_flow/f85.amf differ
diff --git a/resources/calibration/bridge_flow/f90.amf b/resources/calibration/bridge_flow/f90.amf
new file mode 100644
index 000000000..5e1605edb
Binary files /dev/null and b/resources/calibration/bridge_flow/f90.amf differ
diff --git a/resources/calibration/bridge_flow/f95.amf b/resources/calibration/bridge_flow/f95.amf
new file mode 100644
index 000000000..c772ba0e1
Binary files /dev/null and b/resources/calibration/bridge_flow/f95.amf differ
diff --git a/resources/calibration/filament_temp/filament_temp.html b/resources/calibration/filament_temp/filament_temp.html
index d78cb703a..69ead7848 100644
--- a/resources/calibration/filament_temp/filament_temp.html
+++ b/resources/calibration/filament_temp/filament_temp.html
@@ -14,29 +14,32 @@
+Here, you can see that the 210 degree is the hottest we can print without problems (at least not heat-dependant, bad quality is due to high speed). Also, i succeed to break (with difficulty) a chunk of the 195 degree, so it's a bit too cold.
Results: destruction
Finally, you want to tear it apart to see if the lower temperature doesn't have adverse effect on layer bonding. It should be impossible to tear it apart with your own hands. If a floor can be easily broken, then this floor temperature is definitely too low (or you put too much cooling = fan are blowing too hard), so you should choose a higher temperature or try again with less cooling. When trying to break one, don't put your hands on the ends of the tower but on the tested floor and the next one, leaving only the bridge gaps between them.
How to tune your printer
diff --git a/resources/calibration/filament_temp/temp_tower.jpg b/resources/calibration/filament_temp/temp_tower.jpg
new file mode 100644
index 000000000..601c32d37
Binary files /dev/null and b/resources/calibration/filament_temp/temp_tower.jpg differ
diff --git a/resources/calibration/over-bridge_tuning/over-bridge_tuning.html b/resources/calibration/over-bridge_tuning/over-bridge_tuning.html
index dfc4dae70..3c560432a 100644
--- a/resources/calibration/over-bridge_tuning/over-bridge_tuning.html
+++ b/resources/calibration/over-bridge_tuning/over-bridge_tuning.html
@@ -2,11 +2,29 @@
- Document HTML
+ Ironing pattern calibration
-hello you
-bonjour le monde
+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 test will print tests samples with various level of obver-bridge flow ratio, between 100 and 125. Choose the lowest value where the top surface is smooth without rough "holes".
+Results
+
+
+Exemple:
+
+TODO |
+
+
+TODO |
+
+
+Advice
+TODO
+
+Notes
+This test set the setting "complete individual objects" to true, so you may want to reset your print settings afterwards
+Licence for models used for this calibration test: CC BY-SA 3.0
\ No newline at end of file
diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp
index 7feb43c16..36e73af8f 100644
--- a/src/libslic3r/PrintConfig.cpp
+++ b/src/libslic3r/PrintConfig.cpp
@@ -2084,10 +2084,11 @@ void PrintConfigDef::init_fff_params()
def->label = L("No perimeters on bridge areas");
def->category = OptionCategory::perimeter;
def->tooltip = L("Experimental option to remove perimeters where there is nothing under it and where a bridged infill should be better. "
- "\n * Remove perimeters: remove the unsupported perimeter, let the bridge area as-is."
- "\n * Keep only bridges: remove the unsupported perimeter, kep only bridges that end in solid area."
- "\n * Keep bridges and overhangs: remove the unsupported perimeter, keep only bridges that end in solid area, fill the rest with overhang perimeters+bridges."
- "\n * Fill the voids with bridges: remove the unsupported perimeter, draw bridges over the whole hole. !! can lead to problems with overhangs shape like /\\, consider carefully before using this option!"
+ "\n * Remove perimeters: remove the unsupported perimeters, let the bridge area as-is."
+ "\n * Keep only bridges: remove the perimeters in the bridge areas, keep only bridges that end in solid area."
+ "\n * Keep bridges and overhangs: remove the unsupported perimeters, keep only bridges that end in solid area, fill the rest with overhang perimeters+bridges."
+ "\n * Fill the voids with bridges: remove the unsupported perimeters, draw bridges over the whole hole.*"
+ " !! this one can escalate to problems with overhangs shape like /\\, so you should use it only on one layer at a time via the height-range modifier!"
"\n!!Computationally intensive!!. ");
def->enum_keys_map = &ConfigOptionEnum::get_enum_values();
def->enum_values.push_back("none");
diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt
index f4943de55..336c2f49e 100644
--- a/src/slic3r/CMakeLists.txt
+++ b/src/slic3r/CMakeLists.txt
@@ -18,12 +18,16 @@ set(SLIC3R_GUI_SOURCES
GUI/BackgroundSlicingProcess.hpp
GUI/BitmapCache.cpp
GUI/BitmapCache.hpp
+ GUI/CalibrationAbstractDialog.cpp
+ GUI/CalibrationAbstractDialog.hpp
GUI/CalibrationBedDialog.cpp
GUI/CalibrationBedDialog.hpp
GUI/CalibrationBridgeDialog.cpp
GUI/CalibrationBridgeDialog.hpp
GUI/CalibrationFlowDialog.cpp
GUI/CalibrationFlowDialog.hpp
+ GUI/CalibrationOverBridgeDialog.cpp
+ GUI/CalibrationOverBridgeDialog.hpp
GUI/CalibrationTempDialog.cpp
GUI/CalibrationTempDialog.hpp
GUI/ConfigSnapshotDialog.cpp
diff --git a/src/slic3r/GUI/CalibrationAbstractDialog.cpp b/src/slic3r/GUI/CalibrationAbstractDialog.cpp
new file mode 100644
index 000000000..e9e02221a
--- /dev/null
+++ b/src/slic3r/GUI/CalibrationAbstractDialog.cpp
@@ -0,0 +1,153 @@
+#include "CalibrationAbstractDialog.hpp"
+#include "I18N.hpp"
+#include "libslic3r/Utils.hpp"
+#include "GUI.hpp"
+#include "GUI_ObjectList.hpp"
+#include "Tab.hpp"
+#include
+#include
+#include
+
+#if ENABLE_SCROLLABLE
+static wxSize get_screen_size(wxWindow* window)
+{
+ const auto idx = wxDisplay::GetFromWindow(window);
+ wxDisplay display(idx != wxNOT_FOUND ? idx : 0u);
+ return display.GetClientArea().GetSize();
+}
+#endif // ENABLE_SCROLLABLE
+
+namespace Slic3r {
+namespace GUI {
+
+ CalibrationAbstractDialog::CalibrationAbstractDialog(GUI_App* app, MainFrame* mainframe, std::string name)
+ : DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L(name)),
+#if ENABLE_SCROLLABLE
+ wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
+#else
+ wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE)
+#endif // ENABLE_SCROLLABLE
+ {
+ this->gui_app = app;
+ this->main_frame = mainframe;
+ SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
+
+ // fonts
+ const wxFont& font = wxGetApp().normal_font();
+ const wxFont& bold_font = wxGetApp().bold_font();
+ SetFont(font);
+
+ }
+
+void CalibrationAbstractDialog::create(std::string html_path){
+
+ auto main_sizer = new wxBoxSizer(wxVERTICAL);
+
+ //html
+ html_viewer = new wxHtmlWindow(this, wxID_ANY,
+ wxDefaultPosition, wxSize(800, 500), wxHW_SCROLLBAR_AUTO);
+ html_viewer->LoadPage(Slic3r::resources_dir()+ html_path);
+ main_sizer->Add(html_viewer, 1, wxEXPAND | wxALL, 5);
+
+ wxStdDialogButtonSizer* buttons = new wxStdDialogButtonSizer();
+ create_buttons(buttons);
+
+ wxButton* close = new wxButton(this, wxID_CLOSE, _(L("Close")));
+ close->Bind(wxEVT_BUTTON, &CalibrationAbstractDialog::closeMe, this);
+ buttons->AddButton(close);
+ close->SetDefault();
+ close->SetFocus();
+ SetAffirmativeId(wxID_CLOSE);
+ buttons->Realize();
+ main_sizer->Add(buttons, 0, wxEXPAND | wxALL, 5);
+
+ SetSizer(main_sizer);
+ main_sizer->SetSizeHints(this);
+}
+
+void CalibrationAbstractDialog::closeMe(wxCommandEvent& event_args) {
+ this->Destroy();
+}
+
+ModelObject* CalibrationAbstractDialog::add_part(ModelObject* model_object, std::string input_file, Vec3d move, Vec3d scale) {
+ Model model;
+ try {
+ model = Model::read_from_file(input_file);
+ }
+ catch (std::exception & e) {
+ auto msg = _(L("Error!")) + " " + input_file + " : " + e.what() + ".";
+ show_error(this, msg);
+ exit(1);
+ }
+
+ for (ModelObject* object : model.objects) {
+ Vec3d delta = Vec3d::Zero();
+ if (model_object->origin_translation != Vec3d::Zero())
+ {
+ object->center_around_origin();
+ delta = model_object->origin_translation - object->origin_translation;
+ }
+ for (ModelVolume* volume : object->volumes) {
+ volume->translate(delta + move);
+ if (scale != Vec3d{ 1,1,1 }) {
+ volume->scale(scale);
+ }
+ ModelVolume* new_volume = model_object->add_volume(*volume);
+ new_volume->set_type(ModelVolumeType::MODEL_PART);
+ new_volume->name = boost::filesystem::path(input_file).filename().string();
+
+ //volumes_info.push_back(std::make_pair(from_u8(new_volume->name), new_volume->get_mesh_errors_count() > 0));
+
+ // set a default extruder value, since user can't add it manually
+ new_volume->config.set_key_value("extruder", new ConfigOptionInt(0));
+
+ //move to bed
+ /* const TriangleMesh& hull = new_volume->get_convex_hull();
+ float min_z = std::numeric_limits::max();
+ for (const stl_facet& facet : hull.stl.facet_start) {
+ for (int i = 0; i < 3; ++i)
+ min_z = std::min(min_z, Vec3f::UnitZ().dot(facet.vertex[i]));
+ }
+ volume->translate(Vec3d(0,0,-min_z));*/
+ }
+ }
+ assert(model.objects.size() == 1);
+ return model.objects.empty()?nullptr: model.objects[0];
+}
+
+void CalibrationAbstractDialog::on_dpi_changed(const wxRect& suggested_rect)
+{
+ msw_buttons_rescale(this, em_unit(), { wxID_OK });
+
+ Layout();
+ Fit();
+ Refresh();
+}
+
+wxPanel* CalibrationAbstractDialog::create_header(wxWindow* parent, const wxFont& bold_font)
+{
+ wxPanel* panel = new wxPanel(parent);
+ wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
+
+ wxFont header_font = bold_font;
+#ifdef __WXOSX__
+ header_font.SetPointSize(14);
+#else
+ header_font.SetPointSize(bold_font.GetPointSize() + 2);
+#endif // __WXOSX__
+
+ sizer->AddStretchSpacer();
+
+ // text
+ wxStaticText* text = new wxStaticText(panel, wxID_ANY, _(L("Keyboard shortcuts")));
+ text->SetFont(header_font);
+ sizer->Add(text, 0, wxALIGN_CENTER_VERTICAL);
+
+ sizer->AddStretchSpacer();
+
+ panel->SetSizer(sizer);
+ return panel;
+}
+
+} // namespace GUI
+} // namespace Slic3r
diff --git a/src/slic3r/GUI/CalibrationAbstractDialog.hpp b/src/slic3r/GUI/CalibrationAbstractDialog.hpp
new file mode 100644
index 000000000..5088bd27e
--- /dev/null
+++ b/src/slic3r/GUI/CalibrationAbstractDialog.hpp
@@ -0,0 +1,42 @@
+#ifndef slic3r_GUI_CalibrationAbstractDialog_hpp_
+#define slic3r_GUI_CalibrationAbstractDialog_hpp_
+
+#include
+#include