def updateInputOutputs(self): """ finds attributes on module with "input_" & "output_" prefix then populates dicts """ # Get input attrs inputsAttrs = cmds.listAttr( self.container, st='input_*') # Get output attrs outputsAttrs = cmds.listAttr( self.container, st='output_*') if inputsAttrs: for attr in inputsAttrs: # get attr key key = Util.getSuffix(attr) if key != "data": # get connected obj objs = Util.getConnectedObjects( (self.container + "." + attr) ) # store obj self.inputs[key] = Util.getFirst(objs) if outputsAttrs: for attr in outputsAttrs: # get attr key key = Util.getSuffix(attr) if key != "data": # get connected obj objs = Util.getConnectedObjects( (self.container + "." + attr) ) # store obj self.outputs[key] = Util.getFirst(objs)
def createConnection(self, inputModule, connectionKey): """ Connect objects based on connection data """ inputModule = self.Modules[inputModule] # Check connection exists if not inputModule.connections.has_key(connectionKey): cmds.error("Connection data not found") inputPlug = inputModule.connections[connectionKey]["input"] outputPlug = inputModule.connections[connectionKey]["output"] connectionAttr = inputModule.connections[connectionKey]["connectAttr"] connectionDataAttr = (connectionAttr + "_data") inputModule = inputPlug.split(".")[0] outputModule = outputPlug.split(".")[0] inputKey = Util.getSuffix( inputPlug.split(".")[1] ) outputey = Util.getSuffix( outputPlug.split(".")[1] ) input = self.getInput(inputModule, inputKey) output = self.getOutput(outputModule, outputey) # Get connection data connectionData = cmds.getAttr( (inputModule + "_CNT." + connectionDataAttr) ) AttributeName = connectionData[3] type = AttributeName = connectionData[1] if type == "trans": cmds.parentConstraint(output,input, mo= False) elif type == "transMo": cmds.parentConstraint(output,input, mo= True) elif type == "pos": cmds.pointConstraint(output,input, mo= False) elif type == "posMo": cmds.pointConstraint(output,input, mo= True) elif type == "rot": cmds.orientConstraint(output,input, mo= False) elif type == "rotMo": cmds.orientConstraint(output,input, mo= True) elif type == "scale": cmds.scaleConstraint(output,input) elif type == "matrix": Util.matrixConstraint(output, input, 0, {}) elif type == "matrixMo": Util.matrixConstraint(output, input, 1, {}) elif type == "Attribute": cmds.connectAttr(output, input, f= True) else: cmds.error( ("Connection type not found on connectionAttr: " + connectionAttr) )
def updateConnectionData(self): """ Go through module finding connections and updating connections dict """ # Get connections attrs connectAttrs = cmds.listAttr( self.container, st='connection_*') connectionData = {} if connectAttrs: for attr in connectAttrs: # get attr key key = attr.split("_")[1] suffix = Util.getSuffix(attr) if suffix == "data": # get connected obj data = cmds.getAttr( (self.container + "." + attr ) ) if data: connectionData = {data[0]:data[1],data[2]:data[3], data[4]:data[5]} else: cmds.error("Connection attribute name incorrect") # store obj self.connections[key] = connectionData