Compare commits

..

1 Commits

Author SHA1 Message Date
dependabot[bot]
ce10bc1f0a Bump microsoft/setup-msbuild from 2 to 3
Bumps [microsoft/setup-msbuild](https://github.com/microsoft/setup-msbuild) from 2 to 3.
- [Release notes](https://github.com/microsoft/setup-msbuild/releases)
- [Commits](https://github.com/microsoft/setup-msbuild/compare/v2...v3)

---
updated-dependencies:
- dependency-name: microsoft/setup-msbuild
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-01 21:00:40 +00:00
13 changed files with 22 additions and 194 deletions

View File

@@ -52,7 +52,7 @@ jobs:
- name: setup dev on Windows
if: runner.os == 'Windows'
uses: microsoft/setup-msbuild@v2
uses: microsoft/setup-msbuild@v3
- name: Get the date on Ubuntu and macOS
if: runner.os != 'Windows'

View File

@@ -275,7 +275,7 @@ jobs:
# Windows
- name: setup MSVC
if: runner.os == 'Windows'
uses: microsoft/setup-msbuild@v2
uses: microsoft/setup-msbuild@v3
- name: Install nsis
if: runner.os == 'Windows' && !vars.SELF_HOSTED

View File

@@ -1654,7 +1654,7 @@ msgid "Based on PrusaSlicer and BambuStudio"
msgstr "Basierend auf PrusaSlicer und BambuStudio"
msgid "STEP files"
msgstr "STEP Dateien"
msgstr "SETP Dateien"
msgid "STL files"
msgstr "STL Dateien"

View File

@@ -1,6 +1,6 @@
{
"name": "Creality",
"version": "02.03.02.61",
"version": "02.03.02.60",
"force_update": "0",
"description": "Creality configurations",
"machine_model_list": [

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -5,9 +5,9 @@
"nozzle_diameter": "0.2;0.4;0.6;0.8",
"machine_tech": "FFF",
"family": "Creality",
"bed_model": "creality_k2_buildplate_model.stl",
"bed_model": "creality_k1_buildplate_model.stl",
"default_bed_type": "Textured PEI Plate",
"bed_texture": "creality_k2_buildplate_texture.png",
"bed_texture": "creality_k1_buildplate_texture.png",
"hotend_model": "",
"default_materials": "Creality Generic ABS @K2-all;Creality Generic ASA @K2-all;Creality Generic PETG @K2-all;Creality Generic PLA @K2-all;Creality Generic PLA High Speed @K2-all;Creality Generic PLA Matte @K2-all;Creality Generic PLA Silk @K2-all"
}

View File

@@ -196,7 +196,7 @@ void group_region_by_fuzzify(PerimeterGenerator& g)
surfaces.push_back(&surface);
}
if (cfg.type != FuzzySkinType::None && cfg.type != FuzzySkinType::Disabled_fuzzy) {
if (cfg.type != FuzzySkinType::None) {
g.has_fuzzy_skin = true;
if (cfg.type != FuzzySkinType::External) {
g.has_fuzzy_hole = true;

View File

@@ -5354,10 +5354,8 @@ void GCodeProcessor::process_M1020(const GCodeReader::GCodeLine &line)
BOOST_LOG_TRIVIAL(error) << "Invalid M1020 command (" << line.raw() << ").";
}
else {
if (eid >= m_result.filaments_count) {
if (eid >= m_result.filaments_count)
BOOST_LOG_TRIVIAL(error) << "Invalid M1020 command (" << line.raw() << ").";
return;
}
process_filament_change(eid);
}
}
@@ -5385,10 +5383,8 @@ void GCodeProcessor::process_T(const std::string_view command)
BOOST_LOG_TRIVIAL(error) << "Invalid T command (" << command << ").";
}
else {
if (eid >= m_result.filaments_count) {
if (eid >= m_result.filaments_count)
BOOST_LOG_TRIVIAL(error) << "Invalid T command (" << command << ").";
return;
}
process_filament_change(eid);
}
}

View File

@@ -4277,10 +4277,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
p = p->GetParent();
auto *top_level_wnd = dynamic_cast<wxTopLevelWindow*>(p);
//Orca: Set focus so hotkeys like 'tab' work when a notification is shown.
//But don't steal focus from text input controls.
wxWindow* focused = wxWindow::FindFocus();
bool focus_in_text_ctrl = dynamic_cast<wxTextCtrl*>(focused) != nullptr;
if (top_level_wnd != nullptr && top_level_wnd->IsActive() && !focus_in_text_ctrl)
if (top_level_wnd != nullptr && top_level_wnd->IsActive())
m_canvas->SetFocus();
}
m_mouse.position = pos.cast<double>();

View File

@@ -750,51 +750,18 @@ wxMenuItem* MenuFactory::append_menu_item_settings(wxMenu* menu_)
wxMenuItem* MenuFactory::append_menu_item_change_type(wxMenu* menu)
{
const wxString menu_name = _L("Change type");
// Delete old menu item if exists
const int item_id = menu->FindItem(menu_name);
if (item_id != wxNOT_FOUND)
menu->Destroy(item_id);
// Create submenu
wxMenu* type_menu = new wxMenu();
struct TypeInfo {
ModelVolumeType type;
wxString label;
};
std::vector<TypeInfo> types = {
{ ModelVolumeType::MODEL_PART, _L("Part") },
{ ModelVolumeType::NEGATIVE_VOLUME, _L("Negative Part") },
{ ModelVolumeType::PARAMETER_MODIFIER, _L("Modifier") },
{ ModelVolumeType::SUPPORT_BLOCKER, _L("Support Blocker") },
{ ModelVolumeType::SUPPORT_ENFORCER, _L("Support Enforcer") }
};
for (const auto& info : types) {
wxMenuItem* item = append_menu_check_item(type_menu, wxID_ANY, info.label, "",
[type = info.type](wxCommandEvent&) { obj_list()->set_volume_type(type); }, type_menu);
// Update checkmark dynamically when menu is shown - check all selected volumes
m_parent->Bind(wxEVT_UPDATE_UI, [type = info.type](wxUpdateUIEvent& evt) {
bool has_type = false;
wxDataViewItemArray sels;
obj_list()->GetSelections(sels);
for (auto item : sels) {
ModelVolumeType vol_type = obj_list()->GetModel()->GetVolumeType(item);
if (vol_type == type) {
has_type = true;
break;
}
}
evt.Check(has_type);
}, item->GetId());
}
menu->Append(wxID_ANY, menu_name, type_menu, _L("Change part type"));
return nullptr;
return append_menu_item(menu, wxID_ANY, _L("Change type"), "",
[](wxCommandEvent&) { obj_list()->change_part_type(); }, "", menu,
[]() {
wxDataViewItemArray selections;
obj_list()->GetSelections(selections);
if (selections.empty()) return false;
for (const auto& it : selections) {
if (!(obj_list()->GetModel()->GetItemType(it) & itVolume))
return false; // non-volume present -> disable
}
return true;
}, m_parent);
}
wxMenuItem* MenuFactory::append_menu_item_instance_to_object(wxMenu* menu)

View File

@@ -5538,136 +5538,6 @@ void ObjectList::change_part_type()
return;
}
ModelVolumeType ObjectList::get_selected_volume_type()
{
ModelVolume* volume = get_selected_model_volume();
if (volume)
return volume->type();
return ModelVolumeType::INVALID;
}
void ObjectList::set_volume_type(ModelVolumeType new_type)
{
struct VolumeSelection {
int object_idx;
ModelVolume* volume;
};
std::vector<VolumeSelection> volumes;
auto add_volume = [&volumes](int obj_idx, ModelVolume* volume) {
if (volume == nullptr)
return;
auto it = std::find_if(volumes.begin(), volumes.end(), [volume](const VolumeSelection& other) { return other.volume == volume; });
if (it == volumes.end())
volumes.push_back({ obj_idx, volume });
};
wxDataViewItemArray sels;
GetSelections(sels);
for (auto item : sels) {
wxDataViewItem volume_item = item;
ItemType type = m_objects_model->GetItemType(item);
if (!(type & itVolume)) {
if ((type & itSettings) && (m_objects_model->GetItemType(m_objects_model->GetParent(item)) & itVolume))
volume_item = m_objects_model->GetParent(item);
else
continue;
}
const int obj_idx = m_objects_model->GetObjectIdByItem(volume_item);
const int vol_idx = m_objects_model->GetVolumeIdByItem(volume_item);
if (obj_idx < 0 || vol_idx < 0 || obj_idx >= m_objects->size())
continue;
const int real_idx = m_objects_model->get_real_volume_index_in_3d(obj_idx, vol_idx);
if (real_idx < 0 || real_idx >= (*m_objects)[obj_idx]->volumes.size())
continue;
add_volume(obj_idx, (*m_objects)[obj_idx]->volumes[real_idx]);
}
auto collect_from_canvas = [&add_volume](GLCanvas3D* canvas) {
if (canvas == nullptr)
return;
const Selection& selection = canvas->get_selection();
for (auto idx : selection.get_volume_idxs()) {
const GLVolume* gl_volume = selection.get_volume(idx);
if (gl_volume == nullptr || gl_volume->object_idx() < 0)
continue;
ModelVolume* volume = get_model_volume(*gl_volume, selection.get_model()->objects);
add_volume(gl_volume->object_idx(), volume);
}
};
if (volumes.empty()) {
collect_from_canvas(wxGetApp().plater()->canvas3D());
if (volumes.empty()) {
auto canvas_type = wxGetApp().plater()->get_current_canvas3D()->get_canvas_type();
if (canvas_type == GLCanvas3D::ECanvasType::CanvasView3D && is_connectors_item_selected())
collect_from_canvas(wxGetApp().plater()->get_view3D_canvas3D());
}
if (volumes.empty())
return;
}
const bool any_diff = std::any_of(volumes.begin(), volumes.end(),
[new_type](const VolumeSelection& sel) { return sel.volume->type() != new_type; });
if (!any_diff)
return;
if (new_type != ModelVolumeType::MODEL_PART) {
std::map<int, int> total_part_cnt;
std::map<int, int> selected_part_cnt;
for (const auto& sel : volumes) {
if (total_part_cnt.find(sel.object_idx) == total_part_cnt.end()) {
int count = 0;
for (auto vol : (*m_objects)[sel.object_idx]->volumes)
if (vol->type() == ModelVolumeType::MODEL_PART)
++count;
total_part_cnt.emplace(sel.object_idx, count);
}
if (sel.volume->type() == ModelVolumeType::MODEL_PART)
++selected_part_cnt[sel.object_idx];
}
for (const auto& sel : selected_part_cnt) {
auto it = total_part_cnt.find(sel.first);
if (it != total_part_cnt.end() && it->second > 0 && sel.second == it->second) {
Slic3r::GUI::show_error(nullptr, _(L("The type of the last solid object part is not to be changed.")));
return;
}
}
}
take_snapshot("Change part type");
std::set<const ModelVolume*> changed_volumes;
std::set<int> touched_objects;
for (const auto& sel : volumes) {
sel.volume->set_type(new_type);
changed_volumes.insert(sel.volume);
touched_objects.insert(sel.object_idx);
}
wxDataViewItemArray new_selection;
for (int obj_idx : touched_objects) {
wxDataViewItemArray sel_items = reorder_volumes_and_get_selection(obj_idx, [&changed_volumes](const ModelVolume* volume) {
return changed_volumes.find(volume) != changed_volumes.end();
});
for (const auto& item : sel_items)
new_selection.push_back(item);
}
if (!new_selection.IsEmpty()) {
m_prevent_list_events = true;
UnselectAll();
SetSelections(new_selection);
m_prevent_list_events = false;
}
}
void ObjectList::last_volume_is_deleted(const int obj_idx)
{
// BBS: object (obj_idx calc in obj list) is already removed from m_objects in Plater::priv::remove().

View File

@@ -414,8 +414,6 @@ public:
ModelVolume* get_selected_model_volume();
void change_part_type();
void set_volume_type(ModelVolumeType new_type);
ModelVolumeType get_selected_volume_type();
void last_volume_is_deleted(const int obj_idx);
void update_and_show_object_settings_item();