Differences between python editor and python commands?

Hi all,

Using Rhino 5:

I have a script which works fine in the editor as a script but as soon I run it as a command it stops behaving as expected. The result of the script is the same but the ability to escape and the updating of the command prompt does not work. I think it is to do with the while loop being too tight and the Rhino.rhinoapp.wait command not “waiting” enough? Any Ideas?

import rhinoscriptsyntax as rs
import scriptcontext
import Rhino

__commandname__ = "ExplodeMesh"

def makeNewMesh(mesh):
    print "Starting to Split Mesh"
    rs.EnableRedraw(False)
    faces = rs.MeshFaces(mesh,True)
    
    i = 0
    bEsc = False
    total = len(faces)

    while i <= total-1:
        Rhino.RhinoApp.Wait()
        if scriptcontext.escape_test(False):
            print "ESC Pressed Objects Locked"
            bEsc = True
            break
        percent = int((i/total)*100)
        Rhino.RhinoApp.SetCommandPrompt("Exploded: " + str(percent) + "%")
        a = faces[i]
        b = faces[i+1]
        c = faces[i+2]
        d = faces[i+3]
        if c[0]==d[0] and c[1]==d[1] and c[2]==d[2]:
            rs.AddMesh([a,b,c,d], [[0,1,2,2]])
        else:
            rs.AddMesh([a,b,c,d], [[0,1,2,3]])
        i = i + 4
        
    if bEsc == False:
        Rhino.RhinoApp.SetCommandPrompt("Exploded: 100%")
        print "Split Mesh into " + str(int(total/4))
        rs.DeleteObject(mesh)
    else:
        rs.LockObject(mesh)
    rs.EnableRedraw(True)

    return 0



def RunCommand( is_interactive ):
    mesh = rs.GetObject("Select Mesh to explode",32,True,True)
    if mesh == None:
        return None
    current = rs.CurrentLayer()
    meshLayer = rs.ObjectLayer(mesh)
    rs.CurrentLayer(meshLayer)
    ex = Rhino.Input.Custom.GetObject
    makeNewMesh(mesh)
    rs.CurrentLayer(current)
    return 0

If anyone can test it as a script and then as a command would be really useful to see if its just my setup that is the issue
Thanks
T