Skocz do zawartości

Problem z przypisaniem parametrów obiektu do zmiennych....


Rekomendowane odpowiedzi

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
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

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

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

 

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