kroko Ierakstīts Jūnijs 8, 2009 Share Ierakstīts Jūnijs 8, 2009 Ir mazs perl skriptiņš, ko izmantoju, lai izlobītu no OBJ faila nepieciešamo info tālākai apstrādei No failā atrodošās informācijas man interesē tikai faces dati, t.i., rindas, kas sākas ar "f " un tikai vertex numerācijas dati (cipari pirms visiem frontslashiem rindiņā) T.i. No oriģināla: g STRUCTURAL_-_BEARING_00_MAT01 usemtl _0_MAT01 v 72.592903 100 0 v 72.592903 100 -42.201 #------ vt 0 0.1 0 vt 0.072593 0.1 0 #------ f 4/11 1/3 2/6 f 8/20 5/13 6/14 7/17 f 4/10 5/13 1/2 f 3/8 7/16 6/14 4/10 ir jāiegūst 4 1 2 8 5 6 7 4 5 1 3 7 6 4 Pašlaik esmu pie punkta, kur izvadītie dati izskatās 4/11 1/3 2/6 8/20 5/13 6/14 7/17 4/10 5/13 1/2 3/8 7/16 6/14 4/10 un f-cija ir sub format { my $f = shift; my(@allFaces); open(ORGOBJDATA, "<${f}") || return -1; @allFaces = <ORGOBJDATA>; close(ORGOBJDATA); open(CLEANOBJDATA, ">".${f}."_clean.txt") || return -1; my $facesCount = 0; foreach my $value (@allFaces) { if ($value =~ m/^(f)/i) { # mēs ņemam tikai rindas kas saakas ar "f " $value =~ s/f //i; # novācam "f " #??????????? print CLEANOBJDATA $value; ++$facesCount; } } close(CLEANOBJDATA); } Kā lai noņem no palikušās rindas datus, kas sekotu likumam "iekš $value no pozīcijas, kur atrodas chars "/", līdz (neieskaitot) nākamam whitespace vai newline izdzēst". Paldies jau iepriekš, Kroko Laikam pašam izdevās $value =~ s/\/[^\s]*//gi; Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!