Napisano 17 Czerwiec 201212 l 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 :)
Napisano 17 Czerwiec 201212 l Autor Naprawde nikt nie wiem co jest przyczyna tego bledu i jak to naprawic ....?
Napisano 18 Czerwiec 201212 l 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 19 Czerwiec 201212 l Autor gonre OMG wielkie dzieki, taka bzdura i nie moglem wyczaic tego bledu... rep polecial :)
Napisano 20 Czerwiec 201212 l 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 20 Czerwiec 201212 l narzedzie do zmiany nazw obiektow juz jest w maxie (Tools > Rename Object...) wic mam nadzieje, ze piszesz ten skrypt zeby pocwiczyc :)
Napisano 21 Czerwiec 201212 l 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