Professional Documents
Culture Documents
my_tool.py
logs:
1.0.1: Added different shapes to the tool - 28 Oct, 2015
Instructions:
1. Open tool
2. Select shape
3. Select radius, height, width etc for chosen shape(s)
4. Click Run
"""
import pymel.core as pm
import random
DEFAULT_RADIUS_OV = "ui_default_radius_ov"
DEFAULT_TORUS_RADIUS_OV = "ui_torus_default_radius_ov"
DEFAULT_CUBE_WIDTH_OV = "ui_cube_width_ov"
DEFAULT_CUBE_HEIGHT_OV = "ui_cube_height_ov"
DEFAULT_CUBE_DEPTH_OV = "ui_cube_depth_ov"
DEFAULT_CYLINDER_RADIUS_OV = "ui_cylinder_radius_ov"
DEFAULT_CYLINDER_HEIGHT_OV = "ui_cylinder_height_ov"
DEFAULT_CONE_RADIUS_OV = "ui_cone_radius_ov"
DEFAULT_CONE_HEIGHT_OV = "ui_cone_height_ov"
Args:
sphere_radius: Radius for sphere
torus_radius: Radius for torus
cube_width: width for cube
cube_height: height for cube
cube_depth: depth for cube
cylinder_radius: Radius for cylinder
cylinder_height: Height for cylinder
cone_radius: Radius for cone
cone_height: Height for cone
'''
i = 0
j = 0
#add if else statement for options for polygon shapes
spheres = []
for i in range(10):
result = pm.polySphere(radius=sphere_radius, subdivisionsX=20,
subdivisionsY=20, axis=[0,1,0], createUVs=2)
spheres.append(result[0])
for item in spheres:
x = random.randint(0,10)
y = random.randint(0,10)
z = random.randint(0,10)
pm.move(item, [x,y,z])
torus = []
for i in range(10):
result = pm.polyTorus(radius=torus_radius, subdivisionsX=20,
subdivisionsY=20, axis=[0,1,0], createUVs=2)
torus.append(result[0])
for item in torus:
x=random.randint(0, 10)
y=random.randint(0, 10)
z=random.randint(0, 10)
pm.move(item, [x, y , z])
cubes = []
#add sliders for 3 values
for i in range(10):
result = pm.polyCube(width=cube_width, height=cube_height,
depth=cube_depth, subdivisionsX=1, subdivisionsY=1, subdivisionsZ=1,
axis=[0,1,0], createUVs=4)
cubes.append(result[0])
for item in cubes:
x=random.randint(0, 10)
z=random.randint(0, 10)
pm.move(item, [x, 0 , z])
cylinders = []
#add 2 sliders
for i in range(10):
result = pm.polyCylinder(radius=cylinder_radius,
height=cylinder_height, subdivisionsX=20, subdivisionsY=1,
subdivisionsZ=1, axis=[0,1,0], createUVs=3)
cylinders.append(result[0])
for item in cylinders:
x=random.randint(0, 10)
z=random.randint(0, 10)
pm.move(item, [x, 0 , z])
cones = []
#add 2 sliders
for i in range(10):
result = pm.polyCone(radius=cone_radius, height=cone_height,
subdivisionsX=20, subdivisionsY=1, subdivisionsZ=0, axis=[0,1,0],
createUVs=3)
cones.append(result[0])
for item in cones:
x=random.randint(0, 10)
y=random.randint(0, 10)
z=random.randint(0, 10)
pm.move(item, [x, y , z])
def ui():
'''
This function is the main UI for the tool
'''
window_title = 'My_window'
window_name = 'my_Window'
width = 100
height = 100
default_radius = 1.0
default_torus_radius = 1.0
default_cube_width = 1.0
default_cube_height = 1.0
default_cube_depth = 1.0
default_cylinder_radius = 2.0
default_cylinder_height = 3.0
default_cone_radius = 2.0
default_cone_height = 3.0
#option variable dictionary to set preferance
radius_min = 0
radius_max = 10
radius = default_radius
torus_radius = default_torus_radius
cube_width = default_cube_width
cube_height = default_cube_height
cube_depth = default_cube_depth
cylinder_radius = default_cylinder_radius
cylinder_height = default_cylinder_height
cone_radius = default_cone_radius
cone_height = default_cone_height
if pm.window('my_Window', exists=True):
pm.deleteUI('my_Window')
window = pm.window(window_name,
title=window_title,
widthHeight=(width, height),
sizeable=True
)
if DEFAULT_RADIUS_OV in pm.optionVar:
radius = pm.optionVar[DEFAULT_RADIUS_OV]
if DEFAULT_TORUS_RADIUS_OV in pm.optionVar:
torus_radius = pm.optionVar[DEFAULT_TORUS_RADIUS_OV]
if DEFAULT_CUBE_WIDTH_OV in pm.optionVar:
cube_width = pm.optionVar[DEFAULT_CUBE_WIDTH_OV]
if DEFAULT_CUBE_HEIGHT_OV in pm.optionVar:
cube_height = pm.optionVar[DEFAULT_CUBE_HEIGHT_OV]
if DEFAULT_CUBE_DEPTH_OV in pm.optionVar:
cube_depth = pm.optionVar[DEFAULT_CUBE_DEPTH_OV]
if DEFAULT_CYLINDER_RADIUS_OV in pm.optionVar:
cylinder_radius = pm.optionVar[DEFAULT_CYLINDER_RADIUS_OV]
if DEFAULT_CYLINDER_HEIGHT_OV in pm.optionVar:
cylinder_height = pm.optionVar[DEFAULT_CYLINDER_HEIGHT_OV]
if DEFAULT_CONE_RADIUS_OV in pm.optionVar:
cone_radius = pm.optionVar[DEFAULT_CONE_RADIUS_OV]
if DEFAULT_CONE_HEIGHT_OV in pm.optionVar:
cone_height = pm.optionVar[DEFAULT_CONE_HEIGHT_OV]
col_layout = pm.columnLayout(adj=True)
row_layout = pm.rowLayout(numberOfColumns=2,
columnWidth2=(50, 50 ),
adjustableColumn1=2,
adjustableColumn2=2,
columnAlign=(1, 'right'),
columnAttach=[(1, 'both', 0), (2, 'both',
0)],
parent=col_layout)
slider=sphere_radius_slider,
torus_slider=torus_radius_slider,
cube_h_slider=cube_height_slider,
cube_d_slider=cube_depth_slider,
cube_w_slider=cube_width_slider,
cylinder_r_slider=cylinder_radius_slider,
cylinder_h_slider=cylinder_height_slider,
cone_r_slider=cone_radius_slider,
cone_h_slider=cone_height_slider))
close_button = pm.button(label="close",
command=pm.Callback(window.delete))
window.show()
window.setWidthHeight((width, height))