Strategija pri rešavanju problema bila je da se za bilo koji nacrtan mesh terena, prepozna određena visina kojoj će se dodeliti željena boja. Kao reakcija na prepoznatu visinu jednog segmenta mesha, Max treba da napravi „box“, odnosno pločicu određene boje.

Na početku skripte potrebno je definisati sve globalne promenljive (koje će se koristiti kroz celu skriptu) kao što su dužina, širina i visina Mesha i njegov maksimum i minimum. Takođe se definiše širina i dužina jednog segmenta Mesha.
duzinaMesha = $.max.x – $.min.x,
sirinaMesha = $.max.y – $.min.y,
visinaMesha = $.max.z – $.min.z,
maksMesha = $.max.z,
miniMesha = $.min.z,
pozicijaMeshaX = $.pos.x,
pozicijaMeshaY = $.pos.y,
objekat = $,
sirina = sirinaMesha / JK.value,
duzina = duzinaMesha / JR.value,
Formiranjem „for“ petlje je omogućen prolazak kroz svaki segment u koloni, a zatim i u redovima dodavanjem promenljive „duzina“ posle svakog prolaska kroz celu kolonu (da bi se prešlo u novu kolonu)
Da bi se svaki segment registrovao korišćen je zrak „ray“ koji je definisan u suprotnom smeru od z-ose kako bi presekao dati Mesh.
zrak = ray [Xobj, Yobj, 1000] [0, 0, -1]
pozicijaZrak = (intersectRay objekat zrak)
Sledeće naredbe se izvršavaju samo na mestima na kojima dolazi do presecanja zraka i Mesha.
if pozicijaZrak != undefined do
(……..
U Materijal Editor-u formiramo 6 boja u prvih šest polja (u primeru su korišćene nijanse od bele do tamno zelene).Zatim pomoću „if“ petlje definišemo „poziciju z“, odnosno visinu Mesha na mestu presecanja sa zrakom, i u zavisnosti od te visine dodelimo određenu boju iz Material Editor-a. Ova operacija se ponavlja 6 puta za šest različitih visina, odnosno boja. (Ukupna visina Mesha je podeljenja na šest šestina)
if pozicija.z < (miniMesha + visinaMesha/6) then
( materijal = meditMaterials[1] )
else…ponavlja se samo se visinaMesha množi sa {2, 3, 4, 5 i6}
Na kraju je definisan „box“ , tj pločica određene visine, dužine, debljine i materijala.
box length: sirina width: duzina height: visina.value pos:pozicijaObj lengthsegs:1 widthsegs:1 wirecolor:black material:materijal
Cela ova skripta je upakovana u „rollout“, dijalog kojim se jednostavnije mogu menjati parametri (broj pločica u koloni/redu i njena debljina). Klikom na dugme „Popločaj“ izvršava se funkcija date skripte. Ako Mesh nije selektovan izadje poruka za podsećanje.
rollout Poplocanje “Plocice”
( spinner JK “Br. u koloni: ” type:#integer range:[1,1000,30]
spinner JR “Br. u redu: ” type:#integer range:[1,1000,30]
spinner visina “Debljina plocice: ” type:#integer range:[1,1000,2]
button napravi “Poplocaj”
on napravi pressed do
if $ != undefined then
(……)
else
(messageBox “A da selektujes nesto mozda?”)
— rollouta
createDialog Poplocanje width:200 — otvara dijalog
