ScriptSpot

Forum topic · General Scripting

scene explorer in max 2015 : how can I make current the root layer of a selected object ? (argghh my english)

By titane357 · 2014-10-29

Description

Hello
In max 2015 we have nested layers, cool.
But when I select an object in the scene, I know in which layer it is, but not the name of the parent layer, and its parent, etc..
I would like to make current, the parent layer of a nested layer.
I saw getparent(), but I don't know how to use it...
If somebody can help ?? Thanks

Comments (4)

titane357 · 2014-10-30

perfect, as always !!!! Thanks !!!

Is there a way to update scene explorer window ?
Because I need to clic in the window or viewport to update and see the active current layer...

.

miauu · 2014-10-30

I don't have time to dig in the maxscript reference, so you can use this:


(
-- curObjLayerName = layerManager.getLayerFromName ($.layer.name)
curObjLayer = ($.layer)
-- parentLayer = curObjLayer.getParent()
-- parentLayerName = parentLayer.name
-- parentLayer.getParent()
 
while curObjLayer.getParent() != undefined do curObjLayer = curObjLayer.getParent()
curObjLayer.name
-- set as current layer. Update the Layer Manager to see wht changes
curObjLayer.current = true
	
	if LayerManager.isDialogOpen() do
	(
		p = point()
		delete p
	)
)

titane357 · 2014-10-31

so cleaver, so simple.... thanks :-)

.

miauu · 2014-10-29

Use this:


-- curObjLayerName = layerManager.getLayerFromName ($.layer.name)
curObjLayer = ($.layer)
-- parentLayer = curObjLayer.getParent()
-- parentLayerName = parentLayer.name
-- parentLayer.getParent()

while curObjLayer.getParent() != undefined do curObjLayer = curObjLayer.getParent()
curObjLayer.name
-- set as current layer. Update the Layer Manager to see wht changes
curObjLayer.current = true

Commented lines are for testing purpose