-
Notifications
You must be signed in to change notification settings - Fork 1
/
snippets.py
88 lines (57 loc) · 2.28 KB
/
snippets.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import maya.cmds as cmds
import maya.OpenMaya as om
def jointInCentre():
"""
Takes a selection and creates a joint in the middle of it. Works with
selection of vertices or edges
:return:
"""
print 'Putting a joint in the centre of a selection!'
selection = om.MSelectionList()
om.MGlobal.getActiveSelectionList(selection)
iterSel = om.MItSelectionList(selection)
posX = []
posY = []
posZ = []
while not iterSel.isDone():
mObj = om.MObject()
mDagpath = om.MDagPath()
iterSel.getDagPath(mDagpath, mObj)
#print mObj.apiTypeStr()
#print mObj.apiType()
if mObj.hasFn(om.MFn.kMeshVertComponent):
mVertIter = om.MItMeshVertex(mDagpath, mObj)
print "We have {0} vertices selected".format(mVertIter.count())
mVertIter.reset()
while not mVertIter.isDone():
vertPoint = mVertIter.position(om.MSpace.kWorld)
print vertPoint.x, vertPoint.y, vertPoint.z
posX.append(vertPoint.x)
posY.append(vertPoint.y)
posZ.append(vertPoint.z)
mVertIter.next()
elif mObj.hasFn(om.MFn.kMeshEdgeComponent):
mEdgeIter = om.MItMeshEdge(mDagpath, mObj)
print "We have {0} edges selected".format(mEdgeIter.count())
vertIndices = []
mEdgeIter.reset()
while not mEdgeIter.isDone():
for i in range(2):
if not mEdgeIter.index(1) in vertIndices:
point = mEdgeIter.point(i, om.MSpace.kWorld)
posX.append(point.x)
posY.append(point.y)
posZ.append(point.z)
vertIndices.append(mEdgeIter.index(i))
mEdgeIter.next()
else:
print 'Selection is not a vertices or edges!'
##########################################
# Do not comment this out!!!!
iterSel.next()
centreX = sum(posX) / len(posX)
centreY = sum(posY) / len(posY)
centreZ = sum(posZ) / len(posZ)
print 'Centre point is: {0} {1} {2}'.format(centreX, centreY, centreZ)
cmds.select(clear=True)
cmds.joint(position=[centreX,centreY, centreZ])