[Closed] Dumb issue with array full of path names
Heya folks,
I’m getting an idiotic error with a simple script that creates a set of uniformly named folders in a set of directories. I’ve got an array of folder names and I’m using the new @ symbol so that things like aren’t being picked up as a variable for tab but I’m finding that when I now wrap a ui around it all, the array is giving me an error. If I comment out the array it works fine and if I remove the ui entirely it also gives me the result I want – am I doing something dumb with the @ symbol or is there something else daft going on here? Ideally it’d be great to keep the @ Usage so I could later on add in the ability to edit the folder list using the format you’d copy and paste the location from windows explorer.
Cheers for any help – I’m sure it’s a dumb one, just getting back into scripting after a few years!
Rollout ss_make_folders "SS Make Shot Folders"
(
--Screenscene make folders 01
global theSeasonNum = undefined
global theEpisodeNum = undefined
global theShotNum = undefined
Global TheFolderArray = undefined
Global Shotname = undefined
-- shotname = "101_002_wa_0020_clean_tail"
EditText Shotname "Shot Name" Width:300 align:#right
Button MkFolders "Make Folders" Width:300 align:#right
TheFolderArray = #(@"N:\Renders\3d",@"N:\Renders\Jpegs",@"N:\Renders\Nuke",@"M:\Playouts",@"P:\Projects\2d extures",@"P:\Projects\3d\animation",@"P:\Projects\3d\setups",@"P:\Projects\3d_tracking",@"P:\Projects\Nuke",@"L:\Library\2d extures")
On mkFolders pressed do
(
theNameArray = filterstring shotname.text "_"
-- check Episode number to see if it's over 10
if ((theNameArray[1] as string).count == 3) then
(
theSeasonNum = substring (theNameArray[1] as string) 1 1
theEpisodeNum = substring (theNameArray[1] as string) 2 2
theShotNum = (theNameArray[2] as string)
Print ("The season number is " + theSeasonNum as string + ", the Episode number is " + theEpisodeNum as string + " and the shot number is " + theShotNum as string)
) else (
theSeasonNum = substring (theNameArray[1] as string) 1 2
theEpisodeNum = substring (theNameArray[1] as string) 3 2
theShotNum = (theNameArray[2] as string)
Print ("The season number is " + theSeasonNum as string + ", the Episode number is " + theEpisodeNum as string + " and the shot number is " + theShotNum as string)
)
-- End check episode number
for f = 1 to TheFolderArray.count do
(
-- Split the folder based on a back slash
PathFilt = filterstring TheFolderArray[f] @"\"
-- Set a temp variable top hold our new folder name in
theFiltPath = ""
-- Take our exploded path and replace in a correct backslash
for p = 1 to Pathfilt.count do
(
theFiltPath = theFiltPath + PathFilt[p]
if p != Pathfilt.count then
(
theFiltPath = theFiltPath + "\\"
)
)
-- Make our end path name
theFolder = ("makedir @" + "\"" + theFiltPath as string + "\\" + "ep_" + theEpisodeNum as string + "\\" + theshotNum as string + "\"")
print theFolder
)
-- Filter and
)
)
createdialog ss_make_folders width:340
TheFolderArray = ...
should be:
local TheFolderArray = ...
since you are using it as a local rollout variable
Hmm – would have thought making a variable global first would prevent any of those issues – I’ll have a read through the docs on the two scopes. Much appreciated for the help!
Really you want to avoid making any globals and keep them all local. If you have lots of globals floating around they could get over written by another tool that just happens to use the same global name.
Very good point – I clearly know just enough to get myself in trouble