转载 多层影藏 和显示
global LI_Isolate
global LI_Back
btnpress=0
AllArray=#()
curselArray=#()
firstArray
pview
activecam
theNodeName
store1stPos=true
fn LI_Isolate=
(
if store1stPos==true and btnpress==0 then activecam=getActiveCamera() --store the camera
-- viewport.setType #view_persp_user
if btnpress==0 then pview=getViewTM() --store the perspective viewTM
if selection.count==1 and $.name!=theNodeName then
(
firstArray=$
btnpress+=1
AllArray[btnpress]=(for i in objects where i.ishiddeninvpt!=true collect i) as array
max hide inv
-- max zoomext sel all
theNodeName=$.name
curselArray.count=(random 1 1000000)
)
else if selection.count>1 and selection.count!=curselArray.count then
(
if btnpress==0 then firstArray=$ as array
btnpress+=1
AllArray[btnpress]=(for i in objects where i.ishiddeninvpt!=true collect i) as array
max hide inv
-- max zoomext sel all
curselArray=$ as array
)
-- print btnpress
)
fn LI_Back=
(
try
(
curselArray=#()
if btnpress>0 do try
(
prevsel=for i in objects where i.ishiddeninvpt!=true collect i
unhide allarray[btnpress]
btnpress-=1
-- max tool zoomextents all
select prevsel
)catch(max unhide all)
if store1stPos==true and btnpress==0 do
(
theNodeName=("LI_"+objects[(random 1 objects.count)].name)
if activecam==undefined then
(
viewport.setTM pview
)
else
(
viewport.setCamera activecam
)
try (select firstArray)catch()
)
-- print btnpress
)catch()
)
LI_Isolate()
LI_Back()