James Dunlop Homepage



om2-Convert-ResetSkinClusters to a python MPxCommand Part 2

INFO: How I converted the script into a MPxCommand - Part2

USAGE:
Step1: Save gist to valid plug-ins folder as jbdResetSkinClusters.py
Step2: In the script editor load the cmd cmds.loadPlugin('pathTo/plugin.py')
Step3: Select some geo and run cmds.resetSkinClusters()

LAST UPDATED: 04-10-2018

Disclaimer:
  • All code here is provided as is without support.
  • Use at your own risk! These posts assume you have some knowledge of import/running python script in maya

  • And updated to be entirely om2 as gg AD the docs are ticky to nav and adding syntax() into the mix highlighted this as a major issue. Hopefully this might provide some insights into converting some usfeul blog scripts out there to your own cmds.myNewScript() commands.

    Step2: Making the resetSkin plugin:

    Looking at the previous post here I only have the one function resetSkinClusters(skinClusters=[])
    So this should be fairly straight forward to convert. That resetSkinClusters() function will essentially become the doIt().

    Note: I needed to also make a decision, if I want to support a geoList=[] argument or just handle a valid selection in the plugin. For now I’m going to ignore the argument and assume users will want to just select skinned geo and run the tool.


    I’m not going to bother trying to break down every step I did as it’ll be a huge thread and lose the point, which is a more general scope of what is involved.

    List of issue resolved along the way:

  • I had to create the plug-ins folder in the base maya docs folder.
    "C:\Users\\Documents\maya\\plug-ins, or in one of the directories defined by your MAYA_PLUG_IN_PATH environment variable."</i>
  • The darn fileName became the plugin name when loading and unloading. So be mindful of that or you'll get
    "# RuntimeError: Plug-in, "resetSkinClusters.py", was not found on MAYA_PLUG_IN_PATH. # "
  • Added a resolve method to the class to help find the selections and return these as expected.
  • I forgot I just did all skinClusters so I needed to pull in my methods from my om2 library _iterForSkinCluster and _findSkinCluster
  • Since I used pyCharm to dev the script I needed to load and unload the plugin in maya in maya to reflect changes made. So I wrote a little script to help with that in the script editor:
    #import os
    import maya.cmds as cmds
    #for path in os.getenv("MAYA_PLUGIN_PATH").split(";"):
    #    print path
    cmds.file(new=True, f=True)
    names = ["plugName"]
    for pluginName in names:
        cmds.unloadPlugin("{}.py".format(pluginName))
        cmds.loadPlugin("C:/fullpathto/{}.py".format(pluginName))

    And here it is in all it's glory converted to a maya command that has a working undo! So I don't have to copy paste a huge chunk of data into the script editor anymore. I can load an unload it like a c++ plugin and call it using cmds.resetSkinClusters()