I’ve had some problems with IsElement lately, so I took another look at how to work around problems with IsElement, especially when you’re using it with ICE topology. Also, a quick look under the covers at the connections in the construction stack (aka operator history).
Here’s the script I was using to print the connection stack info:
# # This script works in 2013 SP1 only because it uses sipyutils # from sipyutils import si # win32com.client.Dispatch('XSI.Application') from sipyutils import siut # win32com.client.Dispatch('XSI.Utils') from sipyutils import siui # win32com.client.Dispatch('XSI.UIToolkit') from sipyutils import simath # win32com.client.Dispatch('XSI.Math') from sipyutils import log # LogMessage from sipyutils import disp # win32com.client.Dispatch from sipyutils import C # win32com.client.constants si=si() siut =siut() sisel = si.Selection from xml.etree import ElementTree as ET prim = sisel(0).ActivePrimitive if si.ClassName(sisel(0)) == 'X3DObject' else sisel(0) stackInfo = siut.DataRepository.GetConnectionStackInfo( prim ) #log( stackInfo ) connections = ET.XML(stackInfo) currentMarker ='' print "Connections for %s" % prim.FullName for connection in connections: o = connection.find('object').text if o == currentMarker: continue if o.endswith('marker'): currentMarker = o print "%s (%s)" % (connection.find('object').text, connection.find('type').text)