Maya Python:设置边长

时间:2018-03-17 11:29:50

标签: python scale maya edge

我非常不知道我在做什么,所以请耐心等待。 我有许多不同长度的边。 我得到其中一条边的长度,然后想要将选择的边缩放到获得的长度。 我通过这段代码得到了长度:(不是我的代码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)

有人能指出我正确的方向吗?

1 个答案:

答案 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)