lechoo Napisano 13 Styczeń 2004 Napisano 13 Styczeń 2004 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 \"- :\"
lechoo Napisano 13 Styczeń 2004 Autor Napisano 13 Styczeń 2004 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.
dr Ug Napisano 13 Styczeń 2004 Napisano 13 Styczeń 2004 Hmm... moze slaba frekwencja jest wynikiem noworocznej sennosci i slabego rozreklamowania samego kursu. Jezeli zgodzisz sie dalej go prowadzic, to obiecuje zadbac o uczestnikow:)
VGT Napisano 13 Styczeń 2004 Napisano 13 Styczeń 2004 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ć ;)
dr Ug Napisano 13 Styczeń 2004 Napisano 13 Styczeń 2004 Heh, no nie bede zaciagal wolami, ino odpowiednio rozglosze;)
lechoo Napisano 14 Styczeń 2004 Autor Napisano 14 Styczeń 2004 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.
VGT Napisano 15 Styczeń 2004 Napisano 15 Styczeń 2004 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
Rekomendowane odpowiedzi
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ę