Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- **Move / rotate / scale space**: Options **Local** (default) or **World**. Local uses the first selected solid's frame (origin and X/Y/Z from **Show axes**). World keeps global XYZ at that solid's bounding-box center. Persisted as **`gui.transform_space`**.
- **Desktop deps**: MSVC GLFW/GLEW come from **vcpkg** (`vcpkg.json` + toolchain) instead of NuGet; local configure matches CI.
- **Extrude Both sides**: Options **Both sides** defaults to on (session sticky; not a Settings key).

### Fixed

- **Shape List right-click**: the row context menu opens from the whole entry (checkboxes, **M**, tree arrow, name field, and padding), not only from some widgets. Right-click on the name field opens the same menu.
- **Shape rotate axis**: Choosing X/Y/Z (or view-to-object) before the first drag is kept. Constrained rotation uses the plane perpendicular to that axis when the view faces it. Local space rotates about the assigned frame, not only world XYZ through the bbox.
- **Shape rotate drag**: View-to-object axis and the constrained axis-vs-view plane are captured on the first mouse sample. Orbit or pan during rotate no longer changes the axis/plane against the original mouse anchor.
- **Shape rotate space**: Switching Options **Local** / **World** mid-drag keeps the current angle. The next mouse move re-baselines against the new pivot instead of measuring from the old world-space sample.
- **Shape scale space**: Switching Options **Local** / **World** mid-drag keeps the current scale factor. The next mouse move re-baselines against the new pivot instead of jumping.
- **Add bone Holes**: switching **Holes** to **None** after the waist is set commits the outline. Clicks and finalize no longer run hole handlers when holes are off (those handlers reject `None` and left the tool stuck).
- **Sketch overlapping edges**: Drawing the same line or circle twice, or adding a collinear / same-circle overlap, no longer stacks a second copy. The sketch splits at overlap ends and keeps each atomic piece once. Undo records only the new atomic pieces (for arcs, each leftover start/bulge/end, not the input triple), so extending a line past an existing collinear edge no longer deletes the original on undo, and a circle over an existing same-circle cap reverses fully. A no-op redraw of an already-covered span does not push undo. Fixes an access violation in `TKGeomBase` when a new circle coincided with an existing arc (for example a bone end-cap).
- **Wasm configure/link**: Detect Emscripten via `EMSCRIPTEN` / `CMAKE_SYSTEM_NAME` (modern emsdk reports Clang). Link the FreeType package from the OCCT wasm install so `wasm-ld` finds `libfreetype.a` instead of bare `-lfreetype`.
Expand Down
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,10 @@ set(gui_mode_cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/gui_mode.cpp)
list(REMOVE_ITEM srcs "src/gui_mode.cpp" ${gui_mode_cpp})
list(APPEND srcs ${gui_mode_cpp})

set(gui_shp_pane_cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/gui_shp_pane.cpp)
list(REMOVE_ITEM srcs "src/gui_shp_pane.cpp" ${gui_shp_pane_cpp})
list(APPEND srcs ${gui_shp_pane_cpp})

# Define source files for the application
# Including ImGui sources and main application file
set(App_SRCS ${imguiSrc} ${srcs})
Expand Down
5 changes: 4 additions & 1 deletion docs/usage-settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@ Under **Material**:

- Document preset for new solids that do not inherit from a clicked shape (toolbar **Box**, **polar duplicate** output, and similar). To change material on an existing solid, use the [Shape List](usage.md#shape-list).

- **Move / rotate / scale**: **Local** (default) or **World** axis space. Local uses the first selected solid's frame (origin and X/Y/Z; same triad as Shape List **Show axes**). World uses global XYZ at that solid's bounding-box center. Persisted as **`gui.transform_space`**. Rotate also has view-to-object / X / Y / Z. See [Move](usage.md#shape-move-tool-g), [Rotate](usage.md#shape-rotate-tool-r), and [Scale](usage.md#shape-scale-tool).

For other non-sketch Options content, see the matching tool section in the usage guide. In particular, **Shape cross-section** provides local **XY/XZ/YZ**, **Invert normal**, **Hide back side**, **Show section outline**, a bbox-ranged **Offset** slider (Ctrl+click to type), **Clip** (half-space cut, replaces selection), **Cross section sketch** (new sketch from section outline), and automatic preview updates when the selection changes; see [Shape cross-section tool](usage.md#shape-cross-section-tool).

### Sketch tools
Expand Down Expand Up @@ -238,6 +240,7 @@ If saved layout text has no `[Docking]` section (older installs), a default dock
| `bone_add_radius_nodes` | boolean | Add-bone Options: commit permanent **Bone A+** / **A-** / **B+** / **B-** axis-tangent nodes (default **true**). |
| `bone_add_total_length_nodes` | boolean | Add-bone Options: commit permanent **Bone A tip** / **Bone B tip** outer-end nodes (default **true**). |
| `bone_holes` | integer | Add-bone Options holes mode: **0** None, **1** One radius, **2** Two radii (default **0**). |
| `transform_space` | integer | Move / rotate / scale Options: **0** Local (first selected solid's frame; default), **1** World (global XYZ at that solid's bbox center). |
| `origin_marker_color` | array of 3 numbers | RGB color for the **active** sketch's Origin marker (+ with circle; **0** to **1** per channel; default cyan **0.0**, **0.75**, **1.0**). |
| `sketch_edge_color` | array of 4 numbers | Current-sketch edge RGBA (**0** to **1**; alpha = opacity; default green **0**, **1**, **0**, **1**). |
| `sketch_edge_selection_color` | array of 4 numbers | Selected sketch-edge RGBA (default orange **1**, **0.545**, **0**, **1**). Falls back to `sketch_edge_highlight_color` when absent. |
Expand Down Expand Up @@ -307,7 +310,7 @@ Each **`settings_headers`** object may contain (default: only nested Sketch **Ap
| `startup` | boolean | **Startup project** section expanded. |
| `hotkeys` | boolean | **Keyboard shortcuts** section expanded. |

Scripting API **`ezy.occt_view_settings_json()`** returns a JSON string with **`occt_view`** plus selected **`gui`** keys (including dimension and snap keys above, **`gui.permanent_node_anno_scale`**, **`gui.inspection_orthographic`**, **`gui.view_roll_step_deg`**, **`gui.view_zoom_scroll_scale`**, **`gui.curve_deviation_angle_deg`**, **`gui.default_project_unit`**, **`gui.default_2d_view_width`**, **`gui.default_2d_view_height`** when saved). See [scripting.md](scripting.md).
Scripting API **`ezy.occt_view_settings_json()`** returns a JSON string with **`occt_view`** plus selected **`gui`** keys (including dimension and snap keys above, **`gui.permanent_node_anno_scale`**, **`gui.inspection_orthographic`**, **`gui.view_roll_step_deg`**, **`gui.view_zoom_scroll_scale`**, **`gui.curve_deviation_angle_deg`**, **`gui.transform_space`**, **`gui.default_project_unit`**, **`gui.default_2d_view_width`**, **`gui.default_2d_view_height`** when saved). See [scripting.md](scripting.md).

---

Expand Down
2 changes: 2 additions & 0 deletions docs/usage-sketch.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,8 @@ Common keyboard shortcuts (hotkeys) while working in 2D sketch mode or with sket
| <kbd>Y</kbd> | Toggle / cycle Y |
| <kbd>Z</kbd> | Toggle / cycle Z |

Those X/Y/Z directions follow Options **Local** (first selected solid's frame) or **World** (global XYZ). Polar duplicate still uses the current sketch plane.

See the individual tool sections (and [usage.md#hotkeys](usage.md#hotkeys)) for full context and additional view / general hotkeys.

(line-edge-creation-tools)=
Expand Down
Loading
Loading