If you ever looked at how to parse the operator stack you must've seen the
doc page for *ConstructionHistory*:
http://download.autodesk.com/global/docs/softimage2012/en_us/sdkguide/index.html?url=si_om/ConstructionHistory.html,topicNumber=si_om_ConstructionHistory_html

Third paragraph under Description:
*"The construction history is one example of the more general concept of
"Connection Stack", see
DataRepository.GetConnectionStackInfo<http://download.autodesk.com/global/docs/softimage2012/en_us/sdkguide/si_om/DataRepository.GetConnectionStackInfo.html>
for
details."*


On Sun, Jul 29, 2012 at 6:02 PM, Eric Thivierge <[email protected]>wrote:

> Black magic! I've never even heard of that object. :(
>
> --------------------------------------------
> Eric Thivierge
> http://www.ethivierge.com
>
>
> On Mon, Jul 30, 2012 at 7:32 AM, Alan Fregtman <[email protected]>wrote:
>
>> Hey guys,
>>
>> *You're all forgetting the ConnectionStack.* It tells you what's
>> connected under the hood. *No need to scan through all expressions in
>> the scene!*
>>
>>
>> import xml.etree.ElementTree as ET
>> def getExpressionsDrivenByParameter( param ):
>>     stack = XSIUtils.DataRepository.GetConnectionStackInfo(param)
>>
>>     expressions = XSIFactory.CreateObject('XSI.Collection')
>>     xml = ET.fromstring(stack)
>>     for conn in xml.findall('connection'):
>>         if conn.find('type').text == 'out':
>>             item = conn.find('object').text
>>             if item.endswith('.Expression'):
>>                 expressions.AddItems(item)
>>
>>     return expressions
>>
>>
>>
>> It took 4.5s on my laptop to find 10,752 expressions that were pointing
>> to one single parameter. Fast enough for ya? :) -- In a less ludicrous use
>> case, it's pretty much instant.
>>
>>    -- Alan
>>
>>
>>
>> On Sat, Jul 28, 2012 at 11:51 AM, Alok Gandhi 
>> <[email protected]>wrote:
>>
>>> Hi Jeremy,
>>>
>>> I missed this first time but to make it more elegant you (not a speed
>>> up) you can even do:
>>> def getExpressionsDrivenByParameter( param ):
>>>     return PARAM_EXPR_DICT.get(param.FullName)
>>>
>>> which is exactly the same as before but cleaner code,
>>>
>>
>>
>

Reply via email to