You are on page 1of 7

"""

my_tool.py

Tool to populate the scene with required objects and density.

__author__ = "Utsav Jamwal"


__copyright__ = "Copyright 2015, Utsav Jamwal"
__version__ = "1.0.0"
__maintainer__ = "Utsav Jamwal"
__email__ = "utsavjindbl824@gmail.com"
__status__ = "Ready"

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"

def my_tool( sphere_radius, torus_radius, cube_width, cube_height,


cube_depth, cylinder_radius, cylinder_height, cone_radius, cone_height):
'''
This is the main fucntion which randomly populates the scene with
selected objects.

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 on_click_run(slider, torus_slider):


'''
This function stores variables to prefereance list
'''
default_radius = slider.getValue()
default_torus_radius = torus_slider.getValue()
pm.optionVar[DEFAULT_RADIUS_OV] = default_radius
pm.optionVar[DEFAULT_TORUS_RADIUS_OV] = default_torus_radius
pm.optionVar[DEFAULT_CUBE_WIDTH_OV] = default_cube_width
pm.optionVar[DEFAULT_CUBE_HEIGHT_OV] = default_cube_height
pm.optionVar[DEFAULT_CUBE_DEPTH_OV] = default_cube_depth
pm.optionVar[DEFAULT_CYLINDER_RADIUS_OV] = default_cylinder_radius
pm.optionVar[DEFAULT_CYLINDER_HEIGHT_OV] = default_cylinder_height
pm.optionVar[DEFAULT_CONE_RADIUS_OV] = default_cone_radius
pm.optionVar[DEFAULT_CONE_HEIGHT_OV] = default_cone_height
my_tool(sphere_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)

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)

sphere_radius_slider = pm.floatSliderGrp(label='Sphere Radius',


field=True,
minValue=radius_min,
maxValue=radius_max,
fieldMinValue=-100.0,
fieldMaxValue=100.0,
value=radius,
adj=True)

torus_radius_slider = pm.floatSliderGrp(label='Torus Radius',


field=True,
minValue=radius_min,
maxValue=radius_max,
fieldMinValue=-100.0,
fieldMaxValue=100.0,
value=torus_radius,
adj=True)

cube_depth_slider = pm.floatSliderGrp(label='Cube Depth',


field=True,
minValue=radius_min,
maxValue=radius_max,
fieldMinValue=-100.0,
fieldMaxValue=100.0,
value=cube_depth,
adj=True)

cube_height_slider = pm.floatSliderGrp(label='Cube Height',


field=True,
minValue=radius_min,
maxValue=radius_max,
fieldMinValue=-100.0,
fieldMaxValue=100.0,
value=cube_height,
adj=True)

cylinder_radius_slider = pm.floatSliderGrp(label='Cylinder Radius',


field=True,
minValue=radius_min,
maxValue=radius_max,
fieldMinValue=-100.0,
fieldMaxValue=100.0,
value=cylinder_radius,
adj=True)

cylinder_height_slider = pm.floatSliderGrp(label='Cylinder Height',


field=True,
minValue=radius_min,
maxValue=radius_max,
fieldMinValue=-100.0,
fieldMaxValue=100.0,
value=cube_depth,
adj=True)

cube_width_slider = pm.floatSliderGrp(label='Cube Width',


field=True,
minValue=radius_min,
maxValue=radius_max,
fieldMinValue=-100.0,
fieldMaxValue=100.0,
value=cube_width,
adj=True)
cone_radius_slider = pm.floatSliderGrp(label='Cone Radius',
field=True,
minValue=radius_min,
maxValue=radius_max,
fieldMinValue=-100.0,
fieldMaxValue=100.0,
value=cone_radius,
adj=True)

cone_height_slider = pm.floatSliderGrp(label='Cone Height',


field=True,
minValue=radius_min,
maxValue=radius_max,
fieldMinValue=-100.0,
fieldMaxValue=100.0,
value=cone_height,
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)

run_button = pm.button(label="run", command=pm.Callback(on_click_run,

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

You might also like