iobs
iobs

Reputation: 47

Maya python - Creat control slider in the same window

I am pretty beginner in python. I'm trying to make sliders (who control bevels) to be created in the same window every time I press a button defined by def previewbevel (ignore): there is surely something I did not understand

I updated the code. now it can be tested. You just have to select a polygon and press the button. I would like that every time I press the button the sliders are added in the window

here the code :

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, ) 

Thanks in advance for the help.

Upvotes: 0

Views: 398

Answers (1)

DrWeeny
DrWeeny

Reputation: 2512

Im not sure why you convert your sliders into string. Here is a working ui. As I don't understand what you do, it is difficult to correct your code

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)

Upvotes: 1

Related Questions