Skocz do zawartości

Featured Replies

Napisano

Witam, mam mały problem ze skryptem rysującym tor. Skrypt jest jeszcze w fazie początkowej, ale już napotkałem pewien problem, którego nie potrafię rozwiązać. Polega on na tym, że po kliknięciu w przycisk rozpoczynający rysowanie, zostaje narysowana linia zgodnie z wybranym kierunkiem, lecz w momencie, gdy zmienię linie powiedzmy z poziomej na pionową i znowu kliknę na przycisk uruchamiający rysowanie odcinka, wyskakuje błąd:

 

>> MAXScript Rollout Handler Exception:

-- Type error: Call needs function or class, got: $Line:Line002 @ [-63.355549,-26.858475,0.000000]

 

Nie wiem co jest grane i jak to naprawić.

 

Kod skryptu

fn TOR startPKT typ kierunek dlugosc=(
   if(typ == 1) then
   (
       if(kierunek == 1) then
       (
           endPKT = [startPKT.x + dlugosc, startPKT.y, startPKT.z]--linia poziomo
           koniec = endPKT
       )
       else
       (
           endPKT = [startPKT.x, startPKT.y + dlugosc, startPKT.z]--linia pionowo
           koniec = endPKT
       )

       linia = line pos:startPKT
       addNewSpline linia
       addKnot linia 1 #smooth #line startPKT
       addKnot linia 1 #smooth #line endPKT
       updateShape linia
       tor = linia
       print tor
       print koniec
   )
   --return linia
)


Utility TworzTor "Rysuj tor"
(
   radioButtons typTor "Typ toru" labels:#(#Linia, #Luk) align:#left
   radioButtons kierTor "Kierunek toru" labels:#(#Poziomo, #Pionowo) align:#left
   spinner dlugosc "Dlugosc" range:[0,1000,200] align:#left
   spinner promien "Promien" range:[5,500,50] align:#left
   spinner kat "Kat" range:[0,90,45] align:#left
   button rysuj "Rysuj"

   local nazwa
   global koniec = 0

   on rysuj pressed do
   (    
       if (koniec == 0) then
           (
               PKTstart = pickPoint()
               TOR PKTstart typTor.state kierTor.state dlugosc.value --jezeli zaczynamy to wybieramy pkt rozpoczecia
           )
       else
           (
               TOR koniec typTor.state kierTor.state dlugosc.value --jezeli juz cos narysowane to start od konca narysowanego elementu
           )
   )
)



 

Wiem, że jest to zleksza niechlujne, ale narazie można powiedzieć, że jestem w fazie uczenia się maxscriptu. Chciałbym was również prosić o jakieś pomysły jak połączyć stworzoną linię z łukiem, który można również będzie wykonać w tym skrypcie(w późniejszym etapie). Ewentualnie jeżeli znacie jakiś prosty sposób na wykonanie toru, który będzie posiadał "gładkie" zakręty, to byłbym bardzo wdzięczny za jakieś podpowiedzi.

  • Wyświetleń 1,3k
  • Created
  • Ostatniej odpowiedzi

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

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności