我非常不知道我在做什么,所以请耐心等待。 我有许多不同长度的边。 我得到其中一条边的长度,然后想要将选择的边缩放到获得的长度。 我通过这段代码得到了长度:(不是我的代码btw:http://forums.cgsociety.org/archive/index.php?t-846300.html)
global length
length =[]
sel=cmds.ls(sl=True,fl=True)
cmds.ConvertSelectionToVertices()
p=cmds.xform(sel,q=True,t=True,ws=True)
length=math.sqrt(math.pow(p[0]-p[3],2)+math.pow(p[1]-p[4],2)+math.pow(p[2]-p[5],2))
cmds.select(sel)
cmds.selectMode(co=True)
cmds.selectType(eg=True)
print 'Edge Length=',length
这会沿着组件轴y方向缩放所有选定的边,这就是我希望它们缩放的方式:
cmds.scale( 0,1,0, cs=True)
现在将边缘的长度设置为我已尝试过的长度,但这不起作用。
cmds.scale( length, cs=True)
有人能指出我正确的方向吗?
答案 0 :(得分:0)
好的,如果将来有人需要这个工作。这是整个代码
def getEdgeLengthFunc (*pArgs):
global referenceLength
referenceLength =[]
sel1=cmds.ls(sl=True,fl=True)
cmds.ConvertSelectionToVertices()
p=cmds.xform(sel1,q=True,t=True,ws=True)
referenceLength=math.sqrt(math.pow(p[0]-p[3],2)+math.pow(p[1]-p[4],2)+math.pow(p[2]-p[5],2))
cmds.select(sel1)
cmds.selectMode(co=True)
cmds.selectType(eg=True)
def setEdgeLengthFunc (*pArgs):
sel2=cmds.ls(sl=True,fl=True)
cmds.ConvertSelectionToVertices()
p=cmds.xform(sel2,q=True,t=True,ws=True)
initialLength=math.sqrt(math.pow(p[0]-p[3],2)+math.pow(p[1]-p[4],2)+math.pow(p[2]-p[5],2))
cmds.select(sel2)
cmds.selectMode(co=True)
cmds.selectType(eg=True)
lengthToSet=abs(referenceLength / initialLength)
cmds.scale( 1, lengthToSet, 1, cs=True, a=True)