A couple of WoW API functions look promising: SetSequence() and SetSequenceTime(). Unfortunately those methods aren't documented which means the links I provided are useless to everybody (how thoughtful!); but I wanted you to know I'm just taking a guess and hoping that somebody who has used those methods will be able to fill in some gaps in our knowledge.
When I use the word frame I'm referring to the 'thing that has the 3d model inside of it", not "a single time-slice of animation". Wows animations arent' stored as discrete cells of animation like a video or gif file, but rather a few keyframes and then you interpolate between those values: if 2 keyframes are 3 seconds apart, and 1.7 seconds of time has passed since the last keyframe then you take the difference between those two keyframes and multiply by (1.7/3.0) to calculate what a frame at that point would look like.
Looking at regionstypes/model.lua in the WeakAuras source we get this at line 100:
So it looks like weakauras is driving the model animations all by itself. In principle you could just do the same thing. Setup your aura usuing the standard interface. Modify the aura to have it's "advance" property to false—can you do that with the standard interface? I don't recall, but if not, just edit the table that stores it's values—and you'll have disable weak aura's standard animations.
-- Enable model animation
local elapsed = 0;
model:SetScript("OnUpdate", function(self, elaps)
elapsed = elapsed + (elaps * 1000);
The next portion would be to work out where the portion of your animation starts and stop: I'd look into wow model viewer for that - it's easier to experiment that way. You should end up with a start and stop time when you're done.
Next up we're going to have to drive our animation instead of weak auras: we can do that using any of the standard animation functions. Just set a custom function and ignore what's normally there. Instead we'll access the weakaura's region that holds our 3D model (weakauras.regions['foo'] -> see the video I posted about storing custom variables between reloads for an example), grab it's frame and call SetSequence() to update the animation on every frame.
Looking at the weak auras source posted above (like 103 in the file for those playing along at home); weak auras starts with the elapsed time at "0" (see line 103) so that's our first point of interest. Instead of starting at 0, we'd start at whatever we want the start point of our animation to be: say 2 seconds or something.
Next, inside the update function we see that weak auras is just doing a simple increment and setting the sequence (I guess setsequence probably just 'loops' animations). Instead of doing a "dumb" assign, we'd check if our running total (elapsed, on line 105) is larger than our 'finish time') after we increment it. If it is bigger, then reset elapsed back to our starting value of 2 seconds. Finally call setSeequence() and hope it worked.
I haven't tested it, but it certainly seems possible.