Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
txt.-Datei einlesen und speichern
08.04.2014 22:12:27
Common
Nabend geehrte Mitglieder ;)
ich habe leider folgendes Problem und hoffe sehr Ihr könnt mir weiterhelfen...
Ich würde gern einen Makro haben welches per Button klick folgendes ausführt:
1. Eine vorhandene .step-Datei (Quader.step) (was nichts anderes als eine .txt-Datei ist, jedoch für CAD-Systeme gedacht) öffnen und bestimmte Zeilen auslesen.
2. Diese bestimmte Zeilen, die man ausgelesen hat, in einer neuen Datei einfügen und diese dann als .step speichern (MeinQuader.step).
Leider habe ich jetzt mein "Versuch" gerade nicht zu Hand. Ist auf dem Arbeitsrechner...könnte aber, wenn nötig, morgen posten.
Zu 1. eine kurze Anmerkung:
Eine .step-Datei hat i.Allg. ne menge Einträge, hängt von der Komplexität des Bauteils zusammen. Beim Quader hat dieser 203 Einträge(Zeilen). Und jetzt benötige ich z.B. Zeile 20,25,30,100,105,111,....usw. und diese Zeilen eben wie 2. erklärt unter MeinQuader.step speichern.
Ich hoffe ich habe mein Problem so gut wie möglich schildern können.
MfG
CE

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: txt.-Datei einlesen und speichern
09.04.2014 02:35:30
fcs
Hallo CE,
nach folgend Makros um einen Auszug einer Textdatei zu erstellen.
Du musst entweder das Array anpassen oder bei der Variante mit dem Zellbereich den Zellbereich vorgeben und dort die Zeilennummern eintragen.
Gruß
Franz
Sub makeNewQuarderSTEP_1()
MakeNewSTEP Array(5, 8, 12, 22) 'Array mit den Nummern der auszulesenden Zeilen
End Sub
Sub makeNewQuarderSTEP_2()
MakeNewSTEP ActiveSheet.Range("A2:A5") 'Zellbereich mit den Nummern der auszulesenden Zeilen
End Sub
Sub MakeNewSTEP(varZeilen)
Dim varFileSource As Variant, varFileTarget As Variant
Dim Zeile As Long, FF1 As Integer, FF2 As Integer
Dim strText As String, varTreffer
varFileSource = Application.GetOpenFilename(Filefilter:="STEP-Datei (*.STEP),*.STEP", _
Title:="Bitte Quell-STEP-Datei auswählen")
If varFileSource  False Then
'Vorgabe für neuen Dateinamen festlegen
varFileTarget = varFileSource
varFileTarget = Left(varFileTarget, InStrRev(varFileTarget, ".") - 1)
varFileTarget = "Mein" & Mid(varFileTarget, InStrRev(varFileTarget, "\") + 1)
varFileTarget = Application.GetSaveAsFilename( _
InitialFileName:=varFileTarget, _
Filefilter:="STEP-Datei (*.STEP),*.STEP", _
Title:="Name der neuen  Quell-STEP-Datei auswählen/eingeben")
If varFileTarget  False Then
If LCase(varFileTarget)  LCase(varFileSource) Then
'Quelldatei öffen
FF1 = FreeFile()
Open varFileSource For Input As #FF1
'Zieldatei öffnen/anlegen - vorhandenen Zieldatei wird überschrieben!!
FF2 = FreeFile()
Open varFileTarget For Output As #FF2
Zeile = 0
Do Until EOF(FF1)
Zeile = Zeile + 1
Line Input #FF1, strText
varTreffer = Application.Match(Zeile, varZeilen, 0)
If IsNumeric(varTreffer) Then
Print #FF2, strText
End If
Loop
Close FF1
Close FF2
Else
MsgBox "Quelle und Zieldatei dürfen nicht den gleichen Namen haben."
End If
End If
End If
End Sub

Anzeige
AW: txt.-Datei einlesen und speichern
09.04.2014 13:09:49
Common
Hi,
@Frank herzlichen Dank für dein Makro, hat soweit perfekt funktioniert!
ICH habe leider einen Erklärungsfehler gemacht....SORRY!!!!!
Bzw. man hat es mir heute auf der Arbeit richtig erklärt!
Der Code den Frank (du) gemacht hast, kann bestimmt weiterhin verwendet werden und zwar war es eigentlich so gedacht, das man den GANZEN INHALT von Quader.step ins MeinQuader.Step reinkopiert.
ABER, bevor man dieses tut, müssen zuvor 3 bestimmte Werte (x,y,z) per manuelle Eingabe geändert werden. (gibt die Form des Quaders zurück) Wenn man es nur kopiert und unter einem neuen Namen abspeichert, gewinnt man ja nichts ;)
Die Zeile(n) sieht(sehen) wie folgt aus:
Beispiel: #ZAHL = CARTESIAN_POINT ( 'NONE', ( x, y, z ) ) ;
#130 = CARTESIAN_POINT ( 'NONE', ( 0.0000000000000000000, 0.0000000000000000000, 0.0000000000000000000 ) ) ;
Bemerkung: Hier werden natürlich mehr als NUR eine Zeile abgefragt. Im Beispiel Quader; insgesamt 27 Zeilen.
https://www.herber.de/bbs/user/90058.zip
Hier kann man die, einmal Quader.step-Datei und ein Word Dokument mit sämtlichen Cartesian_Point(CP) aufgelistet downloaden.
Theoretisch reicht aus, jedes CP einzeln abzufragen und die Werte in der Klammer zu ändern diese dann zu übernehmen und in dem neu erstellen .step-Datei, mit dem natürlich vorher unveränderten kopierten Werten, abzuspeichern.
MfG
CE

Anzeige
AW: txt.-Datei einlesen und speichern
09.04.2014 16:26:55
fcs
Hallo CE,
in dieser Form wird die Aufgabe deutlich komplizierter, denn es müssen ja die Zeilen aus der Muster-STEP-Datei herausgefischt werden, die mit #14 =, #38 =, usw. beginnen, um diese dann durch die jeweils neuen Zeile zu erstzen. Der Vergleich der Zeilen in der Muster-STEP-Datei mit den auszutauschen zeilen muss komplett anders programmiert werden.
Für das Abarbeiten der Zeilen im Makro und die Eingabe der Daten für die zu ändernden Zeilen ist es wesentlich einfacher, die zu ändernden Zeilen (beim Quarder 27) in einer Textdatei oder auch einem Excel-Tabellenblatt zu editieren und dann das Erstellen der neuen STEP-Datei zu starten. Die Eingaben für jede Zeile einzeln zu machen (z.B. in einem Userform) ist sehr viel mühseliger und fehleranfälliger.
Da das Makro in Excel angelegt ist, ist das Bearbeiten in einem Exceltabellenblatt eigentlich der ideale Weg und auch am einfachsten zu programmieren.
Im STEP-File sind mir noch 2 Zeilen aufgefallen:
FILE_NAME ('TEST2_ohne loch.STEP',
und
#202 = ADVANCED_BREP_SHAPE_REPRESENTATION ( 'TEST2_ohne loch', ( #146, #177 ), #173 ) ;
Hier erscheint der Dateiname des STEP-Files. Müsste der nicht auch ausgetauscht werden?
Bevor ich da irgend etwas weiter programmiere, müßte ich erst einmal etwas konkreter wissen, wie ihr die Dateneingabe für das Erzeugen der neuen STEP-Datei machen wollt, und ob der Austausch des Dateinamens (s.o.) erforderlich ist.
Gruß
Franz

Anzeige
AW: txt.-Datei einlesen und speichern
09.04.2014 20:29:54
Common
Nabend Franz,
Den Gedanke hatte ich auch :)
Wenn man diese 27 Zeilen (CP) in einer Excel-Datei auflistet, diese dann verändert und dann als .step abspeichert wäre ja super...ich persönlich dachte nur, wie kann ich es schaffen, dass ich die restlichen Zeilen die ich nicht verändert haben will, ebenfalls mit in der neuen .step-Datei einpflege...
...wie ihr die Dateneingabe für das Erzeugen der neuen STEP-Datei machen wollt...
Ganz ehrlich, wenn's ich es könnte, würde ich auch den Weg bevorzugen, der einfacher ist. Also kurzum, Dateieingabe (CP-Eingabe) via Excel.
...und ob der Austausch des Dateinamens (s.o.) erforderlich ist.
ich verstehe nicht ganz was du mit "erforderlich" meinst, aber was GANZ WICHTIG ist, ist das alle unveränderte Informationen in der neuen .step-Datei mitgenommen werden müssen, sonst erkennt ein CAD-Viewer nicht das es ein Quader ist.
Was dir vielleicht bisschen merkwürdig erscheint ist, warum es "TEST2_ohne Loch" heißt und nicht "Quader_ohne Loch". "Quader_ohne Loch habe ich so genannt um zu wissen das diese Datei ein Quader ist und der Konstrukteur hat es leider Gottes TEST2 getauft...daher steht auch im .step TEST2 und nicht Quader.
Oder meinst du damit ob eine neue Datei erzeugt werden muss? Wenn du das damit gemeint hast, dann ja.
VIELEN LIEBEN DANK für deine Unterstützung !!!!!
MfG
Festim

Anzeige
AW: txt.-Datei einlesen und speichern
10.04.2014 09:44:05
fcs
Hallo festim,
ich hab jetzt eine Excel-Datei vorbereitet.
Im Blatt Quarder können die kompletten STEP-Zeilen editiert werden.
Im Blatt Quarder(2) werden in Spalte A die STEP-Zeilen-Texte per Formel aus den Eingaben in den Spalten B bis E berechnet.
Gruß
Franz
https://www.herber.de/bbs/user/90078.xlsm

AW: txt.-Datei einlesen und speichern
10.04.2014 14:52:59
Common
Hi Franz,
GOD DAMN!!!!!!!!!! DANKE DIR!!! DAS IST JA DER HAMMER =) es funktioniert perfekt!!
Wirklich, danke dir.
Jetzt kommen nur ein paar Fragen, bei dem ich auch den Code etwas besser verstehen will. Deine Kommentare, nicht falsch versthen, sind unheimlich wichtig fürs Verständnis, wo es bei mir hapert sind die VBA-Syntaxen..
Set rngErsetzen = .Range(.Cells(3, 1), Cells(.Rows.Count, 1).End(xlUp))

Was bedeutet ",1"? Erste Spalte?
varFileZiel = Left(varFileZiel, InStrRev(varFileZiel, ".") - 1)
varFileZiel = "Mein" & Mid(varFileZiel, InStrRev(varFileZiel, "\") + 1)

Warum hast du einmal "- 1" und einmal "+ 1" gesetzt? Was genau bewirkt das?
bolTreffer As Boolean

Die Variabel bolTreffer heißt, dass wenn er den CP wert findet setzt dieser dann auf True sonst False?
      ElseIf InStr(1, strText, "= ADVANCED_BREP_SHAPE_REPRESENTATION ( '") > 0 Then
'#202 = ADVANCED_BREP_SHAPE_REPRESENTATION ( 'TEST2_ohne loch', ( #146, #177 ), #173 ) ; _
strReplace = Left(strText, InStr(1, strText, "'")) _
& Mid(varFileTarget, InStrRev(varFileTarget, "\") + 1) _
& Mid(strText, InStrRev(strText, "'"))
bolTreffer = True

Ich verstehe was du damit tuts, haste ja auch dafür ein Kommentar geschrieben ^^, doch wollte ich ebenso ein TEST2 in meinQuader ändern. habe ein TEST2 im File noch gefunden. Ist nicht schlimm nur der schönheits wegen.
Unter #188 = PRODUCT ( 'TEST2_ohne loch', 'TEST2_ohne loch', '', ( #27 ) ) ;
MEIN CODE:
ElseIf InStr(1, strText, "= PRODUCT ( ' , '") > 0 Then
'#202 = ADVANCED_BREP_SHAPE_REPRESENTATION ( 'TEST2_ohne loch', ( #146, #177 ), #173 ) ; _
strReplace = Left(strText, InStr(1, strText, "'")) _
& Mid(varFileTarget, InStrRev(varFileTarget, "\") + 1) _
& Mid(strText, InStrRev(strText, "'"))
bolTreffer = True

1. Weiß ich nicht ob's so richtig ist, da die Hochkommas in der Klammer mir ein Rätsel sind. Siehe auch ADVANCED_....( '")
2. Als Fehlermedlung kommt EndIf ohne If-Block....mit größter Wahrscheinlichkeit setzt ich das EndIf falsch an bzw. an der falschen Zeile.
Die PRODUCT - Geschichte war ein Test für mich, ob ich es verstanden habe....aller anscheind nicht.
MfG
Festim

Anzeige
AW: txt.-Datei einlesen und speichern
10.04.2014 16:24:17
fcs
Hallo Festim,
1. Syntax bei Cells
    'Bereich mit Ersetzungsdaten setzen - Spalte A im Activen Blatt ab Zeile 3
With ActiveSheet
Set rngErsetzen = .Range(.Cells(3, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With

Vor dem 2. Cells hatte ich noch den Punkt vergessen, bitte ergänzen. Spielt hier keine Rolle, da sich sowieso alles auf das aktive Blatt bezieht, aber nur mit Punkt ist die Syntax korrekt.
Bei Cells ist der 1. Parameter immer die Zeile, der 2. Parameter die Spalte (1 = A, 2 = B usw.)
.Cells(.Rows.Count, 1).End(xlUp)
ist eine spezielle Anweisung. Sie sucht von der angegeben Zelle (hier = letzte Zelle in Spalte 1) die aus nächste Zeile mit Inhalt; entspricht der Tastenkombination Strg+Pfeilhoch.
    'Vorgabe für neuen Dateinamen festlegen
varFileZiel = varFileMuster
varFileZiel = Left(varFileZiel, InStrRev(varFileZiel, ".") - 1)
varFileZiel = "Mein" & Mid(varFileZiel, InStrRev(varFileZiel, "\") + 1)
Warum hast du einmal "- 1" und einmal "+ 1" gesetzt? Was genau bewirkt das?
Die Funktion InStrRev ermittelt die Position des angegebenen Suchtextes beginnend von rechts.
In der 1. Zeile soll mit der Funktion Left der Text links vom "." übernommen werden; deswegen die "-1".
In der 2. Zeile soll mit der Funktion Mid der Text rechts vom "\" übernommen werden; deswegen die "+1".
Die Variabel bolTreffer heißt, dass wenn er den CP wert findet setzt dieser dann auf True sonst False?
Der Wert von bolTreffer steuert ob der OriginalText aus der Muster-STEP ein neuer Text in die neue Datei geschrieben wird. Deshalb wird nach dem Einlesen einer Zeile aus der Msuter-STEP ihr Wert auf False gesetzt. Führt eine der Vergleichs-Prüungen zu einer Übereinstimmung wird der Ersatztext ermittelt und die Variable auf True gesetzt.
#188 = PRODUCT ( 'TEST2_ohne loch', 'TEST2_ohne loch', '', ( #27 ) ) ;
1. Weiß ich nicht ob's so richtig ist, da die Hochkommas in der Klammer mir ein Rätsel sind. Siehe auch ADVANCED_....( '")

Das Hochkomma ' kennzeichnet in STEP-Datei Anfang und Ende eines Textinhalts, so wie das " unter VBA.
Hier wird das Erzeugen des neuen Textes etwas komplizierter, am Ende benötigst du ja:
Text bis inkl. 1. "'" & NameNeu & "', " & NameNeu & Text ab "', '" bis zum Ende.
Da der Name der neuen STEP-Datei mit und ohne ".STEP" jetzt mehrfach benötigt wird ist es sinnvoll, diese einmal zu ermitteln und jeweils einer Variablen zuzuweisen. Das vereinfacht den Code etwas. Nachfolgend nochmals der komplette Code mit den Anpassungen für die PRODUCT-Zeile.
2. Als Fehlermedlung kommt EndIf ohne If-Block....mit größter Wahrscheinlichkeit setzt ich das EndIf falsch an bzw. an der falschen Zeile.
Hier hast du dann irgendwie die Syntax von
If ...
ElseIf ...
ElseIf ...
Else ...
End If
nicht korrekt eingehalten
Gruß
Franz
Sub MakeNewSTEP_Range(ByVal varFileSource As Variant, _
ByVal varFileTarget As Variant, ByVal rngReplace As Range)
'Ersetzungsdaten werden aus Exceltabelle geladen
Dim Zeile As Long, FF1 As Integer, FF2 As Integer
Dim strText As String, bolTreffer As Boolean, strReplace As String
Dim rngZelle As Range
Dim strNameSTEP As String, strName_ohne_STEP As String
'Musterdatei öffen
FF1 = FreeFile()
Open varFileSource For Input As #FF1
'Zieldatei öffnen/anlegen - vorhandenen Zieldatei wird überschrieben!!
FF2 = FreeFile()
Open varFileTarget For Output As #FF2
Zeile = 0
'Name der neuen STEP-Datei ohne Pfad = Text rechts vom letzen "\"
strNameSTEP = Mid(varFileTarget, InStrRev(varFileTarget, "\") + 1)
'Name der neuen STEP-Datei ohne Pfad und ohne ".STEP" = Text links vom "."
strName_ohne_STEP = Left(strNameSTEP, InStrRev(strNameSTEP, ".") - 1)
Do Until EOF(FF1)
Line Input #FF1, strText
bolTreffer = False
If Left(strText, 12) = "FILE_NAME ('" Then
'FILE_NAME ('TEST2_ohne loch.STEP',
strReplace = "FILE_NAME ('" & strNameSTEP & "',"
bolTreffer = True
ElseIf InStr(1, strText, "= ADVANCED_BREP_SHAPE_REPRESENTATION ( '") > 0 Then
'#202 = ADVANCED_BREP_SHAPE_REPRESENTATION ( 'TEST2_ohne loch', ( #146, #177 ), #173 ) ; _
strReplace = Left(strText, InStr(1, strText, "'")) _
& strName_ohne_STEP _
& Mid(strText, InStrRev(strText, "'"))
bolTreffer = True
ElseIf InStr(1, strText, "= PRODUCT ( '") > 0 Then
'#188 = PRODUCT ( 'TEST2_ohne loch', 'TEST2_ohne loch', '', ( #27 ) ) ;
strReplace = Left(strText, InStr(1, strText, "'")) _
& strName_ohne_STEP & "', '" & strName_ohne_STEP _
& Mid(strText, InStrRev(strText, "', '"))
bolTreffer = True
ElseIf strText  "" Then 'Zeile in STEP-Datei ist nicht leer
'prüfen, ob Zeile mit # beginnt und ein = enthält
If Left(strText, 1) = "#" Then
If InStr(1, strText, "=") > 0 Then
'Zellbereich mit neuen Zeilen-Daten mit Zeile aus STEP_Datei vergleichen
For Each rngZelle In rngReplace.Cells
strReplace = rngZelle.Text
If strReplace  "" Then
If InStr(1, strReplace, "=") > 0 Then
'prüfen, ob Text bis zum Gleichheitszeichen identisch
If Left(strReplace, InStr(1, strReplace, "=")) _
= Left(strText, InStr(1, strText, "=")) Then
bolTreffer = True
Exit For
End If
End If
End If
Next rngZelle
End If
End If
End If
If bolTreffer = True Then
Print #FF2, strReplace
Else
Print #FF2, strText
End If
Loop
Close FF1
Close FF2
End Sub

Anzeige
AW: txt.-Datei einlesen und speichern
11.04.2014 10:28:45
Common
Perfekt danke dir für die hilfe!!!
Ich habe bloß noch was kleines hinzuzufügen....und zwar auf dem Blatt "Quader(2)", ist es möglich unter
C33 = Länge
D33 = Höhe
E33 = Tiefe
so einzuprogrammieren, dass man z.B. unter Länge = 70 (Absolut Wert) eintippt und dementprechend unter der Spalte "X-Koordinate" alle Werte außer Null auf 70 setzt?
Höhe und Tiefe analog.
Ich habe halt so versucht:
Alle Werte unter X-Koordinate markieren, außer Null, und diese jeweils mit

=C33
setzten und wenn ich nun unter C33 ein Wert eingebe, sollte es ja eigenlicht der eingegebene Wert erscheinen...leider steht nur =C33 in den einzelnen Zellen drin.
MfG
Festim

Anzeige
AW: txt.-Datei einlesen und speichern
11.04.2014 11:14:18
Common
Hab's gelöst ^^
Was ich gemacht habe ist, einfach die CP Werte unter der A-Spalte jeweils einmal unter B32,33,34 zugewiesen.
Vorher:
="#" & B12 & " = CARTESIAN_POINT ( 'NONE',  ( " & C12 & ", " & D12 &", " & E12 & " ) ) ;"
Nacher:
="#" & B12 & " = CARTESIAN_POINT ( 'NONE',  ( " & B32 & ".0, " & B33 &".0, " & E12 & " ) ) ;"
Ging vorher ancheinend nicht, weil es als "Textformat" und nacht als "Zahlenformat" eingestellt ist.
daher auch " &C27 " oder?
MfG
Festim

Anzeige
AW: txt.-Datei einlesen und speichern
11.04.2014 11:15:08
fcs
Hallo Festim,
die Koordinatenwerte müssen für den STEP-Code ja mit Punkt als Dezimalzeichen eingegeben werden. Deshalb hab ich die Spalten C, D und F mit Zahlenformat "Text" formatiert. Darum werden die jetzt von dir eingegebenen Texte nicht als Formeln interpretiert.
Formatiere alle Zellen, die Formeln haben sollen und die Eingabezelle als "Standard". Anschliessen gib die Formeln ein oder kopiere sie.
Bei der Eingabe von Zahlen dann mit einem Hochkomma (') beginnen, damit der Punkt als Dezimalzeichen korrekt übernommen wird.
Gruß
Franz

AW: txt.-Datei einlesen und speichern
13.04.2014 21:59:51
Common
Hallo Franz,
hat alles sehr gut funktioniert!!! danke dir nochmals! Für der Zweck der Demonstration ist das herrlich!
Nun stehe ich leider wieder vor dem nächsten Problem bzw. der nächsten Schritt...was die Demo anging, habe wir versucht die Eingabe via Excel Tabelle zu lösen, so wird es dieses mal nicht klappen. (Glaube ich, kann mich auch irren, wie letzen schon gemerkt)
Kurzer Hintergrund:
Was super gelungen ist, eine neue Step-Datei mit unterschiedlichen Quadern zu erzeugen.
Jedoch ging es nur mit einzelne Quader. Z.b. man möchte 4 unterschiedliche Quader => 4x das Programm ausführen mit 4 jeweils unterschiedlich benannten step-Dateien
Jetzt:
Eine Programm, was ja schon vorhanden ist, zu erstellen, welches ermöglicht mehrere Quader zu erzeugen und DIESES erzeugt dann genau eine einzige step-Datei.
Z.b.
Ich benötige 4 Quader jeweils 1x 50x50x50 und 3x 10x100x50 mit jeweils bestimmte Positionen(ausgehend vom Mittelpunkt); erzeugen und abspeichern als eine einzige step-file.
Zur Erzeugen soll am besten eine Abfrage stattfinden:
Quader erzeugen JA / NEIN
JA -> Länge / Breite / Höhe / Position_Mittelpunkt ausgehend
Nein -> Sicher?
Ja / NEIN
JA -> Speichern
Nein -> Zurück zu Quader erzeugen
Ich denke mal (kann mich auch hier wieder stark irren da ich keine Kenntnisse zu VBA habe) dadurch dass das Programm schon vorhanden ist(die Infos wie
ein Quader aufgebaut ist), müsste man nur die Infos wissen: wie erzeugt die step-datei mehrere Quader? Wenn man das weiß, könnte man das doch in das Programm mit einführen, oder? Der Dummy(Quader_ohne Loch UND NICHT MeinQuader_ohne Loch) kann doch noch der selbe sein? Man fügt ja nur Zeilen ein?
Ich bin gerade dabei diese Infos herauszufinden, habe dafür ein "Dummy-Step" mit 3 Quader.
(verschiedene Form und Position)Sobald ich weiß, wie die Step-Datei das macht, würde ich das hier posten bzw. als Datei hochladen.
Gruß Festim
PS: Sorry wenn ich dich damit direkt anspreche, aber du hast hier gerade den besten Hintergrundwissen meines Problems...und ich würde echt am Rande der Verzweifelung stehen, wenn es Menschen wie dich nicht gäbe!!!
Anzeige

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige