diff --git a/doc/How to build - Windows.md b/doc/How to build - Windows.md index b8829047bf..c2dc31ce31 100644 --- a/doc/How to build - Windows.md +++ b/doc/How to build - Windows.md @@ -120,3 +120,49 @@ Refer to the CMake scripts inside the `deps` directory to see which dependencies \*) Specifically, the problem arises when building boost. Boost build tool appends all build options into paths of intermediate files, which are not handled correctly by either `b2.exe` or possibly `ninja` (?). + + +# Noob guide (step by step) + +Install Visual Studio Community 2019 from +visualstudio.microsoft.com/vs/ +Select all workload options for C++ + +Install git for Windows from +gitforwindows.org +download and run the exe accepting all defaults + +download PrusaSlicer-master.zip from github +I downloaded this to c:\PrusaSlicer and unzipped to c:\PrusaSlicer\PrusaSlicer-master\ so this will be my prefix for all my steps. Substitute your prefix. + +Go to the Windows Start Menu and Click on "Visual Studio 2019" folder, then select the ->"x64 Native Tools Command Prompt" to open a command window + +cd c:\PrusaSlicer\PrusaSlicer-master\deps + +mkdir build + +cd build + +cmake .. -G "Visual Studio 16 2019" -DDESTDIR="c:\PrusaSlicer\PrusaSlicer-master" + +msbuild /m ALL_BUILD.vcxproj // This took 13.5 minutes on my machine: core I7-7700K @ 4.2Ghz with 32GB main memory and 20min on a average laptop + +cd c:\PrusaSlicer\PrusaSlicer-master\ + +mkdir build + +cd build + +cmake .. -G "Visual Studio 16 2019" -DCMAKE_PREFIX_PATH="c:\PrusaSlicer\PrusaSlicer-master\usr\local" + +open Visual Studio for c++ development (VS asks this the first time you start it) + +Open->Project/Solution or File->Open->Project/Solution (depending on which dialog comes up first) + +click on c:\PrusaSlicer\PrusaSlicer-master\build\PrusaSlicer.sln + +Debug->Start Debugging or Debug->Start Without debugging +PrusaSlicer should start. You're up and running! + + +note: Thanks to @douggorgen for the original guide, as an answer for a issue diff --git a/src/libslic3r/Format/3mf.cpp b/src/libslic3r/Format/3mf.cpp index 376b34ca8a..b485e83d86 100644 --- a/src/libslic3r/Format/3mf.cpp +++ b/src/libslic3r/Format/3mf.cpp @@ -87,6 +87,7 @@ const char* V3_ATTR = "v3"; const char* OBJECTID_ATTR = "objectid"; const char* TRANSFORM_ATTR = "transform"; const char* PRINTABLE_ATTR = "printable"; +const char* INSTANCESCOUNT_ATTR = "instances_count"; const char* KEY_ATTR = "key"; const char* VALUE_ATTR = "value"; @@ -1613,6 +1614,9 @@ namespace Slic3r { return false; } + // Added because of github #3435, currently not used by PrusaSlicer + int instances_count_id = get_attribute_value_int(attributes, num_attributes, INSTANCESCOUNT_ATTR); + m_objects_metadata.insert(IdToMetadataMap::value_type(object_id, ObjectMetadata())); m_curr_config.object_id = object_id; return true; @@ -2495,7 +2499,8 @@ namespace Slic3r { const ModelObject* obj = obj_metadata.second.object; if (obj != nullptr) { - stream << " <" << OBJECT_TAG << " id=\"" << obj_metadata.first << "\">\n"; + // Output of instances count added because of github #3435, currently not used by PrusaSlicer + stream << " <" << OBJECT_TAG << " " << ID_ATTR << "=\"" << obj_metadata.first << "\" " << INSTANCESCOUNT_ATTR << "=\"" << obj->instances.size() << "\">\n"; // stores object's name if (!obj->name.empty()) diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index 971bd1f1d3..265e7f203a 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -1605,7 +1605,27 @@ void ConfigWizard::priv::on_3rdparty_install(const VendorProfile *vendor, bool i load_pages(); } -bool ConfigWizard::priv::check_material_config(Technology technology) +bool ConfigWizard::priv::on_bnt_finish() +{ + /* When Filaments or Sla Materials pages are activated, + * materials for this pages are automaticaly updated and presets are reloaded. + * + * But, if _Finish_ button was clicked without activation of those pages + * (for example, just some printers were added/deleted), + * than last changes wouldn't be updated for filaments/materials. + * SO, do that before close of Wizard + */ + update_materials(T_ANY); + if (any_fff_selected) + page_filaments->reload_presets(); + if (any_sla_selected) + page_sla_materials->reload_presets(); + + // check, that there is selected at least one filament/material + return check_materials_in_config(T_ANY); +} + +bool ConfigWizard::priv::check_materials_in_config(Technology technology) { const auto exist_preset = [this](const std::string& section, const Materials& materials) { @@ -1899,16 +1919,15 @@ ConfigWizard::ConfigWizard(wxWindow *parent) // check, that there is selected at least one filament/material ConfigWizardPage* active_page = this->p->index->active_page(); if ( (active_page == p->page_filaments || active_page == p->page_sla_materials) - && !p->check_material_config(dynamic_cast(active_page)->materials->technology)) + && !p->check_materials_in_config(dynamic_cast(active_page)->materials->technology)) return; this->p->index->go_next(); }); p->btn_finish->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) { - if (!p->check_material_config(T_ANY)) - return; - this->EndModal(wxID_OK); + if (p->on_bnt_finish()) + this->EndModal(wxID_OK); }); p->btn_sel_all->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) { diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp index fc91909e71..a90832a3fc 100644 --- a/src/slic3r/GUI/ConfigWizard_private.hpp +++ b/src/slic3r/GUI/ConfigWizard_private.hpp @@ -489,7 +489,8 @@ struct ConfigWizard::priv void on_printer_pick(PagePrinters *page, const PrinterPickerEvent &evt); void on_3rdparty_install(const VendorProfile *vendor, bool install); - bool check_material_config(Technology technology); + bool on_bnt_finish(); + bool check_materials_in_config(Technology technology); void apply_config(AppConfig *app_config, PresetBundle *preset_bundle, const PresetUpdater *updater); // #ys_FIXME_alise void update_presets_in_config(const std::string& section, const std::string& alias_key, bool add); diff --git a/src/slic3r/GUI/Mouse3DController.cpp b/src/slic3r/GUI/Mouse3DController.cpp index ad5be88d8c..a4c9ef2554 100644 --- a/src/slic3r/GUI/Mouse3DController.cpp +++ b/src/slic3r/GUI/Mouse3DController.cpp @@ -311,11 +311,11 @@ void Mouse3DController::render_settings_dialog(unsigned int canvas_width, unsign ImGui::PopStyleColor(); float translation_scale = (float)m_state.get_translation_scale() / State::DefaultTranslationScale; - if (imgui.slider_float(_(L("Translation")) + "##1", &translation_scale, 0.5f, 2.0f, "%.1f")) + if (imgui.slider_float(_(L("Translation")) + "##1", &translation_scale, 0.5f, 5.0f, "%.1f")) m_state.set_translation_scale(State::DefaultTranslationScale * (double)translation_scale); float rotation_scale = m_state.get_rotation_scale() / State::DefaultRotationScale; - if (imgui.slider_float(_(L("Rotation")) + "##1", &rotation_scale, 0.5f, 2.0f, "%.1f")) + if (imgui.slider_float(_(L("Rotation")) + "##1", &rotation_scale, 0.5f, 5.0f, "%.1f")) m_state.set_rotation_scale(State::DefaultRotationScale * rotation_scale); ImGui::Separator();