Problem I’m solving
Sometimes you want to extrude polygons randomly, but it’s a manual task.
Solution
This script does the random extrude automatically with the given values.
Installation
- Simply just drag the InstallerDragnDrop.ms script to the viewport to install.
- Right-click on the toolbar > Customize…
- Choose the tab ‘Toolbars’
- In the Category: dropdown, select ‘ManniiCode’
- Drag the script to the toolbar where ever you want!
Code
from pymxs import runtime as rt
import random
rt.execute("fn b2a the_birray = (return the_birray as Array)")
def random_extrude(val_min, val_max):
selected_any = rt.getCurrentSelection()
if len(selected_any) > 0:
our_object = rt.getCurrentSelection()[0]
if rt.classOf(our_object) == rt.Editable_Poly:
#Extrude by Polygons
our_object.extrusionType = 2
selected_polygons = rt.polyop.getFaceSelection(our_object)
#Convert BitArray to Array
selected_polygons_array = list(rt.b2a(selected_polygons))
with pymxs.undo(True,""):
for i in selected_polygons_array:
#random integer
amount_to_extrude = random.randint(val_min, val_max)
our_object.EditablePoly.SetSelection("Face", rt.BitArray(i))
our_object.faceExtrudeHeight = amount_to_extrude
our_object.EditablePoly.buttonOp("Extrude")
#Select the extruded polygons
our_object.EditablePoly.SetSelection("Face", selected_polygons)
else:
rt.messageBox("The object needs to be EditablePoly")



