def BT_IsSetupConnected(set = None):
if not set or not cmds.objExists(set):
return None
#test the first transform in the set
setItems = cmds.listConnections(set +'.dagSetMembers')
if not setItems:
return None
connections = cmds.listConnections(setItems[0], source = True, type = 'BlendTransforms')
if connections:
return True
return False
python类objExists()的实例源码
def connectSetup(self):
uiSet = str(self.ui.setEdit.text())
if not uiSet:
return False
if not cmds.objExists(uiSet):
return False
BT_ConnectSetup(set = uiSet)
return True
def disconnectSetup(self):
uiSet = str(self.ui.setEdit.text())
if not uiSet:
return False
if not cmds.objExists(uiSet):
return False
BT_DisconnectSetup(set = uiSet)
return True
def BT_IsSetupConnected(set = None):
if not set or not cmds.objExists(set):
return None
#test the first transform in the set
setItems = cmds.listConnections(set +'.dagSetMembers')
if not setItems:
return None
connections = cmds.listConnections(setItems[0], source = True, type = 'BlendTransforms')
if connections:
return True
return False
def BT_DisconnectSetup(set = None):
if not set:
return False
if not BT_IsSetupConnected(set = set):
cmds.warning('Setup already disconnected!')
return False
btNode = cmds.getAttr(set +'.Blend_Node')
if not btNode or not cmds.objExists(btNode):
return False
numOutputs = cmds.getAttr(btNode +'.output', size = True)
print numOutputs
tempMult = None
for i in range(0, numOutputs):
conns = cmds.listConnections(btNode +'.output[' +str(i) +'].outputT', s = False, d = True)
if conns:
tempMult = cmds.createNode('multiplyDivide')
cmds.disconnectAttr(btNode +'.output[' +str(i) +'].outputT', conns[0] +'.translate')
cmds.connectAttr(btNode +'.output[' +str(i) +'].outputT', tempMult +'.input1')
conns = cmds.listConnections(btNode +'.output[' +str(i) +'].outputR', s = False, d = True)
if conns:
tempMult = cmds.createNode('multiplyDivide')
cmds.disconnectAttr(btNode +'.output[' +str(i) +'].outputR', conns[0] +'.rotate')
cmds.connectAttr(btNode +'.output[' +str(i) +'].outputR', tempMult +'.input1')
conns = cmds.listConnections(btNode +'.output[' +str(i) +'].outputS', s = False, d = True)
if conns:
tempMult = cmds.createNode('multiplyDivide')
cmds.disconnectAttr(btNode +'.output[' +str(i) +'].outputS', conns[0] +'.scale')
cmds.connectAttr(btNode +'.output[' +str(i) +'].outputS', tempMult +'.input1')
cmds.select(cl = True)
return True
def connectSetup(self):
uiSet = str(self.ui.setEdit.text())
if not uiSet:
return False
if not cmds.objExists(uiSet):
return False
BT_ConnectSetup(set = uiSet)
return True
def disconnectSetup(self):
uiSet = str(self.ui.setEdit.text())
if not uiSet:
return False
if not cmds.objExists(uiSet):
return False
BT_DisconnectSetup(set = uiSet)
return True
def BT_IsSetupConnected(set = None):
if not set or not cmds.objExists(set):
return None
#test the first transform in the set
setItems = cmds.listConnections(set +'.dagSetMembers')
if not setItems:
return None
connections = cmds.listConnections(setItems[0], source = True, type = 'BlendTransforms')
if connections:
return True
return False
def BT_DisconnectSetup(set = None):
if not set:
return False
if not BT_IsSetupConnected(set = set):
cmds.warning('Setup already disconnected!')
return False
btNode = cmds.getAttr(set +'.Blend_Node')
if not btNode or not cmds.objExists(btNode):
return False
numOutputs = cmds.getAttr(btNode +'.output', size = True)
print numOutputs
tempMult = None
for i in range(0, numOutputs):
conns = cmds.listConnections(btNode +'.output[' +str(i) +'].outputT', s = False, d = True)
if conns:
tempMult = cmds.createNode('multiplyDivide')
cmds.disconnectAttr(btNode +'.output[' +str(i) +'].outputT', conns[0] +'.translate')
cmds.connectAttr(btNode +'.output[' +str(i) +'].outputT', tempMult +'.input1')
conns = cmds.listConnections(btNode +'.output[' +str(i) +'].outputR', s = False, d = True)
if conns:
tempMult = cmds.createNode('multiplyDivide')
cmds.disconnectAttr(btNode +'.output[' +str(i) +'].outputR', conns[0] +'.rotate')
cmds.connectAttr(btNode +'.output[' +str(i) +'].outputR', tempMult +'.input1')
conns = cmds.listConnections(btNode +'.output[' +str(i) +'].outputS', s = False, d = True)
if conns:
tempMult = cmds.createNode('multiplyDivide')
cmds.disconnectAttr(btNode +'.output[' +str(i) +'].outputS', conns[0] +'.scale')
cmds.connectAttr(btNode +'.output[' +str(i) +'].outputS', tempMult +'.input1')
cmds.select(cl = True)
return True
def connectSetup(self):
uiSet = str(self.ui.setEdit.text())
if not uiSet:
return False
if not cmds.objExists(uiSet):
return False
BT_ConnectSetup(set = uiSet)
return True
def disconnectSetup(self):
uiSet = str(self.ui.setEdit.text())
if not uiSet:
return False
if not cmds.objExists(uiSet):
return False
BT_DisconnectSetup(set = uiSet)
return True
def BT_DisconnectSetup(set = None):
if not set:
return False
if not BT_IsSetupConnected(set = set):
cmds.warning('Setup already disconnected!')
return False
btNode = cmds.getAttr(set +'.Blend_Node')
if not btNode or not cmds.objExists(btNode):
return False
numOutputs = cmds.getAttr(btNode +'.output', size = True)
print numOutputs
tempMult = None
for i in range(0, numOutputs):
conns = cmds.listConnections(btNode +'.output[' +str(i) +'].outputT', s = False, d = True)
if conns:
tempMult = cmds.createNode('multiplyDivide')
cmds.disconnectAttr(btNode +'.output[' +str(i) +'].outputT', conns[0] +'.translate')
cmds.connectAttr(btNode +'.output[' +str(i) +'].outputT', tempMult +'.input1')
conns = cmds.listConnections(btNode +'.output[' +str(i) +'].outputR', s = False, d = True)
if conns:
tempMult = cmds.createNode('multiplyDivide')
cmds.disconnectAttr(btNode +'.output[' +str(i) +'].outputR', conns[0] +'.rotate')
cmds.connectAttr(btNode +'.output[' +str(i) +'].outputR', tempMult +'.input1')
conns = cmds.listConnections(btNode +'.output[' +str(i) +'].outputS', s = False, d = True)
if conns:
tempMult = cmds.createNode('multiplyDivide')
cmds.disconnectAttr(btNode +'.output[' +str(i) +'].outputS', conns[0] +'.scale')
cmds.connectAttr(btNode +'.output[' +str(i) +'].outputS', tempMult +'.input1')
cmds.select(cl = True)
return True
def PlaceNote():
# Notetrack number
note_tracks = 0
# We need to ask for a name
if not (cmds.objExists("SENotes")):
# We need to make the SENotes parent first
base_track = cmds.spaceLocator()
# Rename
cmds.rename(base_track, "SENotes")
# Notetrack name
noteName = "new_notetrack" + str(note_tracks)
# Now we can make the child (if you have > 50000 notetracks, we got a problem...)
for npos in xrange(note_tracks, 50000):
# Setup
noteName = "new_notetrack" + str(npos)
# Check
if not (cmds.objExists(noteName)):
# Exit
break
# Now make it and parent it
notetrack = cmds.spaceLocator()
# Rename
cmds.rename(notetrack, noteName)
# Parent it
mel.eval("parent " + noteName + " SENotes")
# Get current time
currentFrame = cmds.currentTime(query = True)
# Key it
cmds.setKeyframe(noteName, time = currentFrame)
# Log it
print("A new notetrack was created")
# Selects all bones
def DagPathFromJoint(name, needsRest=True):
# Check for it
if not cmds.objExists(name):
# Not found in scene
return False
# Check to add
if needsRest:
# Check for the attr (to set rest pos)
if not cmds.objExists(name + ".seanimUndoT"):
# We need to setup the undo data
ResetTranslation = cmds.getAttr(name + ".t")[0]
ResetScale = cmds.getAttr(name + ".scale")[0]
ResetRotation = cmds.getAttr(name + ".jo")[0]
# Make the attributes
cmds.addAttr(name, longName="seanimUndoT", dataType="double3", storable=True)
cmds.addAttr(name, longName="seanimUndoS", dataType="double3", storable=True)
cmds.addAttr(name, longName="seanimUndoR", dataType="double3", storable=True)
# Set them
cmds.setAttr(name + ".seanimUndoT", ResetTranslation[0], ResetTranslation[1], ResetTranslation[2], type="double3")
cmds.setAttr(name + ".seanimUndoS", ResetScale[0], ResetScale[1], ResetScale[2], type="double3")
cmds.setAttr(name + ".seanimUndoR", ResetRotation[0], ResetRotation[1], ResetRotation[2], type="double3")
# Make selector
sList = OpenMaya.MSelectionList()
# Add it
sList.add(name)
# New Path
dResult = OpenMaya.MDagPath()
# Set it
sList.getDagPath(0, dResult)
# Return
return dResult
# Disconnects a MDagPath from it's input keyframes
def attr(self, attr):
self.validCheck()
if self._cache:
if attr in self._cache_attribute:
return self._cache_attribute[attr]
attrname = self.name()+u"."+attr
if cmds.objExists(attrname):
_attribute = Attribute(attrname, cache=self._cache)
if self._cache:
self._cache_attribute[attr] = _attribute
return _attribute
else:
raise AttributeError("%r has no attribute or method named '%s'" % (self, attr))
def hasAttr(self, attr):
if isinstance(attr, basestring):
if u"[" in attr or u"." in attr:
return cmds.objExists(self.name()+"."+attr)
else:
return self._MFn.hasAttribute(attr)
elif attr.__class__.__name__ == Attribute.__name__:
return self._MFn.hasAttribute(attr.attrName())
def toggleMeshVisibility(self):
mesh = self.sourceField.text()
if not mesh:
return
if not cmds.objExists(mesh):
return
try:
cmds.setAttr(mesh + '.visibility', not bool(cmds.getAttr(mesh + '.visibility')))
except Exception as e:
print(e)
def toggleMushVisbility(self):
mush = self.sourceField.text()
if not mush:
return
mush += '_Mush'
if not cmds.objExists(mush):
return
try:
cmds.setAttr(mush + '.visibility', not bool(cmds.getAttr(mush + '.visibility')))
except Exception as e:
print(e)
def createMush(self):
mesh = self.sourceField.text()
if not mesh:
return
if cmds.objExists(mesh + '_Mush'):
print(mesh + '_Mush already exists!')
return
cmds.currentTime(cmds.playbackOptions(q=True, min=True))
dup = cmds.duplicate(mesh, inputConnections=True, n=mesh + '_Mush')
cmds.deltaMush(dup, smoothingIterations=20, smoothingStep=0.5, pinBorderVertices=True, envelope=1)
def deleteMush(self):
mesh = self.sourceField.text()
if not mesh:
return
if not cmds.objExists(mesh + '_Mush'):
return
cmds.delete(mesh + '_Mush')