Beispiel #1
0
    def lock_phase3(self, hook_obj):

        module_container = self.module_namespace + ":module_container"

        if hook_obj != None:
            hook_obj_module_node = utils.strip_leading_namespace(hook_obj)
            hook_obj_module = hook_obj_module_node[0]
            hook_obj_joint = hook_obj_module_node[1].split(
                "_translation_control")[0]

            hook_obj = hook_obj_module + ":blueprint_" + hook_obj_joint

            parent_con = cmds.parentConstraint(
                hook_obj,
                self.module_namespace + ":HOOK_IN",
                maintainOffset=True,
                name=self.module_namespace + ":hook_parent_constraint")[0]

            scale_con = cmds.scaleConstraint(
                hook_obj,
                self.module_namespace + ":HOOK_IN",
                maintainOffset=True,
                name=self.module_namespace + ":hook_scale_constraint")[0]

            module_container = self.module_namespace + ":module_container"
            utils.add_node_to_container(module_container,
                                        [parent_con, scale_con])

        cmds.lockNode(module_container, lock=True, lockUnpublished=True)
Beispiel #2
0
	def rehook(self, new_hook_obj):

		old_hook_obj = self.find_hook_obj()

		self.hook_obj =self.module_namespace+":unhookedTarget"

		if new_hook_obj != None:

			if new_hook_obj.find("_translation_control") != -1:

				split_string = new_hook_obj.split("_translation_control")

				if split_string[1] == "":

					if utils.strip_leading_namespace(new_hook_obj)[0] != self.module_namespace:

						self.hook_obj = new_hook_obj

		if self.hook_obj == old_hook_obj:

			return

		self.unconstrain_root_from_hook()

		cmds.lockNode(self.container_name, lock=False, lockUnpublished=False)

		hook_constraint = self.module_namespace+":hook_pointConstraint"

		cmds.connectAttr(self.hook_obj+".parentMatrix[0]", hook_constraint+".target[0].targetParentMatrix", force=True)
		cmds.connectAttr(self.hook_obj+".translate", hook_constraint+".target[0].targetTranslate", force=True)
		cmds.connectAttr(self.hook_obj+".rotatePivot", hook_constraint+".target[0].targetRotatePivot", force=True)
		cmds.connectAttr(self.hook_obj+".rotatePivotTranslate", hook_constraint+".target[0].targetRotateTranslate", force=True)

		cmds.lockNode(self.container_name, lock=True, lockUnpublished=True)
Beispiel #3
0
	def lock_phase3(self, hook_obj):

		module_container = self.module_namespace+":module_container"

		if hook_obj != None:
			hook_obj_module_node = utils.strip_leading_namespace(hook_obj)
			hook_obj_module = hook_obj_module_node[0]
			hook_obj_joint = hook_obj_module_node[1].split("_translation_control")[0]

			hook_obj = hook_obj_module+":blueprint_"+hook_obj_joint

			parent_con = cmds.parentConstraint(
													hook_obj,
													self.module_namespace+":HOOK_IN",
													maintainOffset=True,
													name=self.module_namespace+":hook_parent_constraint"
												)[0]

			scale_con = cmds.scaleConstraint(
												hook_obj,
												self.module_namespace+":HOOK_IN",
												maintainOffset=True,
												name=self.module_namespace+":hook_scale_constraint"
											)[0]

			module_container = self.module_namespace+":module_container"
			utils.add_node_to_container(module_container, [parent_con, scale_con])

		cmds.lockNode(module_container, lock=True, lockUnpublished=True)
Beispiel #4
0
	def create_trans_ctrl_at_joint(self,joint):
		
		pos_ctrl_file = os.environ["mlrig_tool"]+"/controlobjects/blueprint/translation_control.ma"
		cmds.file(pos_ctrl_file, i=True)

		container = cmds.rename("translation_control_container", joint+"_translation_control_container")
		
		utils.add_node_to_container(self.container_name, container)

		for node in cmds.container(container, q=True, nodeList=True):
			cmds.rename(node, joint+"_"+node, ignoreShape=True)

		control = joint+"_translation_control"

		cmds.parent(control, self.module_trans, absolute=True)

		joint_pos = cmds.xform(joint, q=True, worldSpace=True, translation=True)
		cmds.xform(control, worldSpace=True, absolute=True, translation=joint_pos)

		nice_name = utils.strip_leading_namespace(joint)[1]
		attr_name = nice_name+"_T"

		cmds.container(container, edit=True, publishAndBind=[control+".translate", attr_name])
		cmds.container(self.container_name, edit=True, publishAndBind=[container+"."+attr_name, attr_name])

		return control
Beispiel #5
0
    def delete(self):

        cmds.lockNode(self.container_name, lock=False, lockUnpublished=False)

        valid_module_info = utils.find_all_module_names("/modules/blueprint")
        valid_modules = valid_module_info[0]
        valid_module_names = valid_module_info[1]

        hooked_modules = set()

        for joint_info in self.joint_info:

            joint = joint_info[0]
            trans_control = self.get_trans_ctrl(self.module_namespace + ":" +
                                                joint)

            connections = cmds.listConnections(trans_control)

            for connection in connections:

                module_instance = utils.strip_leading_namespace(connection)

                if module_instance != None:

                    split_string = module_instance[0].partition("__")

                    if module_instance[
                            0] != self.module_namespace and split_string[
                                0] in valid_module_names:

                        index = valid_module_names.index(split_string[0])
                        hooked_modules.add(
                            (valid_modules[index], split_string[2]))

        for module in hooked_modules:

            mod = __import__("blueprint." + module[0], {}, {}, [module[0]])
            module_class = getattr(mod, mod.CLASS_NAME)
            module_inst = module_class(module[1], None)
            module_inst.rehook(None)

        module_trans = self.module_namespace + ":module_transform"
        module_trans_parent = cmds.listRelatives(module_trans, parent=True)

        cmds.delete(self.container_name)

        cmds.namespace(setNamespace=":")
        cmds.namespace(removeNamespace=self.module_namespace)

        if module_trans_parent != None:

            parent_group = module_trans_parent[0]
            children = cmds.listRelatives(parent_group, children=True)
            children = cmds.ls(children, transforms=True)

            if len(children) == 0:

                cmds.select(parent_group, replace=True)
                group_selected.UngroupSelected()
    def __init__(self):

        selection = cmds.ls(sl=True, transforms=True)

        if len(selection) == 0:

            return

        first_selected = selection[0]

        self.modules = []
        self.group = None

        if first_selected.find("Group__") == 0:

            self.group = first_selected
            self.modules = self.find_sub_modules(first_selected)

        else:

            module_namespace_info = utils.strip_leading_namespace(
                first_selected)

            if module_namespace_info != None:

                self.modules.append(module_namespace_info[0])

        #####################
        temp_module_list = []

        for module in self.modules:

            if self.is_module_a_mirror(module):

                cmds.confirmDialog(
                    title="Mirror Module(s)",
                    message=
                    "Cannot mirror a previously mirrored module, aborting mirror.",
                    button="Accept",
                    default="Accpet")

                return

            if not self.can_module_be_mirrored(module):

                print "Module \"" + module + "\" is of a module type that cannot be mirrored... skipping module."

            else:

                temp_module_list.append(module)

        self.modules = temp_module_list

        if len(self.modules) > 0:

            self.mirror_module_ui()
Beispiel #7
0
	def delete(self):

		cmds.lockNode(self.container_name, lock=False, lockUnpublished=False)

		valid_module_info = utils.find_all_module_names("/modules/blueprint")
		valid_modules = valid_module_info[0]
		valid_module_names = valid_module_info[1]

		hooked_modules = set()

		for joint_info in self.joint_info:

			joint = joint_info[0]
			trans_control = self.get_trans_ctrl(self.module_namespace+":"+joint)

			connections = cmds.listConnections(trans_control)

			for connection in connections:

				module_instance = utils.strip_leading_namespace(connection)

				if module_instance != None:

					split_string = module_instance[0].partition("__")

					if module_instance[0] != self.module_namespace and split_string[0] in valid_module_names:

						index = valid_module_names.index(split_string[0])
						hooked_modules.add( (valid_modules[index], split_string[2]) )

		for module in hooked_modules:

			mod = __import__("blueprint."+module[0], {}, {}, [module[0]])
			module_class = getattr(mod, mod.CLASS_NAME)
			module_inst = module_class(module[1], None)
			module_inst.rehook(None)

		module_trans = self.module_namespace+":module_transform"
		module_trans_parent = cmds.listRelatives(module_trans, parent=True)

		cmds.delete(self.container_name)

		cmds.namespace(setNamespace=":")
		cmds.namespace(removeNamespace=self.module_namespace)

		if module_trans_parent != None:

			parent_group = module_trans_parent[0]
			children = cmds.listRelatives(parent_group, children=True)
			children = cmds.ls(children, transforms=True)

			if len(children) == 0:
				
				cmds.select(parent_group, replace=True)
				group_selected.UngroupSelected()
	def __init__(self):

		selection = cmds.ls(sl=True, transforms=True)

		if len(selection) == 0:

			return

		first_selected = selection[0]

		self.modules = []
		self.group = None

		if first_selected.find("Group__") == 0:

			self.group = first_selected
			self.modules = self.find_sub_modules(first_selected)

		else:

			module_namespace_info = utils.strip_leading_namespace(first_selected)

			if module_namespace_info != None:

				self.modules.append(module_namespace_info[0])

		#####################
		temp_module_list = []

		for module in self.modules:

			if self.is_module_a_mirror(module):

				cmds.confirmDialog(title="Mirror Module(s)", message="Cannot mirror a previously mirrored module, aborting mirror.", button="Accept", default="Accpet")

				return

			if not self.can_module_be_mirrored(module):

				print "Module \""+module+"\" is of a module type that cannot be mirrored... skipping module."

			else:

				temp_module_list.append(module)

		self.modules = temp_module_list

		if len(self.modules) > 0:

			self.mirror_module_ui()
Beispiel #9
0
    def rehook(self, new_hook_obj):

        old_hook_obj = self.find_hook_obj()

        self.hook_obj = self.module_namespace + ":unhookedTarget"

        if new_hook_obj != None:

            if new_hook_obj.find("_translation_control") != -1:

                split_string = new_hook_obj.split("_translation_control")

                if split_string[1] == "":

                    if utils.strip_leading_namespace(
                            new_hook_obj)[0] != self.module_namespace:

                        self.hook_obj = new_hook_obj

        if self.hook_obj == old_hook_obj:

            return

        self.unconstrain_root_from_hook()

        cmds.lockNode(self.container_name, lock=False, lockUnpublished=False)

        hook_constraint = self.module_namespace + ":hook_pointConstraint"

        cmds.connectAttr(self.hook_obj + ".parentMatrix[0]",
                         hook_constraint + ".target[0].targetParentMatrix",
                         force=True)
        cmds.connectAttr(self.hook_obj + ".translate",
                         hook_constraint + ".target[0].targetTranslate",
                         force=True)
        cmds.connectAttr(self.hook_obj + ".rotatePivot",
                         hook_constraint + ".target[0].targetRotatePivot",
                         force=True)
        cmds.connectAttr(self.hook_obj + ".rotatePivotTranslate",
                         hook_constraint + ".target[0].targetRotateTranslate",
                         force=True)

        cmds.lockNode(self.container_name, lock=True, lockUnpublished=True)
	def find_child_modules(self, group):

		modules = []
		children = cmds.listRelatives(group, children=True)

		if children != None:

			for child in children:

				module_namespace_info = utils.strip_leading_namespace(child)

				if module_namespace_info != None:

					modules.append(module_namespace_info[0])

				elif child.find("Group__") != -1:

					modules.extend(self.find_child_modules(child))

		return modules
Beispiel #11
0
    def find_child_modules(self, group):

        modules = []
        children = cmds.listRelatives(group, children=True)

        if children != None:

            for child in children:

                module_namespace_info = utils.strip_leading_namespace(child)

                if module_namespace_info != None:

                    modules.append(module_namespace_info[0])

                elif child.find("Group__") != -1:

                    modules.extend(self.find_child_modules(child))

        return modules
Beispiel #12
0
    def create_trans_ctrl_at_joint(self, joint):

        pos_ctrl_file = os.environ[
            "mlrig_tool"] + "/controlobjects/blueprint/translation_control.ma"
        cmds.file(pos_ctrl_file, i=True)

        container = cmds.rename("translation_control_container",
                                joint + "_translation_control_container")

        utils.add_node_to_container(self.container_name, container)

        for node in cmds.container(container, q=True, nodeList=True):
            cmds.rename(node, joint + "_" + node, ignoreShape=True)

        control = joint + "_translation_control"

        cmds.parent(control, self.module_trans, absolute=True)

        joint_pos = cmds.xform(joint,
                               q=True,
                               worldSpace=True,
                               translation=True)
        cmds.xform(control,
                   worldSpace=True,
                   absolute=True,
                   translation=joint_pos)

        nice_name = utils.strip_leading_namespace(joint)[1]
        attr_name = nice_name + "_T"

        cmds.container(container,
                       edit=True,
                       publishAndBind=[control + ".translate", attr_name])
        cmds.container(self.container_name,
                       edit=True,
                       publishAndBind=[container + "." + attr_name, attr_name])

        return control
	def create_group(self, group_name):

		full_group_name = "Group__"+group_name

		if cmds.objExists(full_group_name):

			cmds.confirmDialog(
									title="Name Conflict",
									message="Group \""+group_name+"\" already exists",
									button="Accept",
									defaultButton="Accept"
								)

			return None

		group_transform = cmds.rename(self.temp_group_transform, full_group_name)

		group_container = "Group_container"

		if not cmds.objExists(group_container):

			cmds.container(name=group_container)

		containers = [group_container]

		for obj in self.objects_to_group:

			if obj.find("Group__") == 0:

				continue

			obj_namespace = utils.strip_leading_namespace(obj)[0]
			containers.append(obj_namespace+":module_container")

		for c in containers:

			cmds.lockNode(c, lock=False, lockUnpublished=False)

		if len(self.objects_to_group) != 0:

			temp_group = cmds.group(self.objects_to_group, absolute=True)

			group_parent = cmds.listRelatives(temp_group, parent=True)

			if group_parent != None:

				cmds.parent(group_transform, group_parent[0], absolute=True)

			cmds.parent(self.objects_to_group, group_transform, absolute=True)

			cmds.delete(temp_group)

		self.add_group_to_container(group_transform)

		for c in containers:
			cmds.lockNode(c, lock=True, lockUnpublished=True)

		cmds.setToolTo("moveSuperContext")
		cmds.select(group_transform, replace=True)

		return group_transform
Beispiel #14
0
	def mirror_modules(self):

		mirror_modules_progress_ui = cmds.progressWindow(title="Mirroring Module(s)", status="This may take a few minutes...", isInteruptable=False)

		mirror_modules_progress = 0

		mirror_modules_progress_stage1_proportion = 15
		mirror_modules_progress_stage2_proportion = 70
		mirror_modules_progress_stage3_proportion = 10

		module_name_info = utils.find_all_module_names("/modules/blueprint")
		valid_modules = module_name_info[0]
		valid_module_names = module_name_info[1]

		for module in self.module_info:

			module_name = module[0].partition("__")[0]

			if module_name in valid_module_names:

				index = valid_module_names.index(module_name)
				module.append(valid_modules[index])

		mirror_modules_progress_progress_increment = mirror_modules_progress_stage1_proportion/len(self.module_info)

		for module in self.module_info:

			user_specified_name = module[0].partition("__")[2]
			mod = __import__("blueprint."+module[5], {}, {}, [module[5]])
			reload(mod)

			module_class = getattr(mod, mod.CLASS_NAME)
			module_inst = module_class(user_specified_name, None)

			hook_object = module_inst.find_hook_obj()

			new_hook_object = None

			hook_module = utils.strip_leading_namespace(hook_object)[0]

			hook_found = False

			for m in self.module_info:

				if hook_module == m[0]:

					hook_found = True

					if m == module:

						continue

					hook_object_name = utils.strip_leading_namespace(hook_object)[1]

					new_hook_object = m[1]+":"+hook_object_name

			if not hook_found:

				new_hook_object = hook_object

			module.append(new_hook_object)

			hook_constrained = module_inst.is_root_constrained()

			module.append(hook_constrained)

			mirror_modules_progress += mirror_modules_progress_progress_increment
			cmds.progressWindow(mirror_modules_progress_ui, edit=True, progress=mirror_modules_progress)

		mirror_modules_progress_progress_increment = mirror_modules_progress_stage2_proportion/len(self.module_info)
		
		for module in self.module_info:

			new_user_specified_name = module[1].partition("__")[2]

			mod = __import__("blueprint."+module[5], {}, {}, [module[5]])
			reload(mod)

			module_class = getattr(mod, mod.CLASS_NAME)
			module_inst = module_class(new_user_specified_name, None)

			module_inst.mirror(module[0], module[2], module[3], module[4])

			mirror_modules_progress += mirror_modules_progress_progress_increment
			cmds.progressWindow(mirror_modules_progress_ui, edit=True, progress=mirror_modules_progress)

		mirror_modules_progress_progress_increment = mirror_modules_progress_stage3_proportion/len(self.module_info)

		for module in self.module_info:

			new_user_specified_name = module[1].partition("__")[2]

			mod = __import__("blueprint."+module[5], {}, {}, [module[5]])
			reload(mod)

			module_class = getattr(mod, mod.CLASS_NAME)
			module_inst = module_class(new_user_specified_name, None)

			module_inst.rehook(module[6])

			hook_constrained = module[7]

			if hook_constrained:

				module_inst.constrain_root_to_hook()

			mirror_modules_progress += mirror_modules_progress_progress_increment

			cmds.progressWindow(mirror_modules_progress_ui, edit=True, pr=mirror_modules_progress)

		if self.group != None:

			cmds.lockNode("Group_container", lock=False, lockUnpublished=False)

			group_parent = cmds.listRelatives(self.group, parent=True)

			if group_parent != None:

				group_parent = group_parent[0]

			self.process_group(self.group, group_parent)

			cmds.lockNode("Group_container", lock=True, lockUnpublished=True)

			cmds.select(clear=True)

		cmds.progressWindow(mirror_modules_progress_ui, edit=True, endProgress=True)

		utils.force_scene_update()
Beispiel #15
0
    def create_group(self, group_name):

        full_group_name = "Group__" + group_name

        if cmds.objExists(full_group_name):

            cmds.confirmDialog(title="Name Conflict",
                               message="Group \"" + group_name +
                               "\" already exists",
                               button="Accept",
                               defaultButton="Accept")

            return None

        group_transform = cmds.rename(self.temp_group_transform,
                                      full_group_name)

        group_container = "Group_container"

        if not cmds.objExists(group_container):

            cmds.container(name=group_container)

        containers = [group_container]

        for obj in self.objects_to_group:

            if obj.find("Group__") == 0:

                continue

            obj_namespace = utils.strip_leading_namespace(obj)[0]
            containers.append(obj_namespace + ":module_container")

        for c in containers:

            cmds.lockNode(c, lock=False, lockUnpublished=False)

        if len(self.objects_to_group) != 0:

            temp_group = cmds.group(self.objects_to_group, absolute=True)

            group_parent = cmds.listRelatives(temp_group, parent=True)

            if group_parent != None:

                cmds.parent(group_transform, group_parent[0], absolute=True)

            cmds.parent(self.objects_to_group, group_transform, absolute=True)

            cmds.delete(temp_group)

        self.add_group_to_container(group_transform)

        for c in containers:
            cmds.lockNode(c, lock=True, lockUnpublished=True)

        cmds.setToolTo("moveSuperContext")
        cmds.select(group_transform, replace=True)

        return group_transform
Beispiel #16
0
    def mirror_modules(self):

        mirror_modules_progress_ui = cmds.progressWindow(
            title="Mirroring Module(s)",
            status="This may take a few minutes...",
            isInteruptable=False)

        mirror_modules_progress = 0

        mirror_modules_progress_stage1_proportion = 15
        mirror_modules_progress_stage2_proportion = 70
        mirror_modules_progress_stage3_proportion = 10

        module_name_info = utils.find_all_module_names("/modules/blueprint")
        valid_modules = module_name_info[0]
        valid_module_names = module_name_info[1]

        for module in self.module_info:

            module_name = module[0].partition("__")[0]

            if module_name in valid_module_names:

                index = valid_module_names.index(module_name)
                module.append(valid_modules[index])

        mirror_modules_progress_progress_increment = mirror_modules_progress_stage1_proportion / len(
            self.module_info)

        for module in self.module_info:

            user_specified_name = module[0].partition("__")[2]
            mod = __import__("blueprint." + module[5], {}, {}, [module[5]])
            reload(mod)

            module_class = getattr(mod, mod.CLASS_NAME)
            module_inst = module_class(user_specified_name, None)

            hook_object = module_inst.find_hook_obj()

            new_hook_object = None

            hook_module = utils.strip_leading_namespace(hook_object)[0]

            hook_found = False

            for m in self.module_info:

                if hook_module == m[0]:

                    hook_found = True

                    if m == module:

                        continue

                    hook_object_name = utils.strip_leading_namespace(
                        hook_object)[1]

                    new_hook_object = m[1] + ":" + hook_object_name

            if not hook_found:

                new_hook_object = hook_object

            module.append(new_hook_object)

            hook_constrained = module_inst.is_root_constrained()

            module.append(hook_constrained)

            mirror_modules_progress += mirror_modules_progress_progress_increment
            cmds.progressWindow(mirror_modules_progress_ui,
                                edit=True,
                                progress=mirror_modules_progress)

        mirror_modules_progress_progress_increment = mirror_modules_progress_stage2_proportion / len(
            self.module_info)

        for module in self.module_info:

            new_user_specified_name = module[1].partition("__")[2]

            mod = __import__("blueprint." + module[5], {}, {}, [module[5]])
            reload(mod)

            module_class = getattr(mod, mod.CLASS_NAME)
            module_inst = module_class(new_user_specified_name, None)

            module_inst.mirror(module[0], module[2], module[3], module[4])

            mirror_modules_progress += mirror_modules_progress_progress_increment
            cmds.progressWindow(mirror_modules_progress_ui,
                                edit=True,
                                progress=mirror_modules_progress)

        mirror_modules_progress_progress_increment = mirror_modules_progress_stage3_proportion / len(
            self.module_info)

        for module in self.module_info:

            new_user_specified_name = module[1].partition("__")[2]

            mod = __import__("blueprint." + module[5], {}, {}, [module[5]])
            reload(mod)

            module_class = getattr(mod, mod.CLASS_NAME)
            module_inst = module_class(new_user_specified_name, None)

            module_inst.rehook(module[6])

            hook_constrained = module[7]

            if hook_constrained:

                module_inst.constrain_root_to_hook()

            mirror_modules_progress += mirror_modules_progress_progress_increment

            cmds.progressWindow(mirror_modules_progress_ui,
                                edit=True,
                                pr=mirror_modules_progress)

        if self.group != None:

            cmds.lockNode("Group_container", lock=False, lockUnpublished=False)

            group_parent = cmds.listRelatives(self.group, parent=True)

            if group_parent != None:

                group_parent = group_parent[0]

            self.process_group(self.group, group_parent)

            cmds.lockNode("Group_container", lock=True, lockUnpublished=True)

            cmds.select(clear=True)

        cmds.progressWindow(mirror_modules_progress_ui,
                            edit=True,
                            endProgress=True)

        utils.force_scene_update()
Beispiel #17
0
	def modify_selected(self, *args):

		selected_nodes = cmds.ls(selection=True)

		if len(selected_nodes) <= 1:
			self.module_instance = None
			selected_module_namespace = None
			current_module_file = None

			cmds.button(self.ui_elements["ungroup_btn"], edit=True, enable=False)
			cmds.button(self.ui_elements["mirror_module_btn"], edit=True, enable=False)

			if len(selected_nodes) == 1:
				last_selected = selected_nodes[0]

				if last_selected.find("Group__") == 0:

					cmds.button(self.ui_elements["ungroup_btn"], edit=True, enable=True)
					cmds.button(self.ui_elements["mirror_module_btn"], edit=True, enable=True, label="Mirror Group")

				namespace_and_node = utils.strip_leading_namespace(last_selected)

				if namespace_and_node != None:

					namespace = namespace_and_node[0]

					module_name_info = utils.find_all_module_names("/modules/blueprint")
					valid_modules = module_name_info[0]
					valid_module_names = module_name_info[1]

					index = 0

					for module_name in valid_module_names:

						module_name_inc_suffix = module_name+"__"

						if namespace.find(module_name_inc_suffix) == 0:

							current_module_file = valid_modules[index]
							selected_module_namespace = namespace

							break

						index += 1

			control_enabled = False
			user_specified_name = ""
			constrain_command = self.constrain_root_to_hook
			constrain_label = "Constrain Root > Hook"

			if selected_module_namespace != None:

				control_enabled = True
				user_specified_name = selected_module_namespace.partition("__")[2]

				mod = __import__("blueprint."+current_module_file, {}, {}, [current_module_file])
				reload(mod)

				module_class = getattr(mod, mod.CLASS_NAME)
				self.module_instance = module_class(user_specified_name, None)

				cmds.button(self.ui_elements["mirror_module_btn"], edit=True, enable=True, label="Mirror Module")

				if self.module_instance.is_root_constrained():

					constrain_command = self.unconstrain_root_from_hook
					constrain_label = "Unconstrain Root"

			cmds.button(self.ui_elements["rehook_btn"], edit=True, enable=control_enabled)

			cmds.button(self.ui_elements["snap_root_btn"], edit=True, enable=control_enabled)

			cmds.button(
							self.ui_elements["constraint_root_btn"],
							edit=True,
							enable=control_enabled,
							label=constrain_label,
							c=constrain_command
						)

			cmds.button(self.ui_elements["delete_module_btn"], edit=True, enable=control_enabled)

			cmds.textField(self.ui_elements["module"], edit=True, enable=control_enabled, text=user_specified_name)

			self.create_module_specific_controls()

		self.create_script_job()
Beispiel #18
0
    def modify_selected(self, *args):

        selected_nodes = cmds.ls(selection=True)

        if len(selected_nodes) <= 1:
            self.module_instance = None
            selected_module_namespace = None
            current_module_file = None

            cmds.button(self.ui_elements["ungroup_btn"],
                        edit=True,
                        enable=False)
            cmds.button(self.ui_elements["mirror_module_btn"],
                        edit=True,
                        enable=False)

            if len(selected_nodes) == 1:
                last_selected = selected_nodes[0]

                if last_selected.find("Group__") == 0:

                    cmds.button(self.ui_elements["ungroup_btn"],
                                edit=True,
                                enable=True)
                    cmds.button(self.ui_elements["mirror_module_btn"],
                                edit=True,
                                enable=True,
                                label="Mirror Group")

                namespace_and_node = utils.strip_leading_namespace(
                    last_selected)

                if namespace_and_node != None:

                    namespace = namespace_and_node[0]

                    module_name_info = utils.find_all_module_names(
                        "/modules/blueprint")
                    valid_modules = module_name_info[0]
                    valid_module_names = module_name_info[1]

                    index = 0

                    for module_name in valid_module_names:

                        module_name_inc_suffix = module_name + "__"

                        if namespace.find(module_name_inc_suffix) == 0:

                            current_module_file = valid_modules[index]
                            selected_module_namespace = namespace

                            break

                        index += 1

            control_enabled = False
            user_specified_name = ""
            constrain_command = self.constrain_root_to_hook
            constrain_label = "Constrain Root > Hook"

            if selected_module_namespace != None:

                control_enabled = True
                user_specified_name = selected_module_namespace.partition(
                    "__")[2]

                mod = __import__("blueprint." + current_module_file, {}, {},
                                 [current_module_file])
                reload(mod)

                module_class = getattr(mod, mod.CLASS_NAME)
                self.module_instance = module_class(user_specified_name, None)

                cmds.button(self.ui_elements["mirror_module_btn"],
                            edit=True,
                            enable=True,
                            label="Mirror Module")

                if self.module_instance.is_root_constrained():

                    constrain_command = self.unconstrain_root_from_hook
                    constrain_label = "Unconstrain Root"

            cmds.button(self.ui_elements["rehook_btn"],
                        edit=True,
                        enable=control_enabled)

            cmds.button(self.ui_elements["snap_root_btn"],
                        edit=True,
                        enable=control_enabled)

            cmds.button(self.ui_elements["constraint_root_btn"],
                        edit=True,
                        enable=control_enabled,
                        label=constrain_label,
                        c=constrain_command)

            cmds.button(self.ui_elements["delete_module_btn"],
                        edit=True,
                        enable=control_enabled)

            cmds.textField(self.ui_elements["module"],
                           edit=True,
                           enable=control_enabled,
                           text=user_specified_name)

            self.create_module_specific_controls()

        self.create_script_job()