Skocz do zawartości

Kurs MAX Script - temat 7 - podsumowanie


lechoo

Rekomendowane odpowiedzi

Z malym poslizgiem ale podsumowanie jest. Biorac pod uwage frekwencje, mysle ze czas konczyc kurs, zatem uzaje tamat 7 za ostatni. A teraz moj skrypt.

 

clearlistener()

utility clock \"Clock\"

(

local h,m

pickbutton h_pointer \"Hour pointer\" width:100

pickbutton m_pointer \"Minute pointer\" width:100

radiobuttons rot_axis \"Rotation axis\" labels:#(\"X\",\"Y\",\"Z\")

spinner hour \"Hour: \" type:#integer range:[0,23,14] fieldwidth:40

spinner minute \"Minute: \" type:#integer range:[0,59,25] fieldwidth:40

button set_time \"Set time\" width:140

button sys_time \"Set system time\" width:140

 

fn get_angles hrs mins =

(

m = (mins/60.0)

if (hrs >= 12) then h = hrs - 12

else h = hrs

h = (h/12.0)*360.0 + (360.0/12.0*m)

m *= 360.0

)

 

on h_pointer picked obj do

(

h_pointer.text = obj.name

)

on m_pointer picked obj do

(

m_pointer.text = obj.name

)

 

 

on set_time pressed do

(

get_angles (hour.value) (minute.value)

case rot_axis.state of

(

1: h_pointer.object.rotation = eulerangles h 0 0

2: h_pointer.object.rotation = eulerangles 0 h 0

3: h_pointer.object.rotation = eulerangles 0 0 h

)

case rot_axis.state of

(

1: m_pointer.object.rotation = eulerangles m 0 0

2: m_pointer.object.rotation = eulerangles 0 m 0

3: m_pointer.object.rotation = eulerangles 0 0 m

)

)

 

on sys_time pressed do

(

time_str = filterString localtime \"- :\"

get_angles (time_str[4] as integer) (time_str[5] as integer)

case rot_axis.state of

(

1: h_pointer.object.rotation = eulerangles h 0 0

2: h_pointer.object.rotation = eulerangles 0 h 0

3: h_pointer.object.rotation = eulerangles 0 0 h

)

case rot_axis.state of

(

1: m_pointer.object.rotation = eulerangles m 0 0

2: m_pointer.object.rotation = eulerangles 0 m 0

3: m_pointer.object.rotation = eulerangles 0 0 m

)

)

)

 

Funkcja get_angles sluzy do przeliczania czasu na katy obrotu wskazowek. Mozna tam sporo uproscic ale dla jasnosci zapisu postanowilem to tak zostawic.

Drugie ciekawe miejsce to odzyskiwanie godziny i minut z funkcji localTime. jesli zwrocony przez nia czas bedzie np. taki : 2004-01-13 08:42:22 to wystarczy podzielic tego stringa na czesci w miejscach gdzie pojawiaja sie \"-\", \":\" i spacja. W efekcie dostaniemy tablice stringow gdzie na pierwszej pozycji bedzie 2003, na drugiej 01 itd. Nas beda interesowaly pozycje 4 i 5. Sluzy do tego polecenie filterString.

 

time_str = filterString localtime \"- :\"

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 6
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

Autor: VGTsXVII

macroscript zegar category:\"kurs maxscript\" tooltip:\"Zegar\"

(

local obiekt1

local obiekt2

rollout roll \"clock\"

(

pickbutton pierwszy \"pick_minuty\" width:75 height:30

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

spinner godz \"Godz:\" range:[0,23,0] align:#center fieldwidth:30 type:#integer across:2

spinner min \"Min:\" range:[0,59,0] align:#center fieldwidth:30 type:#integer across:1

checkbox kierunek \"przod / tyl\" checked:true align:#center

radiobuttons os labels:#(\"X\",\"Y\",\"Z\")

button start \"ustaw\"

on pierwszy picked obj do

(

obiekt1=obj

pierwszy.text = obj.name

)

on drugi picked obj do

(

obiekt2=obj

drugi.text = obj.name

)

on start pressed do undo on

(

--obracanie wskazowki minut

wart_obrot = min.value*6+godz.value*360

if kierunek.checked == true then wart_obrot = -wart_obrot

if os.state == 1 then rotate obiekt1 wart_obrot x_axis

if os.state == 2 then rotate obiekt1 wart_obrot y_axis

if os.state == 3 then rotate obiekt1 wart_obrot z_axis

--obracanie wskazowki godzin

wart_obrot = godz.value*30+min.value*0.5

if kierunek.checked == true then wart_obrot = -wart_obrot

if os.state == 1 then rotate obiekt2 wart_obrot x_axis

if os.state == 2 then rotate obiekt2 wart_obrot y_axis

if os.state == 3 then rotate obiekt2 wart_obrot z_axis

destroydialog roll

completeredraw()

)

)

createdialog roll width:200 height:200

)

 

W tym skrypcie zwroccie uwage na checkboxa \"przod / tyl\". Dzieki niemu mozna zmienic kierunek obrotu wskazowek co moze byc bardzo przydatne.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie trudno zauważyć, że frekwencja stopniowo w kolejnych tematach spadała :|

 

Przyczyną pewnie też jest to, że w początkowych zadaniach wystarczyło 15-20 minut aby je wykonać, teraz trzeba nieco więcej kombinowania.... no i jego możliwości wciąż sa niedoceniane :)

 

Rozumiem także, że prowadzenie kursu dla jednej osoby mija się z celem, ale byłbym za rozpatrzeniem propozycji DruG\'a :)

...aż boję się pomysleć, jak on planuje to zrobić ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Mysle ze nie ma sensu ciagnac kursu na sile, gdyby frekwencja miala byc wieksza to pewnie by byla. Kurs trwa juz od jakiegos czasu, wiec to chyba nie jest kwestia odpowiedniego rozgloszenia.

Tak czy inaczej mam nadzieje ze pare osob na tym skorzystalo, ja tez sie troche nauczylem sprawdzajac te wszystkie skrypty.

Odnośnik do komentarza
Udostępnij na innych stronach

te najlepsze rzeczy szybko się kończą... :)

 

Tak więc na koniec pozostaje mi tylko podziękować za świetny kurs. Przez te 7 tematów poznałem MAX\'a od zupełnie nowej strony, sporo się nauczyłem, co znacznie poszerzyło moje możliwości i...

pozostał apetyt na więcej i chęć drążenia dalej :)

Więc w moim przypadku kurs z pewnością odniósł sukces :]

 

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

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