I'm fairly using time, instead of time step, will break plot_deformedshape and animate_deformedshape in a cyclic pushover.
Consider the following code.
jj = (np.abs(timeSteps - tstep)).argmin() # index closest to the time step requested.
if timeSteps[-1] < tstep:
print("XX Warining: Time-Step has exceeded maximum analysis time step XX")
printLine = "Deformation at time: " + str(round(timeSteps[jj], 2))
In a cyclic pushover, you might have more than one time step that equals the target time, and it's not clear what time step to plot.

Similar problems occur for the slider in the animation functions.

A solution would be to plot a time step, not a time.
I'm not sure there is a way we can make the function work for both time values, and time steps...
I'm fairly using time, instead of time step, will break plot_deformedshape and animate_deformedshape in a cyclic pushover.
Consider the following code.
In a cyclic pushover, you might have more than one time step that equals the target time, and it's not clear what time step to plot.

Similar problems occur for the slider in the animation functions.
A solution would be to plot a time step, not a time.
I'm not sure there is a way we can make the function work for both time values, and time steps...