diff --git a/resources/images/design_rib.svg b/resources/images/design_rib.svg
new file mode 100644
index 0000000000..b481e38d23
--- /dev/null
+++ b/resources/images/design_rib.svg
@@ -0,0 +1 @@
+
diff --git a/resources/images/design_thicken.svg b/resources/images/design_thicken.svg
new file mode 100644
index 0000000000..bfcd356cfa
--- /dev/null
+++ b/resources/images/design_thicken.svg
@@ -0,0 +1 @@
+
diff --git a/src/slic3r/GUI/DesignPanel.cpp b/src/slic3r/GUI/DesignPanel.cpp
index 19e2030db9..b5a9eae5a0 100644
--- a/src/slic3r/GUI/DesignPanel.cpp
+++ b/src/slic3r/GUI/DesignPanel.cpp
@@ -555,7 +555,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
m_loft_refs.clear(); // fresh loft: nothing pre-checked
open_tool(Tool::Loft);
}, SHIFT('L')},
- {"design_extrude", _L("Thicken"), _L("Offset a solid face into a thin plate (new body)"),
+ {"design_thicken", _L("Thicken"), _L("Offset a solid face into a thin plate (new body)"),
[this] {
if (m_doc.bodies.empty()) {
m_status->SetForegroundColour(wxColour(235, 110, 110));
@@ -575,7 +575,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
m_thicken_face_label->SetLabel(_L("(pick a solid face)"));
open_tool(Tool::Thicken);
}, 0},
- {"design_extrude", _L("Rib"), _L("Grow a thin wall from an open sketch line, fused to a body"),
+ {"design_rib", _L("Rib"), _L("Grow a thin wall from an open sketch line, fused to a body"),
[this] {
if (m_doc.bodies.empty()) {
m_status->SetForegroundColour(wxColour(235, 110, 110));
@@ -628,10 +628,11 @@ DesignPanel::DesignPanel(wxWindow* parent)
fadd("pattern", b_pattern);
// Surface: sheet-body tools (extrude / revolve / loft / fill / offset / thicken)
- // design_surface, not design_extrude: sharing a face with the Add-material drawer made
- // the two buttons indistinguishable in the bar.
+ // The drawer BUTTON is design_surface, not design_extrude: sharing a face with the
+ // Add-material drawer made the two buttons indistinguishable in the bar. The entries
+ // inside may reuse the solid glyphs — a menu row carries its own text label.
feat_dropdown("surface", "design_surface", _L("Surface (extrude / revolve / loft / fill / offset / thicken)"), {
- {"design_surface", _L("Surface Extrude"), _L("Extrude a sketch into a sheet body (no end caps)"),
+ {"design_extrude", _L("Surface Extrude"), _L("Extrude a sketch into a sheet body (no end caps)"),
[this] {
m_surf_extrude_sketch_ref = resolve_extrude_sketch();
if (m_surf_extrude_sketch_ref < 0) {
@@ -642,7 +643,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
}
open_tool(Tool::SurfaceExtrude);
}, SHIFT('G')},
- {"design_surface", _L("Surface Revolve"), _L("Revolve a sketch profile into a sheet body"),
+ {"design_revolve", _L("Surface Revolve"), _L("Revolve a sketch profile into a sheet body"),
[this] {
m_surf_revolve_sketch_ref = resolve_extrude_sketch();
if (m_surf_revolve_sketch_ref < 0) {
@@ -678,7 +679,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
}
open_tool(Tool::SurfaceFill);
}, SHIFT('Q')},
- {"design_surface", _L("Surface Offset"), _L("Offset a sheet body's shell by a signed distance"),
+ {"design_offset", _L("Surface Offset"), _L("Offset a sheet body's shell by a signed distance"),
[this] {
populate_sheet_body_choices(m_surf_offset_body);
if (m_surf_offset_body->GetCount() == 0) {
@@ -689,7 +690,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
}
open_tool(Tool::SurfaceOffset);
}, SHIFT('U')},
- {"design_surface", _L("Thicken Surface"), _L("Thicken a sheet body into a solid"),
+ {"design_thicken", _L("Thicken Surface"), _L("Thicken a sheet body into a solid"),
[this] {
populate_sheet_body_choices(m_surf_thicken_body);
if (m_surf_thicken_body->GetCount() == 0) {
@@ -709,14 +710,14 @@ DesignPanel::DesignPanel(wxWindow* parent)
reset_plane_refs();
open_tool(Tool::Plane);
}, SHIFT('P')},
- {"design_plane", _L("Axis"), _L("Datum axis (two points, face normal, cylinder centerline, two planes, along edge)"),
+ {"design_line", _L("Axis"), _L("Datum axis (two points, face normal, cylinder centerline, two planes, along edge)"),
[this] {
populate_plane_choices(m_axis_plane_a);
populate_plane_choices(m_axis_plane_b);
reset_axis_refs();
open_tool(Tool::Axis);
}, SHIFT('A')},
- {"design_plane", _L("Coord Sys"), _L("Datum coordinate system (world point, or face + direction edge)"),
+ {"design_point", _L("Coord Sys"), _L("Datum coordinate system (world point, or face + direction edge)"),
[this] {
reset_coordsys_refs();
open_tool(Tool::CoordSys);
@@ -796,7 +797,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
populate_plane_choices(m_mirror_plane);
open_tool(Tool::Mirror);
}, SHIFT('Z')},
- {"design_plane", _L("Mate"), _L("Assembly: align two CoordSys features (fastened, planar, revolute, slider, cylindrical)"),
+ {"design_c_coincident", _L("Mate"), _L("Assembly: align two CoordSys features (fastened, planar, revolute, slider, cylindrical)"),
[this] {
open_tool(Tool::Mate);
}, 0},
@@ -849,7 +850,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
[this] { open_tool(Tool::Draft); }, SHIFT('D')},
{"design_shell", _L("Shell"), _L("Hollow the body to a wall thickness, opening a picked face"),
[this] { open_tool(Tool::Shell); }, SHIFT('K')},
- {"design_dressup", _L("Delete Face"), _L("Remove faces from a body and heal the solid"),
+ {"design_delete", _L("Delete Face"), _L("Remove faces from a body and heal the solid"),
[this] {
if (m_doc.bodies.empty()) {
m_status->SetForegroundColour(wxColour(235, 110, 110));
@@ -1643,7 +1644,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Revolve (sweep a sketch profile about an in-plane axis) ---
m_box_revolve = new wxBoxSizer(wxVERTICAL);
- m_box_revolve->Add(card_header(m_cards, "design_extrude", _L("Revolve"), m_hdr_revolve), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_revolve->Add(card_header(m_cards, "design_revolve", _L("Revolve"), m_hdr_revolve), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_revolve->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
m_revolve_sketch_label = new wxStaticText(m_cards, wxID_ANY, _L("Sketch: —"));
m_box_revolve->Add(m_revolve_sketch_label, 0, wxLEFT | wxRIGHT | wxTOP, 12);
@@ -1680,7 +1681,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Sweep (sweep a profile sketch along a path sketch) ---
m_box_sweep = new wxBoxSizer(wxVERTICAL);
- m_box_sweep->Add(card_header(m_cards, "design_extrude", _L("Sweep"), m_hdr_sweep), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_sweep->Add(card_header(m_cards, "design_sweep", _L("Sweep"), m_hdr_sweep), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_sweep->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
m_sweep_profile_label = new wxStaticText(m_cards, wxID_ANY, _L("Profile: —"));
m_box_sweep->Add(m_sweep_profile_label, 0, wxLEFT | wxRIGHT | wxTOP, 12);
@@ -1706,7 +1707,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Pattern (replicate the target body: linear or circular) ---
m_box_pattern = new wxBoxSizer(wxVERTICAL);
- m_box_pattern->Add(card_header(m_cards, "design_extrude", _L("Pattern"), m_hdr_pattern), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_pattern->Add(card_header(m_cards, "design_pattern", _L("Pattern"), m_hdr_pattern), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_pattern->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
{
auto* pform = two_col_form();
@@ -1826,7 +1827,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Plane (datum/reference plane: offset + tilt from a base plane; no solid) ---
m_box_plane = new wxBoxSizer(wxVERTICAL);
- m_box_plane->Add(card_header(m_cards, "design_sketch", _L("Plane"), m_hdr_plane), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_plane->Add(card_header(m_cards, "design_plane", _L("Plane"), m_hdr_plane), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_plane->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
{
// Plane type chooses which inputs matter (Onshape/Fusion parity):
@@ -1892,7 +1893,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Loft (skin a solid through 2+ ordered profile sketches) ---
m_box_loft = new wxBoxSizer(wxVERTICAL);
- m_box_loft->Add(card_header(m_cards, "design_extrude", _L("Loft"), m_hdr_loft), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_loft->Add(card_header(m_cards, "design_loft", _L("Loft"), m_hdr_loft), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_loft->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
m_box_loft->Add(new wxStaticText(m_cards, wxID_ANY, _L("Profiles (check 2+, in order):")),
0, wxLEFT | wxRIGHT | wxTOP, 12);
@@ -1940,7 +1941,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Surface Revolve (sheet body from sketch about axis) ---
m_box_surf_revolve = new wxBoxSizer(wxVERTICAL);
- m_box_surf_revolve->Add(card_header(m_cards, "design_extrude", _L("Surface Revolve"), m_hdr_surf_revolve), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_surf_revolve->Add(card_header(m_cards, "design_revolve", _L("Surface Revolve"), m_hdr_surf_revolve), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_surf_revolve->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
m_surf_revolve_sketch_label = new wxStaticText(m_cards, wxID_ANY, _L("Sketch: —"));
m_box_surf_revolve->Add(m_surf_revolve_sketch_label, 0, wxLEFT | wxRIGHT | wxTOP, 12);
@@ -1983,7 +1984,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Surface Fill (one-face sheet from sketch boundary) ---
m_box_surf_fill = new wxBoxSizer(wxVERTICAL);
- m_box_surf_fill->Add(card_header(m_cards, "design_extrude", _L("Surface Fill"), m_hdr_surf_fill), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_surf_fill->Add(card_header(m_cards, "design_surface", _L("Surface Fill"), m_hdr_surf_fill), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_surf_fill->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
m_surf_fill_sketch_label = new wxStaticText(m_cards, wxID_ANY, _L("Sketch: —"));
m_box_surf_fill->Add(m_surf_fill_sketch_label, 0, wxLEFT | wxRIGHT | wxTOP, 12);
@@ -1994,7 +1995,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Surface Offset (offset a sheet body) ---
m_box_surf_offset = new wxBoxSizer(wxVERTICAL);
- m_box_surf_offset->Add(card_header(m_cards, "design_extrude", _L("Surface Offset"), m_hdr_surf_offset), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_surf_offset->Add(card_header(m_cards, "design_offset", _L("Surface Offset"), m_hdr_surf_offset), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_surf_offset->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
{
auto* oform = two_col_form();
@@ -2015,7 +2016,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Thicken Surface (thicken a sheet body into a solid) ---
m_box_surf_thicken = new wxBoxSizer(wxVERTICAL);
- m_box_surf_thicken->Add(card_header(m_cards, "design_extrude", _L("Thicken Surface"), m_hdr_surf_thicken), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_surf_thicken->Add(card_header(m_cards, "design_thicken", _L("Thicken Surface"), m_hdr_surf_thicken), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_surf_thicken->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
{
auto* tform = two_col_form();
@@ -2048,7 +2049,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
sform->Add(m_shell_face_label, 0, wxALIGN_CENTER_VERTICAL);
m_box_shell = new wxBoxSizer(wxVERTICAL);
- m_box_shell->Add(card_header(m_cards, "design_dressup", _L("Shell"), m_hdr_shell), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_shell->Add(card_header(m_cards, "design_shell", _L("Shell"), m_hdr_shell), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_shell->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
m_box_shell->Add(new wxStaticText(m_cards, wxID_ANY,
_L("Pick a solid face to open it, then set the wall thickness.")),
@@ -2066,7 +2067,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
drform->Add(m_draft_face_label, 0, wxALIGN_CENTER_VERTICAL);
m_box_draft = new wxBoxSizer(wxVERTICAL);
- m_box_draft->Add(card_header(m_cards, "design_dressup", _L("Draft"), m_hdr_draft), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_draft->Add(card_header(m_cards, "design_draft", _L("Draft"), m_hdr_draft), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_draft->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
m_box_draft->Add(new wxStaticText(m_cards, wxID_ANY,
_L("Pick a side face, then set the draft angle. The face pivots about the body base.")),
@@ -2165,7 +2166,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Thicken (offset one solid face into a thin plate) ---
m_box_thicken = new wxBoxSizer(wxVERTICAL);
- m_box_thicken->Add(card_header(m_cards, "design_extrude", _L("Thicken"), m_hdr_thicken), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_thicken->Add(card_header(m_cards, "design_thicken", _L("Thicken"), m_hdr_thicken), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_thicken->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
{
auto* tform = two_col_form();
@@ -2196,7 +2197,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Rib (thin wall from an open sketch line, fused to a body) ---
m_box_rib = new wxBoxSizer(wxVERTICAL);
- m_box_rib->Add(card_header(m_cards, "design_extrude", _L("Rib"), m_hdr_rib), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_rib->Add(card_header(m_cards, "design_rib", _L("Rib"), m_hdr_rib), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_rib->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
{
auto* rform = two_col_form();
@@ -2257,7 +2258,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Delete Face (remove faces, heal the solid) ---
m_box_delete_face = new wxBoxSizer(wxVERTICAL);
- m_box_delete_face->Add(card_header(m_cards, "design_dressup", _L("Delete Face"), m_hdr_delete_face), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_delete_face->Add(card_header(m_cards, "design_delete", _L("Delete Face"), m_hdr_delete_face), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_delete_face->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
{
auto* dform = two_col_form();
@@ -2353,7 +2354,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Axis (datum axis: line through two points or derived from geometry) ---
m_box_axis = new wxBoxSizer(wxVERTICAL);
- m_box_axis->Add(card_header(m_cards, "design_plane", _L("Axis"), m_hdr_axis), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_axis->Add(card_header(m_cards, "design_line", _L("Axis"), m_hdr_axis), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_axis->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
{
m_axis_type = make_combo(m_cards);
@@ -2411,7 +2412,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- CoordSys (datum coordinate system: point + orthonormal frame) ---
m_box_coordsys = new wxBoxSizer(wxVERTICAL);
- m_box_coordsys->Add(card_header(m_cards, "design_plane", _L("Coord Sys"), m_hdr_coordsys), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_coordsys->Add(card_header(m_cards, "design_point", _L("Coord Sys"), m_hdr_coordsys), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_coordsys->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
{
m_coordsys_type = make_combo(m_cards);
@@ -2470,7 +2471,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
// --- Mate (assembly: align two CoordSys features) ---
m_box_mate = new wxBoxSizer(wxVERTICAL);
- m_box_mate->Add(card_header(m_cards, "design_plane", _L("Mate"), m_hdr_mate), 0, wxLEFT | wxRIGHT | wxTOP, 12);
+ m_box_mate->Add(card_header(m_cards, "design_c_coincident", _L("Mate"), m_hdr_mate), 0, wxLEFT | wxRIGHT | wxTOP, 12);
m_box_mate->Add(new wxStaticLine(m_cards), 0, wxEXPAND | wxALL, 8);
{
auto* mform = two_col_form();
@@ -2691,7 +2692,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
m_tree_images->Add(create_scaled_bitmap("design_dressup", nullptr, 16)); // 2 Fillet/Chamfer
m_tree_images->Add(create_scaled_bitmap("design_hole", nullptr, 16)); // 3 Hole
m_tree_images->Add(create_scaled_bitmap("design_thread", nullptr, 16)); // 4 Thread
- m_tree_images->Add(create_scaled_bitmap("design_dressup", nullptr, 16)); // 5 Shell
+ m_tree_images->Add(create_scaled_bitmap("design_shell", nullptr, 16)); // 5 Shell
m_tree->AssignImageList(m_tree_images);
tree_inner->Add(m_tree, 0, wxEXPAND | wxALL, 12);