Isolation Levels

7 votes
Date Updated: 
Author Name: 
Andreas Meissner

Create nested isolations, go back and forth between them. Hope it helps.

Additional Info: 


  • close all open 3ds Max instances
  • remove old versions of this script
  • copy scriptfile "" into 3ds Max startup folder (example: "C:\Program Files\Autodesk\3ds Max 2012\Scripts\Startup")
  • copy imagefiles "IsoLevels1_16i.bmp, ..." into 3ds Max usericons folder (example: "C:\Users\Username\AppData\Local\Autodesk\3dsMax\2012 - 64bit\enu\UI\usericons")
  • start 3ds Max and open menu Customize > Customize User Interface > Toolbars (Category: # Scripts)
  • create a new toolbar and drag and drop the commands "Isolation Levels - Backward, ... Forward, ... New Iso, ... Exit Iso" to it
  • restart 3ds Max, enjoy


  • works as fast as the standard isolate
  • number of isolations: infinite
  • unlike the standard Isolation Mode, this script hides Xrefs while rendering in isolation
  • hint: I find it very useful to put this script on the Alt+Q button and replace the old isolation function of 3ds max
  • you can find the current isolation level in the title of the 3ds Max window, behind the scenename

script at work (old user interface, script has no extra window anymore):

to do:

  • isolation state should be stored in maxfile
Version Requirement: 
tested with 3ds Max 2012
isolation_levels_12.ms9.07 KB
isolation_levels_23.zip3.55 KB


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
real08121985's picture

okay try again with version

okay try again with version 10.

headd's picture

dotNet exception

The script runs great until i close it's window.
After that, if i run the script again, it will show the attached error.

err.jpg 33.4 KB
real08121985's picture

I updated the script.

I updated the script. Installation is now different, please read in description. I hope to find some more time today to test this version and also to add the ability to store the isostate in the scene.

Herr Bert's picture

Thanks a lot!

I agree with headd on both accounts, though navigating through the levels with the dialog works fine.
Initially hidden objects stay hidden, now. :)

There seems to be a bug if the user deletes meshes:

-- Error occurred in shutdownScript(); filename: Z:\software\3dsmax\maxplugs_new\; position: 651; line: 34
-- Frame:
>> MAXScript dotNet event handler Exception:
-- Runtime error: Attempt to access deleted scene object <<

Thx for the great work!

real08121985's picture

I will try to fix this. For

I will try to fix this. For now just click on the button to prevent the error.

headd's picture


There is a bug if i run the script(Alt+Q) when there's a IsoLevels window already opened. It opens a new window and messes up the original one ( the isolation levels won't work, error in attachment).

Instead, if you hit the shortcut(Alt+Q) it should switch to the next isolation level or create a new one, like you'd hit the --> button.

What do you think?


isolevel_err_01.jpg 37.95 KB
headd's picture


Hidden objects now stay hidden, good work and thanks again :)

real08121985's picture

I tried to fix bugs and get

I tried to fix bugs and get rid of some points on the todo-list with the version 8. Hope it works, I didnt had the time to test it yet. Now it shouldnt unhide all objects when the dialog is closed and it should always stay on top. Thanks to barigazy for the code!

headd's picture

I agree with Herr Bert, the

I agree with Herr Bert, the fact that it unhides objects hidden before running the script is tricky, especially if you work on someone else's max file and you don't know what was visible or not.

barigazy's picture


Suggestions for 1st and 3rd "to do"
#1 With .net form U can stay Always "On the Top" :)

	if ::form != undefined do try(form.close())catch()
	local btn1, btn2, btn3
 	fn maxHW = (dotNetObject "maxCustomControls.win32HandleWrapper" (dotNetObject "System.IntPtr" (windows.getMaxHWND())))
	fn defBtn btn form x: w: txt: = 
		btn.bounds = dotNetObject "system.drawing.rectangle" x 0 w 40
		btn.FlatStyle = btn.FlatStyle.System ; btn.text = txt
		btn.Margin = dotNetObject "padding" 0 0 0 0
		form.Controls.add btn
 	form = dotNetObject "form" ; form.text = "IsoLevel: 0/0"
	form.AutoSizeMode = form.AutoSizeMode.GrowAndShrink
 	form.ShowInTaskbar = off ; form.autosize = form.TopMost = on
 	form.FormBorderStyle = form.FormBorderStyle.FixedToolWindow
 	form.StartPosition = form.StartPosition.Manual
	form.DesktopLocation = dotNetObject "System.Drawing.Point" 50 110
	btn1 = dotNetObject "button" ; defBtn btn1 form x:0 w:40 txt:"<--"
	btn2 = dotNetObject "button" ; defBtn btn2 form x:40 w:80 txt:"New Iso"
	btn3 = dotNetObject "button" ; defBtn btn3 form x:120 w:40 txt:"-->" ; ok

#3 Why not use CA to store last state of the scene and then add CA to "rootnode"


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.