Thanks Matt ! Interesting solution Alok, my issue is not the 2sec that it takes to perform the seach but that I am looping on this method about 20 times... so it makes sense to try something like that ! I'll give it a try right now !
On 27 July 2012 15:54, Alok <[email protected]> wrote: > Maybe globally store the expressions with their params in a hash > (dictionary in Python) and then do the reverse look up. Will not run > faster but will save you time for each call to > getExpressionsDrivenByParameter() > > In this case: > PARAM_EXPR_DICT = {} > for expr in Application.FindObjects(None, > "{12723EB2-7DDB-11D0-A57F-00A0C91412DE}"): > ports = expr.InputPorts > if not ports.Count: > continue > for port in in ports : > paramName = port.Target2.FullName > if not PARAM_EXPR_DICT.has_key(paramName): > PARAM_EXPR_DICT[paramName] = [] > PARAM_EXPR_DICT[paramName].append(expr) > > > Then you can test it for parameter simply by: > def getExpressionsDrivenByParameter( param ): > return (PARAM_EXPR_DICT[param.FullName] if > PARAM_EXPR_DICT.has_key(param.Name) else None) > > > > > Alok. > > On 27/07/2012 5:44 PM, Jeremie Passerin wrote: > > Hi guys, > > I was wondering what is your technique to get all the expressions driven > by a parameter. > I'm trying to find the fastest way to do it. > here is my code : > > def getExpressionsDrivenByParameter( param ): > > allExpressions = xsi.FindObjects(None, > "{12723EB2-7DDB-11D0-A57F-00A0C91412DE}") > result = [] > for exp in allExpressions: > for port in exp.InputPorts: > if port.Target2.IsEqualTo(param) and exp.OutputPorts.Count: > result.append(exp) > break > return result > > With around 5000 expressions in my scene it takes about 2sec to get the > result. Anyone got a faster solution ? > > cheers, > Jeremie > > No virus found in this message. > Checked by AVG - www.avg.com > Version: 2012.0.2197 / Virus Database: 2437/5158 - Release Date: 07/27/12 > > >

