Maya python - создайте слайдер управления в том же окне - PullRequest
0 голосов
/ 27 ноября 2018

Я довольно новичок в питоне.Я пытаюсь сделать так, чтобы ползунки (которые управляют скосами) создавались в одном и том же окне каждый раз, когда я нажимаю кнопку, определенную def previewbevel (игнорировать): наверняка что-то я не понял

Я обновилкод.теперь это можно проверить.Вам просто нужно выбрать многоугольник и нажать кнопку.Мне бы хотелось, чтобы при каждом нажатии кнопки ползунки добавлялись в окно

здесь код:

from os import path

import maya.cmds as cmds


import maya.mel as mel

import pymel.core as pm


def previewbevel(ignore): 


    pm.polySelectConstraint(type=0x8000, mode=3, sm=1)
    pm.mel.resetPolySelectConstraint()

    BevelA= mel.eval("polyBevel3 -fraction 0.3 -offsetAsFraction 1 -autoFit 1 -depth 1 -mitering 0 -miterAlong 0 -chamfer 1 -segments 2 -worldSpace 1 -smoothingAngle 45 -subdivideNgons 1 -mergeVertices 1 - mergeVertexTolerance 0.001;")
    bevel=BevelA[0]


    if pm.window('myWindow', exists=1):
       pm.deleteUI('myWindow', window=1)

    pm.window('myWindow', title="attrFieldSliderGrp")
    pm.columnLayout(adjustableColumn=True)

    slider=str(pm.attrFieldSliderGrp(columnAlign=(1, "right"), 
       min=0, 
       columnWidth=[(1, 84), (4, 1)], 
       label="Bevel", 
       at=(bevel + ".fraction"), max=20, 
       adjustableColumn=3))

    slider1=str(pm.attrFieldSliderGrp(columnAlign=(1, "right"), 
       min=0, 
       columnWidth=[(1, 84), (4, 1)], 
       label="Radial", 
       at=(bevel + ".mitering"), max=3, 
       adjustableColumn=3))


    slider2=str(pm.attrFieldSliderGrp(columnAlign=(1, "right"), 
       min=0, 
       columnWidth=[(1, 84), (4, 1)], 
       label="Segments", 
       at=(bevel + ".segments"), max=20, 
       adjustableColumn=3))
    pm.showWindow()





if cmds.window("test", exists =True):
    cmds.deleteUI("test")

if cmds.dockControl("testDock", exists =True):
    cmds.deleteUI("testDock")

myWindow = cmds.window("test", t="test", tlb=True, menuBar=True)
buttonForm = cmds.formLayout( parent = myWindow)
allowedAreas = ['all']
cmds.dockControl("testDock", l = "test",area='left', content=myWindow, allowedArea=allowedAreas,floating=True,fixedHeight= False ,fixedWidth= False,width=200, height=150)


tab=cmds.tabLayout('windowLayout',parent = buttonForm,width=205,bs="none")
cmds.separator( style='none', height=2,parent=buttonForm) 


topo=cmds.columnLayout('test',parent = tab)
cmds.button( label='Peview Bevel', command=previewbevel, parent=topo,width=205)  
cmds.window (myWindow, edit=True, ) 

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 27 ноября 2018

Я не уверен, почему вы конвертируете свои ползунки в строку.Вот рабочий интерфейс.Поскольку я не понимаю, что вы делаете, ваш код трудно исправить

import pymel.core as pm

def previewbevel(ignore): 


    pm.polySelectConstraint(type=0x8000, mode=3, sm=1)
    bevel = pm.bevel()[0]
    pm.mel.resetPolySelectConstraint()

    if pm.window('bevel', exists=1):
       pm.deleteUI('bevel', window=1)

    pm.window('bevel', title="attrFieldSliderGrp")
    main = pm.columnLayout(adjustableColumn=True)

    slider = pm.attrFieldSliderGrp(at=bevel + ".tolerance", p=main)

    slider1 = pm.attrFieldSliderGrp(at=bevel + ".extrudeDepth", p=main)

    slider2 = pm.attrFieldSliderGrp(at=bevel + ".width", p=main)
    pm.showWindow()


previewbevel(0)
...