Pawelkos Napisano 12 Styczeń 2017 Share Napisano 12 Styczeń 2017 Witam chcialbym zwrocic z mala prosba do maxscriptowych wyjadaczy :). Dla mnie napisanie takiego skryptu to byloby godziny a niestety nie mam na to teraz czasu, a dla kogos kto maxscript ma w jednym palcu to zapewne 15 min roboty. Otoz przydalby mi sie script ktory by po jego aktywacji wybieral pierwszy "napotkany" edit poly modyfikator na stosie(liczac od szczytu stosu) aktualnie wybranego obiektu i automatycznie przechodzil w tryb selekcji vertexow. Wiec jesli ktoras z forumowych duszyczek zechciala poswiecic pare minut swojego wolnego czasu i machnac taki skripcik bylbym wdzieczny :) Z gory dziekuje wszystkim dobroczyncom :) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
KrzyM Napisano 12 Styczeń 2017 Share Napisano 12 Styczeń 2017 coś takiego na szybko for i in selection where classof i.modifiers[1] == Edit_Poly do ( -- SetCommandPanelTaskMode #modify subObjectLevel = 1 /* zaznaczy tylko te vertexy ktore byly juz w stacku i.modifiers[#Edit_Poly].Select #Vertex */ -- zaznaczy wszystkie vertexy obiektu for vert in (i.mesh.verts as bitarray) do ( i.modifiers[#Edit_Poly].Select #Vertex #{vert} i.modifiers[#Edit_Poly].Commit () ) -- ) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Pawelkos Napisano 13 Styczeń 2017 Autor Share Napisano 13 Styczeń 2017 Dzieki za probe pomocy, niestety nie dziala ten skrypt:/. Kiedy go uruchamiam nic sie nie dzieje. Co prawda w MaxScript Listenerze zadnych bledow nie pokazuje tylko "OK", ale na samym obiekcie zadna selekcja sie po pojawia i tak samo na stosie modyfikatorow. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
stormwind Napisano 13 Styczeń 2017 Share Napisano 13 Styczeń 2017 (edytowane) http://www.scriptspot.com/3ds-max/scripts/rapid-edit Kiedyś sie na niego natknąłem na scriptspocie. Działa z edit poly i edit spline, musisz tylko po wybraniu obiektu uruchomić go przypisanym skrótem klawiszowym, który musisz zdefiniować I nawet wybiera domyślnie vertexy :D Edytowane 13 Styczeń 2017 przez stormwind Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Pawelkos Napisano 13 Styczeń 2017 Autor Share Napisano 13 Styczeń 2017 Wielkie dzieki! To jest dokladnie to o co mi chodzilo:) Probowalem googlac maja nadzieje ze wlasnie na scritpspocie takie cos sie znajdzie, ale mi sie nie udalo na to natknac a tu prosze, jednak bylo :) Jeszcze raz dzieki Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
stormwind Napisano 13 Styczeń 2017 Share Napisano 13 Styczeń 2017 Ja też googlowałem bo nie pamiętałem nazwy. btw znalazłem jeszcze coś takiego, do wybierania konkretnego modyfikatora, ale tego juz nie testowałem. http://www.scriptspot.com/3ds-max/scripts/modifier-auto-select Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
KrzyM Napisano 13 Styczeń 2017 Share Napisano 13 Styczeń 2017 Spoko że problem rozwiązany. "U mnie działa" ten skrypt, pewnie musiał bym zobaczyć scenkę, ale teraz juz nie potrzebne ;) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Pawelkos Napisano 13 Styczeń 2017 Autor Share Napisano 13 Styczeń 2017 KrzyM scenka, bardzo prost bo testowa: https://dl.dropboxusercontent.com/u/2055196/test%20scene.max Nie wiem moze jakos zle probuje uzyc tego skryptu, ale nie moglem go zmusic do dzialania u siebie. Jak bys mogl zerknac i sprawdzic co jest nie tak, byloby fajnie. Pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
KrzyM Napisano 13 Styczeń 2017 Share Napisano 13 Styczeń 2017 Tak się wyrwałem a tu proszę, takie kwiatki. Mój błąd, fakt. Tutaj powinno być lepiej, choć kod nie za piękny. for obj in selection do ( --subObjectLevel = 1 check = 0 for i = 1 to obj.modifiers.count do ( if check if classof obj.modifiers[i] == Edit_Poly do ( check = i ) ) ) modPanel.setCurrentObject obj.modifiers[check] all_verts = obj.mesh.verts as bitarray SetCommandPanelTaskMode #modify subObjectLevel = 1 obj.modifiers[check].Select #Vertex all_verts ) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Pawelkos Napisano 16 Styczeń 2017 Autor Share Napisano 16 Styczeń 2017 KrzyM teraz dziala jak nalezy :D, dzieki! Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Pawelkos Napisano 17 Styczeń 2017 Autor Share Napisano 17 Styczeń 2017 KrzyM mialbym jeszcze jedna prosbe... Na to chwile mam ten skrypt podpiety pod skrot klawiaturowy. Bylbys w stanie zmodyfikowac ten skrypt tak ze jak wciskam moj skrot klawiaturowy to skrypt dziala tak jak teraz, a jesli wsciskam go drugi raz to po prostu selekcja vertexow zostaje wylaczona i przeskakuje na pierwszy modyfikator na gorze stosu? :) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
deshu Napisano 17 Styczeń 2017 Share Napisano 17 Styczeń 2017 fn yoyoyo obj = ( topModSelected = (modPanel.getModifierIndex obj (modPanel.getCurrentObject())) == 1 if topModSelected then ( modToSel = 0 for i = 1 to obj.modifiers.count do ( if modToSel if classof obj.modifiers[i] == Edit_Poly do ( modToSel = i ) ) ) modPanel.setCurrentObject obj.modifiers[modToSel] SetCommandPanelTaskMode #modify subObjectLevel = 1 ) else( modPanel.setCurrentObject obj.modifiers[1] ) ) obj = selection[1] if (superclassof obj == GeometryClass) do (yoyoyo obj) Przełącza miedzy: 1. Aktywowaniem modyfikatora na szczycie stosu 2. Zaznaczeniem najwyższego na liście Edit Poly i wejściem w edycje werteksów. Zmieniłem skrypt tak, że działa tylko na jednym obiekcie na raz (wcześniej działał na multiselekcji), oraz ze nie zaznacza wszystkich verteksów. Można jeszcze dopisać, że będzie wchodziło w vertexy bazowego obiektu Editable Poly jeżeli w stacku nie ma modyfikatora Edit Poly. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Pawelkos Napisano 18 Styczeń 2017 Autor Share Napisano 18 Styczeń 2017 (edytowane) Hej deshu, dzieki za skrypcik. Moglbys go tak zmodyfikowac, ze kiedy wracam na gore stosu to selekcja z edit poly nie jest zachowana, bo w tym momencie jest tak ze jak wracam na gore stostu, to przekazywana jest selekcja z edit poly. Z gory dziekuje:) Edit: Zauwazylem tez dziwne dzialanie jesli dzialam na instacji obiektu. Otoz jesli uruchamiam skrypt na obiekcie ktory jest instancja, selekcja zmienia sie z instancji na obiekt ktory jest oryginalem. Dal bys rade zmienic to tak zeby to dzialalo na obiekcie aktualnie wyselekcjonowanym bez wzgledu czy jest on instacja czy nie? Edytowane 18 Styczeń 2017 przez Pawelkos Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
deshu Napisano 18 Styczeń 2017 Share Napisano 18 Styczeń 2017 Jutro zerknę. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Pawelkos Napisano 20 Styczeń 2017 Autor Share Napisano 20 Styczeń 2017 I jak deshu bedzie co z tego? :) Nie popedzam tylko pytam z ciekawosci, bo nie wiem czy tu jeszcze zagladac ;) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
KrzyM Napisano 20 Styczeń 2017 Share Napisano 20 Styczeń 2017 Hmm widzę temat się rozwija ;) Ja nie miałem czasu kontynuować. Chwilkę poklikałem i jest update - powinien wracać na górę stosu ;) Z instancjami nic nie kombinowałem i chyba pasuje. Nie pisałem nigdy w maxscrypcie więcej niż 1 linię i jakoś nie leży mi tę język ^^ fn resetSelectionSet = ( callbacks.removeScripts #modPanelSelChanged id: #max3dPL obj = selection[1] fEp = findFirstEditPoly(obj) modPanel.setCurrentObject obj.modifiers[fEp] SetCommandPanelTaskMode #modify subObjectLevel = 1 obj.modifiers[fEp].SetSelection #Vertex #{} subobjectLevel = 0 modPanel.setCurrentObject obj.modifiers[1] ) fn findFirstEditPoly obj = ( topModSelected = (modPanel.getModifierIndex obj (modPanel.getCurrentObject())) == 1 if topModSelected then ( modToSel2 = 0 for i = 1 to obj.modifiers.count do ( if modToSel2 if classof obj.modifiers[i] == Edit_Poly do ( modToSel2 = i ) ) ) ) return modToSel2 ) fn yoyoyo obj = ( max modify mode modToSel = findFirstEditPoly(obj) topModSelected = (modPanel.getModifierIndex obj (modPanel.getCurrentObject())) == 1 if topModSelected then ( modPanel.setCurrentObject obj.modifiers[modToSel] SetCommandPanelTaskMode #modify subObjectLevel = 1 callbacks.addScript #modPanelSelChanged "resetSelectionSet()" id:#max3dPL ) else( modPanel.setCurrentObject obj.modifiers[1] ) ) obj = selection[1] if (superclassof obj == GeometryClass) do (yoyoyo obj) Pozdro! Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Pawelkos Napisano 24 Styczeń 2017 Autor Share Napisano 24 Styczeń 2017 KrzyM dzieks, rzeczywiscie teraz powraca na gore stosu, ale zatrzymuje selekcje z edit poly z dolu (a chcialbym zeby selekcja byla wylaczana i nie przekazywana do gory stosu) i niestety jesli uruchamiam skrypt na instancji to selekcja przeskakuje na oryginalny obiekt. Generalnie Twoj skrypt dziala jak skrypt deshu, a mi by zalezalo na zmianie tych dwoch "mankamentow". Ale wielkie dzieki ze Ci sie chcialo! i jak na kogos kto maxscripcie nigdy nie napisal wiecej niz 1 linijke kodu to idzie ci calkiem niezle;) Pozdro! Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
KrzyM Napisano 26 Styczeń 2017 Share Napisano 26 Styczeń 2017 Hmm działa tak samo z tą różnicą że dodany jest taki callback który po zmianie selekcji odznacza wszystko w tym "pierwszym" edit poly i wraca na górę stacku. Z instancjami nic nie próbowałem bo brak czasu. Wczoraj sprawdzałem i mi jakoś to działa, ale te callbacki to dziwna sprawa i też nie wczytywałem się w temat ;) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
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ę