def insert_joints_UI():
    WINDOW = 'InsertJoints'
    if pm.window(WINDOW, query=True, exists=True):
        pm.deleteUI(WINDOW)
    pm.window(WINDOW,
              title="Insert Joints",
              iconName='CS',
              widthHeight=(200, 70))
    main_col = pm.columnLayout(adjustableColumn=True)
    pm.separator(height=5, style='none', parent=main_col)
    textip_col = pm.rowColumnLayout(numberOfColumns=2,
                                    parent=main_col,
                                    columnOffset=(1, "left", 5),
                                    columnSpacing=(2, 5))
    pm.separator(height=5, style='none', parent=main_col)
    butn_col = pm.rowColumnLayout(numberOfColumns=3,
                                  parent=main_col,
                                  columnOffset=(2, "left", 65))
    pm.text(label="number of joints", parent=textip_col)
    textip = pm.textField(text="", parent=textip_col)
    pm.text(label="", parent=butn_col)
    pm.button(label="Create",
              parent=butn_col,
              command=lambda x: call_fun(textip.getText()))
    pm.showWindow(WINDOW)
    pm.window(WINDOW, edit=True, widthHeight=(200, 70))
    return None
Esempio n. 2
0
  def __init__(self, parentRef):
    self.parentRef = parentRef
    self.buttons = []
    self.window = pm.window( sizeable = False, title = "Selector", titleBar=True)
    with self.window:
        self.layout = pm.columnLayout()
        with self.layout:
            self.labFace = pm.text( label='A Useful Tool For Making Selections.', align='left',parent = self.layout )
            self.labFace = pm.text( label='Currently this tool only selects non quad faces.', align='left',parent = self.layout )
            self.labFace3 = pm.text( label='More features will be added to this tool in the future.', align='left',parent = self.layout )

            self.labFace4Blank = pm.text( label='           ', align='left',parent = self.layout )
            self.labFace4Blank = pm.text( label='           ', align='left',parent = self.layout )
            
            btn__find_non_quad_faces = pm.button ( label = 'Find-Quad Face Faces',parent = self.layout,
                        command = lambda xc: self.parentRef.highlightNonQuads(),width = 300  )
            self.buttons.append( btn__find_non_quad_faces )
            
            self.labTriResult = pm.text( label='Number of Triangles Found:', align='left', parent = self.layout )
            self.triFace = pm.intField(parent = self.layout, width = 40,value=0)
            self.labngonResult = pm.text( label='Number of n-Gons Found:', align='left', parent = self.layout )            
            self.ngonFace = pm.intField(parent = self.layout, width = 40,value=0)

            
    # Set the values?
    
    self.buttons.append( btn__find_non_quad_faces )                
    #pm.formLayout( form, edit=True,attachForm=[(self.labVtx,'top',10),(self.labVtx,'left',5),(self.layoutGrid,'top',30),(self.layoutGrid,'left',5),(self.labFace,'top',200),(self.labFace,'left',5),(btn_Face,'top',220),(btn_Face,'left',5),(self.labTriResult,'top',255),(self.labTriResult,'left',5),(self.triFace,'top',250),(self.triFace,'left',160),(self.ngonFace,'top',270),(self.ngonFace,'left',160),(self.labngonResult,'top',275),(self.labngonResult,'left',5)])
    
    # Show Window
    pm.showWindow(self.window)
    self.window.setWidth(600)
    self.window.setHeight(400)
 def __init__(self, parentRef, selection=False, multiplier=1.0):
     self.parentRef = parentRef
     self.buttons = []
     self.window = pm.window(sizeable=False,
                             title="Light Multiplier",
                             titleBar=True)
     with self.window:
         self.layout = pm.columnLayout()
         with self.layout:  ## Using Ui on the end of Widget names
             self.multiplierText = pm.text(label='Multiplier:',
                                           align='left')
             self.multiplierUi = pm.floatField(value=1.0)
             self.checkBoxUi = pm.checkBox(
                 label='Affect Selected Lights Only')
             self.okUi = pm.button(
                 label='Apply',
                 parent=self.layout,
                 command=lambda xc: self.parentRef.applyMultiplier(
                     multiplier=self.multiplierUi.getValue(),
                     selection=self.checkBoxUi.getValue(),
                 ),
                 width=300)
     pm.showWindow(self.window)
     self.window.setWidth(600)
     self.window.setHeight(400)
Esempio n. 4
0
def edit():
    _updateNodes()

    nodes = sel()
    if len(nodes) > 0:
        window = nodes[0].createGUI()
        pm.showWindow(window)
Esempio n. 5
0
    def __init__(self, parentRef):
        self.parentRef = parentRef
        self.buttons = []
        self.window = pm.window(sizeable=False,
                                title="Selector",
                                titleBar=True)
        with self.window:
            self.layout = pm.columnLayout()
            with self.layout:
                self.labFace = pm.text(
                    label='A Useful Tool For Making Selections.',
                    align='left',
                    parent=self.layout)
                self.labFace = pm.text(
                    label='Currently this tool only selects non quad faces.',
                    align='left',
                    parent=self.layout)
                self.labFace3 = pm.text(
                    label=
                    'More features will be added to this tool in the future.',
                    align='left',
                    parent=self.layout)

                self.labFace4Blank = pm.text(label='           ',
                                             align='left',
                                             parent=self.layout)
                self.labFace4Blank = pm.text(label='           ',
                                             align='left',
                                             parent=self.layout)

                btn__find_non_quad_faces = pm.button(
                    label='Find-Quad Face Faces',
                    parent=self.layout,
                    command=lambda xc: self.parentRef.highlightNonQuads(),
                    width=300)
                self.buttons.append(btn__find_non_quad_faces)

                self.labTriResult = pm.text(label='Number of Triangles Found:',
                                            align='left',
                                            parent=self.layout)
                self.triFace = pm.intField(parent=self.layout,
                                           width=40,
                                           value=0)
                self.labngonResult = pm.text(label='Number of n-Gons Found:',
                                             align='left',
                                             parent=self.layout)
                self.ngonFace = pm.intField(parent=self.layout,
                                            width=40,
                                            value=0)

        # Set the values?

        self.buttons.append(btn__find_non_quad_faces)
        #pm.formLayout( form, edit=True,attachForm=[(self.labVtx,'top',10),(self.labVtx,'left',5),(self.layoutGrid,'top',30),(self.layoutGrid,'left',5),(self.labFace,'top',200),(self.labFace,'left',5),(btn_Face,'top',220),(btn_Face,'left',5),(self.labTriResult,'top',255),(self.labTriResult,'left',5),(self.triFace,'top',250),(self.triFace,'left',160),(self.ngonFace,'top',270),(self.ngonFace,'left',160),(self.labngonResult,'top',275),(self.labngonResult,'left',5)])

        # Show Window
        pm.showWindow(self.window)
        self.window.setWidth(600)
        self.window.setHeight(400)
Esempio n. 6
0
def ckFidgetWin():
    """
        ckFidgetWin()

        description: creates interface for ckFidget tool. the list is built dynamically
            from the list of active fidgets on load, so the more fidgets you add. the
            longer the tool window will become.

        inputs:

        outputs: the main fidget window.

        CK - I should add some menus to this that have basic falloffs
         for common tasks, like cloth, sss, or lighting.

    """
    if pm.mel.eval('window -ex "fidgetMainWin" ;'):
        pm.mel.eval('deleteUI "fidgetMainWin";' )
    fidgetWin = pm.mel.eval('window -title "Carl Keifer attribute fidgeter" -width 150 fidgetMainWin;')
    pm.columnLayout( adjustableColumn=True )
    pm.frameLayout( label = "Build Fidget", borderStyle='in', collapsable=True )
    pm.rowLayout( numberOfColumns=5, columnWidth=(75,75) )
    pm.button( label = 'Add Fidget', command = 'ckAddFidget()' )
    pm.button( label = 'refresh UI', command = 'ckFidget()' )
    pm.button( label = 'Save All', command = 'ckSavRstZerAll( "save" )')
    pm.button( label = 'Zero All', command = 'ckSavRstZerAll( "zero" )')
    pm.button( label = 'Restore All', command = 'ckSavRstZerAll( "restore" )')
    pm.setParent( '..' )
    pm.setParent( '..' )
    pm.frameLayout( label = "Master Fidget", borderStyle='in', collapsable=True )
    pm.rowLayout( numberOfColumns=6, columnWidth=(75,75) )
    pm.mel.eval( 'floatField -value $gckFidgetBump -min 0 -changeCommand "$gckFidgetBump = `floatField -q -v  masterBump`"  masterBump;' )
    pm.button( label = '<', command = 'ckFidgetBumpAll("Down")')
    pm.button( label = '>', command = 'ckFidgetBumpAll("Up")')
    pm.radioButtonGrp( label='Bump by:', labelArray2=['0.0', '%'], numberOfRadioButtons=2, sl=1, on1= 'pm.setAttr("ckFidget_GRP.bumpBy", False)', on2= 'pm.setAttr("ckFidget_GRP.bumpBy", True)')
    pm.setParent( '..' )
    pm.setParent( '..' )
    pm.frameLayout( label = "Fidget Attributes", borderStyle='in', collapsable=True )
    e = 0
    # this iterates the list of fidgets we have
    ckList = ckGetList("ckFidget_GRP.ckFidgetList")
    for i in ckList:
        print "i, ",i
        pm.rowLayout( numberOfColumns=6, columnWidth=(75,75) )
        pm.attrFieldSliderGrp( l=str(i), min=-10.0, max=10.0, at = i )
        pm.button( label = '<', command = 'ckFidgetBump(\"'+i+'\", "Down")' )
        pm.button( label = '>', command = 'ckFidgetBump( \"'+i+'\","Up")' )
        pm.button( label = 'save', command = 'ckSavRst( \"'+i+'\", "save")')
        pm.button( label = 'zero', command = 'pm.setAttr( \"'+i+'\", 0)' )
        pm.button( label = 'restore', command = 'ckSavRst( \"'+i+'\", "restore")')
        pm.setParent( '..' )
    pm.setParent( '..' )
    pm.setParent( '..' )
    pm.showWindow(fidgetWin)
    # I should now connect the master fidget value to the fidget group
    def __init__(self, parentRef):
        self.parentRef = parentRef
        self.buttons = []
        self.window = pm.window(sizeable=False, title="Retoper", titleBar=True)
        with self.window:
            self.layout = pm.columnLayout()
            with self.layout:
                self.lab1 = pm.Text(
                    label='A "Retop" Tool For Creating New Topology.',
                    align='left',
                    parent=self.layout)
                self.lab2 = pm.Text(
                    label='Please Note: This tool does not preserve',
                    width=300,
                    align='left',
                    parent=self.layout)
                self.lab3 = pm.Text(
                    label='construction history of edited objects.',
                    width=300,
                    align='left',
                    parent=self.layout)

                btn__setReference = pm.Button(
                    label='Set Reference Mesh',
                    parent=self.layout,
                    command=lambda xc: self.parentRef.setReference(),
                    width=300)
                self.buttons.append(btn__setReference)

                btn__makeReferenceLive = pm.Button(
                    label='Make Reference Live',
                    parent=self.layout,
                    command=lambda xc: self.parentRef.makeReferenceLive(),
                    width=300)
                self.buttons.append(btn__makeReferenceLive)

                btn__makeReferenceNotLive = pm.Button(
                    label='Make Reference Not Live',
                    parent=self.layout,
                    command=lambda xc: self.parentRef.makeReferenceNotLive(),
                    width=300)
                self.buttons.append(btn__makeReferenceNotLive)

                btn__projectSelection = pm.Button(
                    label='Project Selection To Surface',
                    parent=self.layout,
                    command=lambda xc: self.parentRef.projectSelection(),
                    width=300)
                self.buttons.append(btn__projectSelection)

        # Show Window
        pm.showWindow(self.window)
        self.window.setWidth(600)
        self.window.setHeight(400)
Esempio n. 8
0
    def addChildEnumCB(self, mayatype, objlist, srcattr=None):

        srctype = mayatype.crtype.getTypeName()
        if srcattr:
            srctype = self._getTypeFromEnum(mayatype.crtype, srcattr)

        src = mayatype(self.factories, srctype)
        src.rename(srctype)
        self.addChild(src)
        CRObject.addObjToGlobalContext(src, objlist)
        self.closeGUI()
        pm.showWindow(src.createGUI())
Esempio n. 9
0
 def __init__(self, parentRef=None, parentWidget=None):
     self.parentRef = parentRef
     self.buttons = []
     self.layoutsR = []
     self.widgets = {}
     
     if parentWidget==None:
         parentWidget = self.widgets['parentWidget'] = pm.window(
             sizeable = True, title = "Mirrorer", titleBar=True,
             resizeToFitChildren=True,
         )
     else:
         self.widgets['parentWidget'] = parentWidget        
     
     with parentWidget:
         self.layoutC = pm.columnLayout( )
         with self.layoutC:
             row = pm.rowLayout( numberOfColumns=3 )
             self.layoutsR.append( row )
             with row:
                 self.makeStartShapeUi = pm.button ( label = 'Make Starting Shape',
                             command = lambda xc: self.parentRef.makeStartShape(),width = 200 )
             row = pm.rowLayout( numberOfColumns=3 )
             self.layoutsR.append( row )
             with row:
                 self.deleteNegativeSideUi = pm.button ( label = 'Delete Negative Side',
                             command = lambda xc: self.parentRef.deleteNegativeSide(),width = 200 )
             row = pm.rowLayout( numberOfColumns=3 )
             self.layoutsR.append( row )
             with row:
                 self.mirrorSelectionUi = pm.button ( label = 'Mirror As Instance',
                             command = lambda xc: self.parentRef.mirrorSelection(),width = 200 )
                 
             row = pm.rowLayout( numberOfColumns=3 )
             self.layoutsR.append( row )
             with row:    
                 self.mirrorSelectionUi = pm.button ( label = 'Flatten to zero on X axis',
                             command = lambda xc: self.parentRef.flattenToXZero(),width = 200 )
     
     
             row = pm.rowLayout( numberOfColumns=3 )
             self.layoutsR.append( row )
             with row:
                 self.mirrorSelectionUi = pm.button ( label = 'Mirror Geometry (Baked/Frozen)',
                             command = lambda xc: self.parentRef.mirrorGeometry( ),width = 200 )
     
         
     # Show Window
     if type( parentWidget ) == pm.core.windows.window:
         win = parentWidget
         pm.showWindow(win)
         win.setWidth(300)
         win.setHeight(200)        
Esempio n. 10
0
    def manage_shape_ui(self):
        WINDOW = "add_control"
        chk_win = pm.window(WINDOW, query=True, exists=True)
        if chk_win:
            pm.deleteUI(WINDOW)
        pm.window(WINDOW, title="Manage_Shapes", iconName="MS")
        main_col = pm.columnLayout(parent=WINDOW, adjustableColumn=True)

        main_split_col = pm.rowColumnLayout(parent=main_col,
                                            numberOfColumns=2,
                                            columnOffset=(2, "left", 5))
        cmd_col = pm.columnLayout(parent=main_split_col)
        pm.separator(parent=main_col, height=10)
        mel_cmd_col = pm.columnLayout(parent=cmd_col,
                                      columnOffset=("left", 10))
        pm.text("\t\t\t\tShape Name", parent=mel_cmd_col)
        nm_txt = pm.textField(text="", parent=mel_cmd_col, width=300)
        pm.text("\t\t\t\tShape mel command", parent=mel_cmd_col)
        txt = pm.scrollField("",
                             wordWrap=True,
                             parent=mel_cmd_col,
                             height=130,
                             width=300)
        pm.separator(parent=main_col, height=10)
        add_btn_col = pm.columnLayout(parent=cmd_col,
                                      columnOffset=("left", 100))
        pm.button("add",
                  parent=add_btn_col,
                  width=100,
                  command=lambda x: self.add_ctr(cmd=txt.getText(),
                                                 nm=nm_txt.getText()))

        list_col = pm.columnLayout(parent=main_split_col)
        pm.text("\t\tExisting Shapes", parent=list_col)
        self.shp_lst_bx = pm.textScrollList(parent=list_col,
                                            height=165,
                                            width=170)

        edit_btn_col = pm.rowColumnLayout(numberOfColumns=3, parent=list_col)
        pm.button("Delete",
                  parent=edit_btn_col,
                  width=82,
                  command=lambda x: self.delete_selection())
        pm.separator(parent=edit_btn_col, horizontal=False)
        pm.button("rename",
                  parent=edit_btn_col,
                  width=82,
                  command=lambda x: self.rename_ui())

        pm.showWindow(WINDOW)
        pm.window(WINDOW, edit=True, widthHeight=(500, 220))
        return None
    def __init__(self, parentRef):
        self.parentRef = parentRef
        self.buttons = []
        self.window = pm.window(sizeable=False, title="Retoper", titleBar=True)
        with self.window:
            self.layout = pm.columnLayout()
            with self.layout:
                self.lab1 = pm.Text(label='A "Retop" Tool For Creating New Topology.', align="left", parent=self.layout)
                self.lab2 = pm.Text(
                    label="Please Note: This tool does not preserve", width=300, align="left", parent=self.layout
                )
                self.lab3 = pm.Text(
                    label="construction history of edited objects.", width=300, align="left", parent=self.layout
                )

                btn__setReference = pm.Button(
                    label="Set Reference Mesh",
                    parent=self.layout,
                    command=lambda xc: self.parentRef.setReference(),
                    width=300,
                )
                self.buttons.append(btn__setReference)

                btn__makeReferenceLive = pm.Button(
                    label="Make Reference Live",
                    parent=self.layout,
                    command=lambda xc: self.parentRef.makeReferenceLive(),
                    width=300,
                )
                self.buttons.append(btn__makeReferenceLive)

                btn__makeReferenceNotLive = pm.Button(
                    label="Make Reference Not Live",
                    parent=self.layout,
                    command=lambda xc: self.parentRef.makeReferenceNotLive(),
                    width=300,
                )
                self.buttons.append(btn__makeReferenceNotLive)

                btn__projectSelection = pm.Button(
                    label="Project Selection To Surface",
                    parent=self.layout,
                    command=lambda xc: self.parentRef.projectSelection(),
                    width=300,
                )
                self.buttons.append(btn__projectSelection)

        # Show Window
        pm.showWindow(self.window)
        self.window.setWidth(600)
        self.window.setHeight(400)
Esempio n. 12
0
    def test_ui(self):
        test_win = "log"
        if pm.window(test_win, query=True, exists=True):
            pm.deleteUI(test_win)
        pm.window(test_win, title="Rearrange Deformers", iconName="ReArDf")
        log_col = pm.columnLayout(parent=test_win, adjustableColumn=True)
        self.log_txt = pm.scrollField('log_list',
                                      parent=log_col,
                                      height=235,
                                      width=150,
                                      wordWrap=True)

        #self.reord_lst.append(self.file_ord_list)
        pm.showWindow(test_win)
        pm.window(test_win, edit=True, widthHeight=(300, 260))
        return None
Esempio n. 13
0
    def create_atr_ui(self):
        self.ATTR_WINDOW = "Create_Attr"
        if pm.window(self.ATTR_WINDOW, query=True, exists=True):
            pm.deleteUI(self.ATTR_WINDOW)
        pm.window(self.ATTR_WINDOW,
                  title="create attribute",
                  iconName="CA",
                  widthHeight=(250, 200))
        attr_main_col = pm.columnLayout(adjustableColumn=True,
                                        parent=self.ATTR_WINDOW)

        attr_nm_col = pm.rowColumnLayout(parent=attr_main_col,
                                         numberOfColumns=2)

        pm.text(label="Enum Attribute Name  :  ", parent=attr_nm_col)

        self.attr_nm = pm.textField("", parent=attr_nm_col, width=120)

        pm.separator(parent=attr_main_col, style="in")

        attr_val_col = pm.rowColumnLayout(parent=attr_main_col,
                                          numberOfColumns=2,
                                          columnOffset=(1, "right", 5))

        attr_val_ch_col = pm.rowColumnLayout(parent=attr_val_col,
                                             numberOfRows=2)

        attr_val_btn_ch_col = pm.rowColumnLayout(parent=attr_val_col,
                                                 numberOfRows=2)

        pm.text(label="Enum Attribute values", parent=attr_val_ch_col)

        self.enum_val = pm.scrollField(parent=attr_val_ch_col,
                                       width=130,
                                       height=150)

        pm.text(label=" ", parent=attr_val_btn_ch_col)

        pm.button(label="Create Attr\non selected\ncontrol",
                  parent=attr_val_btn_ch_col,
                  height=150,
                  width=100,
                  command=lambda x: self.create_attr())
        pm.showWindow(self.ATTR_WINDOW)
        pm.window(self.ATTR_WINDOW, edit=True, widthHeight=(250, 200))

        return None
Esempio n. 14
0
def object_creator_ui():
    """This method creates user interface to input object details

        User Inputs:
            - Object name
            - Object ID

    Returns : None
    """
    WINDOW = 'ObjectCreator'
    if pm.window(WINDOW, query=True, exists=True):
        pm.deleteUI(WINDOW)
    pm.window(WINDOW,
              title="Object creator",
              iconName='OC',
              widthHeight=(200, 250))
    column_1 = pm.columnLayout(adjustableColumn=True)

    pm.Text(label="Enter Object Name", parent=column_1)
    object_name = pm.TextField(text='Object', parent=column_1)

    pm.separator(height=20, style='in', parent=column_1)
    pm.Text(label="Enter ID to start with", parent=column_1)
    object_id = pm.TextField(text='01', parent=column_1)

    pm.separator(height=20, style='in', parent=column_1)
    pm.button(label='Create Joint',
              command=lambda x: create_joint(object_name.getText(),
                                             object_id.getText()),
              parent=column_1)

    pm.separator(height=20, style='in', parent=column_1)
    pm.button(label='Create Locator',
              command=lambda x: create_locator(object_name.getText(),
                                               object_id.getText()),
              parent=column_1)

    pm.separator(height=20, style='in', parent=column_1)
    pm.button(label='Create Group',
              command=lambda x: create_group(object_name.getText(),
                                             object_id.getText()),
              parent=column_1)

    pm.showWindow(WINDOW)
    pm.window(WINDOW, edit=True, widthHeight=(200, 250))
    return None
Esempio n. 15
0
    def lyr_swtch_ui(self):

        self.MAIN_WINDOW = "Layered_texture_switch"
        if pm.window(self.MAIN_WINDOW, query=True, exists=True):
            pm.deleteUI(self.MAIN_WINDOW)
        pm.window(self.MAIN_WINDOW,
                  title="Layered Tex Switch",
                  iconName="LTS",
                  widthHeight=(150, 200))
        main_col = pm.columnLayout(adjustableColumn=True,
                                   height=100,
                                   parent=self.MAIN_WINDOW)

        but_col = pm.rowColumnLayout(parent=main_col, numberOfColumns=2)

        self.create_attr_btn = pm.button(
            label="Create ENUM Attribute",
            parent=main_col,
            command=lambda x: self.create_atr_ui())

        pm.separator(parent=main_col, style="in", height=10)

        pm.text(label="Enum Attribuite list", parent=main_col)
        pm.separator(parent=main_col, style="none", height=5)

        self.text_lst = pm.textScrollList(allowMultiSelection=False,
                                          parent=main_col,
                                          height=150)

        pm.separator(parent=main_col, style="none", height=5)

        but_col = pm.rowColumnLayout(parent=main_col, numberOfColumns=3)

        pm.button(label="Refresh List",
                  parent=but_col,
                  command=lambda x: self.populate_list())
        pm.separator(parent=but_col, horizontal=False)
        pm.button(label="Create Switch",
                  parent=but_col,
                  command=lambda x: self.create_switching())

        pm.showWindow(self.MAIN_WINDOW)
        pm.window(self.MAIN_WINDOW, edit=True, widthHeight=(150, 235))

        return None
 def __init__(self, parentRef, selection=False, multiplier=1.0):
   self.parentRef = parentRef
   self.buttons = []
   self.window = pm.window( sizeable = False, title = "Light Multiplier", titleBar=True)
   with self.window:
       self.layout = pm.columnLayout()
       with self.layout:  ## Using Ui on the end of Widget names
           self.multiplierText = pm.text( label='Multiplier:', align='left' )
           self.multiplierUi = pm.floatField( value=1.0 )
           self.checkBoxUi = pm.checkBox( label='Affect Selected Lights Only')
           self.okUi = pm.button ( label = 'Apply',parent = self.layout,
                       command = lambda xc: self.parentRef.applyMultiplier( multiplier=self.multiplierUi.getValue(),
                                   selection=self.checkBoxUi.getValue(),
                               ),
                       width = 300  )
   pm.showWindow(self.window)
   self.window.setWidth(600)
   self.window.setHeight(400)
    def reorder_edit_ui(self):
        reorder_win = "Reorder_Deformer_List"
        if pm.window(reorder_win, query=True, exists=True):
            pm.deleteUI(reorder_win)
        pm.window(reorder_win, title="Rearrange Deformers", iconName="ReArDf")
        main_col = pm.columnLayout(parent=reorder_win, adjustableColumn=True)
        self.reord_lst = pm.scrollField('reorder_deformer_list',
                                        parent=main_col,
                                        height=235,
                                        width=150,
                                        text=self.populate_order_edit_list())

        pm.button("Save order list",
                  parent=main_col,
                  command=lambda x: self.save_deformer_list())

        pm.showWindow(reorder_win)
        pm.window(reorder_win, edit=True, widthHeight=(150, 260))
        return None
Esempio n. 18
0
    def hs_tube(self, edgering=True):
        """
        used for correcting normals on the ends of a hard surface pipe.
        if edgering = True, than only one edge need be selected and it will select
        the ring automatically.
        """
        if edgering:
            mm.eval('SelectEdgeRingSp;')

        oSel = pm.ls(sl=True, flatten=True)

        for obj in oSel:

            # determine weather or not the selection is a face
            if str(obj.split('.')[-1][0]) == 'f':
                # if it is, convert it to edges
                mm.eval('ConvertSelectionToContainedEdges;')
                break

        eSel = pm.ls(sl=True, flatten=True)

        # another good ol' progress bar
        progWind = pm.window(title='progress')
        pm.columnLayout()

        progressControl = pm.progressBar(maxValue=len(eSel), width=300)

        pm.showWindow(progWind)

        # for the selected edges run the hs_verts function
        for edges in eSel:
            pm.select(edges)
            mm.eval('ConvertSelectionToFaces;')
            angled_faces = pm.ls(sl=True, flatten=True)
            self.hs_verts(angled_faces[0], angled_faces[1])

            ee = eSel.index(edges)
            pm.progressBar(progressControl, edit=True, progress=ee)

        pm.deleteUI(progWind)

        pm.selectType(edge=True)
    def main_rearrange_ui(self):
        WIN = "rearrange_nodes"
        if pm.window(WIN, query=True, exists=True):
            pm.deleteUI(WIN)
        pm.window(WIN, title="Rearrange Nodes", iconName="ReArNd")
        main_col = pm.columnLayout(parent=WIN, adjustableColumn=True)
        list_ord_col = pm.rowColumnLayout(parent=main_col, numberOfColumns=3)
        ord_col_ch = pm.columnLayout(parent=list_ord_col,
                                     adjustableColumn=True)
        pm.separator(parent=list_ord_col, horizontal=False, width=10)
        list_col_ch = pm.columnLayout(parent=list_ord_col,
                                      adjustableColumn=True)

        self.ord_lst = pm.textScrollList('deformers_reorder',
                                         numberOfRows=10,
                                         parent=ord_col_ch,
                                         height=235,
                                         width=150,
                                         allowMultiSelection=False,
                                         enable=False)

        pm.separator(style="none", height=20, parent=list_col_ch)
        self.nd_typ_txt = pm.textField(parent=list_col_ch, width=150)
        pm.separator(style="none", height=10, parent=list_col_ch)
        pm.button(label="Get Selected Node Type",
                  parent=list_col_ch,
                  command=lambda x: self.show_type())
        pm.separator(style="in", height=50, parent=list_col_ch)
        pm.button(label="Rearrange",
                  height=130,
                  parent=list_col_ch,
                  backgroundColor=(0.561, 0.737, 0.561),
                  command=lambda x: self.reorder_deformer_nodes())
        pm.button(label="Edit Order List",
                  parent=ord_col_ch,
                  command=lambda x: self.reorder_edit_ui())
        pm.showWindow(WIN)
        pm.window(WIN, edit=True, widthHeight=(320, 260))
        return None
Esempio n. 20
0
    def uv_ratio_UI(self):
        UV_RATIO_WINDOW = "UVratio"
        if pm.window(UV_RATIO_WINDOW, query=True, exists=True):
            pm.deleteUI(UV_RATIO_WINDOW)

        pm.window(UV_RATIO_WINDOW, title="uv ratio", iconName="UVR")

        main_col = pm.columnLayout(adjustableColumn=True)
        self.ref_shell_btn = pm.button("set reference shell",
                                       height=40,
                                       parent=main_col,
                                       backgroundColor=(.863, 0.078, 0.235),
                                       command=lambda x: self.set_ref_shell())
        pm.separator(parent=main_col, style="in", height=5)
        self.sel_shell_btn = pm.button("select assigned reference shell",
                                       parent=main_col,
                                       enable=False,
                                       command=lambda x: self.sel_ref_shell())
        pm.separator(parent=main_col, style="in", height=10)
        self.assign_btn = pm.button("apply uv ratio on\n selected Shells",
                                    height=40,
                                    parent=main_col,
                                    enable=False,
                                    command=lambda x: self.rescale_uv())
        #self.assign_btn.setEnable(False)
        pm.separator(parent=main_col, height=5, style="in")
        ch_bx_col = pm.rowColumnLayout(numberOfColumns=2,
                                       parent=main_col,
                                       columnOffset=(1, "left", 40))
        pm.text("", parent=ch_bx_col)
        self.ch_bx = pm.checkBox(label="Object Selection",
                                 parent=ch_bx_col,
                                 enable=False)
        pm.text("Check above option to select mesh\ninstead of shell",
                parent=main_col)

        pm.showWindow(UV_RATIO_WINDOW)
        pm.window(UV_RATIO_WINDOW, edit=True, widthHeight=(200, 170))
        return None
    def ui(self):
        WINDOW = "jointSequence"
        if pm.window(WINDOW, query=True, exists=True):
            pm.deleteUI(WINDOW)
        pm.window(WINDOW, title="Continue Joints along loops", iconName="JNTS")
        main_col = pm.columnLayout(adjustableColumn=True)
        guide_col = pm.columnLayout(parent=main_col)
        info_txt = "INFO:"+\
                   "\nFrom selected edges as starting point and"+\
                   "\ndirection guide, every next edge loop is"+\
                   "\nobtained till it reaches the end or the"+\
                   "\nstaring selection edge or the selected end point"
        guide_txt = "GUIDE:\nSelect 2 edges, each from adjacent loops"+\
                    "\nfirst edge is the starting point"+\
                    "\nsecond edge to guide the direction"+\
                    "\nif third edge is selected, acts as end point"
        pm.text(guide_txt, align="left", parent=guide_col)
        pm.separator(parent=guide_col, height=5, style="in")
        pm.text(info_txt, align="left", parent=guide_col)
        pm.separator(parent=main_col, height=10)
        text_col = pm.rowColumnLayout(parent=main_col,
                                      numberOfColumns=2,
                                      columnOffset=(2, "left", 25))
        pm.text("number of loops to\nskip inbetween", parent=text_col)
        self.skip_val = pm.textField(text="0", parent=text_col, width=50)
        check_col = pm.rowColumnLayout(numberOfColumns=2,
                                       parent=main_col,
                                       columnOffset=(2, "left", 120))
        pm.text("", parent=check_col)
        self.skn_chk = pm.checkBox("skin", parent=check_col)
        pm.separator(parent=main_col, style="none", height=5)
        pm.button("create", parent=main_col, command=lambda x: self.run())

        pm.showWindow(WINDOW)
        pm.window(WINDOW, edit=True, widthHeight=(220, 230))
        return None
Esempio n. 22
0
    def __init__(self, parentRef=None):
        self.parentRef = parentRef
        self.buttons = []
        self.layoutsR = []
        self.window = pm.window(sizeable=False,
                                title="Vertex Aligner",
                                titleBar=True,
                                resizeToFitChildren=True)
        with self.window:
            self.layoutC = pm.columnLayout()
            with self.layoutC:
                row = pm.rowLayout(numberOfColumns=3)
                self.layoutsR.append(row)
                with row:
                    btn_xMax = pm.button(
                        label=' To X Maximum',
                        command=lambda xc: self.Align_Vertices("x", "max"),
                        width=100)
                    btn_xMid = pm.button(
                        label=' To X Middle',
                        command=lambda xc: self.Align_Vertices("x", "mid"),
                        width=100)
                    btn_xMin = pm.button(
                        label=' To X Minimum',
                        command=lambda xc: self.Align_Vertices("x", "min"),
                        width=100)
                    self.buttons.append(btn_xMax)
                    self.buttons.append(btn_xMid)
                    self.buttons.append(btn_xMin)

                row = pm.rowLayout(numberOfColumns=3)
                self.layoutsR.append(row)
                with row:
                    btn_yMax = pm.button(
                        label=' To Y Maximum',
                        command=lambda xc: self.Align_Vertices("y", "max"),
                        width=100)
                    btn_yMid = pm.button(
                        label=' To Y Middle',
                        command=lambda xc: self.Align_Vertices("y", "mid"),
                        width=100)
                    btn_yMin = pm.button(
                        label=' To Y Minimum',
                        command=lambda xc: self.Align_Vertices("y", "min"),
                        width=100)
                    self.buttons.append(btn_yMax)
                    self.buttons.append(btn_yMid)
                    self.buttons.append(btn_yMin)

                row = pm.rowLayout(numberOfColumns=3)
                self.layoutsR.append(row)
                with row:
                    btn_zMax = pm.button(
                        label=' To Z Maximum',
                        command=lambda xc: self.Align_Vertices("z", "max"),
                        width=100)
                    btn_zMid = pm.button(
                        label=' To Z Middle',
                        command=lambda xc: self.Align_Vertices("z", "mid"),
                        width=100)
                    btn_zMin = pm.button(
                        label=' To Z Minimum',
                        command=lambda xc: self.Align_Vertices("z", "min"),
                        width=100)
                    self.buttons.append(btn_zMax)
                    self.buttons.append(btn_zMid)
                    self.buttons.append(btn_zMin)

        # Show Window
        pm.showWindow(self.window)
        self.window.setWidth(300)
        self.window.setHeight(300)
Esempio n. 23
0
    def main_ui(self):
        WIN = "nodes_rename"
        if pm.window(WIN, query=True, exists=True):
            pm.deleteUI(WIN)
        pm.window(WIN, title="Rename Nodes", iconName="RNMND")
        main_col = pm.columnLayout(parent=WIN, adjustableColumn=True)
        row_col = pm.rowColumnLayout(parent=main_col, numberOfColumns=2)

        type_list_col = pm.columnLayout(parent=row_col)
        pm.text(label="Node Type List", parent=type_list_col)
        pm.separator(height=5, style="none")
        rename_col = pm.columnLayout(parent=row_col, adjustableColumn=True)
        self.node_lst = pm.textScrollList('Node_Type_List',
                                          numberOfRows=10,
                                          parent=type_list_col,
                                          height=235,
                                          width=150,
                                          allowMultiSelection=False)

        pm.separator(parent=rename_col, height=20, style="none")
        pm.text(label="Gets name from selected mesh", parent=rename_col)
        pm.separator(parent=rename_col, height=5, style="none")
        name_from_col = pm.rowColumnLayout(parent=rename_col,
                                           numberOfColumns=2,
                                           columnOffset=(2, "left", 11))
        pm.text(label="Replace Text", parent=name_from_col)
        self.replace_txt = pm.textField(parent=name_from_col, text="_MSH")

        name_to_col = pm.rowColumnLayout(parent=rename_col,
                                         numberOfColumns=2,
                                         columnOffset=(2, "left", 5))
        pm.text(label="Replace With", parent=name_to_col)
        self.replace_to_txt = pm.textField(parent=name_to_col)

        pm.button(label="Rename (Replace)",
                  parent=rename_col,
                  command=lambda x: self.rename_call(mode="replace"))

        pm.separator(parent=rename_col, height=20)

        pm.text(label="Rename nodes irrespective\n of mesh name",
                parent=rename_col)
        pm.separator(parent=rename_col, height=5, style="none")
        new_name_col = pm.rowColumnLayout(parent=rename_col,
                                          numberOfColumns=2,
                                          columnOffset=(2, "left", 5))
        pm.text(label="Rename", parent=new_name_col)
        self.rename_txt = pm.textField(parent=new_name_col)

        pm.button(label="Rename (New)",
                  parent=rename_col,
                  command=lambda x: self.rename_call(mode="rename"))

        pm.separator(parent=rename_col, height=20)

        pm.button(label="Refresh node List",
                  parent=rename_col,
                  command=lambda x: self.refresh_node_list())

        pm.separator(parent=rename_col, height=20)

        pm.showWindow(WIN)
        pm.window(WIN, edit=True, widthHeight=(330, 260))
        return None
Esempio n. 24
0
    def showUI(self):
        """
        this is teh function that creates the ui:
        in the future it will likely change to a Qt GUI
        """
        testWindow = 'HS_Normal_Tool'

        if pm.window(testWindow, exists=True):
            pm.deleteUI(testWindow)

        pm.window(testWindow, sizeable=False)

        pm.rowColumnLayout('normal_Column',
                           numberOfColumns=1,
                           columnWidth=(1, 300),
                           columnAttach=(1, 'left', 5))

        pm.rowLayout('flatRow', parent='normal_Column', numberOfColumns=2)

        pm.button(label='Flat Surface',
                  parent='flatRow',
                  width=100,
                  command=self.btn_connected_flat)

        self.objCheck = pm.checkBox(label='Object Selection',
                                    parent='flatRow',
                                    value=True)

        self.float1 = pm.floatSliderGrp(label='min_tolerance',
                                        parent='normal_Column',
                                        columnAlign=(1, 'left'),
                                        columnWidth=(1, 80),
                                        field=True)
        self.float2 = pm.floatSliderGrp(label='max_tolerance',
                                        parent='normal_Column',
                                        columnAlign=(1, 'left'),
                                        columnWidth=(1, 80),
                                        field=True)

        pm.separator(parent='normal_Column', height=20)

        pm.rowLayout('curveRow', parent='normal_Column', numberOfColumns=2)

        pm.button(label='Curved Surface',
                  parent='curveRow',
                  width=100,
                  command=self.btn_hs_tube)

        self.tubeCheck = pm.checkBox(label='Edge Ring',
                                     parent='curveRow',
                                     value=True)

        pm.separator(parent='normal_Column', height=20)

        pm.button(label='Unlock Selected vtx Normals',
                  parent='normal_Column',
                  command=self.unlockVtxN)

        pm.separator(parent='normal_Column', height=20)

        pm.checkBox(label='Toggle vtx Normals',
                    parent='normal_Column',
                    onCommand=self.btn_show_vtx_normals,
                    offCommand=self.btn_hide_vts_normals)

        self.float3 = pm.floatSliderGrp(
            label='vtx Length',
            parent='normal_Column',
            columnWidth=(1, 55),
            field=True,
            dragCommand=self.vtx_normal_length,
        )

        pm.floatSliderGrp(
            self.float3,
            label='vtx Length',
            edit=True,
            columnWidth=(2, 42),
        )

        pm.separator(parent='normal_Column', height=20)

        pm.rowLayout('blinnRow',
                     parent='normal_Column',
                     numberOfColumns=2,
                     columnWidth=(2, 200))

        pm.button(label='Create Blinn',
                  parent='blinnRow',
                  width=100,
                  command=self.btn_create_blinn)

        self.blinnCol = pm.colorSliderGrp(label='',
                                          parent='blinnRow',
                                          width=190,
                                          columnWidth=(1, 1),
                                          dragCommand=self.edit_blinn)

        pm.showWindow(testWindow)

        pm.window(testWindow, edit=True, widthHeight=(300, 265))
Esempio n. 25
0
    def __init__(self, parentRef, parentWidget=None):
        self.parentRef = parentRef
        self.buttons = []
        self.widgets = {}

        if parentWidget == None:
            parentWidget = self.widgets["parentWidget"] = pm.Window(sizeable=True, title="Retoper", titleBar=True)
        else:
            self.widgets["parentWidget"] = parentWidget

        with parentWidget:
            self.layout = pm.columnLayout()
            with self.layout:
                labelStr = 'A "Retop" Tool For Creating New Topology.'
                labelStr += "\n"
                labelStr += "Please Note: This tool does not preserve"
                labelStr += "\n"
                labelStr += "construction history of edited objects."
                self.lab1 = pm.Text(label=labelStr, align="left", parent=self.layout)
                ##self.lab2 = pm.Text( label='Please Note: This tool does not preserve', width=300, align='left',parent = self.layout )
                ##self.lab3 = pm.Text( label='construction history of edited objects.', width=300, align='left',parent = self.layout )

                btn__setReference = pm.Button(
                    label="Set Reference Mesh", parent=self.layout, command=lambda xc: self.parentRef.setReference()
                )
                self.buttons.append(btn__setReference)

                btn__selectReference = pm.Button(
                    label="Select Reference", parent=self.layout, command=lambda xc: self.parentRef.selectReference()
                )
                self.buttons.append(btn__selectReference)

                btn__makeReferenceLive = pm.Button(
                    label="Make Reference Live",
                    parent=self.layout,
                    command=lambda xc: self.parentRef.makeReferenceLive(),
                )
                self.buttons.append(btn__makeReferenceLive)

                btn__makeReferenceNotLive = pm.Button(
                    label="Make Reference Not Live",
                    parent=self.layout,
                    command=lambda xc: self.parentRef.makeReferenceNotLive(),
                )
                self.buttons.append(btn__makeReferenceNotLive)

                btn__makeReferenceHidden = pm.Button(
                    label="Make Reference Hidden",
                    parent=self.layout,
                    command=lambda xc: self.parentRef.makeReferenceHidden(),
                )
                self.buttons.append(btn__makeReferenceHidden)

                btn__makeReferenceVisible = pm.Button(
                    label="Make Reference Visible",
                    parent=self.layout,
                    command=lambda xc: self.parentRef.makeReferenceVisible(),
                )
                self.buttons.append(btn__makeReferenceVisible)

                btn__projectSelection = pm.Button(
                    label="Project Selection To Surface",
                    parent=self.layout,
                    command=lambda xc: self.parentRef.projectSelection(),
                )
                self.buttons.append(btn__projectSelection)

                ## put a button here for auto new material and transparency animation
                ## put a button here for auto ref layer
                ## put a button here for quad draw (a shortcut)
                ## put a button here to project along particular axis (essentially just scale first)

        # Show Window
        if type(parentWidget) == pm.core.windows.window:
            win = parentWidget
            pm.showWindow(win)
            win.setWidth(200)
            win.setHeight(300)
Esempio n. 26
0
def constraints_ui():
    WINDOW = 'Constraints'
    if pm.window(WINDOW, query=True, exists=True):
        pm.deleteUI(WINDOW)
    pm.window(WINDOW,
              title="Constraints",
              iconName='CON',
              widthHeight=(200, 275))
    column_1 = pm.columnLayout(adjustableColumn=True)
    pm.separator(height=2, style='in', parent=column_1)
    mulChLbl = pm.Text(label="Multiple Children", parent=column_1)
    pm.separator(height=5, style='none', parent=column_1)
    rowCol1 = pm.rowColumnLayout(numberOfRows=3, parent=column_1)
    txt_row_col_1 = pm.rowColumnLayout(numberOfColumns=2,
                                       columnWidth=(1, 150),
                                       parent=rowCol1,
                                       columnSpacing=(1, 15))
    mulCtrlNm = pm.TextField(parent=txt_row_col_1)
    mulCtrlBtn = pm.button(
        label='<<',
        parent=txt_row_col_1,
        command=lambda x: mulCtrlNm.setText(str(pm.ls(selection=True)[0])))
    row_col_1 = pm.rowColumnLayout(numberOfColumns=2,
                                   columnWidth=(1, 100),
                                   parent=rowCol1,
                                   columnAlign=(2, 'center'),
                                   columnSpacing=(1, 25))
    prChk = pm.checkBox("Parent", parent=row_col_1)
    scChk = pm.checkBox("Scale", parent=row_col_1)
    conBtn = pm.button(label="Constraint",
                       parent=column_1,
                       command=lambda x: mul_con_call(mulCtrlNm, prChk, scChk))

    pm.separator(height=20, style='in', parent=column_1)
    setLbl = pm.Text(label="Selection Set", parent=column_1)
    pm.separator(height=5, style='none', parent=column_1)
    rowCol2 = pm.rowColumnLayout(numberOfRows=2, parent=column_1)

    row_col_2 = pm.rowColumnLayout(numberOfColumns=2,
                                   columnWidth=(1, 100),
                                   parent=rowCol2,
                                   columnAlign=(2, 'center'),
                                   columnSpacing=(1, 25))
    prSetChk = pm.checkBox("Parent", parent=row_col_2)
    scSetChk = pm.checkBox("Scale", parent=row_col_2)
    conSetBtn = pm.button(label="Constraint",
                          parent=column_1,
                          command=lambda x: set_con_call(prSetChk, scSetChk))

    pm.separator(height=20, style='in', parent=column_1)
    delConLbl = pm.Text(label="Delete Constraints", parent=column_1)
    pm.separator(height=5, style='none', parent=column_1)
    rowCol3 = pm.rowColumnLayout(numberOfRows=3, parent=column_1)
    row_col_3_1 = pm.rowColumnLayout(numberOfColumns=2,
                                     columnWidth=(1, 100),
                                     parent=rowCol3,
                                     columnAlign=(2, 'center'),
                                     columnSpacing=(1, 25))
    row_col_3_2 = pm.rowColumnLayout(numberOfColumns=2,
                                     columnWidth=(1, 100),
                                     parent=rowCol3,
                                     columnAlign=(2, 'center'),
                                     columnSpacing=(1, 25))
    prDelChk = pm.checkBox("Parent", parent=row_col_3_1)
    scDelChk = pm.checkBox("Scale", parent=row_col_3_1)
    ptDelChk = pm.checkBox("Point", parent=row_col_3_2)
    orDelChk = pm.checkBox("Orient", parent=row_col_3_2)
    conDelBtn = pm.button(
        label="Delete",
        parent=column_1,
        command=lambda x: del_cons(prDelChk, scDelChk, ptDelChk, orDelChk))

    pm.showWindow(WINDOW)
    pm.window(WINDOW, edit=True, widthHeight=(200, 275))
    return None
Esempio n. 27
0
windowTutorial = pma.window(windowNameTut, title=windowNameTut, width=400, height=300, backgroundColor=[0.2, 0.2, 0.2])
pma.columnLayout("testColumn", adjustableColumn=True)
pma.text("intro",
         label="This tool is a super tool to make booleans wrote by Leonardo Iezzi. To make it works correctly, you need to have your base mesh already even if just a cube. With your base mesh selected just press one of the three buttons on the windows to subtract or add those primitives. If you want to use a custom mesh for the operation: select your base mesh then the custom one (it's important to pick your base mesh first) and then press the 'Use custom mesh' button. After you have done, select your base mesh and press 'Clean Up.'",
         wordWrap=True, height=100, backgroundColor=[0.2, 0.2, 0.2], align='left', parent="testColumn")

# pma.text("first", label = "1- Select always your main mesh first",wordWrap= True, height = 40, backgroundColor = [0.2, 0.2, 0.2], align='left', parent = "testColumn")
# pma.text("secondo", label = "2- In case you want to use a custom mesh: Select first your main mesh then the mesh you want to add or subtract",wordWrap= True, height = 40, backgroundColor = [0.2, 0.2, 0.2], align='left', parent = "testColumn")
# pma.text("third", label = "3- Everythong should works",wordWrap= True, height = 40, backgroundColor = [0.2, 0.2, 0.2], align='left', parent = "testColumn")


pma.separator(parent="testColumn", height=20)
pma.button("goit", label="Got it", width=120, height=40, backgroundColor=[0.5, 0.5, 0.5], parent="testColumn",
           command="pma.deleteUI(windowNameTut)")

pma.showWindow()

################################################################################################UI#################################################
# pma.deleteUI(windowNameTut)
windowName = "SuperBool"
windowSize = (120, 200)
if (pma.window(windowName, exists=True)):
    pma.deleteUI(windowName)
window = pma.window(windowName, title=windowName, width=120, height=200)
pma.columnLayout("mainColumn", adjustableColumn=True)

################################################################################################UI#################################################
pma.gridLayout("nameGridLayout01", numberOfRowsColumns=(1, 4), cellWidthHeight=(40, 40), parent="mainColumn")
pma.symbolButton("nameButton1", image="polyCube.png", width=40, height=40, backgroundColor=[0.2, 0.2, 0.2],
                 parent="nameGridLayout01", command="creator(PRIMITIVE_CUBE)")
pma.symbolButton("nameButton2", image="polyCylinder.png", width=40, height=40, backgroundColor=[0.2, 0.2, 0.2],
Esempio n. 28
0
    def __init__(self, parentRef, parentWidget=None):
        self.parentRef = parentRef
        self.buttons = []
        self.widgets = {}

        if parentWidget == None:
            parentWidget = self.widgets['parentWidget'] = pm.Window(
                sizeable=True, title="Retoper", titleBar=True)
        else:
            self.widgets['parentWidget'] = parentWidget

        with parentWidget:
            self.layout = pm.columnLayout()
            with self.layout:
                labelStr = 'A "Retop" Tool For Creating New Topology.'
                labelStr += '\n'
                labelStr += 'Please Note: This tool does not preserve'
                labelStr += '\n'
                labelStr += 'construction history of edited objects.'
                self.lab1 = pm.Text(label=labelStr,
                                    align='left',
                                    parent=self.layout)
                ##self.lab2 = pm.Text( label='Please Note: This tool does not preserve', width=300, align='left',parent = self.layout )
                ##self.lab3 = pm.Text( label='construction history of edited objects.', width=300, align='left',parent = self.layout )

                btn__setReference = pm.Button(
                    label='Set Reference Mesh',
                    parent=self.layout,
                    command=lambda xc: self.parentRef.setReference())
                self.buttons.append(btn__setReference)

                btn__selectReference = pm.Button(
                    label='Select Reference',
                    parent=self.layout,
                    command=lambda xc: self.parentRef.selectReference())
                self.buttons.append(btn__selectReference)

                btn__makeReferenceLive = pm.Button(
                    label='Make Reference Live',
                    parent=self.layout,
                    command=lambda xc: self.parentRef.makeReferenceLive())
                self.buttons.append(btn__makeReferenceLive)

                btn__makeReferenceNotLive = pm.Button(
                    label='Make Reference Not Live',
                    parent=self.layout,
                    command=lambda xc: self.parentRef.makeReferenceNotLive())
                self.buttons.append(btn__makeReferenceNotLive)

                btn__makeReferenceHidden = pm.Button(
                    label='Make Reference Hidden',
                    parent=self.layout,
                    command=lambda xc: self.parentRef.makeReferenceHidden())
                self.buttons.append(btn__makeReferenceHidden)

                btn__makeReferenceVisible = pm.Button(
                    label='Make Reference Visible',
                    parent=self.layout,
                    command=lambda xc: self.parentRef.makeReferenceVisible())
                self.buttons.append(btn__makeReferenceVisible)

                btn__projectSelection = pm.Button(
                    label='Project Selection To Surface',
                    parent=self.layout,
                    command=lambda xc: self.parentRef.projectSelection())
                self.buttons.append(btn__projectSelection)

                ## put a button here for auto new material and transparency animation
                ## put a button here for auto ref layer
                ## put a button here for quad draw (a shortcut)
                ## put a button here to project along particular axis (essentially just scale first)

        # Show Window
        if type(parentWidget) == pm.core.windows.window:
            win = parentWidget
            pm.showWindow(win)
            win.setWidth(200)
            win.setHeight(300)
Esempio n. 29
0
    def create_control_ui(self):
        btns = self.read_shapes()
        WINDOW = "create_control"
        chk_win = pm.window(WINDOW, query=True, exists=True)
        if chk_win:
            pm.deleteUI(WINDOW)
        pm.window(WINDOW, title="Create_Control", iconName="CC")

        main_split_col = pm.rowColumnLayout(parent=WINDOW, numberOfColumns=3)

        left_main_col = pm.columnLayout(parent=main_split_col,
                                        adjustableColumn=True)
        hlp_btn_col = pm.columnLayout(parent=left_main_col,
                                      columnOffset=("left", 110))
        pm.button("?",
                  parent=hlp_btn_col,
                  width=50,
                  command=lambda x: self.open_help())

        pm.separator(parent=left_main_col, style="in", height=10)
        con_obj_col = pm.columnLayout(parent=left_main_col,
                                      columnOffset=("left", 70))
        self.connect_chk_bx = pm.checkBox("Skinning/Constraint",
                                          parent=con_obj_col,
                                          value=True)
        pm.separator(parent=left_main_col, style="none")
        ctrl_typ_col = pm.rowColumnLayout(parent=left_main_col,
                                          numberOfColumns=3,
                                          columnOffset=(1, "left", 20),
                                          columnSpacing=(2, 10))
        pm.text("Control type", parent=ctrl_typ_col)
        rad_col = pm.columnLayout(parent=ctrl_typ_col)
        self.ctr_typ_rad_collection = pm.radioCollection(parent=rad_col)
        self.skin_rad_btn = pm.radioButton(
            label='Skin',
            parent=rad_col,
            select=True,
            onCommand=lambda x: self.set_ui_edit_mode(flag="Skin"))
        self.con_rad_btn = pm.radioButton(
            label='Constraint',
            parent=rad_col,
            onCommand=lambda x: self.set_ui_edit_mode(flag="Constraint"))
        con_typ_col = pm.columnLayout(parent=ctrl_typ_col)
        self.pr_chk_bx = pm.checkBox("Parent",
                                     parent=con_typ_col,
                                     value=True,
                                     editable=False)
        self.sc_chk_bx = pm.checkBox("Scale",
                                     parent=con_typ_col,
                                     editable=False)
        jnt_opn_col = pm.columnLayout(parent=left_main_col,
                                      columnOffset=("left", 100))
        self.jnt_cr_chk_bx = pm.checkBox(
            label="Create Joint",
            value=True,
            parent=jnt_opn_col,
            offCommand=lambda x: self.set_ui_edit_mode(flag="no_joint"))

        pm.separator(parent=left_main_col, height=10, style="in")
        pm.text("Control name", parent=left_main_col)
        re_name_col = pm.gridLayout(parent=left_main_col,
                                    numberOfRowsColumns=(2, 2),
                                    cellWidthHeight=(138, 20),
                                    allowEmptyCells=False)
        self.msh_nm_lbl = pm.text("Text from Mesh Name", parent=re_name_col)
        self.ctrl_nm_lbl = pm.text("Rename to Control", parent=re_name_col)
        self.msh_nm = pm.textField(text="_MSH", parent=re_name_col)
        self.ctrl_nm = pm.textField(text="_CTRL", parent=re_name_col)
        pm.separator(parent=left_main_col, height=10, style="none")
        new_name_col = pm.rowColumnLayout(parent=left_main_col,
                                          numberOfColumns=2,
                                          columnOffset=(1, "left", 10))
        self.new_nm_chk_bx = pm.checkBox(
            label="Control Name:    ",
            parent=new_name_col,
            changeCommand=lambda x: self.set_ui_edit_mode(flag="rename_field"))
        self.ctr_new_nm = pm.textField(text="Control",
                                       parent=new_name_col,
                                       width=150,
                                       editable=False)
        suf_name_col = pm.rowColumnLayout(parent=left_main_col,
                                          numberOfColumns=2,
                                          columnOffset=(1, "left", 10))
        self.suf_lbl = pm.text("Control Suffix Text:  ", parent=suf_name_col)
        self.suf_nm = pm.textField(text="_CTRL",
                                   parent=suf_name_col,
                                   width=163,
                                   editable=False)
        pm.separator(parent=left_main_col, height=10, style="none")
        zero_gp_col = pm.rowColumnLayout(parent=left_main_col,
                                         numberOfColumns=2,
                                         columnOffset=(1, "left", 50))
        self.zero_gp_chk_bx = pm.checkBox(
            "Zero Node",
            parent=zero_gp_col,
            value=True,
            changeCommand=lambda x: self.set_ui_edit_mode(flag="zero_node"))
        self.zero_nd_txt = pm.textField(text="_CTRLT", parent=zero_gp_col)

        scl_lk_col = pm.columnLayout(parent=left_main_col,
                                     columnOffset=("left", 50))
        self.scl_lk_chk_bx = pm.checkBox("Lock Scale/Visibility/Radius(Joint)",
                                         parent=scl_lk_col,
                                         value=True)
        scl_chk_col = pm.columnLayout(parent=left_main_col,
                                      columnOffset=("left", 50))
        self.scl_ctr_chk_bx = pm.checkBox(
            "Scale Control to match object",
            value=True,
            parent=scl_chk_col,
            changeCommand=lambda x: self.set_ui_edit_mode(flag="no_scale"))
        scl_offset_col = pm.rowColumnLayout(parent=left_main_col,
                                            numberOfColumns=2,
                                            columnOffset=(1, "left", 30))
        self.ctrl_off_sz_lbl = pm.text("Control size offset value",
                                       parent=scl_offset_col)
        self.scl_offset_val_txt = pm.textField(text="1", parent=scl_offset_col)

        pm.separator(parent=left_main_col, height=10, style="in")
        ctrl_pvt_col = pm.rowColumnLayout(parent=left_main_col,
                                          numberOfColumns=2,
                                          columnOffset=(1, "left", 80))
        self.ctrl_pos_chk_bx = pm.checkBox(
            "Control at object pivot",
            parent=ctrl_pvt_col,
            value=True,
            changeCommand=lambda x: self.set_ui_edit_mode(flag="position"))

        pos_rad_col = pm.gridLayout(parent=left_main_col,
                                    numberOfRowsColumns=(3, 2),
                                    cellWidthHeight=(140, 20),
                                    allowEmptyCells=False)

        self.pos_rad_collection = pm.radioCollection(parent=pos_rad_col)
        self.top_rad_btn = pm.radioButton(label="Top(Y Axis)",
                                          parent=pos_rad_col,
                                          editable=False)
        self.bot_rad_btn = pm.radioButton(label="Bottom(Y Axis)",
                                          parent=pos_rad_col,
                                          select=True,
                                          editable=False)
        self.left_rad_btn = pm.radioButton(label="Left(X Axis)",
                                           parent=pos_rad_col,
                                           editable=False)
        self.right_rad_btn = pm.radioButton(label="Right(X Axis)",
                                            parent=pos_rad_col,
                                            editable=False)
        self.front_rad_btn = pm.radioButton(label="Front(Z Axis)",
                                            parent=pos_rad_col,
                                            editable=False)
        self.back_rad_btn = pm.radioButton(label="Back(Z Axis)",
                                           parent=pos_rad_col,
                                           editable=False)

        pm.separator(parent=main_split_col,
                     height=10,
                     style="in",
                     horizontal=False)
        scr_lay = pm.scrollLayout(parent=main_split_col)
        grid_col = pm.gridLayout(parent=scr_lay,
                                 numberOfRowsColumns=(1, 5),
                                 autoGrow=True,
                                 cellWidthHeight=(50, 50),
                                 allowEmptyCells=False)
        for btn in btns:
            btn = btn.replace("\r", "")
            btn = btn.replace("\n", "")
            img = self.icon_path + btn + ".png"
            if os.path.exists(img):
                pm.iconTextButton(parent=grid_col,
                                  label=btn,
                                  style='iconOnly',
                                  image=img,
                                  command=partial(self.create_shape, nm=btn))
            else:
                rgb = [
                    random.uniform(.5, 1),
                    random.uniform(.5, 1),
                    random.uniform(.5, 1)
                ]
                pm.iconTextButton(parent=grid_col,
                                  label=btn,
                                  style='iconAndTextVertical',
                                  backgroundColor=rgb,
                                  command=partial(self.create_shape, nm=btn))
        pm.checkBox(
            self.connect_chk_bx,
            edit=True,
            changeCommand=lambda x: self.set_ui_edit_mode(flag="connect"))
        pm.showWindow(WINDOW)
        pm.window(WINDOW, edit=True, widthHeight=(540, 420))
        return None
Esempio n. 30
0
def sd_weight_flat_surface(selection, obj_select=True, min_tolerance=0, max_tolerance=0):
    """
    if obj_select = True, hard surfaces (perfectly flat) will automatically be
    found and corrected, but only if model properly finished.
    min_tolerance = the minimum angle that will be selected.
    max_tolerance = the maximum angle that will be selected.
    """

    sd_test_type(selection, [pm.Transform, pm.MeshFace])

    if obj_select:
        # convert selection to edges
        mm.eval('ConvertSelectionToEdges;')

        # constrain the selection to a specific angle
        pm.polySelectConstraint(
            mode=3,
            type=0x8000,
            angle=True,
            anglebound=(min_tolerance, max_tolerance)
        )

        # save the selection
        oSel = pm.ls(sl=True, flatten=True)

        # turn off polySelectConstraint
        pm.polySelectConstraint(mode=0)

        # make sure its selected (just in case)
        pm.select(oSel)

        # convert to faces
        mm.eval('ConvertSelectionToFaces;')

    fSel = pm.ls(sl=True, flatten=True)

    # create a good ol' progress bar
    progWind = pm.window(title='progress')
    pm.columnLayout()

    progressControl = pm.progressBar(maxValue=len(fSel), width=300)

    pm.showWindow(progWind)

    # run through each object and get the face normal of each face
    # apply the face normal direction to the connected verts
    for face in fSel:
        pm.select(face)
        face_normal = face.getNormal(space='world')
        verts = pm.polyListComponentConversion(
            face,
            fromFace=True,
            toVertex=True
        )

        pm.select(verts)
        pm.polyNormalPerVertex(normalXYZ=face_normal)

        ff = fSel.index(face)
        pm.progressBar(progressControl, edit=True, progress=ff)

    pm.deleteUI(progWind)
Esempio n. 31
0
    def UI(self):
        self.WINDOW = "Checker_Material"
        if pm.window(self.WINDOW, query=True, exists=True):
            pm.deleteUI(self.WINDOW)
        pm.window(self.WINDOW,
                  title="Checker Material",
                  iconName="CHM",
                  widthHeight=(290, 110))
        self.main_col = pm.columnLayout(adjustableColumn=True,
                                        height=100,
                                        parent=self.WINDOW)

        self.button_col = pm.rowColumnLayout(parent=self.main_col,
                                             numberOfColumns=9)
        pm.separator(parent=self.main_col, style="in")
        self.del_col = pm.rowColumnLayout(parent=self.main_col,
                                          numberOfColumns=9)
        pm.separator(parent=self.main_col, style="in")
        self.uv_ch_col = pm.rowColumnLayout(parent=self.main_col,
                                            numberOfColumns=9)
        pm.separator(parent=self.main_col, style="in")
        self.uv_ful_ch_col = pm.rowColumnLayout(parent=self.main_col,
                                                numberOfColumns=9)
        pm.separator(parent=self.main_col, style="in")
        self.copy_btn_col = pm.columnLayout(parent=self.main_col,
                                            adjustableColumn=True)

        self.tex1_but = pm.button(
            label="checker1",
            parent=self.button_col,
            height=50,
            command=lambda x: self.assign_shader("myChLambert1", self.ch1_U_tx,
                                                 self.ch1_V_tx))
        pm.separator(parent=self.button_col, horizontal=False, style="in")
        self.tex2_but = pm.button(
            label="checker2",
            parent=self.button_col,
            height=50,
            command=lambda x: self.assign_shader("myChLambert2", self.ch2_U_tx,
                                                 self.ch2_V_tx))
        pm.separator(parent=self.button_col, horizontal=False, style="in")
        self.tex3_but = pm.button(
            label="checker3",
            parent=self.button_col,
            height=50,
            command=lambda x: self.assign_shader("myChLambert3", self.ch3_U_tx,
                                                 self.ch3_V_tx))
        pm.separator(parent=self.button_col, horizontal=False, style="in")
        self.tex4_but = pm.button(
            label="checker4",
            parent=self.button_col,
            height=50,
            command=lambda x: self.assign_shader("myChLambert4", self.ch4_U_tx,
                                                 self.ch4_V_tx))
        pm.separator(parent=self.button_col, horizontal=False, style="in")
        self.tex5_but = pm.button(
            label="checker5",
            parent=self.button_col,
            height=50,
            command=lambda x: self.assign_shader("myChLambert5", self.ch5_U_tx,
                                                 self.ch5_V_tx))

        self.del1_but = pm.button(
            label="delete\nchecker1",
            parent=self.del_col,
            height=50,
            width=55,
            command=lambda x: self.delete_shader("myChLambert1", self.ch1_U_tx,
                                                 self.ch1_V_tx))
        pm.separator(parent=self.del_col, horizontal=False, style="in")

        self.del2_but = pm.button(
            label="delete\nchecker2",
            parent=self.del_col,
            height=50,
            width=55,
            command=lambda x: self.delete_shader("myChLambert2", self.ch2_U_tx,
                                                 self.ch2_V_tx))
        pm.separator(parent=self.del_col, horizontal=False, style="in")

        self.del3_but = pm.button(
            label="delete\nchecker3",
            parent=self.del_col,
            height=50,
            width=55,
            command=lambda x: self.delete_shader("myChLambert3", self.ch3_U_tx,
                                                 self.ch3_V_tx))
        pm.separator(parent=self.del_col, horizontal=False, style="in")

        self.del4_but = pm.button(
            label="delete\nchecker4",
            parent=self.del_col,
            height=50,
            width=55,
            command=lambda x: self.delete_shader("myChLambert4", self.ch4_U_tx,
                                                 self.ch4_V_tx))
        pm.separator(parent=self.del_col, horizontal=False, style="in")

        self.del5_but = pm.button(
            label="delete\nchecker5",
            parent=self.del_col,
            height=50,
            width=55,
            command=lambda x: self.delete_shader("myChLambert5", self.ch5_U_tx,
                                                 self.ch5_V_tx))
        pm.separator(parent=self.del_col, horizontal=False, style="in")

        grid_cell_width = 27
        sep_width = 4

        self.ch1_txt_grid_col = pm.gridLayout(parent=self.uv_ch_col,
                                              numberOfRowsColumns=(4, 2),
                                              cellWidth=grid_cell_width)
        self.ch1_U_tx = pm.textField(parent=self.ch1_txt_grid_col)
        pm.button(label="U",
                  parent=self.ch1_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert1", True, False, self.ch1_U_tx, None,
                              False, None, None))
        self.ch1_V_tx = pm.textField(parent=self.ch1_txt_grid_col)
        pm.button(label="V",
                  parent=self.ch1_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert1", False, True, None, self.ch1_V_tx,
                              False, None, None))
        pm.button(label="U+",
                  parent=self.ch1_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert1", True, False, None, None, True,
                              self.ch1_U_tx, None))
        pm.button(label="V+",
                  parent=self.ch1_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert1", False, True, None, None, True,
                              None, self.ch1_V_tx))
        pm.button(label="U-",
                  parent=self.ch1_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert1", True, False, None, None, False,
                              self.ch1_U_tx, None))
        pm.button(label="V-",
                  parent=self.ch1_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert1", False, True, None, None, False,
                              None, self.ch1_V_tx))
        pm.separator(parent=self.uv_ch_col,
                     horizontal=False,
                     style="in",
                     width=sep_width)

        self.ch2_txt_grid_col = pm.gridLayout(parent=self.uv_ch_col,
                                              numberOfRowsColumns=(4, 2),
                                              cellWidth=grid_cell_width)
        self.ch2_U_tx = pm.textField(parent=self.ch2_txt_grid_col)
        pm.button(label="U",
                  parent=self.ch2_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert2", True, False, self.ch2_U_tx, None,
                              False, None, None))
        self.ch2_V_tx = pm.textField(parent=self.ch2_txt_grid_col)
        pm.button(label="V",
                  parent=self.ch2_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert2", False, True, None, self.ch2_V_tx,
                              False, None, None))
        pm.button(label="U+",
                  parent=self.ch2_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert2", True, False, None, None, True,
                              self.ch2_U_tx, None))
        pm.button(label="V+",
                  parent=self.ch2_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert2", False, True, None, None, True,
                              None, self.ch2_V_tx))
        pm.button(label="U-",
                  parent=self.ch2_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert2", True, False, None, None, False,
                              self.ch2_U_tx, None))
        pm.button(label="V-",
                  parent=self.ch2_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert2", False, True, None, None, False,
                              None, self.ch2_V_tx))
        pm.separator(parent=self.uv_ch_col,
                     horizontal=False,
                     style="in",
                     width=sep_width)

        self.ch3_txt_grid_col = pm.gridLayout(parent=self.uv_ch_col,
                                              numberOfRowsColumns=(4, 2),
                                              cellWidth=grid_cell_width)
        self.ch3_U_tx = pm.textField(parent=self.ch3_txt_grid_col)
        pm.button(label="U",
                  parent=self.ch3_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert3", True, False, self.ch3_U_tx, None,
                              False, None, None))
        self.ch3_V_tx = pm.textField(parent=self.ch3_txt_grid_col)
        pm.button(label="V",
                  parent=self.ch3_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert3", False, True, None, self.ch3_V_tx,
                              False, None, None))
        pm.button(label="U+",
                  parent=self.ch3_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert3", True, False, None, None, True,
                              self.ch3_U_tx, None))
        pm.button(label="V+",
                  parent=self.ch3_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert3", False, True, None, None, True,
                              None, self.ch3_V_tx))
        pm.button(label="U-",
                  parent=self.ch3_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert3", True, False, None, None, False,
                              self.ch3_U_tx, None))
        pm.button(label="V-",
                  parent=self.ch3_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert3", False, True, None, None, False,
                              None, self.ch3_V_tx))
        pm.separator(parent=self.uv_ch_col,
                     horizontal=False,
                     style="in",
                     width=sep_width)

        self.ch4_txt_grid_col = pm.gridLayout(parent=self.uv_ch_col,
                                              numberOfRowsColumns=(4, 2),
                                              cellWidth=grid_cell_width)
        self.ch4_U_tx = pm.textField(parent=self.ch4_txt_grid_col)
        pm.button(label="U",
                  parent=self.ch4_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert4", True, False, self.ch4_U_tx, None,
                              False, None, None))
        self.ch4_V_tx = pm.textField(parent=self.ch4_txt_grid_col)
        pm.button(label="V",
                  parent=self.ch4_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert4", False, True, None, self.ch4_V_tx,
                              False, None, None))
        pm.button(label="U+",
                  parent=self.ch4_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert4", True, False, None, None, True,
                              self.ch4_U_tx, None))
        pm.button(label="V+",
                  parent=self.ch4_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert4", False, True, None, None, True,
                              None, self.ch4_V_tx))
        pm.button(label="U-",
                  parent=self.ch4_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert4", True, False, None, None, False,
                              self.ch4_U_tx, None))
        pm.button(label="V-",
                  parent=self.ch4_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert4", False, True, None, None, False,
                              None, self.ch4_V_tx))
        pm.separator(parent=self.uv_ch_col,
                     horizontal=False,
                     style="in",
                     width=sep_width)

        self.ch5_txt_grid_col = pm.gridLayout(parent=self.uv_ch_col,
                                              numberOfRowsColumns=(4, 2),
                                              cellWidth=grid_cell_width)
        self.ch5_U_tx = pm.textField(parent=self.ch5_txt_grid_col)
        pm.button(label="U",
                  parent=self.ch5_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert5", True, False, self.ch5_U_tx, None,
                              False, None, None))
        self.ch5_V_tx = pm.textField(parent=self.ch5_txt_grid_col)
        pm.button(label="V",
                  parent=self.ch5_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert5", False, True, None, self.ch5_V_tx,
                              False, None, None))
        pm.button(label="U+",
                  parent=self.ch5_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert5", True, False, None, None, True,
                              self.ch5_U_tx, None))
        pm.button(label="V+",
                  parent=self.ch5_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert5", False, True, None, None, True,
                              None, self.ch5_V_tx))
        pm.button(label="U-",
                  parent=self.ch5_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert5", True, False, None, None, False,
                              self.ch5_U_tx, None))
        pm.button(label="V-",
                  parent=self.ch5_txt_grid_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert5", False, True, None, None, False,
                              None, self.ch5_V_tx))

        self.ch1_UV_col = pm.gridLayout(parent=self.uv_ful_ch_col,
                                        numberOfRowsColumns=(2, 1),
                                        cellWidth=grid_cell_width * 2)
        pm.button(label="UV+",
                  parent=self.ch1_UV_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert1", True, True, None, None, True,
                              self.ch1_U_tx, self.ch1_V_tx))
        pm.button(label="UV-",
                  parent=self.ch1_UV_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert1", True, True, None, None, False,
                              self.ch1_U_tx, self.ch1_V_tx))
        pm.separator(parent=self.uv_ful_ch_col,
                     horizontal=False,
                     style="in",
                     width=sep_width)

        self.ch2_UV_col = pm.gridLayout(parent=self.uv_ful_ch_col,
                                        numberOfRowsColumns=(2, 1),
                                        cellWidth=grid_cell_width * 2)
        pm.button(label="UV+",
                  parent=self.ch2_UV_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert2", True, True, None, None, True,
                              self.ch2_U_tx, self.ch2_V_tx))
        pm.button(label="UV-",
                  parent=self.ch2_UV_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert2", True, True, None, None, False,
                              self.ch2_U_tx, self.ch2_V_tx))
        pm.separator(parent=self.uv_ful_ch_col,
                     horizontal=False,
                     style="in",
                     width=sep_width)

        self.ch3_UV_col = pm.gridLayout(parent=self.uv_ful_ch_col,
                                        numberOfRowsColumns=(2, 1),
                                        cellWidth=grid_cell_width * 2)
        pm.button(label="UV+",
                  parent=self.ch3_UV_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert3", True, True, None, None, True,
                              self.ch3_U_tx, self.ch3_V_tx))
        pm.button(label="UV-",
                  parent=self.ch3_UV_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert3", True, True, None, None, False,
                              self.ch3_U_tx, self.ch3_V_tx))
        pm.separator(parent=self.uv_ful_ch_col,
                     horizontal=False,
                     style="in",
                     width=sep_width)

        self.ch4_UV_col = pm.gridLayout(parent=self.uv_ful_ch_col,
                                        numberOfRowsColumns=(2, 1),
                                        cellWidth=grid_cell_width * 2)
        pm.button(label="UV+",
                  parent=self.ch4_UV_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert4", True, True, None, None, True,
                              self.ch4_U_tx, self.ch4_V_tx))
        pm.button(label="UV-",
                  parent=self.ch4_UV_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert4", True, True, None, None, False,
                              self.ch4_U_tx, self.ch4_V_tx))
        pm.separator(parent=self.uv_ful_ch_col,
                     horizontal=False,
                     style="in",
                     width=sep_width)

        self.ch5_UV_col = pm.gridLayout(parent=self.uv_ful_ch_col,
                                        numberOfRowsColumns=(2, 1),
                                        cellWidth=grid_cell_width * 2)
        pm.button(label="UV+",
                  parent=self.ch5_UV_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert5", True, True, None, None, True,
                              self.ch5_U_tx, self.ch5_V_tx))
        pm.button(label="UV-",
                  parent=self.ch5_UV_col,
                  command=lambda x: self.
                  tile_uv_val("myChLambert5", True, True, None, None, False,
                              self.ch5_U_tx, self.ch5_V_tx))
        pm.separator(parent=self.uv_ful_ch_col,
                     horizontal=False,
                     style="in",
                     width=sep_width)

        pm.button(label="copy shader",
                  parent=self.copy_btn_col,
                  command=lambda x: self.copy_shader())

        pm.showWindow(self.WINDOW)
        pm.window(self.WINDOW, edit=True, widthHeight=(290, 340))
Esempio n. 32
0
def spline_ik_setup_UI():
    WINDOW = 'SplineIK'
    if pm.window(WINDOW, query=True, exists=True):
        pm.deleteUI(WINDOW)
    pm.window(WINDOW,
              title="Spline IK",
              iconName='SplineIK',
              widthHeight=(250, 310))

    main_column = pm.columnLayout(adjustableColumn=True)
    pm.separator(height=5, style='in', parent=main_column)
    name_col = pm.rowColumnLayout(numberOfColumns=2,
                                  parent=main_column,
                                  columnOffset=(1, "left", 30),
                                  columnSpacing=(2, 5),
                                  columnWidth=(2, 130))
    pm.separator(height=5, style='in', parent=main_column)
    joint_col = pm.rowColumnLayout(numberOfColumns=3,
                                   parent=main_column,
                                   columnOffset=(1, "left", 30),
                                   columnSpacing=(2, 5))
    pm.separator(height=5, style='in', parent=main_column)
    dense_col = pm.rowColumnLayout(numberOfColumns=4,
                                   columnOffset=(1, "left", 5),
                                   parent=main_column,
                                   columnSpacing=(3, 10))
    pm.separator(height=5, style='in', parent=main_column)
    curve_option_col = pm.rowColumnLayout(numberOfColumns=2,
                                          columnOffset=(1, "left", 5),
                                          parent=main_column,
                                          columnSpacing=(2, 70))
    pm.separator(height=5, style='none', parent=main_column)
    curve_name_col = pm.rowColumnLayout(numberOfColumns=3,
                                        columnOffset=(1, "left", 40),
                                        parent=main_column,
                                        columnSpacing=(2, 5))
    pm.separator(height=5, style='none', parent=main_column)
    curve_simplify_col = pm.rowColumnLayout(numberOfColumns=4,
                                            columnOffset=(1, "left", 5),
                                            parent=main_column,
                                            columnSpacing=(3, 5))
    pm.separator(height=5, style='in', parent=main_column)
    stretch_col = pm.rowColumnLayout(numberOfColumns=2,
                                     columnWidth=(1, 100),
                                     parent=main_column,
                                     columnOffset=(1, "left", 5))
    pm.separator(height=5, style='in', parent=main_column)

    global_scale_col = pm.rowColumnLayout(numberOfColumns=3,
                                          columnWidth=(1, 100),
                                          parent=main_column,
                                          columnOffset=(1, "left", 5),
                                          columnSpacing=(3, 10))

    pm.separator(height=20, style='in', parent=main_column)

    ctrl_jnt_col = pm.rowColumnLayout(numberOfColumns=3,
                                      columnOffset=(1, "left", 5),
                                      parent=main_column,
                                      columnWidth=(3, 50),
                                      columnSpacing=(3, 5))
    pm.separator(height=20, style='in', parent=main_column)

    create_btn_col = pm.rowColumnLayout(numberOfColumns=3,
                                        parent=main_column,
                                        columnOffset=(2, "left", 65),
                                        columnWidth=(2, 300))

    pm.text(label="Ik name", parent=name_col)
    name_text = pm.TextField(text="", parent=name_col)
    pm.text(label="base joint", parent=joint_col)
    joint_name = pm.textField(text="", parent=joint_col)
    pm.button(
        label="<<",
        parent=joint_col,
        command=lambda x: joint_name.setText(str(pm.ls(selection=True)[0])))

    dense_div_label = pm.text()
    dense_div_text = pm.textField()
    dense_chain_chb = pm.checkBox(
        "dense chain",
        parent=dense_col,
        changeCommand=lambda x:
        (dense_div_label.setEnable(dense_chain_chb.getValue()),
         dense_div_text.setEditable(dense_chain_chb.getValue())))
    pm.separator(style='single', horizontal=False, parent=dense_col, width=20)

    pm.text(dense_div_label,
            edit=True,
            label="divisions",
            parent=dense_col,
            enable=dense_chain_chb.getValue())
    pm.textField(dense_div_text,
                 edit=True,
                 text="3",
                 parent=dense_col,
                 editable=dense_chain_chb.getValue(),
                 width=50)

    curve_label = pm.text(label="Curve", parent=curve_name_col)
    curve_text = pm.textField(text="", parent=curve_name_col, editable=False)
    curve_btn = pm.button(
        label="<<",
        parent=curve_name_col,
        enable=False,
        command=lambda x: curve_text.setText(str(pm.ls(selection=True)[0])))

    spans_label = pm.text()
    spans_text = pm.TextField()
    curve_simple_chb = pm.checkBox(
        label="simplify curve",
        parent=curve_simplify_col,
        enable=True,
        changeCommand=lambda x:
        (spans_label.setEnable(curve_simple_chb.getValue()),
         spans_text.setEditable(curve_simple_chb.getValue())))
    pm.separator(style='single',
                 horizontal=False,
                 parent=curve_simplify_col,
                 width=5)
    pm.text(spans_label,
            edit=True,
            label="spans    ",
            parent=curve_simplify_col,
            enable=curve_simple_chb.getValue())
    pm.textField(spans_text,
                 edit=True,
                 text="3",
                 parent=curve_simplify_col,
                 editable=curve_simple_chb.getValue())

    curve_create = pm.radioCollection(parent=curve_option_col)
    pm.radioButton(
        "AutoCurve",
        label="Auto Curve",
        select=True,
        parent=curve_option_col,
        onCommand=lambda x:
        (curve_btn.setEnable(False), curve_label.setEnable(False),
         curve_text.setEditable(False), curve_simple_chb.setEnable(True),
         spans_label.setEnable(curve_simple_chb.getValue()),
         spans_text.setEditable(curve_simple_chb.getValue())))
    pm.radioButton(
        "UseCurve",
        label="use Curve",
        select=False,
        parent=curve_option_col,
        onCommand=lambda x:
        (curve_btn.setEnable(True), curve_label.setEnable(True),
         curve_text.setEditable(True), curve_simple_chb.setEnable(False),
         spans_label.setEnable(False), spans_text.setEditable(False)))

    stretch_scale_chb = pm.checkBox()
    global_scale_chb = pm.checkBox()
    scale_attr_text = pm.TextField()
    scale_label = pm.text()

    stretch_chb = pm.checkBox(
        label="stretch",
        parent=stretch_col,
        changeCommand=lambda x:
        (stretch_scale_chb.setEditable(stretch_chb.getValue()),
         global_scale_chb.setEditable(stretch_chb.getValue()),
         scale_attr_text.setEditable(stretch_chb.getValue() and
                                     global_scale_chb.getValue()),
         scale_label.setEnable(stretch_chb.getValue() and global_scale_chb.
                               getValue())))

    pm.checkBox(stretch_scale_chb,
                edit=True,
                label="connect scale",
                parent=stretch_col,
                editable=stretch_chb.getValue())

    pm.checkBox(global_scale_chb,
                edit=True,
                label="global scale",
                parent=global_scale_col,
                editable=stretch_chb.getValue(),
                changeCommand=lambda x:
                (scale_attr_text.setEditable(global_scale_chb.getValue()),
                 scale_label.setEnable(global_scale_chb.getValue())))
    pm.text(scale_label,
            edit=True,
            label="scale attr",
            parent=global_scale_col,
            enable=(stretch_scale_chb.getValue() and stretch_chb.getValue))
    pm.textField(scale_attr_text,
                 edit=True,
                 text="",
                 parent=global_scale_col,
                 editable=stretch_chb.getValue(),
                 width=90)
    pm.text(label="number of control joints ", parent=ctrl_jnt_col)
    ctrl_jnt_num = pm.textField(text="3", parent=ctrl_jnt_col, width=50)
    pm.text(label="", parent=create_btn_col)
    pm.button(label="create",
              align="center",
              parent=create_btn_col,
              width=100,
              command=lambda x: call_fun(name_text.getText(
              ), joint_name.getText(), dense_chain_chb.getValue(
              ), int(dense_div_text.getText()), curve_create.getSelect(
              ), curve_text.getText(), curve_simple_chb.getValue(
              ), int(spans_text.getText()), stretch_chb.getValue(
              ), stretch_scale_chb.getValue(), int(ctrl_jnt_num.getText(
              )), global_scale_chb.getValue(), scale_attr_text.getText()))

    pm.showWindow(WINDOW)
    pm.window(WINDOW, edit=True, widthHeight=(250, 310))
    return None
Esempio n. 33
0
def CustomScripts_UI():

    WINDOW = 'CustomScripts'
    if pm.window(WINDOW, query=True, exists=True):
        pm.deleteUI(WINDOW)
    pm.window(WINDOW,
              title="Custom Scripts",
              iconName='CS',
              widthHeight=(200, 400))
    column_1 = pm.columnLayout(adjustableColumn=True)

    pm.separator(height=20, style='in', parent=column_1)
    pm.button(label='Immediate Parent in Hierarchy',
              command=lambda x: CustomScripts.immediateParent())

    pm.separator(height=20, style='in', parent=column_1)
    hide_jnt_col = pm.rowColumnLayout(parent=column_1,
                                      numberOfColumns=3,
                                      columnWidth=(1, 95))
    pm.button(label='Hide Joint',
              command=lambda x: CustomScripts.jntHide(),
              parent=hide_jnt_col)
    pm.separator(parent=hide_jnt_col, horizontal=False, width=10)
    pm.button(label='Show Joint',
              command=lambda x: CustomScripts.jntShow(),
              parent=hide_jnt_col,
              width=95)

    pm.separator(height=20, style='in', parent=column_1)
    lod_col = pm.rowColumnLayout(parent=column_1,
                                 numberOfColumns=3,
                                 columnWidth=(1, 95))
    pm.button(label='LOD off',
              command=lambda x: CustomScripts.lodOff(),
              parent=lod_col)
    pm.separator(parent=lod_col, horizontal=False, width=10)
    pm.button(label='LOD on',
              command=lambda x: CustomScripts.lodOn(),
              parent=lod_col,
              width=95)

    pm.separator(height=20, style='in', parent=column_1)
    pm.button(label='Parent( in selection order)',
              command=lambda x: CustomScripts.parentChain(),
              parent=column_1)

    # get object name
    pm.separator(height=20, style='in', parent=column_1)
    row_col_2 = pm.rowColumnLayout(numberOfColumns=2,
                                   columnWidth=(1, 150),
                                   parent=column_1,
                                   columnOffset=(2, 'left', 10))
    object_name = pm.TextField(parent=row_col_2)
    pm.button(
        label='<<',
        parent=row_col_2,
        command=lambda x: object_name.setText(str(pm.ls(selection=True)[0])))
    row_col_3 = pm.rowColumnLayout(numberOfColumns=2,
                                   columnWidth=(1, 100),
                                   parent=column_1,
                                   columnOffset=(2, 'left', 10))
    prntChk = pm.checkBox("parent", parent=row_col_3)
    sclChk = pm.checkBox("scale", parent=row_col_3)
    pm.separator(height=5, style='none', parent=column_1)
    pm.button(
        label='Copy Object to selected positions',
        parent=column_1,
        command=lambda x: CustomScripts.copyObjects(obj=object_name.getText(),
                                                    prFlg=prntChk.getValue(),
                                                    scFlg=sclChk.getValue()))

    pm.separator(height=20, style='in', parent=column_1)
    pm.button(label="copy orientation",
              parent=column_1,
              command=lambda x: CustomScripts.CopyJntOri())

    pm.showWindow(WINDOW)
    pm.window(WINDOW, edit=True, widthHeight=(200, 320))
    return None
    def tread_create_ui(self):
        self.WINDOW = 'Loop_Motion_Path'
        if pm.window(self.WINDOW, query=True, exists=True):
            pm.deleteUI(self.WINDOW)
        pm.window(self.WINDOW,
                  title="Loop Motion Path",
                  iconName='TR',
                  widthHeight=(200, 220))
        column_1 = pm.columnLayout(adjustableColumn=True)
        pm.separator(height=20, style='none', parent=column_1)
        self.tread_name = pm.TextField(text='Setup_Name', parent=column_1)
        pm.separator(height=20, style='none', parent=column_1)
        # get parent name
        row_col_1 = pm.rowColumnLayout(numberOfColumns=2,
                                       columnWidth=(1, 150),
                                       parent=column_1,
                                       columnOffset=(2, 'left', 10))
        self.curve_name = pm.TextField(text='PathCurve', parent=row_col_1)
        pm.button(label='<<',
                  parent=row_col_1,
                  command=lambda x: self.set_path_name())

        chk_bx_col = pm.rowColumnLayout(parent=column_1,
                                        numberOfColumns=2,
                                        columnWidth=(1, 20))
        pm.text("", parent=chk_bx_col)
        self.dup_crv_chk_bx = pm.checkBox("Duplicate Curve",
                                          parent=chk_bx_col,
                                          value=True)
        pm.separator(height=20, style='in', parent=column_1)
        self.jnt_type_lbl = pm.text(label="object placement type",
                                    align="left",
                                    parent=column_1)
        pm.separator(height=5, style='none', parent=column_1)
        self.jnt_typ_radio = pm.radioCollection(parent=column_1)

        row_layout = pm.rowLayout(numberOfColumns=2,
                                  height=20,
                                  parent=column_1)
        sel_chk_bx_col = pm.rowColumnLayout(parent=column_1,
                                            numberOfColumns=2,
                                            columnWidth=(1, 20))

        info_chk_bx_col = pm.ColumnLayout(parent=column_1)
        self.chk_bx_info = pm.text("", parent=info_chk_bx_col, enable=False)
        pm.text("", parent=sel_chk_bx_col)
        self.sel_obj_chk_bx = pm.checkBox("Use Selection On Curve",
                                          parent=sel_chk_bx_col,
                                          value=False,
                                          enable=False)
        self.divisions = pm.TextField(text='1', parent=column_1)

        pm.radioButton(
            label='uniform',
            parent=row_layout,
            select=True,
            onCommand=lambda x: self.ui_set_selection_enable(flag="uniform"))
        pm.radioButton(
            label='selection',
            parent=row_layout,
            onCommand=lambda x: self.ui_set_selection_enable(flag="selection"))

        pm.separator(height=20, style='none', parent=column_1)
        pm.text("Input sample object (default joint)", parent=column_1)

        sample_row_col = pm.rowColumnLayout(numberOfColumns=2,
                                            columnWidth=(1, 150),
                                            parent=column_1,
                                            columnOffset=(2, 'left', 10))
        self.sample_name = pm.text(label="", parent=sample_row_col)
        pm.button(label='<<',
                  parent=sample_row_col,
                  command=lambda x: self.set_sample_object())
        pm.separator(height=20, style='none', parent=column_1)
        pm.button(label='Create',
                  parent=column_1,
                  command=lambda x: self.setup_motion_path())
        pm.showWindow(self.WINDOW)
        pm.window(self.WINDOW, edit=True, widthHeight=(200, 320))
        return None
Esempio n. 35
0
    def __init__(self,parent=None,mmmm=None, parentWidget=None):
        self.parent = parent
        self.mmmm = mmmm
        self.widgets = { }
        
        self.annotationAboutInteraction = (
            "The settings should also auto apply when you change them,\n "+
            "but due to a Maya bug, you may occasionally have to apply manually,\n "+
            "with the button."
        )
        
        
        
        
        try:
            initialMultiplier = pm.melGlobals['MmmmToolsModelerGridToolsMultiplier']
        except:
            initialMultiplier = 1.0
            pm.melGlobals.initVar( 'float', 'MmmmToolsModelerGridToolsMultiplier' )
            pm.melGlobals['MmmmToolsModelerGridToolsMultiplier'] = 1.0
        initialSpacing =(
            (    pm.grid( query=True, spacing=True ) / pm.grid( query=True, divisions=True )    )
            /
            initialMultiplier
        )
        initialWholeSize = pm.grid( query=True, size=True ) / initialMultiplier
        
        ## Use this as parent otherwise use something else
        if parentWidget==None:
            parentWidget = self.widgets['parentWidget'] = pm.Window(
                title="Grid Manager", width=100,height=200
            )
        else:
            self.widgets['parentWidget'] = parentWidget
        
        ## Make a shortcut for function that addWidgets
        aw = self.addWidget
        
        with parentWidget:
          with aw( 'col', pm.ColumnLayout() ):
            aw('mayaOptionsButton',pm.Button(label="Maya Grid Options...",
                    command= lambda x: pm.mel.eval("GridOptions;")
                )
            )
            aw('resetButton', pm.Button(label="Reset (To Maya Defaults)",
                command= lambda x: self.resetToMayaDefault()  ) )
            #aw('resetText', pm.Text(label='  '))
            aw('reset2Button', pm.Button(
                    label="Apply These Settings",
                    annotation=self.annotationAboutInteraction,
                    command= lambda x: MmmmToolsMod.Static.Grid.reset_via_numbers(
                        multiplier=self.getMultiplierFromUi(),
                        spacing=self.getSpacingFromUi(),
                        wholeSize=self.getWholeSizeFromUi(),
                        setManip=True,
                    )
                )
            )
            
            
            ## note the "with" doesn't work with rows,
            ## so we manually specify parents
            priorParent=self.widgets['col']
            
            row1 = self.widgets["row1"] = pm.rowLayout( numberOfColumns=2 )
            aw( 'rowText1', pm.Text('Multiplier:', parent=row1)  )
            aw( 'multiplierFloatField', pm.floatField(value=initialMultiplier, parent=row1,
                    annotation="This will mutiply with both spacing and whole size \n " +
                        "to determine the final amount used. \n \n"+
                        self.annotationAboutInteraction,
                    changeCommand= lambda x: self.onChangedField(),
                    enterCommand= lambda x: self.onChangedField(),
                )
            )
            pm.setParent( priorParent )  
            
            row2 = self.widgets["row2"] = pm.rowLayout( numberOfColumns=2 )
            aw( 'rowText2', pm.Text('Spacing:', parent=row2)  )
            aw( 'spacingFloatField', pm.floatField(value=initialSpacing, parent=row2,
                    annotation="This will control grid point spacing,\n "+
                        "and will multiply with multiplier\n "+
                        "to determine the final amount used. \n \n"+
                        self.annotationAboutInteraction,
                    changeCommand= lambda x: self.onChangedField(),
                    enterCommand= lambda x: self.onChangedField(),
                )
            )
            pm.setParent( priorParent )  
            
            row3 = self.widgets["row3"] = pm.rowLayout( numberOfColumns=2 )            
            aw( 'rowText3', pm.Text('Whole:', parent=row3)  )
            aw( 'wholeSizeFloatField', pm.floatField(value=initialWholeSize, parent=row3,
                     annotation="This will control the extents of the whole grid,\n " +
                        "(width/height) and will multiply with multiplier \n "+
                        "to determine the final amount used. \n \n"+
                        "Note, Maya's grid width is like a radius, \n"+
                        "visible grid in Maya always looks twice as tall/wide, \n"+
                        "since the 'size' setting in Maya is distance from grid center, \n"+
                        "that's how Maya is intended to work. \n \n"+
                        self.annotationAboutInteraction,           
                    changeCommand= lambda x: self.onChangedField(),
                    enterCommand= lambda x: self.onChangedField(),
                )
            )
            pm.setParent( priorParent )
            
            row4 = self.widgets["row4"] = pm.rowLayout( numberOfColumns=2 )            
            aw( 'rowText4', pm.Text('Auto adjust discreet move:', parent=row4)  )
            aw( 'setManipCheckBox', pm.CheckBox(value=True, label=' ', parent=row4) )
                ## the checkbox has a built in label, but that shows on wrong side
            pm.setParent( priorParent )  
            
               
               
            aw('spacerBlankText', pm.Text(label='  '))

            aw('snapButton', pm.Button(label="Snap Selected Objs To Grid",
                command= lambda x: MmmmToolsMod.Static.Grid.putSelectedObjsOnGrid()  ) )
            aw('snapButton', pm.Button(label="Snap Selected Verts To Grid",
                command= lambda x: MmmmToolsMod.Static.Grid.snapVertsToGrid()  ) )
            aw('snapText', pm.Text(label='  '))
            
            aw('growButton', pm.Button(label="Grow",
                command= lambda x: self.growWithWarning(log=True)  ) )
            aw('shrinkButton', pm.Button(label="Shrink",
                command= lambda x: self.shrinkWithWarning(log=True)  ) )
            
                
        # Show Window
        if type( parentWidget ) == pm.core.windows.window:
            win = parentWidget
            pm.showWindow(win)
            win.setWidth(200)
            win.setHeight(300)
Esempio n. 36
0
def copySDK_UI():
    WINDOW = 'copySDK'
    if pm.window(WINDOW, query=True, exists=True):
        pm.deleteUI(WINDOW)
    pm.window(WINDOW,
              title="copySDK",
              iconName='SDKcpy',
              widthHeight=(210, 370))

    # Layout
    column_1 = pm.columnLayout(adjustableColumn=True)
    textlabel = pm.text(label="UI for script downloaded from\
                                 highend3d.com\nContact Email : [email protected]",
                        align="center",
                        wordWrap=True)
    pm.separator(height=20, style='in', parent=column_1)
    col2 = pm.columnLayout(width=200, adjustableColumn=False, parent=column_1)
    row_col_1 = pm.rowColumnLayout(numberOfColumns=2,
                                   columnWidth=(1, 100),
                                   parent=column_1,
                                   columnOffset=(2, 'left', 10))
    pm.separator(height=20, style='in', parent=column_1)
    col3 = pm.columnLayout(width=200, adjustableColumn=False, parent=column_1)
    row_col_2 = pm.rowColumnLayout(numberOfColumns=2,
                                   columnWidth=(1, 100),
                                   parent=column_1,
                                   columnOffset=(2, 'left', 10))
    row_col_3 = pm.rowColumnLayout(numberOfColumns=2,
                                   columnWidth=(1, 100),
                                   parent=column_1,
                                   columnOffset=(2, 'left', 10))
    pm.separator(height=20, style='in', parent=column_1)
    row_col_4 = pm.rowColumnLayout(numberOfColumns=2,
                                   columnWidth=(1, 100),
                                   parent=column_1,
                                   columnOffset=(2, 'left', 10))
    row_col_5 = pm.rowColumnLayout(numberOfRows=2, parent=row_col_4)
    column_2 = pm.columnLayout(adjustableColumn=False,
                               width=200,
                               columnOffset=["both", 50],
                               parent=column_1)

    # Widgets
    cr_attr_chk_bx = pm.checkBox('Create attribute',
                                 parent=column_2,
                                 editable=False)
    mode_lbl = pm.text(label="mode", align="center", parent=col2, width=200)
    mode_radio = pm.radioCollection(parent=column_1)
    rb1 = pm.radioButton(label='driven',
                         parent=row_col_1,
                         select=True,
                         onCommand=lambda x: pm.checkBox(
                             cr_attr_chk_bx, edit=True, editable=False))
    rb1 = pm.radioButton(label='driver',
                         parent=row_col_1,
                         select=False,
                         onCommand=lambda x: pm.checkBox(
                             cr_attr_chk_bx, edit=True, editable=True))

    ctr_replace_lbl = pm.text(label="controller",
                              align="center",
                              parent=col3,
                              width=200)
    search_lbl = pm.text(label="search",
                         align="center",
                         parent=row_col_2,
                         width=100)
    replace_lbl = pm.text(label="replace",
                          align="center",
                          parent=row_col_2,
                          width=100)
    search_str = pm.TextField(text='', parent=row_col_3)
    replace_str = pm.TextField(text='', parent=row_col_3)
    refresh_button = pm.button(
        label='Refresh',
        parent=row_col_5,
        command=lambda x: populate_attr(field_obj=attr_list))
    attr_list = pm.textScrollList('Attr',
                                  numberOfRows=10,
                                  parent=row_col_5,
                                  height=150,
                                  width=100,
                                  allowMultiSelection=True)
    populate_attr(field_obj=attr_list)
    mirror_chk_bx = pm.checkBox('mirror', parent=row_col_4)

    apply_button = pm.button(
        label='Apply',
        parent=column_2,
        width=100,
        command=lambda x: sdk_call(mode_radio, attr_list, search_str,
                                   replace_str, mirror_chk_bx, cr_attr_chk_bx))

    pm.showWindow(WINDOW)
    pm.window(WINDOW, edit=True, widthHeight=(210, 370))
    return None
Esempio n. 37
0
 def refreshGUI(self):
     if not self.window: return
     pm.deleteUI(self.window)
     self.window = self.createGUI()
     pm.showWindow(self.window)
Esempio n. 38
0
    def __init__(self, parent=None, mmmm=None, parentWidget=None):
        self.parent = parent
        self.mmmm = mmmm
        self.widgets = {}

        self.annotationAboutInteraction = (
            "The settings should also auto apply when you change them,\n " +
            "but due to a Maya bug, you may occasionally have to apply manually,\n "
            + "with the button.")

        try:
            initialMultiplier = pm.melGlobals[
                'MmmmToolsModelerGridToolsMultiplier']
        except:
            initialMultiplier = 1.0
            pm.melGlobals.initVar('float',
                                  'MmmmToolsModelerGridToolsMultiplier')
            pm.melGlobals['MmmmToolsModelerGridToolsMultiplier'] = 1.0
        initialSpacing = ((pm.grid(query=True, spacing=True) /
                           pm.grid(query=True, divisions=True)) /
                          initialMultiplier)
        initialWholeSize = pm.grid(query=True, size=True) / initialMultiplier

        ## Use this as parent otherwise use something else
        if parentWidget == None:
            parentWidget = self.widgets['parentWidget'] = pm.Window(
                title="Grid Manager", width=100, height=200)
        else:
            self.widgets['parentWidget'] = parentWidget

        ## Make a shortcut for function that addWidgets
        aw = self.addWidget

        with parentWidget:
            with aw('col', pm.ColumnLayout()):
                aw(
                    'mayaOptionsButton',
                    pm.Button(label="Maya Grid Options...",
                              command=lambda x: pm.mel.eval("GridOptions;")))
                aw(
                    'resetButton',
                    pm.Button(label="Reset (To Maya Defaults)",
                              command=lambda x: self.resetToMayaDefault()))
                #aw('resetText', pm.Text(label='  '))
                aw(
                    'reset2Button',
                    pm.Button(label="Apply These Settings",
                              annotation=self.annotationAboutInteraction,
                              command=lambda x: MmmmToolsMod.Static.Grid.
                              reset_via_numbers(
                                  multiplier=self.getMultiplierFromUi(),
                                  spacing=self.getSpacingFromUi(),
                                  wholeSize=self.getWholeSizeFromUi(),
                                  setManip=True,
                              )))

                ## note the "with" doesn't work with rows,
                ## so we manually specify parents
                priorParent = self.widgets['col']

                row1 = self.widgets["row1"] = pm.rowLayout(numberOfColumns=2)
                aw('rowText1', pm.Text('Multiplier:', parent=row1))
                aw(
                    'multiplierFloatField',
                    pm.floatField(
                        value=initialMultiplier,
                        parent=row1,
                        annotation=
                        "This will mutiply with both spacing and whole size \n "
                        + "to determine the final amount used. \n \n" +
                        self.annotationAboutInteraction,
                        changeCommand=lambda x: self.onChangedField(),
                        enterCommand=lambda x: self.onChangedField(),
                    ))
                pm.setParent(priorParent)

                row2 = self.widgets["row2"] = pm.rowLayout(numberOfColumns=2)
                aw('rowText2', pm.Text('Spacing:', parent=row2))
                aw(
                    'spacingFloatField',
                    pm.floatField(
                        value=initialSpacing,
                        parent=row2,
                        annotation="This will control grid point spacing,\n " +
                        "and will multiply with multiplier\n " +
                        "to determine the final amount used. \n \n" +
                        self.annotationAboutInteraction,
                        changeCommand=lambda x: self.onChangedField(),
                        enterCommand=lambda x: self.onChangedField(),
                    ))
                pm.setParent(priorParent)

                row3 = self.widgets["row3"] = pm.rowLayout(numberOfColumns=2)
                aw('rowText3', pm.Text('Whole:', parent=row3))
                aw(
                    'wholeSizeFloatField',
                    pm.floatField(
                        value=initialWholeSize,
                        parent=row3,
                        annotation=
                        "This will control the extents of the whole grid,\n " +
                        "(width/height) and will multiply with multiplier \n "
                        + "to determine the final amount used. \n \n" +
                        "Note, Maya's grid width is like a radius, \n" +
                        "visible grid in Maya always looks twice as tall/wide, \n"
                        +
                        "since the 'size' setting in Maya is distance from grid center, \n"
                        + "that's how Maya is intended to work. \n \n" +
                        self.annotationAboutInteraction,
                        changeCommand=lambda x: self.onChangedField(),
                        enterCommand=lambda x: self.onChangedField(),
                    ))
                pm.setParent(priorParent)

                row4 = self.widgets["row4"] = pm.rowLayout(numberOfColumns=2)
                aw('rowText4',
                   pm.Text('Auto adjust discreet move:', parent=row4))
                aw('setManipCheckBox',
                   pm.CheckBox(value=True, label=' ', parent=row4))
                ## the checkbox has a built in label, but that shows on wrong side
                pm.setParent(priorParent)

                aw('spacerBlankText', pm.Text(label='  '))

                aw(
                    'snapButton',
                    pm.Button(label="Snap Selected Objs To Grid",
                              command=lambda x: MmmmToolsMod.Static.Grid.
                              putSelectedObjsOnGrid()))
                aw(
                    'snapButton',
                    pm.Button(label="Snap Selected Verts To Grid",
                              command=lambda x: MmmmToolsMod.Static.Grid.
                              snapVertsToGrid()))
                aw('snapText', pm.Text(label='  '))

                aw(
                    'growButton',
                    pm.Button(
                        label="Grow",
                        command=lambda x: self.growWithWarning(log=True)))
                aw(
                    'shrinkButton',
                    pm.Button(
                        label="Shrink",
                        command=lambda x: self.shrinkWithWarning(log=True)))

        # Show Window
        if type(parentWidget) == pm.core.windows.window:
            win = parentWidget
            pm.showWindow(win)
            win.setWidth(200)
            win.setHeight(300)