2017-06-08 11 views
0

スライダ機能で倍率を制御するには、チェックボックスを使用します。pymelのチェックボックスを使用してコマンド機能を変更するには

まず変数を直接変更しようとしましたが、失敗しました。

次に、私は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() 

答えて

0

あなたがいない巣すべてこのコマンドをする必要があり、それは難しくなります(または、いくつかのクラスのメソッドを使用します)

は、引数を渡すために、部分的に使用:

Maya Python - Using data from UI

ここに便利投稿を参照したり、話題に関する私の答えをチェックしたりすることができます(この質問によく答えます)。

+0

ありがとう!私はそれをクラスとして作り、この問題を解決しました。 –

関連する問題