The case of the scene that wouldn’t Undo


In this case, a customer sent me a scene where Undo didn’t work. As soon as you opened the scene, nothing you did could be undone, and Undo wouldn’t start working again until you loaded some other scene.

I thought it might be something in the scene, so I deleted practically everything under the Scene_Root, but Undo still didn’t work. Then I noticed that the .scn file was still pretty big (18MB) so I poked around a bit more in the scene and found thousands and thousands of materials (14K of materials, to be exact).

There were over 13 thousand AutoCAD_Color_Index materials. Just opening the Material Manager took minutes, and deleting 13 thousand materials wasn’t as easy as you might think.
I first tried with the DeleteAllUnusedMaterials command, but that took so long that I figured that Softimage was hung and I killed it.

In the end, I deleted some manually (a hundred at a time) and then the rest with the Material Manager > Delete Unused Materials. But I could also have done it like this:

import time

start = time.clock()

import win32com.client
oObj = win32com.client.Dispatch( "XSI.Collection" )
oObj.Items = 'Sources.Materials.DefaultLib.AutoCAD_Color_Index_*'
print oObj.count
# 13782

Application.SetValue("preferences.General.undo", 0, "")

for mat in oObj:
	Application.DeleteObj(mat)

Application.SetValue("preferences.General.undo", 50, "")

end = time.clock()

Application.LogMessage( round( end - start, 3) )
# INFO : 264.117

One thought on “The case of the scene that wouldn’t Undo

  1. Hi Stephen,

    It is funny but I ended up with a same scene myself yesterday, had 6914 materials and undo was greyed out. I used your script, the only thing I added was to before deleting I wanted to make sure that material was not used. So I added a line for that before the deletion:
    ___________
    if mat.Model:
    continue
    ___________

    Thanks for the scripts !

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s