def repair(cls, instance): # Use a single undo chunk with undo_chunk(): controls = cmds.sets("controls_SET", query=True) for control in controls: # Lock visibility attr = "{}.visibility".format(control) locked = cmds.getAttr(attr, lock=True) if not locked: cls.log.info("Locking visibility for %s" % control) cmds.setAttr(attr, lock=True) # Remove incoming connections invalid_plugs = cls.get_connected_attributes(control) if invalid_plugs: for plug in invalid_plugs: cls.log.info("Breaking input connection to %s" % plug) source = cmds.listConnections(plug, source=True, destination=False, plugs=True)[0] cmds.disconnectAttr(source, plug) # Reset non-default values invalid_plugs = cls.get_non_default_attributes(control) if invalid_plugs: for plug in invalid_plugs: attr = plug.split(".")[-1] default = cls.CONTROLLER_DEFAULTS[attr] cls.log.info("Setting %s to %s" % (plug, default)) cmds.setAttr(plug, default)
def process(self): with lib.undo_chunk(): instance = super(CreateYetiRig, self).process() self.log.info("Creating Rig instance set up ...") input_meshes = cmds.sets(name="input_SET", empty=True) cmds.sets(input_meshes, forceElement=instance)
def process(self): with lib.undo_chunk(): instance = super(CreateRig, self).process() self.log.info("Creating Rig instance set up ...") controls = cmds.sets(name="controls_SET", empty=True) pointcache = cmds.sets(name="out_SET", empty=True) cmds.sets([controls, pointcache], forceElement=instance)
def repair(cls, instance): invalid = cls.get_invalid(instance) with lib.undo_chunk(): for node in invalid: for attribute in cls.attributes: if cmds.attributeQuery(attribute, node=node, exists=True): plug = "{}.{}".format(node, attribute) cmds.setAttr(plug, channelBox=False, keyable=False)
def process(self): exists = cmds.ls(self.name) assert len(exists) <= 1, ( "More than one renderglobal exists, this is a bug" ) if exists: return cmds.warning("%s already exists." % exists[0]) with lib.undo_chunk(): super(CreateRenderGlobals, self).process() cmds.setAttr("{}.machineList".format(self.name), lock=True)
def process(self): exists = cmds.ls(self.name) assert len(exists) <= 1, ( "More than one renderglobal exists, this is a bug") if exists: return cmds.warning("%s already exists." % exists[0]) with lib.undo_chunk(): instance = super(CreateRenderSetup, self).process() self.data["renderSetup"] = "42" null = cmds.sets(name="null_SET", empty=True) cmds.sets([null], forceElement=instance)
def process(self): exists = cmds.ls(self.name) if exists: return cmds.warning("%s already exists." % exists[0]) use_selection = self.options.get("useSelection") with lib.undo_chunk(): self._create_render_settings() instance = super(CreateRender, self).process() cmds.setAttr("{}.machineList".format(instance), lock=True) self._rs = renderSetup.instance() layers = self._rs.getRenderLayers() if use_selection: print(">>> processing existing layers") sets = [] for layer in layers: print(" - creating set for {}".format(layer.name())) render_set = cmds.sets(n="LAYER_{}".format(layer.name())) sets.append(render_set) cmds.sets(sets, forceElement=instance) # if no render layers are present, create default one with # asterix selector if not layers: rl = self._rs.createRenderLayer('Main') cl = rl.createCollection("defaultCollection") cl.getSelector().setPattern('*') renderer = cmds.getAttr( 'defaultRenderGlobals.currentRenderer').lower() # handle various renderman names if renderer.startswith('renderman'): renderer = 'renderman' cmds.setAttr(self._image_prefix_nodes[renderer], self._image_prefixes[renderer], type="string")