forked from 1b-agent/opencadstudio-upstream
feat(pline): Undo option removes the last segment (#352)
U / UNDO (typed or via the prompt button) pops the last placed vertex without ending the command, repeatably down to and past the start point. The exit tangent of the remaining last segment is recomputed from its bulge so a following Arc segment stays tangent-continuous. New CmdResult::RemoveLiveEntity takes the live polyline out of the document when Undo drops it below two vertices; the next point re-creates it under the same undo unit. Closes #352 Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
1 parent
e009d2d7a3
commit
1870b8420f
3 files changed
+60
No files matched your search
@@ -808,6 +808,19 @@ impl OpenCADStudio {
|
||||
}
|
||||
}
|
||||
}
|
||||
CmdResult::RemoveLiveEntity(handle) => {
|
||||
// The command backed off below a valid entity (PLINE Undo at
|
||||
// one remaining vertex): take the live entity out of the
|
||||
// document and keep prompting. No undo bookkeeping — the
|
||||
// create's snapshot already covers the whole in-progress
|
||||
// object as one unit.
|
||||
self.tabs[i].scene.erase_entities(&[handle]);
|
||||
self.tabs[i].dirty = true;
|
||||
let prompt = self.tabs[i].active_cmd.as_ref().map(|c| c.prompt());
|
||||
if let Some(p) = prompt {
|
||||
self.command_line.push_info(&p);
|
||||
}
|
||||
}
|
||||
CmdResult::Cancel => {
|
||||
self.tabs[i].scene.clear_preview_wire();
|
||||
self.tabs[i].active_cmd = None;
|
||||
|
||||
Reference in new issue
Block a user