From d7ec7f486a9906737522a2f9cbb4852b38ed3467 Mon Sep 17 00:00:00 2001 From: jyviko <2501648+jyviko@users.noreply.github.com> Date: Wed, 14 Oct 2026 23:33:02 -0400 Subject: [PATCH] View state: hide, show and isolate viewport items, saved with the model view.hide, view.show, view.isolate and view.show_all change which bodies, surfaces, datums, boundary conditions, loads, reference points and couplings the viewport draws. The hidden items are view state: the manifest's `view` keeps them, a change marks the model unsaved, but it is neither journalled nor undone and leaves results current. Items that go away are forgotten. Headless pictures leave hidden items out; the glyph builders take a filter. Tools > View > Show All claims the commands. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo --- ATTRIBUTION.md | 1 + assets/icons/src/view.show_all.json | 1 + assets/icons/view.show_all.svg | 9 + assets/icons/view.show_all.vectorcraft | Bin 0 -> 1898 bytes crates/engine/src/catalogue.rs | 9 + crates/engine/src/cmd/file.rs | 15 +- crates/engine/src/cmd/forms.rs | 24 +++ crates/engine/src/cmd/mod.rs | 5 + crates/engine/src/cmd/view.rs | 219 +++++++++++++++++++++++++ crates/engine/src/lib.rs | 10 +- crates/engine/src/view.rs | 8 +- crates/io/src/lib.rs | 87 +++++++++- crates/io/tests/file.rs | 28 +++- crates/render/src/glyphs.rs | 27 ++- crates/ui-egui/src/scene.rs | 2 +- docs/features.md | 3 +- docs/formats/fieldcraft.md | 8 +- 17 files changed, 431 insertions(+), 25 deletions(-) create mode 100644 assets/icons/src/view.show_all.json create mode 100644 assets/icons/view.show_all.svg create mode 100644 assets/icons/view.show_all.vectorcraft create mode 100644 crates/engine/src/cmd/view.rs diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index cc770aa..66fc893 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -143,6 +143,7 @@ is committed and listed here with its exports. | assets/icons/ui.sun.svg, assets/icons/ui.sun.vectorcraft | FieldCraft contributors | Original interface icon (navigation bar, title bar, browser) drawn with VectorCraft from `assets/icons/src/ui.sun.json` (`cargo xtask icons`) | MIT OR Apache-2.0 | | assets/icons/ui.views.svg, assets/icons/ui.views.vectorcraft | FieldCraft contributors | Original interface icon (navigation bar, title bar, browser) drawn with VectorCraft from `assets/icons/src/ui.views.json` (`cargo xtask icons`) | MIT OR Apache-2.0 | | assets/icons/ui.zoom.svg, assets/icons/ui.zoom.vectorcraft | FieldCraft contributors | Original interface icon (navigation bar, title bar, browser) drawn with VectorCraft from `assets/icons/src/ui.zoom.json` (`cargo xtask icons`) | MIT OR Apache-2.0 | +| assets/icons/view.show_all.svg, assets/icons/view.show_all.vectorcraft | FieldCraft contributors | Original toolbar icon drawn with VectorCraft from `assets/icons/src/view.show_all.json` (`cargo xtask icons`) | MIT OR Apache-2.0 | | assets/app-icon/icon.vectorcraft, assets/app-icon/icon.svg, assets/app-icon/icon.png | FieldCraft contributors | Original application icon (a hexahedral-meshed cube with a banded colour fringe on its faces on a rounded-square backdrop), drawn with VectorCraft by `cargo xtask app-icon` (xtask/src/app_icon.rs); editable source, SVG and 1024 × 1024 PNG export | MIT OR Apache-2.0 | | assets/app-icon/icon-small.vectorcraft, assets/app-icon/icon-small.svg, assets/app-icon/icon-small.png | FieldCraft contributors | Original simplified application icon for 16–32 px (the fringe cube alone; no mesh or floor grid), drawn with VectorCraft by `cargo xtask app-icon` (xtask/src/app_icon.rs) | MIT OR Apache-2.0 | | assets/app-icon/layers/01-floor.vectorcraft, assets/app-icon/FieldCraft.icon/Assets/01-floor.svg | FieldCraft contributors | Original isometric floor grid with a radial fade (Default appearance), drawn with VectorCraft by `cargo xtask app-icon` (xtask/src/app_icon.rs) | MIT OR Apache-2.0 | diff --git a/assets/icons/src/view.show_all.json b/assets/icons/src/view.show_all.json new file mode 100644 index 0000000..563b7da --- /dev/null +++ b/assets/icons/src/view.show_all.json @@ -0,0 +1 @@ +{"shapes": [{"d": "M2.5 13 C5.5 7.5 18.5 7.5 21.5 13 C18.5 18.5 5.5 18.5 2.5 13 Z", "fill": "soft", "stroke": "line"}, {"circle": [12, 13, 2.6], "fill": "accent", "stroke": "accent", "width": 1}, {"d": "M12 2.5 L12 5 M5.5 4.5 L7 6.5 M18.5 4.5 L17 6.5", "stroke": "warm", "width": 1.5}]} diff --git a/assets/icons/view.show_all.svg b/assets/icons/view.show_all.svg new file mode 100644 index 0000000..64ce61f --- /dev/null +++ b/assets/icons/view.show_all.svg @@ -0,0 +1,9 @@ + + + view.show_all + + + + + + diff --git a/assets/icons/view.show_all.vectorcraft b/assets/icons/view.show_all.vectorcraft new file mode 100644 index 0000000000000000000000000000000000000000..cdafda466950966dff1450399fd56e9767e4651b GIT binary patch literal 1898 zcmV-w2bK6AiwFP!00000|K(bHZ`(Ey|0;(5HVnNV0s2SR6&57x=sH__8fW$tc<>1}s2ei9GUtx)+Z}J~|7^)~InVoI5;kD4R31Xq+*;v6|4* zxd_M35|@}E=me^7g6bWo8o85f;sR|>=j|GoFv;V7oHuqF(iE7_Oz{1rUeWt0Dhi-) zOVZTP{*^r7qK1Y!Ehw9=Y0jxHmosQWteH{7a-h3@bVx2HEYX@%yj6W84+t3m;*1|$ z=fa)1V`rlu9z5s54@HxD+KwFoV-8?3FhuOuxmcj0#=3*ix}L5OVYTYm-i)0BZ7}Nt z@|kxC6t|?zIf`ae@eVOUe;9B7%5aSVCx_7Bbyc7S?^suilnt73Sv9PMhWUyVIm6|S zr4ItBDvTH^=a|n&U=oQ)a&{I(h_*sR>OldiX#wL8fN&uf(7}Y185fn8#9`vbplALT zxKWz=0ld!mYZzp{7bV;6cD&ecy>4%|Po!TV7&(?d&|0@M{wT!-0$fq0OqlfAhxxr=;)0s_tk)5L zPbU$))3#9!3B2>~7X!Sb5u933=nEAsbtGkss1jnp(|1%822~ZvUd0lhs>Fz_XnDM^1gzM^K)+5Cmj$CtRjpAz>Z3C`eUv^SyU2qKSX>#m=g?wIVR~ znlBYW>r~!S=E883pzu^K5eLIa{x@u@_hvsVWm|O9GB{MCVsc3Tz@Li{MOQzTxCVB zvLAD%>Sv ziFAr4p&X=1Mo`|aXCfW7LXw7o7ib;DGOXwz!+ZQFG6wPoL~43(jRf-2NM{*YApUf` z^OP+OgfjZTFyz^mscgqw(u7OO8qa64wl$V06k5@eNjk>jhjL*s26Bo-d|x`vZb=dz z-LobcA$h-sZD*067||lIP!N#bWB5`W<~I8~M#YH`LbqcZu%Y7aZ5~SA{?#Je&E3vT z`ZS^fo-vSj8&sa;GFl?Bh;BNL#6lp!AQ-mth=neEjYC<30;0B~=8E~dW%yL%5b@R5 z{+a~BUI#4ttt|piEVrKC`Foi#Oucc_eq)T}W0{jBwZ$UK4v{ug=`lf~H4`Xs#%R6~ zTHwYKjYi>hLaFfD#9Sa>TUHg;LA_Iz@kChl(j5{ZA9Kh36+scNu?-?Igl%A$9OZ}s zM;Mu#>LsnMt41=@h@Z0#nW~vAQ$=rZS)<5T8HiSA?~Or?38;0nFyIjvCFo$jp#=?avFm9{cKFud|H9z9ozSTd9o zepEExKVIyrVV_9}MK$QF8(PV-41@-Ga3YGvgUTjQc&yNzG#k~tCV52#954qCSzka*n_h-C7ZNW7r zC`MPD!g;+*EWHPz=Q=s>J?-3IPZ5i_y6VL*t4(M0L0vyMI&B?&X`2F49Ou7rBf#{# z{1?9K7mV&UqmQCM_KKIzjO)EWLN?)nY=ReL!#5bKQ`CLF6W8-yA~8JlR-*C`L=`>} z70+ll>lrP$FnBy^Nsje1BjRpJ&9mncxF!682)|U4lRLt1jRIi`Q!`Za>zNp;g7c=H kRu$2-WDRv}pn3$V5