Skocz do zawartości

Kurs MAX Script - temat 6 - podsumowanie


Rekomendowane odpowiedzi

  • Odpowiedzi 7
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

Napisano

A teraz moja wersja:

 

utility copy_mod \"Copy modifiers\"

(

local mod_list_arr = #()

label lab1 \"Copy from:\" align:#left

pickbutton source \"Pick object\" width:140

label lab2 \"Copy to:\" align:#left

pickbutton targetP \"Pick object\" width:140

multiListBox mods_list \"Modifiers\"

button copy_mods \"Copy selected modifiers\" width:140

 

on source picked obj do

(

source.text = obj.name

for i in 1 to obj.modifiers.count do

(

append mod_list_arr ((classOf obj.modifiers) as string)

)

mods_list.items = mod_list_arr

)

 

on targetP picked obj do

(

targetP.text = obj.name

)

 

on copy_mods pressed do

(

for i in mods_list.selection.count to 1 by -1 do

(

if (mods_list.selection) then

(

addModifier targetP.object source.object.modifiers

)

)

)

)

 

W tym temacie tak naprawde chodzilo o nauczenie sie \"obslugi\" modyfikatorów przez max script wiec nie ma tu specjalnych fajerwerkow. Krotko opisze kilka ciekawszych fragmentow:

 

classOf obj.modifiers

W ten sposob sprawdzam klase modyfikatora (w tym wypadku jest ona jednoznaczna z nazwa)

by pozniej wrzucic ja do tablicy.

 

mods_list.items = mod_list_arr

Parametr items listboxa i multilistboxa przechowuje tablicę wszystkich pozycji wyswietlanych w tym elemencie listy. Aby zmienic wszystkie wyswietlane elementy przypisuje mu tablice z nazwami modyfikatorow.

 

for i in mods_list.selection.count to 1 by -1 do

\"by -1\" oznacza ze przebiegam tablice od tylu a robie tak zeby zachowac wlasciwa kolejnosc modyfikatorow. Gdyby nie to pierwszy modyfikator po skopiowaniu bylby ostatni, drugi przedostatni itd.

 

Na koniec ten sam skrypt w jednej linijce, bez interfejsu, wyboru modyfikatorow, samo kopiowanie.

for i in $Box01.modifiers.count to 1 by -1 do addModifier $Box02 $Box01.modifiers

Napisano

Autor: VGTsXVII

macroscript copy_modifiers category:\"kurs maxscript\" tooltip:\"kopiowanie modyfikacji\" icon:#(\"MergeAnim\",4)

(

--ustalenie obiektu zrodlowego

zazn = getcurrentselection()

obiekt = zazn[1]

--przygotowanie tablic

tab_mod = #()

tab_zazn = #()

--wstawienie danych do tablic

for i = 1 to obiekt.modifiers.count do

(

append tab_mod (obiekt.modifiers.name)

append tab_zazn i

)

rollout roll \"copy modifiers\"

(

--wyswietlenie listy modyfikacji

multilistbox lista_mod items:tab_mod selection:tab_zazn

--wybor drugiego obiektu

--###po wyborze automatycznie nastepuje skopiowanie wybranych modyfikacji

pickbutton drugi \"pick\" width:75 height:30

on drugi picked obiekt2 do undo on

(

for i = 1 to obiekt.modifiers.count do

if lista_mod.selection[obiekt.modifiers.count-i+1] == true then if validmodifier obiekt2 obiekt.modifiers[obiekt.modifiers.count-i+1] then addmodifier obiekt2 obiekt.modifiers[obiekt.modifiers.count-i+1]

destroydialog roll

completeredraw()

)

)

createdialog roll width:200 height:200

)

 

Tym razem wersja macroscriptowa. Sa tu dwa bardzo ciekawe elementy.

 

on drugi picked obiekt2 do undo on

(

--tu cos robimy

)

Dzieki \"undo on\" wszystkie operacje pomiedzy nawiasami bedzie mozna cofnac przy pomocy maxowego undo. Defaultowo operacje wykonywane przez max script nie sa dopisywane do listy undo. Jesli zapis nie jest dla was do konca jasny mozna to przepisac tak:

 

on drugi picked obiekt2 do

(

undo on

(

--tu cos robimy

)

)

 

if validmodifier obiekt2 obiekt.modifiers[obiekt.modifiers.count-i+1] then addmodifier obiekt2 obiekt.modifiers[obiekt.modifiers.count-i+1]

\"validmodifier\" sprawdza czy dany modyfikator mozna nalozyc na zadany obiekt. Na wszelki wypadek zawsze powinno sie to sprawdzac (o czym w swoim skrypcie zapomnialem :) ).

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności