Go to: Synopsis. Return value. Related. Flags. Python examples.

Synopsis

workspace( [string] , [active=boolean], [baseWorkspace=string], [create=string], [directory=string], [expandName=string], [fileRule=[string, string]], [fileRuleEntry=string], [fileRuleList=boolean], [filter=boolean], [fullName=boolean], [list=boolean], [listFullWorkspaces=boolean], [listWorkspaces=boolean], [newWorkspace=boolean], [objectType=[string, string]], [objectTypeEntry=string], [objectTypeList=boolean], [openWorkspace=boolean], [projectPath=string], [removeFileRuleEntry=string], [removeVariableEntry=string], [renderType=[string, string]], [renderTypeEntry=string], [renderTypeList=boolean], [rootDirectory=boolean], [saveWorkspace=boolean], [shortName=boolean], [update=boolean], [updateAll=boolean], [variable=[string, string]], [variableEntry=string], [variableList=boolean])

Note: Strings representing object names and arguments must be separated by commas. This is not depicted in the synopsis.

workspace is undoable, queryable, and NOT editable.

Create, open, or edit a workspace associated with a given workspace file.

The string argument represents the workspace. If no workspace is specified then the current workspace is assumed.

A workspace provides the underlying definition of a Maya Project. Each project has an associated workspace file, named workspace.mel, which is stored in the project root directory. The workspace file defines a set of rules that map file types to their storage, either relative to the project root or as an absolute location. These rules are used when resolving file paths at runtime.

The workspace command operates directly on the low-level definition of the workspace to read, change and store the definition to the underlying file. Use of this command is not generally required, for most purposes it is recommended that project definition changes be done via the Project Window in the User Interface.

Return value

string
string[]

In query mode, return type is based on queried flag.

Related

translator

Flags

active, baseWorkspace, create, directory, expandName, fileRule, fileRuleEntry, fileRuleList, filter, fullName, list, listFullWorkspaces, listWorkspaces, newWorkspace, objectType, objectTypeEntry, objectTypeList, openWorkspace, projectPath, removeFileRuleEntry, removeVariableEntry, renderType, renderTypeEntry, renderTypeList, rootDirectory, saveWorkspace, shortName, update, updateAll, variable, variableEntry, variableList
Long name (short name) Argument types Properties
newWorkspace(n) boolean create
This specifies that a new workspace is being created. If a workspace with this name already exists, the command will fail.
openWorkspace(o) boolean createquery
Open the workspace. The workspace becomes the current workspace.
active(act) boolean createquery
This flag is a synonym for -o/openWorkspace.
saveWorkspace(s) boolean create
Save the workspace. Workspaces are normally saved when Maya exits but this flag will make sure that the data is flushed to disk.
baseWorkspace(bw) string query
A workspace may be based on another workspace. This means that all the settings in the base workspace apply to this workspace unless they are explicitly overridden.
listWorkspaces(lw) boolean createquery
Returns a list of all the currently defined workspace names.
listFullWorkspaces(lfw) boolean createquery
Returns a list of the full path names of all the currently defined workspaces.
list(l) boolean createquery
This option will list the current workspace directory. If a path is specified for the "workspaceFile" then the contents of that directory will be listed. Otherwise, the contents of the directory set with the -dir flag will be listed.
directory(dir) string createquery
This option will set the current workspace directory to the path specified. When queried it will return the current workspace directory. This directory is used as an initial directory for the fileBrowser and is part of the search path used for locating files. It should not be confused with the current working directory as used by the pwd and chdir commands. When the file browser is used, it will set this value to the last location navigated to.
create(cr) string create
Create a new directory. If the directory name is not a full path name, it will be created as a subdirectory of the "current" directory set with the -dir flag.
rootDirectory(rd) boolean query
Returns the root directory of the workspace.
objectType(ot) [string, string] createquery
This flag is obsolete. All default locations will be added to the fileRules going forward.
objectTypeList(otl) boolean createquery
This flag is obsolete. This will now return the same results as fileRuleList going forward.
objectTypeEntry(ote) string createquery
This flag is obsolete. This will now return the same as fileRuleEntry.
fileRule(fr) [string, string] createquery
Set the default location for a file. The first parameter is the fileRule name(scenes, images, etc) and the second is the location. When queried, it returns a list of strings. The elements of the returned list alternate between fileRule names and the corresponding location. There is typically one file rule for each available translator. Environment variables are supported. You can set multiple path for the file rule by separating them with semicolons (;) on Windows and colons(:) on MacOSX and Linux. Note that whitespace at the beginning and end of each item in the separated sequence is significant and will be included as part of the path name (which is not usually desired unless the pathname does actually start or end with spaces). A valid filerule name cannot contain multiple byte characters.
fileRuleList(frl) boolean createquery
Returns a list of the currently defined file rules.
fileRuleEntry(fre) string createquery
Return the location for the given fileRule.
removeFileRuleEntry(rfr) string create
Remove the given file rule from the specified workspace. If the workspace name is not specified, the given file rule will be removed from the current workspace.
renderType(rt) [string, string] createquery
This flag is obsolete. All default render types will be added to fileRules going forward.
renderTypeList(rtl) boolean createquery
This flag is obsolete, use fileRuleList going forward.
renderTypeEntry(rte) string createquery
This flag is obsolete, use fileRuleEntry going forward
variable(v) [string, string] createquery
Set or query the value of a project variable. Project variables are used when expanding names. See the -en/expandName flag below.
variableList(vl) boolean createquery
Return a list of all variables in the workspace.
variableEntry(ve) string createquery
Given a variable name, will return its value.
removeVariableEntry(rve) string create
Remove the given variable from the specified workspace. If the workspace name is not specified, the given variable will be removed from the current workspace.
shortName(sn) boolean createquery
Query the short name of the workspace.
fullName(fn) boolean createquery
Return the full name of the workspace.
expandName(en) string createquery
Query for the full path location of a filename using the current workspace definition. The path may be a project relative file name, a full path name or a variable name. The return value is always a full path name. If the path is an empty string, the return value will be the project root directory. Variable expansion is supported, and will consider both variables defined in the workspace as well as environment variables. There are three formats supported for expanding variable names: %variableName%, $variableName, ${variableName}. Maya will first attempt to find matching variables defined in the current workspace, then search for a matching environment variable. The tilde character ('~') is also supported. If a tilde is located at the beginning of a variable, Maya will only consider and expand environment variables, and will leave the tilde in the expanded result. On linux platforms only, a tilde can be used to expand a user's home directory, using the form ~username, ~, or ~/. When specified as ~username, it will be replaced with the corresponding user's home directory. When specified as ~ or ~/, it will be replaced with the value of the HOME environment variable.
projectPath(pp) string createquery
Convert filePath passed as argument to a filename that is relative to the project root directory (if possible) and return it. If the filePath is not under the project root directory, a full path name will be returned.
update(u) boolean create
This flag reads all the workspace definitions from the project directory. It is used by Maya at startup time to find the available workspaces.
updateAll(ua) boolean create
This flag is a synonym for -u/update.
filter(f) boolean
This flag is obsolete.

Flag can appear in Create mode of command Flag can appear in Edit mode of command
Flag can appear in Query mode of command Flag can have multiple arguments, passed either as a tuple or a list.

Python examples

import maya.cmds as cmds

# Set the current workspace to "alphabet".
cmds.workspace( 'alphabet', openWorkspace=True )

# Save the current workspace settings (for "alphabet").
cmds.workspace( saveWorkspace=True )

# Create a new workspace named "newWorkspace".
cmds.workspace( 'newWorkspace', newWorkspace=True )

# The settings of "newWorkspace" are based on "default" workspace
cmds.workspace( baseWorkspace='default' )

# Return the list of existing workspaces
cmds.workspace( listWorkspaces=True )
# Result: default   newWorkspace

# Add a scriptJob to run on workspaceChanged events
def workspaceChangedCallback():
    print 'My workspaceChangedCallback was called'

workspaceChangedID = cmds.scriptJob( event = ["workspaceChanged", workspaceChangedCallback] )

# add a file rule to the current workspace
cmds.workspace(fileRule = ['newFileRuleName', 'newFileRuleValue'])
My workspaceChangedCallback was called            #workspaceChangedCallback was called

# look up the value of the file rule entry
cmds.workspace(q = True, fileRuleEntry = 'newFileRuleName')
# Result: newFileRuleValue

# remove specified file rule entry
cmds.workspace(removeFileRuleEntry = 'newFileRuleName')
My workspaceChangedCallback was called            #workspaceChangedCallback is called

# kill the scriptJob with the number
cmds.scriptJob(kill = workspaceChangedID)

# The following example shows how to expand environment and workspace variables

# expand a path value to be a full path relative to the project directory
# relative path example
cmds.workspace( expandName = 'relativePathName')
# Result: /h/userName/maya/projects/newWorkspace/relativePathName/
# full path example
cmds.workspace( expandName = '/h/userName/maya/projects/default/')
# Result: /h/userName/maya/projects/default/

# The following examples show various formats for expanding workspace and
# environment variables.

# add a variable to the current workspace
cmds.workspace(variable = ['newVariableName', 'newVariableValue'])
cmds.workspace( expandName = '%newVariableName%')
# Result: /h/userName/maya/projects/newWorkspace/newVariableValue/

# add an environment variable with the same as the workspace variable
maya.mel.eval('putenv "newEnvVariableName" "newEnvVariableValue"')
cmds.workspace( expandName = '%newEnvVariableName%')
# Result: /h/userName/maya/projects/newWorkspace/newEnvVariableValue/

# The following example shows how conflicting names in both workspace
# and environment variables are resolved.
# add a environment variable with the same name as a workspace variable
maya.mel.eval('putenv "newVariableName" "newEnvVariableValue"')
# maya considers workspace variables first before matching environment variables
cmds.workspace( expandName = '%newVariableName%')
# Result: /h/userName/maya/projects/newWorkspace/newVariableValue/

# When a tilde is used, maya will only consider the environment variable
# not the workspace variable.
cmds.workspace( expandName = '~%newVariableName%')
# Result: /h/userName/maya/projects/newWorkspace/~newEnvVariableValue/

# The following example shows how to set multiple paths into a fileRule value
cmds.workspace(fileRule = ['newMultiPathFileRuleName', '/h/userName/maya/projects/default;newFileRuleValue'])
multipath = cmds.workspace(q = True, fileRuleEntry = 'newMultiPathFileRuleName')
# Result : /h/userName/maya/projects/default;newFileRuleValue

# The following will only return the first expanded path.
cmds.workspace( expandName = multipath)
# Result : /h/userName/maya/projects/default

# Note that white space at the beginning or end of each path is significant.
# Add a file rule that uses multiple paths with the white space at the beginning and end of each path
cmds.workspace(fileRule = ['newMultiPathFileRuleName', ' /h/userName/maya/projects/default ; newFileRuleValue '])
# Querying and expanding the path value shows that the white space is still included.
multipath = cmds.workspace(q = True, fileRuleEntry = 'newMultiPathFileRuleName')
# Result :  /h/userName/maya/projects/default ; newFileRuleValue

# Find the current workspace area.
cmds.workspace( q=True, directory=True )
# Result : /h/userName/maya/projects/default

# Note that the "current working directory" as defined by the
# 'pwd' and 'chdir' commands is unrelated to the directories
# used by the workspace command
#
cmds.pwd()
# Result : /usr/tmp

cmds.chdir( '/tmp' )
getcwd()
# Result : /tmp
cmds.workspace( q=True, directory=True )
# Result : /h/userName/maya/projects/default

cmds.workspace( directory='/h/userName/maya/projects/commercial' )
getcwd()
# Result : /tmp