mgear.flex.query module

flex.query

flex.query module contains a collection of functions useful for the analyze and update functions of Flex

module:

flex.query

mgear.flex.query.get_clean_matching_shapes(source, target)

Returns the prefix-less found shapes under the given groups

Parameters:
  • source (string) – source group containing shapes in Maya

  • target (string) – target group containing shapes in Maya

Returns:

The matching target shapes names without prefix

Return type:

dict, dict

mgear.flex.query.get_deformers(shape)

Returns a dict with each deformer found on the given shape

Parameters:

shape (str) – the shape node name

Returns:

the deformers found on shape sorted by type

Return type:

dict

mgear.flex.query.get_dependency_node(element)

Returns a Maya MFnDependencyNode from the given element

Parameters:

element (string) – Maya node to return a dependency node class object

Returns:

the element in a Maya MFnDependencyNode object

Return type:

MFnDependencyNode

mgear.flex.query.get_matching_shapes(source_shapes, target_shapes)

Returns the matching shapes

This Function will return a dict that contains the target matching shape name from the source.

Parameters:
  • source_shapes (dict) – sources dictionary containing prefix-less shapes

  • target (dict) – targets dictionary containing prefix-less shapes

Returns:

The matching target shapes names

Return type:

dict

Note

This function is the core idea of how Flex finds matching shapes from a source group to the target. Because Flex is not part of a specific studio pipeline this matching is shapes name based. Because some studios might bring the source scene into the rig scene as a reference or as an import we cover those two cases.

Using this dict is the fastest way (so far found) to deal with a huge amount of names. Finding the matching names on a scene with more than 2000 shapes takes 0.0009… seconds.

mgear.flex.query.get_matching_shapes_from_group(source, target)

Returns the matching shapes on the given groups

Parameters:
  • source (string) – source group containing shapes in Maya

  • target (string) – target group containing shapes in Maya

Returns:

The matching target shapes names

Return type:

dict

mgear.flex.query.get_missing_shapes(source_shapes, target_shapes)

Returns the missing shapes

This Function will return a dict that contains the missing shape found on the target.

Parameters:
  • source_shapes (dict) – sources dictionary containing prefix-less shapes

  • target (dict) – targets dictionary containing prefix-less shapes

Returns:

The missing target shapes names

Return type:

dict

mgear.flex.query.get_missing_shapes_from_group(source, target)

Returns the missing shapes from the given source and target group

Parameters:
  • source (string) – source group containing shapes in Maya

  • target (string) – source group containing shapes in Maya

Returns:

The missing target shapes names

Return type:

dict

mgear.flex.query.get_parent(element)

Returns the first parent found for the given element

Parameters:

element (string) – A Maya dag node

mgear.flex.query.get_prefix_less_dict(elements)

Returns a dict containing each element with a stripped prefix

This Function will return a dict that contains each element resulting on the element without the found prefix

Parameters:

elements (list) – List of all your shapes

Returns:

The matching prefix-less elements

Return type:

dict

Note

Because Flex is not part of a specific studio pipeline we cover two different ways to bring the source shapes inside your rig. You can either import the source group with the meshes or use a Maya reference. This function will strip the prefix whether your object is part of a namespace or a double name getting a full path naming.

mgear.flex.query.get_prefix_less_name(element)

Returns a prefix-less name

Parameters:

elements (str) – element top use on the search

Returns:

The prefix-less name

Return type:

str

mgear.flex.query.get_resources_path()

Gets the directory path to the resources files

mgear.flex.query.get_shape_orig(shape)

Finds the orig (intermediate shape) on the given shape

Parameters:

shape (str) – maya shape node

Returns:

the found orig shape

Return type:

str

Note

There are several ways of searching for the orig shape in Maya. Here we query it by first getting the given shape history on the component type attribute (inMesh, create..) then filtering on the result the same shape type. There might be more optimised and stable ways of doing this.

mgear.flex.query.get_shape_type_attributes(shape)

Returns a dict with the attributes names depending on the shape type

This function returns the points, output, input and axes attributes for the corresponding shape type. Mesh type of nodes will be set as default but nurbs surfaces and nurbs curves are supported too.

on mesh nodes: points = pnts

output = outMesh input = inMesh p_axes = (pntx, pnty, pntz)

on nurbs nodes: points = controlPoints

output = local input = create p_axes = (xValue, yValue, zValue)

Parameters:

shape (str) – maya shape node

Returns:

corresponding attributes names

Return type:

dict

mgear.flex.query.get_shapes_from_group(group)

Gets all object shapes existing inside the given group

Parameters:

group (str) – maya transform node

Returns:

list of shapes objects

Return type:

list str

mgear.flex.query.get_temp_folder()

Returns the user temporary folder in a Maya friendly matter

Returns:

temp folder path

Return type:

str

mgear.flex.query.get_transform_selection()

Gets the current dag object selection

Returns the first selected dag object on a current selection that is a transform node

Returns:

the first element of the current maya selection

Return type:

str

mgear.flex.query.get_vertice_count(shape)

Returns the number of vertices for the given shape

Parameters:

shape (string) – The maya shape node

Returns:

The number of vertices found on shape

Return type:

int

mgear.flex.query.is_lock_attribute(element, attribute)

Returns if the given attribute on the element is locked

Parameters:
  • element (string) – Maya node name

  • attribute (string) – Maya attribute name. Must exist

Returns:

if attribute is locked

Return type:

bool

mgear.flex.query.is_matching_bouding_box(source, target, tolerance=0.05)

Checks if the source and target shape have the same bounding box

Parameters:
  • source (string) – source shape node

  • target (string) – target shape node

  • tolerance (float) – difference tolerance allowed. Default 0.001

Returns:

If source and target matches their bounding box

Return type:

bool

mgear.flex.query.is_matching_count(source, target)

Checks if the source and target shape have the same amount of vertices

Parameters:
  • source (string) – source shape node

  • target (string) – target shape node

Returns:

If source and target matches vertices count or not

Return type:

bool

mgear.flex.query.is_matching_type(source, target)

Checks if the source and target shape type matches

Parameters:
  • source (string) – source shape node

  • target (string) – target shape node

Returns:

If source and target matches or not

Return type:

bool

mgear.flex.query.is_maya_batch()

Returns if the current session is a Maya batch session or not

Returns:

if Maya is on batch mode or not

Return type:

bool

mgear.flex.query.is_valid_group(group)

Checks if group is valid

Simply checks if the given group exists in the current Maya session and if it is a valid transform group.

Parameters:

group (str) – a maya transform node

Returns:

If the group is valid

Return type:

bool

mgear.flex.query.lock_unlock_attribute(element, attribute, state)

Unlocks the given attribute on the given element

Parameters:
  • element (string) – Maya node name

  • attribute (string) – Maya attribute name. Must exist

  • state (bool) – If we should lock or unlock

Returns:

If the setting was successful or not

Return type:

bool