Mritke Napisano 24 Styczeń 2012 Napisano 24 Styczeń 2012 Witam. Potrzebuje napisać skrypt który importuje i rozmieszcza na scenie obiekty zdefiniowane w pliku(custom format .sce(textowy)), a właściwie prymitywnym drzewie hierarchicznym plików. Budowa pliku(znaczenia znaczników chyba nie muszę tłumaczyć): plik scena.sce: geomobj teren2_1_1 file "scena\teren\teren2_1_1.obj" 512 1024 pos -256 -256 child_lod 0 768 dist cheby xz xref "scena\sceterenu\teren1_1_1.sce" xref "scena\sceterenu\teren1_1_2.sce" xref "scena\sceterenu\teren1_2_1.sce" xref "scena\sceterenu\teren1_2_2.sce" end .... plik teren1_1_1.sce: geomobj teren1_1_1 file "scena\teren\teren1_1_1.obj" 256 512 pos -384 -384 child_lod 0 384 dist cheby xz xref "scena\rosliny\rosliny1_1_1.sce" end ..... plik rosliny1_1_1.sce: geomobj OB_TRAWA file "scena\obiekty\trawa.obj" 0.0 50 rot 0 56 0 scl 0 0 0 pos -492 33.8314 -336 dist euclid end geomobj OB_DRZWEO file "scena\obiekty\drzewo.obj" 0.0 150 rot 0 37 0 scl 0 0 0 pos -492 19.4751 -310 dist euclid end geomobj OB_KRZEW file "scena\obiekty\krzew.obj" 0.0 100 rot 0 12 0 scl 0 0 0 pos -488 48.7808 -426 dist euclid end ......... itd itp skrypt (formatowanie kodu się kompletnie sypie jak go wklejam ale może ktoś dojdzie co i jak): ( fn openSCE fileName yep = ( f = openfile (fileName) --f = openfile ("d:\scena\scena\rosliny\rosliny1_1_1.sce") if f == undefined then ( MessageBox "nie wczytalem" ) if f != undefined then ( MessageBox fileName while not (eof f) do ( l = readline f lf = filterString l " " lname = "" if yep=="true" then ( if lf[1] == "geomobj" then ( lname = lf[2] ) if lf[1] == "file" then ( local plugins = importerPlugin.classes local pluginName = Wavefront_Object if findItem plugins ObjImp != 0 then (pluginName = ObjImp) --MessageBox "file" --braclf =filterString lf[2] "\"" s1 =lf[2] bracss=filterString s1 "\"" importFile (bracss[1]) #noPrompt using:pluginName for i in selection do i.name = lname --max select none ) if lf[1] == "pos" then ( if (lf.count)==4 then ( X=lf[2]as Float Y=lf[3]as Float Z=lf[4]as Float move $ [Z,-X,Y] ) else ( X=lf[3]as Float Y=lf[2]as Float move $ [X,-Y,0] ) ) ) ---yep yep yep if lf[1] =="xref" then ( s1 =lf[2] bracss=filterString s1"\"" if matchPattern s1 pattern:"rosliny" then ( openSCE bracss[1] "true" ) else ( openSCE bracss[1] "no" ) ) ) close f ) ) --openSCE "scena\\rosliny\\rosliny1_1_1.sce" "true" --openSCE "scena\rosliny1_1_1.sce" "true" openSCE "scena\\scena.sce" "true" ) Skrypt czyta pojedyncze pliki bez problemu. Nie działa jednak już gdy jest wykonany w rekursji-pliki się otwierają ale chyba nic z nich nie jest czytane. Wydaje mi się że maxscrypt poze mieć problemy z czytaniem z wielu plików na raz... Albo po prstu jest coś o czym nie wiem i nie mogę znaleźć. Foldery są zdefiniowane poprawnie otwiera wszystkie pliki ale żadne operacje nie są wykonywane.
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ę