[PythonCAD] Working on undo/redo stuff

Art Haas ahaas at airmail.net
Tue Jan 13 18:16:19 EST 2004

On Tue, Jan 13, 2004 at 04:15:20PM -0500, blanding at localnet.com wrote:
> >
> > Adding an undo/redo ability for things like changing an entities color
> > or linetype is straightforward, but things get more complex when
> > entities are deleted, and that is where I am getting bogged down. I
> In my CoCreate 3D CAD, undo/redo only applies to model geometry changes,
> not to things such as color. If you were to follow a similar approach in
> 2D, you would ignore things like line type and color, but only keep
> track of things like stretching, filleting, etc.

I want to keep track of things like color changes or linetype changes. I
thought ME-10 did that as well, in addition to keeping track of geometry
changes like splitting, stretching, and moving.

> > haven't figured a good way to store the undo/redo stuff so that it is
> > not tied to the existance of a particular object. By this I mean the
> > id() of the object, as the entities may/will get deleted during some
> > action, and then new entities will be created in the undo operation, so
> > the undo history of the old entity is now lost.
> I'm thinking if you delete an object, just store its parameters in the
> undo stack so that it can be recreated if needed. Maybe in a dxf style
> format or something like that.

That may be how things end up being coded, but instead of just pounding
away at the keyboard I want to try and figure out if there is a better
way of solving this problem. There might not be, or things may reach a
point where any solution, even a possibly sub-optimal one,  is better
than no solution at all. I've been digging into Gnumeric's undo stuff
today (a _great_ program - I am in awe of Jody Goldberg and the Gnumeric
developers!), and it is starting to make a little sense.

Man once surrendering his reason, has no remaining guard against absurdities
the most monstrous, and like a ship without rudder, is the sport of every wind.

-Thomas Jefferson to James Smith, 1822

More information about the PythonCAD mailing list