Zobacz pełną wersję : [MAXScript] Błąd podczas tworzenia linii



Garsija
10-01-12, 23:33
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.