Design: pointing at part of a body is pointing at the body

Tommaso: "i deleted a body using rubber band selection, but this is not intuitive as all
the ux revolves around clicking". Correct on both counts, and a correction to what I said
last round: the rubber band IS implemented and shipping (pick_bodies_in_rectangle, m_rubber,
the drag branch in on_mouse). What is unbound is whole-body picking via CLICK; I read the
comment about the click path and wrongly generalised it to the gesture as a whole.

The handlers were never the problem either. Move, Mirror, Cut, Mass and Colour all resolve
their target through selected_body_default() / m_sel_solid_body, and that is already set when
you click a FACE — level >= 1 records the body. They would have worked from a click all
along. The only thing keeping them out was the atlas gate: accepts listed body_solid and no
face kind, so offer_selection_kind() returning FacePlanar filtered the rows away. This is
therefore an atlas-only change, no handler edits.

Cut, Split, Mirror, Transform, Mass and Colour now accept face/edge/vertex as well, matching
what Delete Body already did. Edges and vertices are included deliberately, not just faces: a
click resolves to a vertex, an edge or a face depending on where inside the pixel it lands,
so accepting only faces would make Move vanish whenever you clicked near a corner — a flicker
that reads as a bug and gets reported as "sometimes it works".

NOT widened: Extrude on a face means push/pull THAT face, and Thicken consumes the face you
point at. Both have genuine face-specific meaning, so widening them would change what they
do rather than where they can be reached from.

The rubber band keeps its job — it is still the only way to take a body without also naming
one of its faces. It just stops being the only door.

Verified on both rigs from a plain face click: Transform > Move opens with Body = Extrude2
(resolved from the face pick), Modify > Edit / Delete Face / Colour / Delete Body, and
Reference > Mass.
This commit is contained in:
Tommaso Bianchi
2026-08-02 09:57:53 +02:00
parent b2654ebd8a
commit 6c59898ac0
2 changed files with 48 additions and 12 deletions
+42 -6
View File
@@ -558,7 +558,13 @@
"mcp": null,
"accepts": [
"body_solid",
"datum_plane"
"datum_plane",
"face_planar",
"face_cyl",
"face_other",
"edge_str",
"edge_circ",
"vertex"
],
"needs": {
"bodies": 1
@@ -577,7 +583,13 @@
"feature": "Cut",
"mcp": "split",
"accepts": [
"body_solid"
"body_solid",
"face_planar",
"face_cyl",
"face_other",
"edge_str",
"edge_circ",
"vertex"
],
"needs": {
"bodies": 1
@@ -725,7 +737,13 @@
"mcp": "mirror",
"accepts": [
"body_solid",
"datum_plane"
"datum_plane",
"face_planar",
"face_cyl",
"face_other",
"edge_str",
"edge_circ",
"vertex"
],
"needs": {
"bodies": 1
@@ -766,7 +784,13 @@
"accepts": [
"body_solid",
"body_sheet",
"art"
"art",
"face_planar",
"face_cyl",
"face_other",
"edge_str",
"edge_circ",
"vertex"
],
"needs": {
"bodies": 1
@@ -954,7 +978,13 @@
"feature": null,
"mcp": "mass_properties",
"accepts": [
"body_solid"
"body_solid",
"face_planar",
"face_cyl",
"face_other",
"edge_str",
"edge_circ",
"vertex"
],
"needs": {
"bodies": 1
@@ -1040,7 +1070,13 @@
"mcp": null,
"accepts": [
"body_solid",
"body_sheet"
"body_sheet",
"face_planar",
"face_cyl",
"face_other",
"edge_str",
"edge_circ",
"vertex"
],
"needs": {
"bodies": 1