Changing layer event?

Hello
What is the event used when an object changes its layer?

Hi @anon39580149,

you might try ModifyObjectAttributes event and compare the object’s layer index, eg:

import Rhino
import scriptcontext

def MyLayerChangeEvent(sender, e):
    if e.OldAttributes.LayerIndex != e.NewAttributes.LayerIndex: 
        layer = scriptcontext.doc.Layers[e.NewAttributes.LayerIndex]
        print "{} changed layer to: {}".format(e.RhinoObject, layer.FullPath) 
    
def MyToggleEvent():
    my_event_name = "MyLayerChangeEvent"
    
    if scriptcontext.sticky.has_key(my_event_name):
        print "removing event"
        func = scriptcontext.sticky[my_event_name]
        scriptcontext.doc.ModifyObjectAttributes -= func
        scriptcontext.sticky.Remove(my_event_name)
    else:
        print "adding event"
        func = eval(my_event_name)
        scriptcontext.sticky[my_event_name] = func
        scriptcontext.doc.ModifyObjectAttributes += func

MyToggleEvent()

_
c.

2 Likes

Thank you @clement