algorithmic modeling for Rhino
Hi all,
I wish to track the changes a user makes to a Grasshopper definition. My naive idea is to somehow access the redo/undo stack and store the info to a text/xml file over time. Would this be an appropriate/reasonable approach? Is there a way to access the stack?
Thank you,
Jason
Tags:
GH_Document.UndoServer.UndoNames wouldn't be a bad place to start :)
Hi Andrew,
Thanks for the suggestion, that would indeed be a good place to start!
I managed to access UndoRecords by a hackish(?) approach. I register a custom eventhandler/callback to the document's UndoStateChanged event.
doc.UndoStateChanged += print_event #doc is the active grasshopper document
# My callback
def print_event(sender,e):
    if e:
        if e.Record: 
            print e.Record.Name
I am able to get the name and time of the undo. However I also want additional information. For example, on a 'new wire' record, I would like to know which two components the wire connects. Is this even possible? I tried to look into UndoRecord's actions, but got a little lost there.
My overall aim is to track and log specific user events. For example, when he/she changes a particular slider value or changes the code in a particular Python component (I do not want to create custom components).
Thanks.
Hmm I would think that the language wouldn't matter - unless the Python component works in a radically different way from the C#/VB components. Here's the code and also the sample definition.
import scriptcontext as sc
active_doc = ghenv.Component.OnPingDocument()
def custom_callback(sender, e):
    if e and e.Record:
        _name =  e.Record.Name
        if not sc.sticky.has_key('record'):
            sc.sticky['record']= [_name]
        else:
            sc.sticky['record'].append(_name)
        
if x:
    #register callback
    active_doc.UndoStateChanged += custom_callback
 undo_example.gh, 6 KB
 undo_example.gh, 6 KB                            Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
    © 2025               Created by Scott Davidson.             
    Powered by
    