Skocz do zawartości

[MaxScript] Blad przy wywolaniu funkcji


Pawelkos

Rekomendowane odpowiedzi

Witam

 

Ostatnio postanowilem zapoznac sie z MaxScriptem. Jako ze zaczynam kompletnie od zera, wiec na poczatek wzialem sie za prosty skrypt:

 

rollout rename_obj "Quick Rename" width:300 height:100
(
groupBox grp1 "Categories" pos:[16,8] width:272 height:72
button btn_props "[Prop]" pos:[96,32] width:52 height:35
button btn_set "[set]" pos:[160,32] width:52 height:35
button btn_photo "[Photo]" pos:[224,32] width:52 height:35
button btn_product "[Product]" pos:[24,32] width:64 height:35

)

-- DEFINE 'RENAME' FUNCTION
---------------------------------------------------
fn renameIt objName = ( -- function "rename"
global objName
for i in selection do i.name = uniquename objName
)-- end
on btn_photo pressed do renameIt "[Photo]"
createDialog rename_obj

 

Jak dla wprawnym Maxscripterow, nie ma tu nic skomplikowanego... Jednak kiedy probuje go wykonac Listner wywala mi oto taki blad:

 

[color=#ff0000]-- Error occurred in anonymous codeblock; filename: D:\Moje projekty\QuickRename1.ms; position: 591; line: 17
-- Type error: Call needs function or class, got: true
-- Error occurred in anonymous codeblock; filename: D:\Moje projekty\QuickRename1.ms; position: 628; line: 18
-- Syntax error: at name, expected while
--  In line: createDialog r[/color]

 

Gdyby ktorys z doswiadczony forumowiczow bylby tak mily powiedziec co i dlaczego jest zle, skad ten error bede wdzieczny :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 7
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Funkcje rolloutu powinny być wewnątrz definicji rolout

 

 

 

 

rollout rename_obj "Quick Rename" width:300 height:100

(

groupBox grp1 "Categories" pos:[16,8] width:272 height:72

button btn_props "[Prop]" pos:[96,32] width:52 height:35

button btn_set "[set]" pos:[160,32] width:52 height:35

button btn_photo "[Photo]" pos:[224,32] width:52 height:35

button btn_product "[Product]" pos:[24,32] width:64 height:35

 

 

 

 

-- DEFINE 'RENAME' FUNCTION

---------------------------------------------------

fn renameIt objName = ( -- function "rename"

global objName

for i in selection do i.name = uniquename objName

)-- end

on btn_photo pressed do renameIt "[Photo]"

 

 

)

 

 

createDialog rename_obj

  • Like 1
Odnośnik do komentarza
Udostępnij na innych stronach

OK mam kolejny problem, ktory moze ktos pomoglby rozwiazac. Ogolnie powyzszy skrypt ma dodawac dodawac prefix [jakas nazwa] do oryginalnej nazwy obiektu i potem jako sufix kolejny numer. Niestety chyba nie do konca rozumiem jak dziala, albo po prostu to nie dziala tak jak ja mysle ze dziala:] wiec mam taki kawalek kodu:

 

 

global objName= "[Photo]"

for i in selection do i.name = objName + uniquename i.name

 

No i prawie robi to co chce zeby robilo. Otoz dla kazdego wybranego obiektu dodaje prefix [Photo]Oryginalna nazwa obiektu ale problem jest z sufixem. Zamiast zwiekszac sie co 1 na kazdym wybranym obiekcie, zwieksza sie tylko na pierwszym obiekcie a dla pozostalych przypisuje taki sam, czyli jesli dla pierwszego obiektu suffix byl 2 nastepne obiekty zamist miec 3,4 itd. maja tez suffix 2. Ogolnie pewnie moglbym sobie z tym poradzic dodajac ten sufix w nastepnej petli, ale jestem ciekaw czy da sie jakos to zapisac w jednej linii jak probowalem powyzej i zrozumiec co zrobilem zle

Odnośnik do komentarza
Udostępnij na innych stronach

w max 2011 skrypt działa

 

natomiast

global objName= "[Photo]"
for i in selection do i.name = objName + uniquename i.name 

 

po wielokrotnym wywołaniu daje nazwę obiektu: [Photo][Photo][Photo][Photo][Photo]091

 

 

wcześniej było dobrze:

for i in selection do i.name = uniquename objName 

 

 

 

 

moglbym sobie z tym poradzic dodajac ten sufix w nastepnej petli, ale jestem ciekaw czy da sie jakos to zapisac w jednej linii

 

na początku skryprowania proponuję Ci pisać jak najprościej, czyli nie oszczędzać linii, rozbijać operacje na prostsze (wydzielać je)

kondensowanie kodu zmniejsza jego czytelność

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