Мне было интересно, есть ли способ создать окно прогресса, которое показывает, сколько времени до момента завершения вашей программы. Это то, что у меня есть до сих пор, но это не то, что я ожидал.
Я хочу, чтобы он работал, пока не будут созданы все кривые, а затем остановился.
import maya.cmds as cmds
cmds.setAttr( "nParticle1Shape.lifespanMode", 2 )
cmds.setAttr( "nParticle1Shape.maxCount", 5 )
cmds.setAttr( "nParticle1Shape.lifespanRandom", 3 )
allParticleDictionary = {}
minFrames = cmds.playbackOptions( q=True, min=True )
maxFrames = cmds.playbackOptions( q=True, max=True )
running = 0
amount = 0
cmds.progressWindow( title='Doing Nothing',progress=amount,status='Sleeping: 0%',isInterruptable=True )
for currentFrame in range(0, int(maxFrames)):
cmds.currentTime( currentFrame, update=True, edit=True )
cmds.select( 'nParticle1' )
Particles = cmds.ls( sl=True, type='transform' )
for part in Particles:
for particleCount in range( 0,cmds.particle(part, q=True,ct=True) ):
particleName = cmds.particle( part, q=True, order=particleCount, at='id' )
particlesPosition = cmds.particle( part, q=True, order=particleCount, at='position' )
particleDictionary = {}
if str( particleName[0] ) in allParticleDictionary.keys():
particleDictionary = allParticleDictionary[str(particleName[0])]
particleDictionary[currentFrame] = particlesPosition
allParticleDictionary[str(particleName[0])] = particleDictionary
emptyFolder = cmds.group( em=True, n="Curves" )
for curveParticleId in allParticleDictionary.keys():
pointList = []
sortedKeyFrameList = sorted( allParticleDictionary[curveParticleId].keys() )
if len( sortedKeyFrameList ) > 1:
for keyFrame in sortedKeyFrameList:
pointList.append( allParticleDictionary[curveParticleId][keyFrame] )
curveObj = cmds.curve( name = "pCurve" + str(curveParticleId ), p = pointList)
Locators = cmds.spaceLocator( name = "locator" + str(curveParticleId) )
cmds.pathAnimation( Locators, stu=sortedKeyFrameList[0], etu=sortedKeyFrameList[-1], c=curveObj )
running = 1
# place all objects in Group called Curves
cmds.parent( curveObj, emptyFolder )
cmds.select( Locators )
cmds.delete()
while running == 0:
# Checks if the dialog has been cancelled
if cmds.progressWindow( query=True, isCancelled=True ) :
break
# Checks if end condition has been reached
if cmds.progressWindow( query=True, progress=True ) >= 100 :
break
amount += 20
cmds.progressWindow( edit=True, progress=amount, status=('Sleeping: ' + `amount` + '%' ) )
cmds.pause( seconds=1 )
cmds.progressWindow( endProgress=1 )
for currentFrame in range(0, int(maxFrames))
? - person UKDP   schedule 28.04.2017