Создание и удаление scriptJob

Прио открытии скрипта создаем job.

UnitsCheckerJob = cmds.scriptJob( runOnce=False, event=['linearUnitChanged', self.UnitChanger])

Перед закрытием находим его и убиваем.

try:

CurrentJobs = cmds.scriptJob( listJobs=True )

if any("linearUnitChange" in s for s in CurrentJobs):

UnitJob = filter(lambda UnitJob: 'linearUnitChange' in UnitJob, CurrentJobs)[0]

UnitJobNumber = UnitJob.split(':')[0]

cmds.scriptJob( kill=int(UnitJobNumber))

print "PolygonTools:

UnitsCheckerJob was deleted. Job#: ", UnitJobNumber

except:

print "PolygonTools: Cant delete UnitsCheckerJob."

Экспорт из Maya в FBX

Экспорт без лишнего.
FileName — ваш путь к файлу.

import maya.mel
FullPathToFBXfile = "d:/FileName.fbx"
maya.mel.eval('FBXResetExport;')
maya.mel.eval('FBXExportCameras -v false')
maya.mel.eval('FBXExportLights -v false')
maya.mel.eval('FBXExportScaleFactor 1.0')
maya.mel.eval('FBXExportConvertUnitString m')
maya.mel.eval('FBXExportConstraints -v false')
maya.mel.eval('FBXExportEmbeddedTextures -v false')
maya.mel.eval('FBXExportGenerateLog -v false')
maya.mel.eval('FBXExportInAscii -v false')
maya.mel.eval('FBXExportInputConnections -v false')
maya.mel.eval('FBXExportInstances -v false')
maya.mel.eval('FBXExportLights -v false')
maya.mel.eval('FBXExportShapes -v false')
maya.mel.eval('FBXExportSkins -v false')
maya.mel.eval('FBXExportSmoothingGroups -v true')
maya.mel.eval('FBXExportSmoothMesh -v false')
maya.mel.eval('FBXExportUpAxis y')
maya.mel.eval('FBXExportTangents -v false')
maya.mel.eval('FBXExportTriangulate -v false')
maya.mel.eval('FBXExport -f "' + FullPathToFBXfile + '" -s')

Создание и отладка скрипта. Вызов в Maya

import NAME as NICKNAME
reload(NICKNAME)
NICKNAME.main()

Конструкция специально для ситуации когда вы работаете со скриптом и постоянно его изменяете (создание, отладка и т.д).

Все это в Script Editor на вкладке Python. Потом перетягиваем средней кнопкой на Shelf — создаем кнопку для запуска этого скрипта.

Примерно так. Где NAME — имя скрипта в папке, а NICKNAME — псевдоним. релоад — как понятно из названия, это перезагрузка скрипа (после обновдения наеример.

Процедура main() — опциональная, у меня такой вызов, у вас может быть другой.