Skocz do zawartości

Featured Replies

Napisano

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 :)

  • Odpowiedzi 7
  • Wyświetleń 2k
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

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

Napisano
  • Autor

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

Napisano

narzedzie do zmiany nazw obiektow juz jest w maxie (Tools > Rename Object...) wic mam nadzieje, ze piszesz ten skrypt zeby pocwiczyc :)

Napisano

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ść

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

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności