0

我想使用一个复选框来控制在滑块功能中相乘的比率。

首先我尝试直接更改变量,但失败了。

然后我尝试更改dragCommand,但也失败了。

我该如何控制它?

import pymel.core as pm
import math

myRatio = math.sqrt(2) * 0.5

def myPolyBevel(*args): 

    # called by convert
    def convertOn(*args):        
        #myRatio = math.sqrt(2) * 0.5
        myOffsetSlider.dragCommand = myOffsetOn

    def convertOff(*args):
       #myRatio = 1.0
        myOffsetSlider.dragCommand = myOffsetOff

    # called by offset    
    def myOffsetOn(*args):        
        temp =  pm.floatSliderGrp( myOffsetSlider, query = True, value = True ) * myRatio
        pm.setAttr( myBevel.name()+".offset", temp ) 

    def myOffsetOff(*args):        
        temp =  pm.floatSliderGrp( myOffsetSlider, query = True, value = True )
        pm.setAttr( myBevel.name()+".offset", temp )          

    # main    
    if pm.selected():
        # add Bevel
        newBevel = pm.polyBevel3( pm.selected(), offset = 0.1 * myRatio, segments = 2, smoothingAngle  = 30, chamfer = 1 )
        myBevel = newBevel[0]

        # UI        
        bevelWindow = pm.window(title = 'Bevel')
        bevelLayout = pm.columnLayout() 
        myConvert = pm.checkBoxGrp( numberOfCheckBoxes = 1, label = '', label1 = 'Convert', value1 = 1, onCommand = convertOn, offCommand = convertOff )       
        myOffsetSlider = pm.floatSliderGrp( label='Offset', field = True, 
                                        minValue = 0.0, maxValue = 5.0, 
                                        fieldMinValue = 0.0, fieldMaxValue = 100.0, 
                                        value = 0.1, step = 0.001, 
                                        dragCommand  = myOffsetOn, changeCommand = myOffsetOn )

        pm.showWindow() 

# Main
mainWindow = pm.window(title = 'Star')
mainLayout = pm.gridLayout( cellWidthHeight = (40,40), numberOfColumns = 5 ) 
bevelButton = pm.button( label = 'Bevel', command = myPolyBevel)    
pm.showWindow()
4

1 回答 1

0

您可能不必嵌套所有这些命令,这会使它变得更难(或使用一些 Class 方法)

使用 partial 传递 args :

Maya Python - 使用来自 UI 的数据

这里有一篇有用的帖子,您可以参考,查看 theodor 和我对该主题的回答(我们经常回答这个问题)

于 2017-06-13T15:26:52.940 回答