Objects and default properties


Here’s a scripting question from the mailing list:

Why do I get “None” when I print ChainRoot.Children and
ChainRoot.Bones?

si = Application
chainRoot = si.Create2DSkeleton(0, 0, 0, 10, 0, 0, -90, 0, 0, 4)

print chainRoot
print chainRoot.Children # Not working
print chainRoot.Bones # Not working
print chainRoot.Effector

# root1
# None
# None
# eff1

The answer is that ChainRoot.Children and ChainRoot.Bones are objects that don’t have a default property, so (in Python) you get the string representation of those objects, which is “None”.

ChainRoot and ChainRoot.Effector, being types of SIObject, and they do have a default property: the Name property.

ChainRoot.Children is an X3DObjectCollection, and ChainRoot.Bones is a ChainBoneCollection, and for whatever reason, those two collections don’t have Item as their default property (for some collections, like ISIVTCollection and LinktabRuleCollection, the Item property is the default property).

So the above Python is equivalent to this:

si = Application
chainRoot = si.Create2DSkeleton(0, 0, 0, 10, 0, 0, -90, 0, 0, 4)

print chainRoot.Name
print str( chainRoot.Children )
print chainRoot.Bones.__str__()
print chainRoot.Effector.Name

# root1
# None
# None
# eff1

Note that in JScript and VBScript, you’d get a “Type mismatch” error instead of the string “None” (in the original snippet).

Finding custom properties by type


Many custom properties, like self-installing custom properties, have a specific type that isn’t “customparamset”. This means you can filter the collection returned by XSIApplication.FindObjects2.

from sipyutils import si		# win32com.client.Dispatch('XSI.Application')
from sipyutils import C			# win32com.client.constants

si = si()

props = si.FindObjects2( C.siCustomPropertyID ).Filter( 'Arnold_Render_Options' )
print props.Count
for p in props:
	print p.FullName
	print "   Shaders search path : %s" % p.Parameters( "shaders_path" ).Value
	print "   Textures search path: %s" % p.Parameters( "textures_path" ).Value

SDKExplorer_Custom_Property_Type

DataRepository.GetCount versus FindObjects


Here’s a snippet that will go through a bunch of CLSIDs, find out how many objects with each CLSID are in the DataRepository (the internal object database), and how many objects with each CLSID can be found with FindObjects.

What’s a bit surprising is the difference in the two numbers. For example, in a blank new scene, there are 19 PoseCompensatorOps in the DataRepository, but FindObjects gets just four.

The idea behind doing this was that it might be helpful to troubleshoot problem scenes (eg something really weird might show up in a problem scene).

iObjTotal = 0

for x in CLSIDs:
	s = ""
	o = None
	iObjCurrent = XSIUtils.DataRepository.GetCount( x )
	iObjTotal = iObjTotal + iObjCurrent

	if iObjCurrent > 0:
		print "%i instances of CLSID %s" % ( iObjCurrent, x )
		o = Application.FindObjects( "", x )
		for i in range(o.Count):
			s += "   %s (%s)\n" % ( o(i), Application.ClassName( o(i) ) )
			
	print s
	
print iObjTotal

Here’s a full-fledged script .

And here’s the output for all the CLSIDs from the Softimage ComServerLocations registry entry (for a new scene in Softimage 2014 SP2, with Arnold installed…76 ArnoldRenderOptions properties, really? 🙂

# 1 instances of CLSID {0091ED92-CF66-4779-BE32-D51584138ECA}
#    Scene.Environments (ProjectItem)
# 6 instances of CLSID {00CB04DA-C252-11D0-A586-00A0C91412DE}
#    light.light.Associated Models (Group)
# 1 instances of CLSID {03356066-FB65-413E-AB28-D53B02C67048}
#    preferences.FaceRobot (Property)
# 7 instances of CLSID {0496EAB0-0ECF-11D1-ABF1-00A02485CECB}
#    Scene_Root (Model)
# 1 instances of CLSID {052601ED-0C90-4974-936D-F3761F963200}
#    preferences.scripting (Property)
# 27 instances of CLSID {07A92499-74B5-11D2-B33F-00105A1F4A37}
#    Views.ViewB.TopCamera.camdisp (Property)
#    Views.ViewA.UserCamera.camdisp (Property)
#    Views.ViewA.TopCamera.camdisp (Property)
#    Views.ViewA.FrontCamera.camdisp (Property)
#    Views.ViewA.RightCamera.camdisp (Property)
#    Camera.camdisp (Property)
#    Views.ViewA.SpotCamera.camdisp (Property)
#    Views.ViewA.SequencerCamera.camdisp (Property)
#    Views.ViewC.SpotCamera.camdisp (Property)
#    Views.ViewB.UserCamera.camdisp (Property)
#    Views.ViewB.FrontCamera.camdisp (Property)
#    Views.ViewB.RightCamera.camdisp (Property)
#    Views.ViewB.SpotCamera.camdisp (Property)
#    Views.ViewB.SequencerCamera.camdisp (Property)
#    Views.ViewC.UserCamera.camdisp (Property)
#    Views.ViewC.TopCamera.camdisp (Property)
#    Views.ViewC.FrontCamera.camdisp (Property)
#    Views.ViewC.RightCamera.camdisp (Property)
#    Views.ViewC.SequencerCamera.camdisp (Property)
#    Views.ViewD.UserCamera.camdisp (Property)
#    Views.ViewD.TopCamera.camdisp (Property)
#    Views.ViewD.FrontCamera.camdisp (Property)
#    Views.ViewD.RightCamera.camdisp (Property)
#    Views.ViewD.SpotCamera.camdisp (Property)
#    Views.ViewD.SequencerCamera.camdisp (Property)
# 1 instances of CLSID {09410AC8-71E7-11D3-B49F-00A0244EEB76}
#    TransientObjectContainer (CollectionItemLegacy)
# 1 instances of CLSID {0A4A1F03-AF67-4425-A83C-AC671EB4D9C9}
#    preferences.explorer (Property)
# 1 instances of CLSID {0B211A42-E71D-4E4F-B8EC-F684C996212B}
#    preferences.scene_search (Property)
# 6 instances of CLSID {0D29533C-B095-48F8-88B9-BDF8419453E7}
# 27 instances of CLSID {1152E9B1-545E-11D0-8466-00A024C7919C}
#    Views.ViewB.TopCamera.camera (Primitive)
#    Views.ViewC.TopCamera.camera (Primitive)
#    Views.ViewD.FrontCamera.camera (Primitive)
#    Views.ViewA.SpotCamera.camera (Primitive)
#    Views.ViewB.RightCamera.camera (Primitive)
#    Views.ViewA.SequencerCamera.camera (Primitive)
#    Views.ViewC.SpotCamera.camera (Primitive)
#    Views.ViewD.UserCamera.camera (Primitive)
#    Views.ViewD.SequencerCamera.camera (Primitive)
#    Camera.camera (Primitive)
#    Views.ViewA.RightCamera.camera (Primitive)
#    Views.ViewA.TopCamera.camera (Primitive)
#    Views.ViewC.SequencerCamera.camera (Primitive)
#    Views.ViewA.UserCamera.camera (Primitive)
#    Views.ViewB.SpotCamera.camera (Primitive)
#    Views.ViewA.FrontCamera.camera (Primitive)
#    Views.ViewB.UserCamera.camera (Primitive)
#    Views.ViewD.RightCamera.camera (Primitive)
#    Views.ViewB.FrontCamera.camera (Primitive)
#    Views.ViewC.FrontCamera.camera (Primitive)
#    Views.ViewB.SequencerCamera.camera (Primitive)
#    Views.ViewC.UserCamera.camera (Primitive)
#    Views.ViewD.TopCamera.camera (Primitive)
#    Views.ViewC.RightCamera.camera (Primitive)
#    Views.ViewD.SpotCamera.camera (Primitive)
# 1 instances of CLSID {11A264FD-B6D1-4CFC-82D3-C7E3A6ADE264}
#    preferences.simulation (Property)
# 29 instances of CLSID {11EBE301-A20C-11D0-8478-00A024C7919C}
#    Camera.visibility (Property)
#    Views.ViewC.SpotCamera.visibility (Property)
#    Camera_Interest.visibility (Property)
#    Camera_Root.visibility (Property)
#    light.visibility (Property)
#    Views.ViewD.SpotCamera.visibility (Property)
#    Views.ViewB.SpotCamera.visibility (Property)
#    Views.ViewA.SpotCamera.visibility (Property)
# 5 instances of CLSID {1265D911-AFA3-41F5-9AEA-7890A10A2812}
#    Views.ViewD.RenderRegion.mentalray (Property)
#    Passes.mentalray (Property)
#    Views.ViewC.RenderRegion.mentalray (Property)
#    Views.ViewB.RenderRegion.mentalray (Property)
#    Views.ViewA.RenderRegion.mentalray (Property)
# 10 instances of CLSID {12F18B50-D380-11D0-9225-08003629EA02}
# 1 instances of CLSID {145520D3-4E75-4539-863F-A60DB27CEE25}
#    preferences.General (Property)
# 7 instances of CLSID {16681C01-C066-11D2-A95B-00A024190119}
# 1 instances of CLSID {1A66378B-490A-4D5E-904B-28631EA027C9}
#    Scene.Passes (PassContainer)
# 1 instances of CLSID {2194FFE3-A0B2-4CAB-A3E8-FC8EDC9F159A}
# 1 instances of CLSID {25571B24-CB95-11D2-88C8-00A024EE6238}
#    PlayControl (Property)
# 1 instances of CLSID {288D850F-3056-4DFB-877A-30F0BAA6E1DE}
#    ReadAnimation (Property)
# 1 instances of CLSID {28DEC312-62B3-11D1-B79B-00A0243E3694}
# 2 instances of CLSID {293AFC8C-CEA7-4D05-8ED5-9E45E7CA619D}
#    preferences.SymmetryProperties (Property)
#    SymmetryProperties (Property)
# 1 instances of CLSID {2A9FFC70-5BA0-11D1-9987-00A0243F0E60}
#    preferences.duplicate (Property)
# 1 instances of CLSID {2F37DA65-86DF-48B4-911A-4819A374A5C5}
#     (CollectionItemLegacy)
# 4 instances of CLSID {2FABFBE6-679E-46C6-BF2E-B8AE4F383D8C}
#    Views.ViewC.RenderRegion (Property)
#    Views.ViewD.RenderRegion (Property)
#    Views.ViewA.RenderRegion (Property)
#    Views.ViewB.RenderRegion (Property)
# 1 instances of CLSID {311236AA-6D18-4198-8DD7-BD6E8B7D7525}
#    preferences.time (Property)
# 1 instances of CLSID {342FB217-15CC-4C38-AE4D-4240C0E900B1}
#    preferences.Camera (Property)
# 126 instances of CLSID {38506572-DD46-40E0-9A6A-708546381D04}
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Passes.Default_Pass.Main (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
#    Framebuffer (Framebuffer)
# 5 instances of CLSID {389E27DD-5FB0-11D2-B11C-00A0C906811E}
# 1 instances of CLSID {394EA0E9-78A1-4B48-A09F-A0F81A68AE5B}
#    preferences (Property)
# 1 instances of CLSID {3D17F684-7DBB-44A2-B4FF-3A40B29CCB02}
#    preferences.objectview (Property)
# 1 instances of CLSID {3DCC9BFD-16F7-4C45-94B4-3CD2228B2C5C}
#    preferences.preset_manager (Property)
# 1 instances of CLSID {3F48C534-0301-11D2-85A3-00C04F8EDF15}
#    BrushProperties (CollectionItemLegacy)
# 9 instances of CLSID {400CCE36-4400-11D0-BDDD-00A0241981E2}
#    Scene Defaults.polymsh (Primitive)
# 6 instances of CLSID {453C2160-61E1-11D1-AE8D-00A0244EEB76}
#    light.light.Associated Models.Selective Light (CollectionItemLegacy)
# 1 instances of CLSID {455D7C9B-F73E-4394-AB88-895AC9237ADF}
#    Passes.RenderOptions (SceneRenderProperty)
# 11 instances of CLSID {45BAD6C1-E075-11D1-999B-00A0243F0E60}
#    Scene_Root.geomapprox (Property)
# 1 instances of CLSID {46F7B210-C532-11D2-B924-00A024C78EE3}
#    application (CollectionItemLegacy)
# 1 instances of CLSID {479F2E10-3900-11D1-B0B3-00A024C79287}
#    Layers.Layer_Default (Layer)
# 10 instances of CLSID {4C4F7500-51EF-11D0-854E-00A02417D029}
#    __SHADERBALL_MATERIAL_LIBRARY__.Grid_Material (Material)
#    __SHADERBALL_MATERIAL_LIBRARY__.Apple_Material (Material)
#    __SHADERBALL_MATERIAL_LIBRARY__.Scene_Material (Material)
#    __SHADERBALL_MATERIAL_LIBRARY__.Stem_Material (Material)
#    __SHADERBALL_MATERIAL_LIBRARY__.Cloud_Material (Material)
#    __SHADERBALL_MATERIAL_LIBRARY__.Light_Material1 (Material)
#    __SHADERBALL_MATERIAL_LIBRARY__.Dark_Material1 (Material)
#    __SHADERBALL_MATERIAL_LIBRARY__.Squares_Material (Material)
#    __SHADERBALL_MATERIAL_LIBRARY__.Lines_Material1 (Material)
#    Sources.Materials.DefaultLib.Scene_Material (Material)
# 1 instances of CLSID {50B4532C-7316-4708-A15A-3A63E542E8CC}
#    preferences.render_tree (Property)
# 50 instances of CLSID {51BF4F41-6777-11D1-BE9F-00A024EE478D}
#    Views.ViewB.TopCamera (Camera)
#    Views.ViewC.SpotCamera (Camera)
#    Views.ViewC.UserCamera (Camera)
#    Views.ViewA.SpotCamera (Camera)
#    Views.ViewD.FrontCamera (Camera)
#    Camera_Interest (Null)
#    Views.ViewB.RightCamera (Camera)
#    Scene_Root (Model)
#    Views.ViewA.SequencerCamera (Camera)
#    Views.ViewA.FrontCamera (Camera)
#    Views.ViewC.RightCamera (Camera)
#    Views.ViewD.RightCamera (Camera)
#    Views.ViewB.FrontCamera (Camera)
#    Views.ViewA.RightCamera (Camera)
#    Views.ViewA.UserCamera (Camera)
#    Views.ViewA.TopCamera (Camera)
#    Views.ViewB.UserCamera (Camera)
#    Views.ViewB.SpotCamera (Camera)
#    Views.ViewB.SequencerCamera (Camera)
#    Views.ViewC.TopCamera (Camera)
#    Views.ViewC.FrontCamera (Camera)
#    Views.ViewC.SequencerCamera (Camera)
#    Views.ViewD.SpotCamera (Camera)
#    Views.ViewD.UserCamera (Camera)
#    Views.ViewD.TopCamera (Camera)
#    Views.ViewD.SequencerCamera (Camera)
#    Camera_Root (CameraRig)
#    Camera (Camera)
#    light (Light)
# 1 instances of CLSID {551C2B18-98F4-4553-A3DE-F20C24B39823}
#    preferences.xsi_explorer (Property)
# 1 instances of CLSID {5E4BD436-737B-4AD3-8E32-D7F9BB7B2573}
#    preferences.data_management (Property)
# 43 instances of CLSID {5FC0CCAE-3DC8-11D0-9449-00AA006D3165}
#    Views.ViewA.SpotCamera (Camera)
#    Views.ViewD.TopCamera (Camera)
#    Views.ViewA.SequencerCamera (Camera)
#    Views.ViewC.RightCamera (Camera)
#    Views.ViewD.UserCamera (Camera)
#    Views.ViewB.SequencerCamera (Camera)
#    Views.ViewA.UserCamera (Camera)
#    Views.ViewA.TopCamera (Camera)
#    Views.ViewB.RightCamera (Camera)
#    Views.ViewA.FrontCamera (Camera)
#    Views.ViewB.SpotCamera (Camera)
#    Views.ViewA.RightCamera (Camera)
#    Views.ViewB.UserCamera (Camera)
#    Views.ViewB.TopCamera (Camera)
#    Views.ViewC.SpotCamera (Camera)
#    Views.ViewD.SpotCamera (Camera)
#    Views.ViewB.FrontCamera (Camera)
#    Views.ViewD.RightCamera (Camera)
#    Views.ViewC.UserCamera (Camera)
#    Views.ViewC.TopCamera (Camera)
#    Views.ViewC.FrontCamera (Camera)
#    Views.ViewC.SequencerCamera (Camera)
#    Views.ViewD.FrontCamera (Camera)
#    Views.ViewD.SequencerCamera (Camera)
#    Camera_Root (CameraRig)
#    Camera (Camera)
#    Camera_Interest (Null)
#    light (Light)
# 11 instances of CLSID {600E50F1-52FC-11D2-A924-00A024190119}
# 3 instances of CLSID {600E50F2-52FC-11D2-A924-00A024190119}
# 9 instances of CLSID {60F7ADA0-7E12-11D0-9960-00A0243F0E60}
#    cls (CollectionItemLegacy)
# 2 instances of CLSID {61782E14-9177-412E-BF9B-2B44B9A668DD}
#    library_source (MaterialLibrary)
#    Sources.Materials.DefaultLib (MaterialLibrary)
# 1 instances of CLSID {62362303-A6D4-4658-9651-905C1ADB056F}
#    preferences.TweakNormals (Property)
# 1 instances of CLSID {639AD931-3896-11D3-97AC-00A0243E3463}
#    Camera.kine.global.IndpCns_E (CollectionItem)
# 13 instances of CLSID {6495C5C1-FD18-474E-9703-AEA66631F7A7}
#    __SHADERBALL_MATERIAL_LIBRARY__.Squares_Material.Lambert (Shader)
#    __SHADERBALL_MATERIAL_LIBRARY__.Stem_Material.Lambert (Shader)
#    __SHADERBALL_MATERIAL_LIBRARY__.Light_Material1.Lambert (Shader)
#    __SHADERBALL_MATERIAL_LIBRARY__.Scene_Material.Phong (Shader)
#    __SHADERBALL_MATERIAL_LIBRARY__.Dark_Material1.Lambert (Shader)
#    __SHADERBALL_MATERIAL_LIBRARY__.Lines_Material1.Lambert (Shader)
#    Sources.Materials.DefaultLib.Scene_Material.Phong (Shader)
#    light.light.arnold_distant_light (Shader)
# 1 instances of CLSID {64E231F5-5A70-4012-B351-4046650227EA}
#    preferences.fcurve_editor (Property)
# 2 instances of CLSID {6630D811-0699-11D1-B723-00AA0068BF56}
# 27 instances of CLSID {675F9E0C-6851-11D2-B335-00105A1F4A37}
#    Views.ViewA.SpotCamera.camvis (Property)
#    Views.ViewD.FrontCamera.camvis (Property)
#    Views.ViewC.TopCamera.camvis (Property)
#    Views.ViewD.TopCamera.camvis (Property)
#    Views.ViewA.UserCamera.camvis (Property)
#    Views.ViewA.TopCamera.camvis (Property)
#    Views.ViewA.FrontCamera.camvis (Property)
#    Views.ViewB.FrontCamera.camvis (Property)
#    Views.ViewA.RightCamera.camvis (Property)
#    Views.ViewA.SequencerCamera.camvis (Property)
#    Views.ViewB.UserCamera.camvis (Property)
#    Views.ViewB.TopCamera.camvis (Property)
#    Views.ViewB.RightCamera.camvis (Property)
#    Views.ViewB.SpotCamera.camvis (Property)
#    Views.ViewB.SequencerCamera.camvis (Property)
#    Views.ViewC.UserCamera.camvis (Property)
#    Views.ViewC.FrontCamera.camvis (Property)
#    Views.ViewC.RightCamera.camvis (Property)
#    Views.ViewC.SequencerCamera.camvis (Property)
#    Views.ViewC.SpotCamera.camvis (Property)
#    Views.ViewD.UserCamera.camvis (Property)
#    Views.ViewD.RightCamera.camvis (Property)
#    Views.ViewD.SpotCamera.camvis (Property)
#    Views.ViewD.SequencerCamera.camvis (Property)
#    Camera.camvis (Property)
# 1 instances of CLSID {68520F4D-333E-44F0-B76D-0E9527F47497}
#    preferences.dopesheet (Property)
# 1 instances of CLSID {6A4AA345-4253-11D0-B148-00A02485CECB}
#    Scene (Scene)
# 1 instances of CLSID {6B00918D-D1F8-44B6-B6A1-5608971A2B84}
#    preferences.MaterialManager (Property)
# 1 instances of CLSID {6B2F8E3E-3BE3-45A3-9187-094616A04ACC}
#    preferences.SnapProperties (Property)
# 27 instances of CLSID {6B3772E6-27C1-11D3-A280-08003658D403}
#    Views.ViewD.FrontCamera.rotoscope (Property)
#    Views.ViewB.RightCamera.rotoscope (Property)
#    Views.ViewD.TopCamera.rotoscope (Property)
#    Views.ViewA.TopCamera.rotoscope (Property)
#    Views.ViewA.UserCamera.rotoscope (Property)
#    Views.ViewA.FrontCamera.rotoscope (Property)
#    Views.ViewA.RightCamera.rotoscope (Property)
#    Views.ViewA.SpotCamera.rotoscope (Property)
#    Views.ViewA.SequencerCamera.rotoscope (Property)
#    Views.ViewB.UserCamera.rotoscope (Property)
#    Views.ViewB.TopCamera.rotoscope (Property)
#    Views.ViewB.FrontCamera.rotoscope (Property)
#    Views.ViewB.SpotCamera.rotoscope (Property)
#    Views.ViewB.SequencerCamera.rotoscope (Property)
#    Views.ViewC.UserCamera.rotoscope (Property)
#    Views.ViewC.TopCamera.rotoscope (Property)
#    Views.ViewC.FrontCamera.rotoscope (Property)
#    Views.ViewC.RightCamera.rotoscope (Property)
#    Views.ViewC.SpotCamera.rotoscope (Property)
#    Views.ViewC.SequencerCamera.rotoscope (Property)
#    Views.ViewD.UserCamera.rotoscope (Property)
#    Views.ViewD.RightCamera.rotoscope (Property)
#    Views.ViewD.SpotCamera.rotoscope (Property)
#    Views.ViewD.SequencerCamera.rotoscope (Property)
#    Camera.rotoscope (Property)
# 1 instances of CLSID {6D81DA53-61DF-11D1-83C1-00A0243E268D}
#    ViewportCapture (CollectionItemLegacy)
# 24 instances of CLSID {72936430-9B0C-4167-8CA7-C30FC2188BB9}
#    XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    Views.ViewB.SequencerCamera.camera.XSISequencerCameraPrimOp (CustomOperator)
#    Views.ViewC.SequencerCamera.camera.XSISequencerCameraPrimOp (CustomOperator)
#    Views.ViewA.SequencerCamera.camera.XSISequencerCameraPrimOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    Views.ViewC.SequencerCamera.kine.global.XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    Views.ViewD.SequencerCamera.kine.global.XSISequencerCameraKineOp (CustomOperator)
#    XSISequencerCameraKineOp (CustomOperator)
#    Views.ViewB.SequencerCamera.kine.global.XSISequencerCameraKineOp (CustomOperator)
#    Views.ViewA.SequencerCamera.kine.global.XSISequencerCameraKineOp (CustomOperator)
#    Views.ViewD.SequencerCamera.camera.XSISequencerCameraPrimOp (CustomOperator)
# 1 instances of CLSID {74895A03-F74D-11D0-96C5-00A024191BAC}
#    DeviceManager (DeviceCollection)
# 76 instances of CLSID {76332571-D242-11D0-B69C-00AA003B3EA6}
#    preferences.Cg_Display (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    preferences.ICEOperators (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Passes.Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    preferences.Arnold Render (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Views.ViewC.RenderRegion.Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Arnold_Render_Options (CustomProperty)
#    Views.ViewD.RenderRegion.Arnold_Render_Options (CustomProperty)
#    Views.ViewB.RenderRegion.Arnold_Render_Options (CustomProperty)
#    Views.ViewA.RenderRegion.Arnold_Render_Options (CustomProperty)
# 1 instances of CLSID {76AA7786-F7E2-4BB6-9FC3-D56ED34EDF68}
#    preferences.MaterialPanel (Property)
# 19 instances of CLSID {77F74C81-7010-11D1-96F5-00A0243E3463}
#    Camera_Root.kine.local (KinematicState)
#    Camera.kine.local (KinematicState)
#    Camera_Interest.kine.local (KinematicState)
#    light.kine.local (KinematicState)
# 1 instances of CLSID {7954E245-8EF2-48AB-A07D-8DEEFDD9FF23}
#    preferences.netview (Property)
# 1 instances of CLSID {79EEBE8E-0ABA-4240-A033-6B02858250D9}
#    PaintTool (CollectionItemLegacy)
# 1 instances of CLSID {7A1BB9D6-58A3-49D6-84BA-39429EDAD489}
#    Passes.Default_Pass.Background_Lights_Partition (Partition)
# 66 instances of CLSID {7ABF1486-448D-11D0-BE37-00A024EE478D}
#    Camera_Root.kine.global (KinematicState)
#    global (KinematicState)
#    Views.ViewC.SequencerCamera.kine.global (KinematicState)
#    global (KinematicState)
#    global (KinematicState)
#    Views.ViewC.UserCamera.kine.global (KinematicState)
#    global (KinematicState)
#    Views.ViewC.SpotCamera.kine.global (KinematicState)
#    Views.ViewA.SequencerCamera.kine.global (KinematicState)
#    Views.ViewD.RightCamera.kine.global (KinematicState)
#    global (KinematicState)
#    Views.ViewC.FrontCamera.kine.global (KinematicState)
#    Views.ViewA.FrontCamera.kine.global (KinematicState)
#    Camera.kine.global (KinematicState)
#    global (KinematicState)
#    global (KinematicState)
#    Views.ViewB.SpotCamera.kine.global (KinematicState)
#    global (KinematicState)
#    Views.ViewD.UserCamera.kine.global (KinematicState)
#    global (KinematicState)
#    global (KinematicState)
#    global (KinematicState)
#    global (KinematicState)
#    Views.ViewA.RightCamera.kine.global (KinematicState)
#    global (KinematicState)
#    global (KinematicState)
#    global (KinematicState)
#    global (KinematicState)
#    Views.ViewB.FrontCamera.kine.global (KinematicState)
#    Views.ViewD.SpotCamera.kine.global (KinematicState)
#    Views.ViewB.SequencerCamera.kine.global (KinematicState)
#    Views.ViewB.TopCamera.kine.global (KinematicState)
#    Views.ViewB.RightCamera.kine.global (KinematicState)
#    Views.ViewD.FrontCamera.kine.global (KinematicState)
#    Views.ViewD.SequencerCamera.kine.global (KinematicState)
#    Views.ViewA.SpotCamera.kine.global (KinematicState)
#    Scene_Root.kine.global (KinematicState)
#    Views.ViewA.UserCamera.kine.global (KinematicState)
#    Views.ViewA.TopCamera.kine.global (KinematicState)
#    light.kine.global (KinematicState)
#    Views.ViewB.UserCamera.kine.global (KinematicState)
#    Views.ViewC.TopCamera.kine.global (KinematicState)
#    Views.ViewC.RightCamera.kine.global (KinematicState)
#    Views.ViewD.TopCamera.kine.global (KinematicState)
#    Camera_Interest.kine.global (KinematicState)
# 4 instances of CLSID {80183202-4F8A-11D0-9BAE-00AA0068BF56}
#     (CollectionItemLegacy)
#     (CollectionItemLegacy)
#     (CollectionItemLegacy)
#     (CollectionItemLegacy)
# 1 instances of CLSID {80D1207E-1C0D-4DEF-AF30-387384DCA4BA}
#    preferences.Compositing (Property)
# 1 instances of CLSID {82443034-51B1-11D0-85AE-080036E93203}
#    Passes.Default_Pass.RenderOptions (CollectionItemLegacy)
# 1 instances of CLSID {82443035-51B1-11D0-85AE-080036E93203}
#    ViewRenderOptions (CollectionItemLegacy)
# 1 instances of CLSID {82C99CA9-3D7E-4A1B-B015-1F4CBF2113C6}
#    Context (CollectionItemLegacy)
# 1 instances of CLSID {83B04845-8E86-4C6C-8196-A6BAA4A657DF}
# 1 instances of CLSID {8A323F88-7344-48F5-907E-2E698A066A60}
#    Sources.Materials (CollectionItemLegacy)
# 1 instances of CLSID {8B291AD2-AAC2-4F09-A027-B47E6C11E4AC}
#    Passes.Default_Pass.Background_Objects_Partition (Partition)
# 1 instances of CLSID {8C4CE8C0-4884-11D5-897C-00D0B71DA41F}
#    LoaderOptions (Property)
# 1 instances of CLSID {8FB0A8D8-2AA2-11D4-B6A3-006094EB029C}
#    RefPlanes (CollectionItemLegacy)
# 19 instances of CLSID {90994BB1-D357-11D2-8B80-00A024EE586F}
#    Camera_Root.kine.local.PoseCompensatorOp (CollectionItem)
#    Camera.kine.local.PoseCompensatorOp (CollectionItem)
#    Camera_Interest.kine.local.PoseCompensatorOp (CollectionItem)
#    light.kine.local.PoseCompensatorOp (CollectionItem)
# 1 instances of CLSID {91B2319A-9DB1-11D1-80CF-00A0248F9397}
#    preferences.Scenecolors (Property)
# 1 instances of CLSID {922D62D1-3208-4E92-9744-8E8D0816B4C8}
#    preferences.Polygon (Property)
# 1 instances of CLSID {961496BA-7EF2-4E91-A493-2C828E61AC2D}
#    preferences.shaderball (Property)
# 1 instances of CLSID {9694B47E-C847-11D3-B7D4-0008C7A011A6}
#    Camera_Interest.CameraInterest (Primitive)
# 1 instances of CLSID {973E6F73-CD0F-11D3-A88B-00C04F8EDF15}
#    Camera_Root.CameraRoot (Primitive)
# 1 instances of CLSID {97599A5D-A2BC-468A-AC6E-FB2F5E7E75D6}
#    preferences.keying_panel (Property)
# 6 instances of CLSID {98859160-CD10-11D3-A88B-00C04F8EDF15}
# 1 instances of CLSID {98CAD7D1-393A-11D2-8B40-00A024EE586F}
#    Camera.kine.dircns (Constraint)
# 1 instances of CLSID {997E1E42-7DC9-43A3-8B78-2B8352382703}
#    preferences.plugin_manager (Property)
# 2 instances of CLSID {9AF45FC0-8DC4-11D4-B915-0800690C8BD0}
# 6 instances of CLSID {9B82ACED-9947-4FD0-87AE-4AC0A3D42BEA}
# 1 instances of CLSID {9DC6AEC5-0D8D-4710-8C78-46748D6B722A}
#    preferences.camera_sequencer (Property)
# 1 instances of CLSID {9E1CD6BD-A30E-49E4-A1CE-57AFB5502D07}
#    preferences.layercontrol (Property)
# 1 instances of CLSID {9E4533F4-E6CF-4FE4-B8D4-15B32E954A81}
#    preferences.Display (Property)
# 1 instances of CLSID {9E734591-4B92-11D4-B7F3-0008C7A011A6}
# 1 instances of CLSID {A04BA012-0B7F-4E8C-8B81-EF09820A875B}
#    preferences.units (Property)
# 14 instances of CLSID {A0D4A4E1-7B7A-445B-A871-C55A9988DFDC}
#    Scene_Material (Material)
# 6 instances of CLSID {A15B3913-073F-11D4-B7DF-0008C7A011A6}
#    refplane (Property)
#    RefPlanes.XY (Property)
#    RefPlanes.XZ (Property)
#    RefPlanes.View (Property)
#    RefPlanes.Transform (Property)
#    RefPlanes.YZ (Property)
# 19 instances of CLSID {A2C21F92-96E3-11D3-B8A0-00A0C92469BE}
#    Camera_Root.kine.local.ParentPoseAndPoseCns_D (CollectionItem)
#    Camera.kine.local.ParentPoseAndPoseCns_D (CollectionItem)
#    Camera_Interest.kine.local.ParentPoseAndPoseCns_D (CollectionItem)
#    light.kine.local.ParentPoseAndPoseCns_D (CollectionItem)
# 1 instances of CLSID {A8BF89CA-1025-11D2-B5FD-006094EB029C}
#    Scene.Audio Container Properties (Property)
# 1 instances of CLSID {AD2412A8-3426-47CD-B65F-E98A2093130D}
#    dotXSIImportOptions (Property)
# 1 instances of CLSID {ADDBD2A0-85A4-11D4-8C31-009027BC3A0E}
# 6 instances of CLSID {B0A5373D-E8B3-4816-BC5A-A6A31E4B4158}
# 4 instances of CLSID {B49C1779-D1FE-4FB6-B9DB-9C253E3F3648}
# 1 instances of CLSID {B4ACAE9C-4F44-43D5-A591-295B61EE52A3}
#    preferences.Interaction (Property)
# 1 instances of CLSID {B533F218-5FDD-4800-ADE0-06534BDFD6B4}
#    preferences.weighteditor (Property)
# 1 instances of CLSID {B54D8594-0F35-4CB8-876D-0C88DC45BA3C}
#    preferences.Select (Property)
# 1 instances of CLSID {B8AD87C9-EE5C-4FDF-A51F-8DB121CB8991}
#    WriteAnimation (Property)
# 1 instances of CLSID {BBEED5A8-7763-11D2-977A-00A0C982C728}
#    FramePreviewSettings (CollectionItemLegacy)
# 1 instances of CLSID {BD407DFB-4120-4898-8475-44150D6B522C}
#    preferences.shape_animation (Property)
# 1 instances of CLSID {BDC5A1EE-EEBE-4CD2-9443-A5B7AF67ED22}
#    preferences.schematic (Property)
# 1 instances of CLSID {BFDAF164-5DD8-4422-9F1E-35527CDC2A02}
#    Passes.Default_Pass (Pass)
# 1 instances of CLSID {C23A9A23-5260-4E80-9165-F8673D9086B7}
#    preferences.modeling (Property)
# 2 instances of CLSID {C27897E0-1B97-11D4-AE61-00A0C96E63E1}
# 57 instances of CLSID {C4EF9563-8317-42EA-849D-58705A9B32B5}
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    Views.ViewA.RenderRegion.HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    Views.ViewD.RenderRegion.HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    Passes.HardwareRenderer (Property)
#    Views.ViewC.RenderRegion.HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    HardwareRenderer (Property)
#    Views.ViewB.RenderRegion.HardwareRenderer (Property)
# 1 instances of CLSID {C68A1E9A-8879-4F7A-9247-56B5F602E795}
#    preferences.icetree (Property)
# 1 instances of CLSID {CA7AB48C-EE62-4675-8BE6-DE979CB63692}
#    preferences.animation (Property)
# 1 instances of CLSID {CBA2D702-8E67-47B1-A0D2-89354E33C241}
#    preferences.Tweak (Property)
# 4 instances of CLSID {CCACF571-B1B8-11D3-9E9B-009027BC38DD}
#    Scene_Root.display (Property)
# 1 instances of CLSID {CE38DE41-5C05-11D4-B4A2-00D0B71903E4}
#    Scene Defaults (Property)
# 66 instances of CLSID {D557CF35-57E3-11D2-8B5A-00A024EE586F}
#    Views.ViewA.RightCamera.kine (Kinematics)
#    Views.ViewD.UserCamera.kine (Kinematics)
#    Views.ViewB.TopCamera.kine (Kinematics)
#    kine (Kinematics)
#    kine (Kinematics)
#    kine (Kinematics)
#    kine (Kinematics)
#    Views.ViewD.SpotCamera.kine (Kinematics)
#    Views.ViewA.SequencerCamera.kine (Kinematics)
#    kine (Kinematics)
#    Views.ViewB.FrontCamera.kine (Kinematics)
#    kine (Kinematics)
#    kine (Kinematics)
#    kine (Kinematics)
#    Views.ViewA.SpotCamera.kine (Kinematics)
#    kine (Kinematics)
#    kine (Kinematics)
#    kine (Kinematics)
#    kine (Kinematics)
#    Views.ViewC.RightCamera.kine (Kinematics)
#    kine (Kinematics)
#    Views.ViewC.FrontCamera.kine (Kinematics)
#    kine (Kinematics)
#    kine (Kinematics)
#    Views.ViewD.TopCamera.kine (Kinematics)
#    kine (Kinematics)
#    Views.ViewB.SpotCamera.kine (Kinematics)
#    Views.ViewD.SequencerCamera.kine (Kinematics)
#    Views.ViewD.FrontCamera.kine (Kinematics)
#    Views.ViewB.SequencerCamera.kine (Kinematics)
#    Views.ViewA.FrontCamera.kine (Kinematics)
#    Views.ViewC.SequencerCamera.kine (Kinematics)
#    Scene_Root.kine (Kinematics)
#    Views.ViewB.RightCamera.kine (Kinematics)
#    Views.ViewA.UserCamera.kine (Kinematics)
#    Views.ViewC.UserCamera.kine (Kinematics)
#    Views.ViewA.TopCamera.kine (Kinematics)
#    Views.ViewB.UserCamera.kine (Kinematics)
#    Views.ViewC.TopCamera.kine (Kinematics)
#    Views.ViewC.SpotCamera.kine (Kinematics)
#    Views.ViewD.RightCamera.kine (Kinematics)
#    Camera_Root.kine (Kinematics)
#    Camera.kine (Kinematics)
#    Camera_Interest.kine (Kinematics)
#    light.kine (Kinematics)
# 1 instances of CLSID {D7D93C1D-902E-444E-99DD-C6A3D08627C2}
#    preferences.rendering (Property)
# 6 instances of CLSID {DBA00978-85BE-4D94-AEC5-422ECB4EE4BD}
# 1 instances of CLSID {DC84D7A3-ABA5-4BBF-9E09-A9B6FFE86983}
#    preferences.output_format (Property)
# 4 instances of CLSID {DD4BA6C4-60F1-11D1-8680-00A0C91412D9}
#    Scene_Root.AmbientLighting (Property)
# 19 instances of CLSID {DD804FBB-84DE-11D3-B89F-00A0C92469BE}
#    Camera_Interest.kine.global.ParentPoseCns_E (CollectionItem)
#    Camera_Root.kine.global.ParentPoseCns_E (CollectionItem)
#    Camera.kine.global.ParentPoseCns_E (CollectionItem)
#    light.kine.global.ParentPoseCns_E (CollectionItem)
# 1 instances of CLSID {DDA7A96E-7E81-433D-89BF-94FC82D71C06}
#    sequencerplotting (Property)
# 1 instances of CLSID {E068B6F5-CC79-48C4-92B1-1A265ACA7190}
#    PaintTool (CollectionItemLegacy)
# 2 instances of CLSID {E0CBD759-BDD7-44D1-8730-981472AFC5E9}
#    preferences.TransformProperties (Property)
#    TransformProperties (Property)
# 1 instances of CLSID {E2A86051-F669-11D1-8D60-080036F3CC02}
#    FCurve (FCurve)
# 1 instances of CLSID {E2FE2EF1-FEA2-41DE-8C3C-7FB1E819AAED}
#    preferences.transformgroup (Property)
# 11 instances of CLSID {E4DD8E40-1E1C-11D0-AA2E-00A0243E34C4}
# 1 instances of CLSID {E662A425-C427-4D18-9669-6858E59F6FA1}
#    preferences.texture_layer_editor (Property)
# 1 instances of CLSID {E8734CFA-4185-4CEA-A7E0-24E45ACA26D2}
#    preferences.animation_mixer (Property)
# 1 instances of CLSID {E9EF4BE1-3A2B-11D3-97AC-00A0243E3463}
#    Camera.kine.dircns.PosePoseCns_D (CollectionItem)
# 1 instances of CLSID {EA3AB345-F8A8-488D-826B-6943CFF9C604}
#    dotXSIExportOptions (Property)
# 1 instances of CLSID {EA861F7A-D67C-11D2-88C9-00A024EE6238}
#    Views (CollectionItemLegacy)
# 4 instances of CLSID {EA861F7B-D67C-11D2-88C9-00A024EE6238}
#    Views.ViewA (CollectionItemLegacy)
#    Views.ViewB (CollectionItemLegacy)
#    Views.ViewC (CollectionItemLegacy)
#    Views.ViewD (CollectionItemLegacy)
# 1 instances of CLSID {EC8D460F-40F1-439D-AE59-8F81AA2871F3}
#    preferences.scripteditor (Property)
# 1 instances of CLSID {EE4D73A9-3962-45C1-86CB-77562467BB52}
#    preferences.ViewCube (Property)
# 1 instances of CLSID {EE641152-A847-4F36-B5FD-FCA002F90634}
#    PaintTool.FloodFillTemplate (CollectionItemLegacy)
# 1 instances of CLSID {F16DA201-13A2-11D3-B37A-00105A1E70DE}
#    Scene.Sources (CollectionItemLegacy)
# 1 instances of CLSID {F16DA202-13A2-11D3-B37A-00105A1E70DE}
#    Scene.Clips (CollectionItemLegacy)
# 6 instances of CLSID {F3705C30-5204-11D0-8298-00A0243E366B}
#    light.light (Primitive)
# 1 instances of CLSID {F946644B-B42A-4063-B653-A0E884EA4D29}
#    preferences.SceneDebugging (Property)
# 1 instances of CLSID {FCA78BFF-DFC2-4610-8455-FA5C9B980BB7}
#    preferences.texture_editor (Property)
# 1 instances of CLSID {FD0EA020-390C-11D1-B0B3-00A024C79287}
#    Scene.Layers (CollectionItemLegacy)
# 1 instances of CLSID {FF22E061-5CED-4ED1-B6F3-58FD451FFDE5}
#    preferences.animation_editor (Property)
# 1034

Dispatching XSI.Factory versus using the intrinsic XSIFactory object


The other day in the comments, A asked about some Python I had posted a few years ago: Why did I manually dispatch XSI.Factory instead of just using the global XSIFactory object? Honestly, I don’t know why I did. I had seen other code do it that way, so I did it too. And I see that the sipyutils.py also dispatches objects like XSI.Application, XSI.Utils, and XSI.Math, so I figured I was in good company.

A little research shows that XSIFactory uses late bound automation (aka dynamic dispatch) and so avoids any possible problems with the pywin32 cache. Late-bound automation means that PythonCOM doesn’t know what properties or methods the object supports; whenever you try to access a property or method, PythonCOM will query the object to find out if the property/method is supported.

In contrast, when you dispatch XSI.Factory, PythonCOM uses the pywin32 cache to support early-binding, where all the available properties and methods are known beforehand.

You can read more about this Chapter 12 of Python Programming on Win32, Advanced Python and COM

Here’s a little Python snippet demonstrating the differences between a dispatched XSI.Factory and the global XSIFactory object. Note in particular the output of dir() for each object.

from win32com.client import Dispatch as disp
sifact = disp('XSI.Factory')

print sifact
print XSIFactory
# <win32com.gen_py.Softimage|XSI Object Model Library v1.5.XSIFactory instance at 0x564246344>
# <COMObject XSIFactory>

print dir(sifact)
print dir(XSIFactory)
# ['CLSID', 'CreateActiveXObject', 'CreateFCurveKeyCollection', 'CreateFCurveParamDef', 'CreateGridData', 'CreateGridParamDef', 'CreateGuid', 'CreateObject', 'CreateObjectFromFile', 'CreateObjectFromFile2', 'CreateObjectFromPreset', 'CreateObjectFromPreset2', 'CreateParamDef', 'CreateParamDef2', 'CreateScriptedOp', 'CreateScriptedOpFromFile', 'CreateShaderDef', 'CreateShaderParamDefOptions', 'RemoveShaderDef', '_ApplyTypes_', '__doc__', '__eq__', '__getattr__', '__init__', '__module__', '__ne__', '__repr__', '__setattr__', '_get_good_object_', '_get_good_single_object_', '_oleobj_', '_prop_map_get_', '_prop_map_put_', 'coclass_clsid']
# ['_Close_', '__doc__', '__getattr__', '__init__', '__module__', '__repr__', '__setattr__', '_scriptItem_']

print sifact.__module__
print XSIFactory.__module__
# win32com.gen_py.269C4D8C-E32D-11D3-811D-00A0C9AC19A9x0x1x0.XSIFactory
# win32com.axscript.client.pyscript

Why you cannot use shortcuts to access the ViewportCapture settings


In the comments, G asks:

Why do you have do this:

si = Application
oViewportCapture = si.Dictionary.GetObject( "ViewportCapture" )
oViewportCapture.NestedObjects( "Start" ) = 10

and not this:

si = Application
oViewportCapture = si.Dictionary.GetObject( "ViewportCapture" )
oViewportCapture.Start = 10

CaptureOptions
The answer is that the ViewportCapture object is not a ProjectItem, and so does not support the Parameters property. ViewportCapture is a CollectionItemLegacy object (and before that, it was an SIObject).

si = Application
p = si.Dictionary.GetObject( "ViewportCapture.Start" )
p.Value = 10
#si.SetValue( "ViewportCapture.Start", 10 )

Scripting – Creating an empty polygon mesh


There’s several ways to create an empty polygon mesh with the Object Model.

from sipyutils import si			# win32com.client.Dispatch('XSI.Application')
from sipyutils import log		# LogMessage
from sipyutils import C			# win32com.client.constants

si = si()
o = si.Selection(0)

if o.IsClassOf( C.siX3DObjectID ):
	o.AddPolygonMesh()
	o.AddPrimitive( "EmptyPolygonMesh"  )
	o.AddGeometry( "EmptyPolygonMesh" )

AddPolygonMesh() courtesy of Vladimir

Getting crash, dirty exit, and clean exit counts


This morning I saw a post taking a poll on how often 2014 SP2 crashes. So, here’s some crash numbers from my system:
CER_data_2
There’s a big difference in the number of sessions, so a percentage chart might make it easier to compare the versions:
CER_data_1

Crashes are actual crashes caught by CER. What I called “dirty exits” are exits or crashes not caught by CER. For example, killing xsi.exe in the Task Manager is a dirty exit. Clean exits are when you quit Softimage normally (for example, when you click File > Exit or the Close X icon).

I used this Python snippet to extracts the CER crash data from the registry.

#HKEY_USERS\S-1-5-21-1384716164-225505876-396224183-1000\
#   Software\Softimage\SOFTIMAGE|SICORE Engine\C:|Program Files|Autodesk|Softimage 2014 SP2|Application|bin\ProductInfo

from _winreg import *

# dicts keyed by Softimage version
dCrashes = {}
dCleanCloses = {}
dStarts = {}

#
# Get the CER crash data for each SI version
# under the SOFTIMAGE|SICORE Engine key
# 
def enum_sicore( subkey ):
	try:
		i = 0
		k = OpenKey( HKEY_USERS, "%s\Software\Softimage\SOFTIMAGE|SICORE Engine" % subkey,  0, KEY_READ )
		while True:
			subkey1 = EnumKey(k, i)
			
			# extract product name eg "Softimage 2014 SP2"
			s = subkey1.rsplit( '|' )[3]
			
			pi_key = OpenKey( k, "%s\%s" % (subkey1,"ProductInfo"), 0, KEY_READ )

			value = QueryValueEx(pi_key, "crashCount" )
			dCrashes[ s ] = value[0]

			value = QueryValueEx(pi_key, "SessionCleanCloseCount" )
			dCleanCloses[ s ] = value[0]

			value = QueryValueEx(pi_key, "SessionStartCount" )
			dStarts[ s ] = value[0]

			i += 1
	except WindowsError:
		# WindowsError: [Errno 259] No more data is available    
		pass

#
# For each user
#  
try:
	i = 0
	while True:
		subkey = EnumKey(HKEY_USERS, i)
		enum_sicore( subkey )
		i += 1
except WindowsError:
	# WindowsError: [Errno 259] No more data is available    
	pass
	
#
# Print out the numbers
#
crashes = 0
exits = 0
starts = 0

for key in dCrashes:
	print key
	print "   Crashes: %d" % dCrashes[key]
	print "   Dirty Exits: %d" % (dStarts[key] - dCleanCloses[key])
	print "   Starts: %d" % dStarts[key]
	
	crashes += dCrashes[key]
	exits += (dStarts[key] - dCleanCloses[key])
	starts += dStarts[key]

# Print out CSV for export into Excel for charting
for key in dCrashes:
	print "%s, %d, %d, %d" % (key, dCrashes[key], dStarts[key] - dCleanCloses[key], dStarts[key])

PPG callbacks and variable scope


The scope of variable b is this snippet. That is, the identifier b exists and has the value 1 only while this snippet is running. After that, it doesn’t exist unless some other code defines it.

Consequently, the OnClicked callback is going to fail with a ‘b’ is undefined error.

var myPset = ActiveSceneRoot.AddProperty("CustomProperty",false,"Mytest");
var myLayout = myPset.PPGLayout;

var b = 1;

function a_OnClicked(){
	LogMessage( b );	
}

myLayout.AddRow()
myLayout.AddButton("a","button");
myLayout.EndRow() 

myLayout.Logic=OnInit.toString() +  a_OnClicked.toString();
myLayout.Language = "JScript" ;

InspectObj(myPset);

The way it works is that Softimage creates a new instance of the JScript ActiveX scripting engine each time it needs to execute some fragment of code. So, the above snippet runs in one instances of the scripting engine (which is destroyed after the code is executed). Then later, when the button is clicked, the OnClicked callback runs in a new and different instances of the scripting engine. And that new instance of the scripting engine, there is no variable named b.

One way around this would be to add b as a parameter:

var myPset=ActiveSceneRoot.AddProperty("CustomProperty",false,"Mytest");
var b =	myPset.AddParameter2("b",siInt4,1,0,100,0,100,siClassifUnknown,siPersistable | siKeyable);

var myLayout=myPset.PPGLayout;

myLayout.AddRow()
myLayout.AddButton("a","button");
myLayout.EndRow() 
myLayout.Logic=OnInit.toString() +  a_OnClicked.toString();
myLayout.Language = "JScript" ;

InspectObj(myPset);

function a_OnClicked(){
	LogMessage(PPG.b);	
}

Another way would be to use a LogicFile, something like this:

// LogicFile for an on-the-fly custom property
var b = 1;
var c = -1;
function OnInit() {
	LogMessage( "OnInit" );
	c = 99;
}
function a_OnClicked(){
	LogMessage( b );	
	LogMessage( c );
}

Then your property would work like this:

var myPset=ActiveSceneRoot.AddProperty("CustomProperty",false,"Mytest");
var myLayout=myPset.PPGLayout;

myLayout.AddRow()
myLayout.AddButton("a","button");
myLayout.SetAttribute( siUILogicFile, "\\some\\path\\LogicFile.js" );

myLayout.EndRow() 
myLayout.Language = "JScript" ;

InspectObj(myPset);

And this would give the following output:

// INFO : OnInit
// INFO : 1
// INFO : 99