Teşekkürler xenamorph... Affına sığınarak kod olarak ekleyelim diye düşündüm...Hem daha kalıcı olabilir...
#chain creator tool by Engin Ozdemir 2009
#create window
import maya.cmds as mc
cwindow=mc.window(title="chain creator tool", wh=(256,256),s=False)
mc.columnLayout(adjustableColumn=True)
mc.text( label="Select a curve and press create." )
cbt=mc.button( label='Create', align='center', command="create_chain()" )
mc.showWindow(cwindow)
def create_chain():
import random
#define curve
d=mc.ls(sl=True)
dlen=mc.arclen(d[0])
length=int(dlen/2)
print length
#rebuild curve
mc.rebuildCurve(d[0], ch=1, rpo=1, rt=0, end=1, kr=0, kcp=0, kep=1, kt=0, s=length, d=1, tol=0.01)
print "operating on "+d[0]
#create a low poly cylinder
cSample=mc.polyCylinder(ch=True, o=True, r=0.3, h=1.8, sa=6, sc=1, cuv=3, n="cSample")
print cSample[0]+" created."
#remove unwanted faces
mc.select(cl=True)
mc.select(cSample[0]+".f[12:17]")
mc.select(cSample[0]+".f[6:11]", add=True)
mc.Delete()
print "Unwanted faces removed."
#Duplicate and reposition low poly cylinder
mc.select(cl=True)
cSampleD=mc.duplicate(cSample[0])
mc.setAttr(cSampleD[0]+".translateX",1.2)
print cSample[0]+" duplicated and repositioned."
#combine both geometry
cSampleC=mc.polyUnite(cSample[0], cSampleD[0], n="cSampleC")
print "Both geometry merged."
mc.select(cl=True)
#select top edges for bridge
mc.select(cSampleC[0]+".e[6:11]")
mc.select(cSampleC[0]+".e[24:29]", add=True)
print "Top eadges selected."
#polyBrige top edges
mc.polyBridgeEdge(ch=1, divisions=5, twist=0, taper=1, curveType=2, smoothingAngle=30)
print "Top edges briged."
#select bottom edges for bridge
mc.select(cl=True)
mc.select(cSampleC[0]+".e[0:5]")
mc.select(cSampleC[0]+".e[18:23]", add=True)
print "Bottom eadges selected."
#polyBrige bottom edges
mc.polyBridgeEdge(ch=1, divisions=5, twist=0, taper=1, curveType=2, smoothingAngle=30)
print "bottom edges briged."
mc.select(cl=True)
#optimize geometry agaist abuse
chain=mc.duplicate(cSampleC[0])
mc.select(cSampleC[0])
mc.delete()
mc.select(chain[0])
mc.displaySmoothness(divisionsU=3, divisionsV=3, pointsWire=16, pointsShaded=4, polygonObject=3)
mc.subdivDisplaySmoothness(smoothness=3)
#freeze transformations and center pivot
mc.makeIdentity (apply=True, translate=True, rotate=True, scale=True,normal=False)
mc.xform (cp=True, ztp=True)
print "geometry optimized"
#add path animation
mc.select(d[0], add=True)
mc.pathAnimation(stu=0, etu=length, follow=True)
print "animated along curve"
#duplicate along curve
t=0
for i in range(0,length,1):
rotc=mc.duplicate(chain[0])
mc.select(rotc[0])
rrot=random.randint(-5,5)
mc.rotate(0,(((-1)**t+1)/2)*90+rrot,0, relative=True, objectSpace=True)
mc.select(cl=True)
mc.currentTime(i)
t=t+1
mc.select(chain[0])
mc.delete()
print "%d chains created."%length