Search code examples
pythonselectscriptinggeometrymaya

Select all by type: Geometry. Equivalent Python script?


I was trying to find the right code to make maya select all the geometry objects in my scene. I tried to echo command while doing the operation and I get this:

SelectAllGeometry;
select -r `listTransforms -geometry`;

(Edit > Select All by Type > Geometry)

Could anyone translate this to Python?


Solution

  • What you're seeing is the procedure SelectAllGeometry, and its contents:

    select -r `listTransforms -geometry`;
    

    That command is several parts. The part in the backquotes:

    listTransforms -geometry
    

    Is actually a MEL procedure. Run the command help listTransforms to see the path to the .mel file. Reading that, the command is actually

    listRelatives("-p", "-path", eval("ls", $flags));
    

    The output of that is the argument to:

    select -r the_list_of_geometry_transforms
    

    So check out Maya's MEL and Python command reference for select, listRelatives, and ls, to research how one command translates to the other:


    Combining that all together, the equivalent MEL actually being called is:

    select -r `listRelatives("-p", "-path", eval("ls", $flags))`
    

    And as Python, that would be:

    from maya import cmds
    cmds.select(cmds.listRelatives(cmds.ls(geometry=True), p=True, path=True), r=True)
    

    Expanded out to be just a tad more readable:

    from maya import cmds
    geometry = cmds.ls(geometry=True)
    transforms = cmds.listRelatives(geometry, p=True, path=True)
    cmds.select(transforms, r=True)