mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-27 10:51:22 +00:00
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:
+42
-6
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user