Example #1
0
    def test_aliased_attrs(self):
        """ """
        test_node_mobj = om_util.get_mobj(self.test_node)

        # Make sure regular (custom) attributes are accessible
        normal_plug = om_util.get_mplug_of_mobj(test_node_mobj,
                                                self.long_name_attr)
        self.assertEqual(type(normal_plug), OpenMaya.MPlug)
        self.assertEqual(str(normal_plug),
                         "{}.{}".format(self.test_node, self.long_name_attr))

        # Check whether an aliased attribute is accessible
        aliased_plug = om_util.get_mplug_of_mobj(test_node_mobj,
                                                 self.aliased_attr)
        self.assertEqual(type(aliased_plug), OpenMaya.MPlug)
        self.assertEqual(str(aliased_plug),
                         "{}.{}".format(self.test_node, self.aliased_attr))

        # Check whether an aliased attribute can still be found via its actual name as well.
        aliased_orig_plug = om_util.get_mplug_of_mobj(test_node_mobj,
                                                      self.aliased_attr_orig)
        self.assertEqual(type(aliased_orig_plug), OpenMaya.MPlug)
        self.assertEqual(str(aliased_orig_plug),
                         "{}.{}".format(self.test_node, self.aliased_attr))

        # Check whether an attribute that doesn't exist returns None.
        bogus_plug = om_util.get_mplug_of_mobj(test_node_mobj, "someBogusName")
        self.assertIsNone(bogus_plug)
Example #2
0
    def test_plug(self):
        """ """
        test_node_mobj = om_util.get_mobj(self.test_node)
        operator_mobj = om_util.get_mobj(self.test_operator)
        transform_attr = "translateX"
        parent_attr = "input3D"
        array_attr = "{}[0]".format(parent_attr)
        child_attr = "input3Dx"
        test_value = 7

        # Test getting an mplug from a plug
        mplug = om_util.get_mplug_of_plug("{}.{}".format(
            self.test_operator, array_attr))
        self.assertEqual(type(mplug), OpenMaya.MPlug)
        self.assertEqual(str(mplug), "{}.{}".format(self.test_operator,
                                                    array_attr))
        mplug = om_util.get_mplug_of_node_and_attr(self.test_operator,
                                                   array_attr)
        self.assertEqual(type(mplug), OpenMaya.MPlug)
        self.assertEqual(str(mplug), "{}.{}".format(self.test_operator,
                                                    array_attr))

        self.assertEqual(om_util.is_valid_mplug(mplug), True)

        # Test attribute setting and getting
        om_util.set_mobj_attribute(test_node_mobj, transform_attr, test_value)
        queried_val = cmds.getAttr("{}.{}".format(self.test_node,
                                                  transform_attr))
        self.assertEqual(queried_val, test_value)
        self.assertEqual(
            om_util.get_attr_of_mobj(test_node_mobj, transform_attr),
            queried_val)

        # Test mplug query
        parent_plug = om_util.get_mplug_of_mobj(operator_mobj, parent_attr)
        self.assertEqual(type(parent_plug), OpenMaya.MPlug)
        self.assertEqual(str(parent_plug),
                         "{}.{}".format(self.test_operator, parent_attr))

        # Test array attribute access
        array_mplug_elements = om_util.get_array_mplug_elements(parent_plug)
        array_mplug_elements_as_str = [
            str(var) for var in array_mplug_elements
        ]
        expected_array_plugs = [
            "{}.{}[{}]".format(self.test_operator, parent_attr, var)
            for var in [0, 3]
        ]
        self.assertEqual(array_mplug_elements_as_str, expected_array_plugs)

        # Test array mplug access via pysical index
        mplug_by_index = str(
            om_util.get_array_mplug_by_index(parent_plug, 0, physical=True))
        expected_plug = "{}.{}[0]".format(self.test_operator, parent_attr)
        self.assertEqual(mplug_by_index, expected_plug)
        mplug_by_index = str(
            om_util.get_array_mplug_by_index(parent_plug, 1, physical=True))
        expected_plug = "{}.{}[3]".format(self.test_operator, parent_attr)
        self.assertEqual(mplug_by_index, expected_plug)
        mplug_by_index = om_util.get_array_mplug_by_index(parent_plug,
                                                          2,
                                                          physical=True)
        expected_plug = None
        self.assertEqual(mplug_by_index, expected_plug)

        # Test array mplug access via logical index
        mplug_by_index = str(
            om_util.get_array_mplug_by_index(parent_plug, 0, physical=False))
        expected_plug = "{}.{}[0]".format(self.test_operator, parent_attr)
        self.assertEqual(mplug_by_index, expected_plug)
        mplug_by_index = str(
            om_util.get_array_mplug_by_index(parent_plug, 1, physical=False))
        expected_plug = "{}.{}[1]".format(self.test_operator, parent_attr)
        self.assertEqual(mplug_by_index, expected_plug)
        mplug_by_index = str(
            om_util.get_array_mplug_by_index(parent_plug, 3, physical=False))
        expected_plug = "{}.{}[3]".format(self.test_operator, parent_attr)
        self.assertEqual(mplug_by_index, expected_plug)

        # Test child attribute access
        child_mplug = om_util.get_child_mplug(mplug, child_attr)
        expected_child_plug = "{}.{}.{}".format(self.test_operator, array_attr,
                                                child_attr)
        self.assertEqual(str(child_mplug), expected_child_plug)

        # Test parent attribute access
        parent_mplug = om_util.get_parent_mplug(child_mplug)
        self.assertEqual(str(parent_mplug),
                         "{}.{}".format(self.test_operator, array_attr))

        # Test children attributes access
        child_mplugs = om_util.get_child_mplugs(parent_mplug)
        expected_child_plugs = [
            "{}.{}.input3D{}".format(self.test_operator, array_attr, var)
            for var in "xyz"
        ]
        self.assertEqual([str(var) for var in child_mplugs],
                         expected_child_plugs)