Thanks all for your information... I tried all those things suggested
and i couldn't get any of those things to work. I'm not sure if its
because I'm using Maya 2009, but I experimented with other things to
try to fix my problem. The only other solution i got to work was
replacing timeSlider=True in the mc.keyFrame with time=(0, 1000).
Thanks again.

-------------------------------------new
code-----------------------------
import maya.cmds as mc
#create sphere
mc.polySphere(ch=True,o=True, r=5)

#key sphere in diffrent time
mc.currentTime(5, edit=True )
mc.setKeyframe("pSphere1")
mc.currentTime(10, edit=True )
mc.setAttr("pSphere1.translateY", 5)
mc.setKeyframe("pSphere1")
mc.currentTime(0, edit=True )

#getting first and last key
firstKey = mc.findKeyframe(time=(0, 1000), which='first')
lastKey = mc.findKeyframe(time=(0, 1000), which='last')
print firstKey
print lastKey


firstKey = mc.findKeyframe(timeSlider=True, which='first')
lastKey = mc.findKeyframe(timeSlider=True, which='last')


On Mar 3, 6:59 pm, Ian Jones <[email protected]> wrote:
> Here is what I was seeing with refresh:
>
> for x in xrange(0,10):
>     mc.file(new=True,force=True)
>
>     mc.polySphere(ch=True,o=True, r=5)
>
>     #key sphere in diffrent time
>
>     mc.currentTime(5, edit=True )
>
>     mc.setKeyframe("pSphere1")
>
>     mc.currentTime(10, edit=True )
>
>     mc.setAttr("pSphere1.translateY", 5)
>
>     mc.setKeyframe("pSphere1")
>
>     mc.currentTime(0, edit=True )
>
>     mc.refresh()
>
>     #getting first and last key
>
>     firstKey = mc.findKeyframe(timeSlider=True, which='first')
>
>     lastKey = mc.findKeyframe(timeSlider=True, which='last')
>
>     print firstKey
>
>     print lastKey
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> 0.0
>
> Not sure why though.
>
> On Thu, Mar 3, 2011 at 4:55 PM, Ian Jones <[email protected]> wrote:
> > I tested mc.refresh() and mc.dgdirty(a=True) and both when placed in loops
> > (new-file, run code) didn't end up printing the correct results. However on
> > single runs seemed to work okay.
>
> > maya.utils.processIdleEvents() was probably what I was looking for though
> > when I was thinking about the executeInMainThread. Just wanted something to
> > make sure everything was caught up before running.
>
> > Ian
>
> > On Wed, Mar 2, 2011 at 10:40 PM, Paul Molodowitch <[email protected]>wrote:
>
> >> On Wed, Mar 2, 2011 at 8:28 PM, Ian Jones <[email protected]> wrote:
>
> >>> So this is annoying but I think this has something to do with how
> >>> findKeyframe works.
>
> >>> If you add a pause it seems to work just fine:
>
> >>> import maya.cmds as mc
>
> >>>  #create sphere
>
> >>> mc.polySphere(ch=True,o=True, r=5)
>
> >>> #key sphere in diffrent time
>
> >>> mc.currentTime(5, edit=True )
>
> >>> mc.setKeyframe("pSphere1")
>
> >>> mc.currentTime(10, edit=True )
>
> >>> mc.setAttr("pSphere1.translateY", 5)
>
> >>> mc.setKeyframe("pSphere1")
>
> >>> mc.currentTime(0, edit=True )
>
> >>> #Not sure why this fixes it technically - but it seems to have removed it
> >>> for myself.
>
> >>> import time
>
> >>> time.sleep(1) #.4 was actually the smallest value that seemed to reliably
> >>> get the correct result
>
> >> Out of curiosity, I gave maya.utils.processIdleEvents() and mc.refresh() a
> >> shot, and those both seemed to do the trick.  Though I was testing in gui
> >> mode, and sometimes those don't work so hot in batch mode... so you might
> >> want to test that if you need it there.
>
> >>>  #getting first and last key
>
> >>> firstKey = mc.findKeyframe(timeSlider=True, which='first')
>
> >>> lastKey = mc.findKeyframe(timeSlider=True, which='last')
>
> >>> print firstKey
>
> >>> print lastKey
>
> >>> Of interesting note this didn't fix it without the pause and I'm not sure
> >>> why:
>
> >>> import maya.utils
>
> >>> firstKey = maya.utils.executeInMainThreadWithResult(
> >>> mc.findKeyframe,timeSlider=True, which='first')
>
> >>> lastKey = maya.utils.executeInMainThreadWithResult(
> >>> mc.findKeyframe,timeSlider=True, which='last')
>
> >> According to the docstring for executeInMainThreadWithResult, if you're
> >> already in the main thread, this essentially doesn't do anything... were 
> >> you
> >> thinking of maya.utils.executeDeferred? Of course, then you'd have to find
> >> some way to get the result back...
>
> >> - Paul
>
> >>> Ian
>
> >>> On Fri, Feb 25, 2011 at 5:39 PM, Ctorres <[email protected]> wrote:
>
> >>>> Hey all,
> >>>> For some reason I can't get this code to work correctly.Please help.
> >>>> I'm working out of Maya 2009. So when I run this python code I get the
> >>>> values for the firstKey and lastKey as 0 but if  I just run the last 4
> >>>> lines of code. I will get something different now,  firstKey=5 and
> >>>> lastKey=10. I'm not sure what is happening here. I guess my ultimate
> >>>> goal is to find out what is the first keyframe and lastkeyframe of any
> >>>> maya scene and be able to set a piece of code in the end like this
> >>>> ------ mc.playbackOptions(aet=lastKey, ast=firstKey)
>
> >>>> Thanks Again,
> >>>> Chris
>
> >>>> --------Start New Scene----------
>
> >>>> import maya.cmds as mc
> >>>> #create sphere
> >>>> mc.polySphere(ch=True,o=True, r=5)
>
> >>>> #key sphere in diffrent time
> >>>> mc.currentTime(5, edit=True )
> >>>> mc.setKeyframe("pSphere1")
> >>>> mc.currentTime(10, edit=True )
> >>>> mc.setAttr("pSphere1.translateY", 5)
> >>>> mc.setKeyframe("pSphere1")
> >>>> mc.currentTime(0, edit=True )
>
> >>>> #getting first and last key
> >>>> firstKey = mc.findKeyframe(timeSlider=True, which='first')
> >>>> lastKey = mc.findKeyframe(timeSlider=True, which='last')
> >>>> print firstKey
> >>>> print lastKey
>
> >>>> --
> >>>>http://groups.google.com/group/python_inside_maya
>
> >>>  --
> >>>http://groups.google.com/group/python_inside_maya
>
> >>  --
> >>http://groups.google.com/group/python_inside_maya
>
>

-- 
http://groups.google.com/group/python_inside_maya

Reply via email to