Skocz do zawartości

Featured Replies

Napisano

Dzięki kursowi ostatnio bawię się w maxscript i piszę własny plug-in. Jest już praktycznie na ukończeniu, ale bardziej robię go dla własnej satysfakcji, gdyż narzędzi przydatnych to w nim nie ma :) . Po drodze często trafiam na mniejsze lub większe problemy, ale udawało mi się je obejść. Niestety na poniższe już mi się objazdów nie udało znaleźć, więc chciałbym się zwrócić z prośbą o pomoc do bardziej zaawansowanych użytkowników w następujących kwestiach:

 

1. To musi być proste, ale chyba mam klapki na oczach bo nie mogę się do tego dogrzebać. Jeżeli chcę przesunąć obiekt w opisane zmiennymi miejsce, czy zmienić nazwę, stosuję:

obiekt = selection

obiekt.pos = [wspx,wspy,wspz]

obiekt.name = \"nazwa\"

No i wszystko jest ok. Tylko teraz jak uzyskać efekt odwrotny. Czyli chcę parametry wybranego elementu (współrzędne, nazwa) pobrać do zmiennych, by móc na nich potem operować.

Tego samego potrzebuję w vertexach spline\'a. Udaje mi się te wartości wywołać w listenerze:

 

getknotpoint $line01 1 1 --współrzędne pierwszego vertexa

[23.8485,11.6306,0]

 

Ale jak przypisać je zmiennym??

 

 

2. Miałem do zrealizowania zadanie w którym użytkownik zaznacza dowolną ilość obiektów, a skrypt wykonuje po kolei na każdym z nich wymagane operacje (konieczne jest aby wykonywał na każdym osobno). Zrealizowałem to w ten sposób:

 

group (selection) name:\"VGTsXVII_turb\"

select ($VGTsXVII_turb)

setgroupopen $VGTsXVII_turb true

for x = $* do if isopengroupmember x then

(

--wykonywane instrukcje na obiekcie x

)

setgroupopen $VGTsXVII_turb false

ungroup $VGTsXVII_turb

 

Jak widać skrypt po kolei \"podchodzi\" do każdego obiektu w scenie i sprawdza, czy należy on do otwartej grupy (w ten sposób zrobiłem rozpoznawanie, na którym obiekcie ma wykonać zadanie). Problem pojawia się, gdy w scenie znajduje się jakakolwiek inna grupa, która jest otwarta. Niby skrypt działa, ale jeszcze z programowania mam takie nawyki, że staram się robić programy \"głupoodporne\", więc nie chciałbym, aby w wymaganiach skryptu było np.: żadna inna grupa nie może być otwarta, kolor obiektów musi być różowy, w winamp\'ie nie może lecieć discopolo, a za oknem musi być dobra pogoda [lol]

 

Więc czy da się dodatkowo sprawdzać, czy obiekt x należy do otwartej grupy o konkretnej nazwie?

 

 

3. A ostatnia sprawa to już w zasadzie na pewno drobnostka. Jak zrobić pole tekstowe, w którym wyświetlana byłaby wartość zmiennej (aktualizowana przy każdej zmianie) ??

 

Jeżeli ktoś jest w stanie w jakikolwiek sposób naprowadzić mnie na rozwiązanie któregoś z tych problemów, będę wdzięczny za wypowiedź.

  • Odpowiedzi 5
  • Wyświetleń 1,8k
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

zaznaczoneObiekty = getCurrentSelection()

pierwszyObiekt = zaznaczoneObiekty[1]

nazwa = pierwszyObiekt.name

 

Tworzy sie tablica z zaznaczonymi elementami, do ktorej dobierasz sie przez index. W komorce przechowywana jest nazwa i .pos.

Napisano
  • Autor

Po burzliwych dyskusjach udało się rozwiązać pierwszy problem :)

 

Dzięki DruG!!

 

No i jeszcze po bliższym zapoznaniu się z nową instrukcją getcurrentselection() okazała się ona także rozwiązaniem na mój drugi problem:

 

grupa = getcurrentselection()

for i = 1 to grupa.count do

(

x = grupa(i) -- tu powinny być kwadratowe nawiasy, ale forum bierze to za formatowanie tekstu wiec jest tak

-- wykonywane instrukcje na obiekcie x

)

 

Więc pozostała już tylko trójeczka :]

 

Napisano

Gdzies czytalem o skrypcie ktory sledzi wartosc wybranej zmiennej, dam znac jak uda mi sie go znalesc.

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

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności