Randomly swaps the positions (but not rotation) of selected objects. I use it to save time populating parking lots - by creating groups of identical cars - then running shuffle to get the random distribution.
Script
Shuffle
By Jon Seagull · 2006-10-21
- Version requirement
- 7; 6; 5; 4
- Votes
- 8
- Homepage
- http://www.jonseagull.com/
- Download
- Download
Description
Additional Info
Tags: random
Comments (12)
herbap · 2018-10-15
huge time saver!
thanks a lot
solution - swap two strings
k2000 · 2013-01-28
plist = for i in 1 to selection.count collect selection[i].pos
rlist = for i in 1 to selection.count collect selection[i].rotation
for i in selection do
(
local theidx = (random 1 plist.count)
i.rotation = rlist[theidx]
i.pos = plist[theidx]
deleteitem plist theidx
deleteitem rlist theidx
)
now fully working, keeps original object rotation
k2000, u contradict o.s.
Anubis · 2013-01-28
first u say "doesn't work" even if not true, then did what I said ("uncomment them"), and now u post the original script with uncommented lines, as u want to looks like u solve it?... very *funny*... and as not see simple "thanks" will consider my future help to you.
2 Anubis - just "uncomment" doesn't work
k2000 · 2013-01-28
just "uncomment" doesn't work properly - all objects loose their places!
I asked this question on maxscript forum - one guy gave me solution
see the link below, it shows what exactly I need
http://clip2net.com/s/2Lchr
cars must shuffle in all parking rows
P.S. I tried your other script strings - that doesn't work for me
P.P.S. uncomment and swap 2 strings - different
k2000, we both need to correct yourself
Anubis · 2013-01-29
and after reading this post, I hope you'll see why and that will end this debate ;)
I'm not "swap stings" but Values (Pos/Rot), and I not agree with this statement. The whole difference btw my code and Jon's script is that I use built-in Swap function, that do exactly what it's name say (w/o need of extra coding).
But don't worry, I see what I miss - 1st need to swap #rotation and then #position, so shortly, if you run my commands in swapped order, it s'd work as you expect:
cnt = selection.count
for obj in selection do
(swap obj.rotation selection[random 1 cnt].rotation)
for obj in selection do
(swap obj.pos selection[random 1 cnt].pos)k2000 · 2013-01-27
found new tool - it can replace and keep original rotation
http://www.scriptattack.com/maxscripts/superpainter/superpainter_eng.zip
see my result here
http://clip2net.com/s/2Lchr
just add instances to dialog box
then select all objects you need to replace/swap
and press RS button
Button RS - replaces Selected Objects with Clones of Source objects. Hold Ctrl when pressing to clone only selected in the list source objects. Old objects will be deleted, new clonings will be selected. Clonings inherits position and orientation of replacements, if MRS-transformation are turned on then scripts applies it too. Source objects are impossible to replace, script automatically deselects them when you press RS button.
rotation
k2000 · 2013-01-26
can we add option - swap rotation as well?
would be perfect script!!!
Hi k2000
Anubis · 2013-01-26
I see that this script already has a lines of code for rotation, you just need to uncomment them by removing "--", or try this:
cnt = selection.count
for obj in selection do
(swap obj.pos selection[random 1 cnt].pos)
for obj in selection do
(swap obj.rotation selection[random 1 cnt].rotation)k2000 · 2013-01-27
I tried that - doesn't work
that's why author said "no rotation"
i think it's more complex than just a couple of strings and he put "--"
can it shuffle on a line like a spacing tool?:)
crystal3d · 2011-12-09
would be great
vsai · 2008-05-01
Simple, Effective :) One of those i didn't realize i needed it scripts!
sergo · 2008-04-11
Marvelous thing!