[B3D]Texturen aus B3D File lesen, suchen und kopieren
Übersicht

antome!!! gesperrt !!!Betreff: [B3D]Texturen aus B3D File lesen, suchen und kopieren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sicher kennt fast jeder das Problem, man hat eine Menge B3D-Files
und jede Menge Texturen, irgendwann kommt eine Textur zum B3D File abhanden, entweder man hat sie ausversehen nicht mitkopiert oder beim Texturen aufräumen hat man vergessen das man die Textur schon für ein B3D File benutzt hat oder tausend andere Gründe. Jedenfalls hab ich meine Texturen nun nach Themen sortiert und ein kleines Programm geschrieben um mir die passenden Texturen aus den Verzeichnissen zum B3D File zu kopieren. Anleitung zur Benutzung: Man schreibt alle Pfade in denen sich Texturen befinden untereinander in eine Textdatei und nennt sie SD.txt, diese muss sich im selben Verzeichnis befinden wie das kleine Programm unten im Codefenster. Ich nenne es CopyTEX4B3D. Dann verschiebt oder kopiert man CopyTEX4B3D plus SD.txt in ein Verzeichnis in dem sich B3D-Files befinden bei denen Texturen fehlen welche sich in einem der gelisteten Verzeichnisse befinden müssten. CopyTEX4B3D starten und die gesuchten Texturen befinden sich im selben Ordner wie das B3D-File. Die Texturen werden nicht verschoben, sie werden nur kopiert. Code: [AUSKLAPPEN] Dim Tex$(100) Dim searchdir$(100) Dim B3Dfile$(1000) ; ------------------------------------------------------------------------------------------------------------ ; Lade Textfile "SD.txt" in dem pro Zeile ein Pfad angegeben ist in dem nach der Textur gesucht werden soll. ; Pfad mit \ abschliessen ; ------------------------------------------------------------------------------------------------------------ If FileType("SD.txt") <> 1 Print "Kein SD.txt File" EndIf sdir = ReadFile("SD.txt") sdz = 0 While Not Eof(sdir) searchdir$(sdz) = ReadLine$(sdir) searchdir$(sdz) = Trim$(searchdir$(sdz)) If searchdir$(sdz) <> "" sdz = sdz + 1 If Right$( searchdir$(sdz),1) <> "\" Then searchdir$(sdz) = searchdir$(sdz) + "\" EndIf Wend CloseFile sdir ; ------------------------------------------------------------------------------------------------------------ ; Alle .B3D Dateien im aktuellen Pfad einlesen um später die Texturen in "SD.txt" angegebenen Pfaden zu suchen ; ------------------------------------------------------------------------------------------------------------ Pfad$=CurrentDir$ () Verz=ReadDir(Pfad$) bz = 0 Repeat Datei$=NextFile$(Verz) If Datei$="" Then Exit If FileType(Pfad$+Datei$) = 1 If Instr(Upper$(Datei$),".B3D") B3Dfile$(bz) = Pfad$+Datei$ bz = bz + 1 EndIf End If Forever bz = bz - 1 CloseDir Verz ; ------------------------------------------------------------------------------------------------------------ ; Lese Texturfiles aus den .B3D Dateien im aktuellen Pfad ; ------------------------------------------------------------------------------------------------------------ For allfiles = 0 To bz infile = ReadFile(B3Dfile$(allfiles)) out = 0 Repeat chunk$ = Read4Char$(infile) If chunk$ = "TEXS" TEXSchunk$ = chunk$ TEXSchunksize = ReadInt( infile ) fp = FilePos( infile ) tz = 0 Repeat Tex$(tz) = ReadNullString$(infile) qi = ReadInt( infile ) qi = ReadInt( infile ) qf# = ReadFloat( infile ) qf# = ReadFloat( infile ) qf# = ReadFloat( infile ) qf# = ReadFloat( infile ) qf# = ReadFloat( infile ) If FilePos( infile ) > fp+TEXSchunksize RuntimeError "ERROR in TEXS chunk" Exit EndIf tz = tz + 1 Until FilePos( infile ) >= fp+TEXSchunksize tz = tz - 1 out = 1 EndIf Until out = 1 CloseFile infile ; ------------------------------------------------------------------------------------------------------------ ; Suche Texturfiles und kopiere sie ins aktuelle Verzeichnis ; ------------------------------------------------------------------------------------------------------------ For allTEX = 0 To tz If FileType (Tex$(allTEX)) = 1 Exit EndIf For allPfad = 0 To sdz If FileType (searchdir$(allPfad)+Tex$(allTEX)) = 1 CopyFile (searchdir$(allPfad)+Tex$(allTEX)), Pfad$+Tex$(allTEX) Exit EndIf Next Next Next End ;#Region Funktionen Function Read4Char$(b3dfile) For i = 1 To 4 s$ = s$+Chr$(ReadByte( b3dfile )) Next Return s$ End Function Function ReadNullString$(b3dfile) Repeat b = ReadByte( b3dfile ) If b = 0 Return s$ s$ = s$+Chr$(b) Forever End Function ;#End Region |
||
antome |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group