Query a Shapes Layer Name

11-14-2011 09:43 AM
New Contributor

More questions... Is there a way to use python to query/determine the name of the layer a shape is associated with based on a selection of shapes? Can shapes be moved/copied to new shape layers with python?


-Jack de Valpine
Tags (3)
0 Kudos
3 Replies
Esri Contributor
We added ce.getLayer(object) as a Python command last week, which will return the layer an object is in. This will be available in the upcoming service release of Esri CityEngine 2011.

For 2010.3, the only option I see is to loop through the layers until the object is found:

def getLayer(object):
    uuid = ce.getUUID(object)
    layers = ce.getObjectsFrom(ce.scene, ce.isLayer)
    # this could be sped up by filtering layers by type of object
    for layer in layers:    
        for o in ce.getObjectsFrom(layer):
            if ce.getUUID(o) == uuid :
                return layer
    return None

if __name__ == '__main__':
    print getLayer(ce.selection()[0])

does that work for you?
0 Kudos
New Contributor
Hi Andreas,

Thanks for idea on this. It probably will be handy to have in your upcoming release. I am not sure but looping through a scene in this way seems like it could be pretty costly? In any event this is not critical to what I am looking into.

Thanks again,

0 Kudos
Esri Contributor
if your scene is really big, it might take a bit of time. in case this becomes an issue, you could probably filter layers that are to be searched. either by implicit knowledge, or only searching layers of a specific type (e.g. for graph segments one only needs to look in a graph network layer)
0 Kudos