Jump to content
  • 0

maxscript na na zmiane wierzchołkow splajna - pomocy


Question

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

Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

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.

  • Confused 1
Link to post
Share on other sites
  • 0

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

Link to post
Share on other sites
  • 0

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

)

)

Link to post
Share on other sites
  • 0

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 ?

Edited by gregkilla
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We are using cookies. Read about our Privacy Policy