Save incrementally only changes to the model

Would it be possible for Rhino to save only changes made to the model? Or how feasible would it be to make it do that? It would be great as Rhino file are usually pretty big and make it difficult to collaborate over Internet.

I assume though that if it was possible someone would have done it already. Perhaps a better question would be what stands in the way of making differential saving in Rhino a reality? Is it a Windows/Mac thing?

Would it be possible to save differences of at least some parts of the model?

I guess the thing is that would require Rhino to actually track all changes since last save in an extremely bulletproof manner–you don’t want some glitch with a plugin to inadvertently destroy the whole chain and lose your file! Undo/Redo does not do that. That would be a big thing to add.

Of course any decent backup software does this looking at the file block level, but managing that stuff does not make me eager to want to have to deal with that on an individual file basis.

that’s true, I also mentioned that maybe only some parts of the model could be diffed - in particular the NURBS geometry, meshes, polylines etc., which I guess make up the lion’s share of the file.

so if you were to dump all Rhino’s memory to a file, use a separate program to save only changes and load it back in would that work? :wink:

Well you’d have to compare the previously saved file(s) to what the changed file would look like on disk, so…it would require you to save the file. So…yeah what are you hoping it would accomplish for working over the Net? I don’t think it would do what you think it would do.

It’s only a silly idea, but you could argue that one could make a quick dump, diff it and send only that small diff over the internet all in a fraction of a ‘proper’ Rhino save (while breaking everything in the process, of course)

Okay so what you’re talking about there is making a Rhino file more like a database, where every change gets updated on disk instantly, or on some schedule close enough to it, and may involve a server program at the other end that receives the updates and manages that. So…it’s a quite a different thing.

1 Like

Something of this nature, but I hoped that there was something between a completely transactional Rhino and saving a complete state of the model each time. Something that doesnt require you to track history? I think Rhino can record history already for some commands/objects although it’s mostly turned off by default.

Houdini is an interesting example by the way. Its like grasshopper, but the entire standalone program is procedural. It lets you manipulate huge datasets while keeping files on average less than a MB.

I hoped that calculating differences between state of the Rhino document’s objects between the files was still possible. Or would it take as much time?

Yeah it would take tons of time, the previous would have to be loaded then everything compared…so if the goal is to speed up saving to some distant online resource…that’s not gonna do it I don’t think…?

can’t disagree, maybe someone familiar with the actual internals of how Rhino saving functions could confirm that?