Design tab: Text is its own feature, previewed in the view and editable

Reported on the rig: Text showed no preview where it would go, its
dialog was pinned over the middle of the window (GNOME attaches a modal
dialog to its parent and it cannot be moved), and once confirmed the
text could not be edited and did not appear in the feature tree. Inside
an open sketch it became loose lines of that sketch.

- Text is always a feature, "Text N" in the tree. A new text goes on the
  plane of the open sketch (committed first when it holds anything,
  closed when it is empty), else centred on the picked face, else on the
  reference plane.
- The dialog is modeless and opens at the top right of the window. The
  feature is created at the first character and redrawn on every change,
  so the text appears in the view where it will be as it is typed. Enter
  inserts it, then the usual move/scale gizmo and Confirm; Esc, Cancel or
  closing the dialog takes it out again (undo to the checkpoint taken
  when it appeared).
- CadFeature keeps text_string, text_font (the WxFontUtils descriptor)
  and text_height, appended at the end of the framed recipe. Editing a
  Text feature reopens the dialog with them and redraws the outline in
  place, keeping its placement. The outlines are still saved, so the
  project opens the same on a machine without that font.
- The MCP control refuses writes while the Text dialog is open.

Tests: the text parameters survive a save and load along with the
outline; the truncated-recipe test accounts for the new tail fields.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QK4VgguuCAk2hZLWgcjJb9
This commit is contained in:
Claude
2026-09-30 08:34:34 +00:00
parent 4983796970
commit 5d4622c822
7 changed files with 290 additions and 39 deletions
+16 -3
View File
@@ -315,9 +315,22 @@ variable and the whole model follows.
## Import and export
**Text** asks for the words, the font (any installed font, bold, italic) and the height, and
shows the outline that will be inserted with its size in millimetres before anything is added.
The last font and height are remembered.
**Text** is a feature of its own, "Text N" in the tree. Its dialog asks for the words, the
font (any installed font, bold, italic) and the height, and shows the size in millimetres. The
dialog does not block the window and can be moved aside. As you type, the text is drawn in the
view where it will go:
- on the plane of the sketch that is open (a sketch holding anything is committed first);
- else centred on the picked face;
- else on the reference plane.
Enter inserts the text; then drag or scale it and Confirm. Esc takes it out again. Editing
a Text feature reopens the dialog with its words, font and height, and redraws it in place.
The outlines are saved with the project, so it opens the same on a machine without that font.
A new text starts from the last font and height used.
To engrave or emboss, extrude the Text feature onto the solid, Cut or Join. A text is no
longer loose lines inside another sketch, so it no longer acts as a hole in that sketch's
profile.
**Import STEP** brings in a real B-rep solid, not a mesh: its faces and edges can be filleted,
shelled and cut like anything modelled here.