Skocz do zawartości

Problem z tworzeniem SplineShape'ów


szarLej

Rekomendowane odpowiedzi

Witam. Próbuję tworzyć coś w skrypcie i mam taki problem: nie mogę stworzyć otworów(okrągłych) w moim kształcie dokładnie w extrudowanym circle. Mam jakiś tam kod a tworzenie dziurek chciałem zrobić tak:

local kolo1

local temp1 = [10,10,0]

local temp2 = [-10,10,0]

local temp3 = [10,-10,0]

local temp4 = [-10,-10,0]

 

if (IsValidNode kolo1) then delete kolo1

kolo1= circle radius:3 wirecolor:[255,255,255] name:"Kolo1" pos:((pozycja_Kolo1 - temp1))

convertToSplineShape kolo1

updateShape kolo1

 

if (IsValidNode kolo1) then delete kolo1

kolo1= circle radius:3 wirecolor:[255,255,255] name:"Kolo1" pos:(pozycja_Kolo1 - temp2)

convertToSplineShape kolo1

updateShape kolo1

 

if (IsValidNode kolo1) then delete kolo1

kolo1= circle radius:3 wirecolor:[255,255,255] name:"Kolo1" pos:(pozycja_Kolo1 - temp3)

convertToSplineShape kolo1

updateShape kolo1

 

if (IsValidNode kolo1) then delete kolo1

kolo1= circle radius:3 wirecolor:[255,255,255] name:"Kolo1" pos:(pozycja_Kolo1 - temp4)

convertToSplineShape kolo1

updateShape kolo1

 

…..potem mam takie coś

local kolo1_splajn01 = addnewspline kolo1

…jakieś operacje i na końcu zamykam je

close kolo1 kolo1_splajn01

 

W takim przypadku widoczna jest jedna dziura tzn pozostałe są stworzone ale są niewidoczne. Próbowałem wycinać linijki z if –em czy updatem i inne cuda ale nic mi nie wychodzi a dopiero poznaję maxScripta. Dziękuję za każdy pomysł ew rozwiązanie :) . Pozdrawiam cout

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 5
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Dobra poddaję się :( addnewspline pokonało mnie. Wkleję kod żeby było widać co źle robię. Proszę bluzgać i pisać co i jak powinno być :) Mam też parę pytań: addnewspline zwraca jakiś index, który wykorzystujemy w addknot. Mi cały czas pokazuje się błąd "shape spline index out of range: 2" Czy te wszystkie splineshape'y dodajemy newsplinem do jakiegoś elementu zbiorczego, który potem "wyrzucamy" na ekran razem z nowymi knot'ami?? Ogólnie jak się posługiwać tymi funkcjami w przypadku kilku obiektów. Dziękuję z góry za każdą odp

 

rollout glowne "Ustawienia"
(
local  dziura01
local  dziura02
local  dziura03
local  dziura04
local  kolo_splajn01
local  pozycja_kolo01= [0,0,0]
local  r = 50
local  kat
local plusminus = 1


Group "Kolo"
(
button nowe_kolo "Nowe kolo"
)


fn stworz_kolo = 
(
--dziury	

	local temp = [10,10,0]
	if (IsValidNode dziura01 ) then delete dziura01 
	dziura01 = circle radius:3 wirecolor:[255,255,255] name:"dziura01 " pos:(pozycja_kolo01 - temp)
	convertToSplineShape dziura01 
	updateShape dziura01 

	local temp2 = [-10,10,0]
	if (IsValidNode dziura02) then delete dziura02
	dziura02= circle radius:3 wirecolor:[255,255,255] name: "dziura02" pos:(pozycja_kolo01 - temp2)
	convertToSplineShape dziura02
	updateShape dziura02

	local temp3 = [10,-10,0]
	if (IsValidNode dziura03) then delete dziura03
	dziura03= circle radius:3 wirecolor:[255,255,255] name:"dziura03" pos:(pozycja_kolo01- temp3)
	convertToSplineShape dziura03
	updateShape dziura03

	local temp4 = [-10,-10,0]
	if (IsValidNode dziura04) then delete dziura04
	dziura04= circle radius:3 wirecolor:[255,255,255] name: "dziura04" pos:(pozycja_kolo01- temp4)
	convertToSplineShape dziura04
	updateShape dziura04

if (IsValidNode kolo_splajn01) then delete kolo_splajn01
	kolo_splajn01 = splineshape wirecolor:[255,255,255] name:(uniqueName "Kolo") pos:pozycja_kolo01

convertToSplineShape kolo_splajn01
updateShape kolo_splajn01 	

local d1 = addnewspline dziura01
d1 = addnewspline dziura02
d1 = addnewspline dziura03
d1 = addnewspline dziura04

for i in 1 to (4) do
(
kat = i * 360 / 4
if (plusminus == 1) then (plusminus = (-1)) else (plusminus = 1)
addknot kolo_splajn01 d1 #corner #line [ (r*cos(kat)*plusminus), (r*sin(kat)*plusminus), 0]
)

close kolo_splajn01 d1

select #($dziura02, $dziura03, $dziura04, $Kolo01, $'dziura01 ')

modPanel.addModToSelection (Extrude ()) ui:on
)


on nowe_kolo pressed do
(
stworz_kolo()
)

)

rollfloater = newRolloutFloater "Okienko" 220 300
addrollout glowne rollfloater

Odnośnik do komentarza
Udostępnij na innych stronach

Miales zly argument w addnewspline, teraz w addknot podajesz caly czas ten sam index splajna: 1. Ponizej masz kawalek kodu w ktorym wprowadzilem zmiany.

addnewspline nie dodaje istniejacego splajna do innego, dodaje raczej pusty obiekt bedacy pojemnikiem na splajny do ktorego dopiero nalezy cos wpisac, w addknot podajesz index tego pojemnika.

local d1 = addnewspline kolo_splajn01
/*d1 = addnewspline dziura02
d1 = addnewspline dziura03
d1 = addnewspline dziura04*/

for i in 1 to (4) do
(
kat = i * 360 / 4
if (plusminus == 1) then (plusminus = (-1)) else (plusminus = 1)
addknot kolo_splajn01 1 #corner #line [ (r*cos(kat)*plusminus), (r*sin(kat)*plusminus), 0]
)

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