My experience with global variables in scripting is softimage treats them like 
static declared variables from C/C++.   The variable is initialized once, then 
cached for all future invocations of the script during the user  session.  They 
are not de-referenced when the script terminates/completes.

This mainly applies to scripts run from the script editor directly.  Global 
variables inside of self installing plugins should work as expected.


Matt





From: [email protected] 
[mailto:[email protected]] On Behalf Of Xavier Lapointe
Sent: Friday, May 11, 2012 6:12 PM
To: [email protected]
Subject: [Python] global variable issue on linux

Hey guys,

This one really surprised me. I tend to avoid global variable in Softimage 
plugins as much as I can, but sometimes it might be convenient.

So basically, I wanted to use a global variable ( simple Python Dictionary ) to 
keep some stuff in reference while interacting with a PPG. I remember clearly 
that it was working well under Windows, so
I assume this is a python 2.5 Linux issue (if this is an issue - please tell me 
if this is normal under Soft with python 2.5).

Here's basically what I was trying to do:

[imports ....]
# Global Scope
LAST_SELECTION = {
    'project': {},
    'category': '',
    'entities': [],
}

def CustomCommand_Execute():
    global LAST_SELECTION
    [Do some modifications to LAST_SELECTION]


Following this pattern:

 *   Prompt the PPG
 *   Interact with the UI
 *   The custom command is fired - do some modifications to LAST_SELECTION
 *   hit another PPG UI
 *   Hell the LAST_SELECTION global is back to the inital value!
I've been tracing the LAST_SELECTION variable with id(), and it's changing 
every time I interact with the UI; showing clearly that there is something 
nasty going on under the hood (?)

Any idea to get this working?

Alan mentioned the Application.SetGlobal/Application.GetGlobal functions ... 
but still, this should be working natively, isn't?

Thanks!

--
Xavier

Reply via email to