mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-22 23:01:01 +00:00
Design tab: translatable offer, one vocabulary, reports in the status line
- Offer table: user-facing strings carry the L() marker so xgettext
extracts them; DesignOffer.hpp, DesignSketchTool.cpp and
SketchInlineEditor.cpp are listed in localization/i18n/list.txt.
- Offer: model-mode Constrain sits in the same row as the sketch one;
Interference is wired; Rib shows its R key; a verb that accepts the
selection but is blocked by the document stays greyed with its reason
instead of vanishing from the submenu; one refusal wording per verb.
- Extrude infers Join when the profile touches a solid (new
CadDocument::body_touching_sketch) and on face push/pull; New body in
free space. Revolve/Sweep/Loft/Boolean use the same result words.
- Interference and volume/area reports go to the status line in mm3/mm2
instead of modal dialogs; Delete Body no longer asks (it is undoable).
- New feature names match the card header ("Extrude 3"), translated;
"Coordinate system", "Angle (°)", center/color spelling, translated
face and length readouts, slot hints say width.
- CAD gizmos in Prepare are selectable only with the CAD feature on; the
sketch auto-close setting is stored per design.
- Docs: confirm/cancel rules, enabling the feature and MCP in
design_tab.md; drift-only right-click in interaction-model.md; the
portability note rewritten to describe the integration as it is.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QK4VgguuCAk2hZLWgcjJb9
This commit is contained in:
24 files changed
+662
-582
No files matched your search
@@ -65,19 +65,9 @@ static double ray_segment_dist3(const Vec3d& ro, const Vec3d& rd, const Vec3d& a
|
||||
return wxPoint(int(sx + 0.5), int(sy + 0.5));
|
||||
}
|
||||
|
||||
// The kernel's weld tolerance follows the app preference, and it must be pushed at EVERY
|
||||
// point that starts a sketch session: a Constrain session never passes through begin(), and
|
||||
// it uses region_loops()/connected_loop(), which read the same tolerance. Pushing in one
|
||||
// place only would leave those sessions on whatever the previous session set.
|
||||
static void push_auto_close_pref()
|
||||
{
|
||||
Slic3r::set_sketch_auto_close(wxGetApp().is_auto_close_sketch_loops());
|
||||
}
|
||||
|
||||
void DesignSketchTool::begin(const SketchPlane& plane, Mode mode)
|
||||
{
|
||||
m_sketch_redo.clear();
|
||||
push_auto_close_pref();
|
||||
|
||||
m_plane = plane;
|
||||
m_mode = mode;
|
||||
@@ -2451,7 +2441,6 @@ void DesignSketchTool::finish()
|
||||
|
||||
void DesignSketchTool::begin_constrain(const SketchProfile& prof, const SketchPlane& plane)
|
||||
{
|
||||
push_auto_close_pref();
|
||||
m_plane = plane;
|
||||
m_mode = Mode::Constrain;
|
||||
m_points = prof.points;
|
||||
@@ -2466,7 +2455,6 @@ void DesignSketchTool::begin_constrain(const SketchProfile& prof, const SketchPl
|
||||
void DesignSketchTool::begin_constrain_entities(const std::vector<SketchEntity>& ents,
|
||||
const SketchPlane& plane)
|
||||
{
|
||||
push_auto_close_pref();
|
||||
m_plane = plane;
|
||||
m_mode = Mode::Constrain;
|
||||
m_constrain_entities = true;
|
||||
@@ -10422,7 +10410,7 @@ bool DesignSketchTool::on_mouse_impl(wxMouseEvent& evt, GLCanvas3D& canvas)
|
||||
|
||||
// In-canvas edit-op tools (Fillet/Chamfer/Offset/Mirror): pick entities, then a
|
||||
// draggable arrow + editable value label (Mirror: a two-phase pick) drives a live
|
||||
// ghost. A click on empty space confirms; right-click/Esc cancels the gesture.
|
||||
// ghost. Enter or ✓ applies, Esc or right-click discards (charter 4.2).
|
||||
// Standalone Trim / Extend scissors: click a segment to cut it back to (Trim) or out to
|
||||
// (Extend) its nearest intersection with the other live entities. One cut per click; the
|
||||
// tool stays active for more cuts; right-click exits. Drag falls through so the camera can
|
||||
@@ -10502,7 +10490,7 @@ bool DesignSketchTool::on_mouse_impl(wxMouseEvent& evt, GLCanvas3D& canvas)
|
||||
|
||||
// In-canvas transform tools (Move/Rotate/Scale/Array/PolarArray): pick subject
|
||||
// entities, then a single draggable handle + editable value label(s) drive a live
|
||||
// ghost. A click on empty space confirms; right-click drops the gesture / exits.
|
||||
// ghost. Enter or ✓ applies, Esc or right-click discards the pending transform.
|
||||
if (is_transform_mode()) {
|
||||
if (evt.Moving()) {
|
||||
screen_to_plane(canvas, evt, m_cursor);
|
||||
|
||||
Reference in new issue
Block a user