Dec-22-2021, 05:41 PM
(This post was last modified: Dec-22-2021, 05:43 PM by Gribouillis.)
'''Python Script to quickly build and shape roof tiles. Select the model, use the UI, and go
Enter the Number of tiles by inputing number of rows & columns.'''
import maya.cmds as cmds
class TileWindow(object):
def __init__(self):
self.window = "TileWindow"
self.title = "Roof Tile Creator"
self.size = (100, 100)
if cmds.window(self.window, exists = True):
cmds.deleteUI(self.window, window=True)
self.window = cmds.window(self.window, title=self.title, widthHeight=self.size)
cmds.rowColumnLayout(numberOfColumns=1,adjustableColumn = True)#Layout1
cmds.text(width=100, height=20, label= 'Select Model for Tile', backgroundColor=[0,255,0])
cmds.setParent('..')
cmds.rowColumnLayout(numberOfColumns=1, adjustableColumn = True)#Layout2
cmds.text(width=200, height=20, label='Rotate & Position Model on Z axis:',backgroundColor=[255,165,0])
cmds.setParent('..')
cmds.rowColumnLayout(numberOfColumns=2, adjustableColumn= True)#Layout3
cmds.text(width=80, height=20, label='Row')
cmds.separator
self.rowamount = cmds.intSliderGrp(width=150, height=12.5, field=True, minValue=0, maxValue=999, value=1)
cmds.setParent('..')
cmds.rowColumnLayout(numberOfColumns=2, adjustableColumn = True)#Layout4
cmds.text(width=80, height=20, label='Column')
cmds.separator
self.columnamount = cmds.intSliderGrp(width=150, height=12.5, field=True, minValue=0, maxValue=999, value=1)
cmds.setParent('..')
cmds.rowColumnLayout(numberOfColumns=2, adjustableColumn = True)#Layout5
cmds.text(width=80, height=20, label='Height Offset')
cmds.separator
self.heightoffset = cmds.intSliderGrp(width=150, height=12.5, field=True, minValue=1.5, maxValue=4, value=1.5)
cmds.setParent('..')
cmds.rowColumnLayout(numberOfColumns=1, adjustableColumn = True)
self.tileName = cmds.textFieldGrp( label='Tile Name:')
cmds.rowColumnLayout(numberOfColumns=1, adjustableColumn = True)#Layout6
self.tileCreateBtn = cmds.button(label='Create', width=80, height=15, command=self.createTile)
cmds.showWindow()
def createTile (self, *args):
numberOfRows = cmds.intSliderGrp(self.rowamount, query=True, value=True)
numberOfColumns = cmds.intSliderGrp(self.columnamount, query=True, value=True)
amountOfHeightoffset = cmds.intSliderGrp(self.heightoffset, query=True, value=True)
name = cmds.textFieldGrp(self.tileName, query=True, text=True)
myWindow = TileWindow()
I know I have to define my tile, I was going to use a polyCube command, and non linear bend. Not really sure how to go about that. Or how to write the code to call upon the values from each slider.
Enter the Number of tiles by inputing number of rows & columns.'''
import maya.cmds as cmds
class TileWindow(object):
def __init__(self):
self.window = "TileWindow"
self.title = "Roof Tile Creator"
self.size = (100, 100)
if cmds.window(self.window, exists = True):
cmds.deleteUI(self.window, window=True)
self.window = cmds.window(self.window, title=self.title, widthHeight=self.size)
cmds.rowColumnLayout(numberOfColumns=1,adjustableColumn = True)#Layout1
cmds.text(width=100, height=20, label= 'Select Model for Tile', backgroundColor=[0,255,0])
cmds.setParent('..')
cmds.rowColumnLayout(numberOfColumns=1, adjustableColumn = True)#Layout2
cmds.text(width=200, height=20, label='Rotate & Position Model on Z axis:',backgroundColor=[255,165,0])
cmds.setParent('..')
cmds.rowColumnLayout(numberOfColumns=2, adjustableColumn= True)#Layout3
cmds.text(width=80, height=20, label='Row')
cmds.separator
self.rowamount = cmds.intSliderGrp(width=150, height=12.5, field=True, minValue=0, maxValue=999, value=1)
cmds.setParent('..')
cmds.rowColumnLayout(numberOfColumns=2, adjustableColumn = True)#Layout4
cmds.text(width=80, height=20, label='Column')
cmds.separator
self.columnamount = cmds.intSliderGrp(width=150, height=12.5, field=True, minValue=0, maxValue=999, value=1)
cmds.setParent('..')
cmds.rowColumnLayout(numberOfColumns=2, adjustableColumn = True)#Layout5
cmds.text(width=80, height=20, label='Height Offset')
cmds.separator
self.heightoffset = cmds.intSliderGrp(width=150, height=12.5, field=True, minValue=1.5, maxValue=4, value=1.5)
cmds.setParent('..')
cmds.rowColumnLayout(numberOfColumns=1, adjustableColumn = True)
self.tileName = cmds.textFieldGrp( label='Tile Name:')
cmds.rowColumnLayout(numberOfColumns=1, adjustableColumn = True)#Layout6
self.tileCreateBtn = cmds.button(label='Create', width=80, height=15, command=self.createTile)
cmds.showWindow()
def createTile (self, *args):
numberOfRows = cmds.intSliderGrp(self.rowamount, query=True, value=True)
numberOfColumns = cmds.intSliderGrp(self.columnamount, query=True, value=True)
amountOfHeightoffset = cmds.intSliderGrp(self.heightoffset, query=True, value=True)
name = cmds.textFieldGrp(self.tileName, query=True, text=True)
myWindow = TileWindow()
I know I have to define my tile, I was going to use a polyCube command, and non linear bend. Not really sure how to go about that. Or how to write the code to call upon the values from each slider.