gregkilla Napisano 27 Listopad 2008 Share Napisano 27 Listopad 2008 Witam, jestem zielony w maxscripcie ale bardzo zalezy mi na zrobieniu takiego, aby zaznaczal wszystkie wierzcholki danego splajna i zmienial je na corner (wiem, wiem, prawy przycisk myszy i zaznaczenie corner - problem polega na tym ze przy duzej ilosci splajnow powtarzanie tej samej czynnosci jest meczace). Po studiowaniu helpa wywnioskowalem cus takiego: s = splineShape () subobjectLevel = 1 actionMan.executeAction 0 "40021" -- Selection: Select All setKnotType s 1 1 #corner updateShape s actionMan.executeAction 0 "40043" -- Selection: Select None subobjectLevel = 0 "Prawie" dziala ;] tzn. wyskakuje blad w jednej linijce: $Editable_Spline:Shape11 @ [0.000000,0.000000,0.000000] 1 true -- Runtime error: shape spline index out of range: 1 OK true 0 blad popelniam w linijce : setKnotType s 1 1 #corner ale na litosc nie wiem co mam tu wpisac pomocy Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
pchela1313 Napisano 27 Listopad 2008 Share Napisano 27 Listopad 2008 Witam, maxScript nie musi mieć zaznaczonych obiektów żeby wykonywać na nich operacje. Wystarczy mu, że wie co ma z czym zrobić. Najpierw, pokaże Tobie gdzie jest błąd w Twoim skrypcie: s = splineShape () - tutaj tworzysz linię, która nie ma żadnego wierchołka actionMan.executeAction 0 "40021" -- Selection: Select All - tutaj karzesz maxowi zaznaczyć wszystkie wierzchołki na lini setKnotType s 1 1 #corner - a tutaj z kolei, ma on zamienić pierwszy wierzchołek (którego nie ma) na corner I właśnie to samo on stara się ci powiedzieć - "shape spline index out of range: 1". Czyli- "W lini jaką mi pokazałeś nie ma wierzchołka o numerze 1" Jeśli przyjrzeć się dokładniej jak wygląda funkcja, z której korzystasz: getKnotType (#smooth | #corner | #bezier | #bezierCorner ) = spline = numer splinu w spline:P (jak masz spline to mozesz tam mieć kilka lini, np jak użyjesz przycisku attach = numer wierzchołku (#smooth | #corner | #bezier | #bezierCorner ) = typ na jaki chcesz zamienić wierzchołek Zatem żeby zrobić skrypt, który będzie zamieniał wierzchołki trzeba przejść przez takie kroki: 1. Stworzyć zbiór wybranych przez Ciebie linii (w maxscript nazywa się to array) 2. Dla każdej linii w tym zbiorze sprawdzić czy ile jest tam linii 3. Dla Każdej wewnętrznej linii, okreslić ile ona ma wierzchołków 4. Dla każdego wierzchołka w każdej wewnętrznej linii zmienić tym z #smooth na #corner Czyli zakładając, że wybierasz na raz tylko linie a nie np Geometrie, kości, helpery itd, skrypt powinien wyglądac tak: b=selection as array for s in b do ( for o = 1 to (numSplines s) do ( for i = 1 to (numKnots s o) do ( setKnotType s o i #corner ) ) updateshape s ) Pozdrawiam, i Życzę miłej zabawy ze skryptowaniem w maxie. 1 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
gregkilla Napisano 27 Listopad 2008 Autor Share Napisano 27 Listopad 2008 bardzo bardzo dziekuje ale zdolalem odniesc polowiczny sukces. tzn. Twoj skrypt dziala w listenerze (f11 -> shift+enter) natomiast kiedy wrzucam go jako ikonke wyskakuje blad: --Syntax error: at name, expected ( --In line: b= Skrypt jaki wkleilem to: macroScript cornerknot category:"greg" b=selection as array for s in b do ( for o = 1 to (numSplines s) do ( for i = 1 to (numKnots s o) do ( setKnotType s o i #corner ) ) updateshape s ) Gdzie zrobilem blad? pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
pchela1313 Napisano 27 Listopad 2008 Share Napisano 27 Listopad 2008 Zapomniałeś dodać nawiasów na początku i końcu makra. Powinno być tak macroScript cornerknot category:"greg" ( b=selection as array for s in b do ( for o = 1 to (numSplines s) do ( for i = 1 to (numKnots s o) do ( setKnotType s o i #corner ) ) updateshape s ) ) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
gregkilla Napisano 28 Listopad 2008 Autor Share Napisano 28 Listopad 2008 (edytowane) super ekstra wielkie dzieki - ulatwiles mi zycie bardzo! i tak sobie mysle - skoro dales palec... ;] Gdybym chcial dodac do tego skryptu weldowanie wszystkich wierzcholkow musze dodac taka opcje: splineOps.weld czyli w tym konkretnym przypadku gdzie nalezaloby taka linijke wstawic? btw. czy jest jakis tutek dla hiper-poczatkujacych, ktory moglbys polecic ? Edytowane 28 Listopad 2008 przez gregkilla Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
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ę