Notepad++ Zeilen nach oben verschieben

pebi1959

Cadet 1st Year
Registriert
Feb. 2022
Beiträge
12
Hallo,
ich bin absoluter Anfänger mit Notepad++ , habe aber ein kleines Problem mit einer gcode-Datei die ich für meinen Prusa 3d Drucker brauche, dem ich ein Lasergravier-Upgrade verpasst habe. In dieser Datei stehen immer am Zeilenende die S-Befehle für den Lüfter bzw. Laser wie z.b. G1 X10 S32 . Vor das S habe ich mit Suchen und ersetzen M106 (Lüfter bzw. Laser ein) und einen Zeilenumbruch (\nM106) eingefügt. Jetzt sieht´s so aus:
G1 X10
M106 S32
Diese Zeilen mit M106 kommen in der Datei massenhaft vor, mein Problem ist, das diese Zeilen nicht unterhalb des Positionierbefehls stehen sollten sondern oberhalb. Wie kann ich das machen?
Vielen Dank im Voraus für eure Antworten!
mfg Peter
 
Das ist sicherlich auch mit Suchen und Ersetzen (mit Regex) moeglich, aber ohne eine wirkliche Vorstellung, wie die Datei ausssieht, ist das (zumindest fuer mich) schwierig.
Das wuerde als Beispiel vielleicht so aussehen (ungetestet):

suchen nach: (G.{1,2} X.{1,2} )(S.{1,2})
ersetzen durch: M106 $2\n$1

Lade doch einmal eine Beispieldatei hoch.
 
Hallo,
ich hab mal ein Bild von der Datei die ich mit LaserGRBL erzeugt habe (Rosi_kurz_original) und der gleichen Datei in dem Format wie sie mein 3d-Drucker bzw. Laser verstehen würde (Rosi_kurz_soll) hochgeladen.
mfg Peter
 

Anhänge

  • Vergleich.jpg
    Vergleich.jpg
    70,7 KB · Aufrufe: 179
  • Rosi_kurz_soll.txt
    246 Bytes · Aufrufe: 148
  • Rosi_original.txt
    187,3 KB · Aufrufe: 140
Sicherlich nicht elegant und hier gibt es einige, die das besser koennen ...
aber versuch mal das:

suchen nach: ^(G. X.{1,2}\.. |X.{1,2}\.. )(S.{1,3})
ersetzen durch: M106 $2\n$1

Haken bei Regex nicht vergessen zu setzen.

Erklaerung:
Suche nach "G. X.{1,2}\.." oder "X.{1,2}\.. " mit "S.{1,3}" -> "G? X??.?" oder "X??.?" mit "S???"
Bei Treffer, werden die Klammern in $1 und $2 geladen.
 
Naja, ich hab den Curser in der ersten Zeile positioniert, dann bei suchen und ersetzen deine Syntax eingegeben und auf weiter suchen geklickt. Siehe Bild!
 

Anhänge

  • Fehler.jpg
    Fehler.jpg
    46,8 KB · Aufrufe: 162
Du hast dich beim Abtippen vertippt.
Nach dem "G." fehlt ein Leerzeichen.
Am besten kopieren.
 
Und genau aus solchen Gründen sollte man im Forum für derartige Inhalte Inline-Code-Tags verwenden!
Das kann man hier im Menü wählen oder man schreibt ICODE in eckige Klammern; Schliessen mit /ICODE.
Das Ergebnis wäre dann:
^(G. X.{1,2}\.. |X.{1,2}\.. )(S.{1,3})
und schon erkennt man das fehlende Space auf Anhieb.
 
Diesmal mit kopieren und einfügen, aber das Ergebnis bleibt leider gleich
 
Mit STRG-Shift-CursorUp kann man die aktuell markierte Zeile nach oben schieben bzw. mit der darüberliegenden tauschen.
Hab mal probiert dies (in Verbindung mit einer Suche nach Muster) über ein Macro zu automatisieren, aber das hat irgendwie nicht geklappt: Bei Wiedergabe des Macros wurde bei mir immer um zwei Zeilen nach oben verschoben.

Vielleicht willst Du es selbst mal mit einem Macro versuchen: YMMV.
 
Zuletzt bearbeitet:
pebi1959 schrieb:
Diesmal mit kopieren und einfügen, aber das Ergebnis bleibt leider gleich
Nun gut, dann bin ich an der Stelle raus. kA, warum es bei dir nicht geht.
 

Anhänge

  • 1644821912806.png
    1644821912806.png
    106,5 KB · Aufrufe: 156
Kommando zurück, es funktioniert!
War mein Fehler, ich hatte die falsche Datei als Ausgangsdatei.
Vielen Dank für eure Hilfe!!!
Ergänzung ()

ich hab mir damit ein Makro gemacht und kann das ganze jetzt per Tastenkombination machen, Super!

Wenn ihr jetzt noch mein letztes Problem auch noch lösen könntet wäre meine Begeisterung komplett.
Folgendes: Der Zahlenwert der hinter dem S steht bezieht sich auf einen Bereich von 0-1000, der müsste auf den Bereich 0-255 umgerechnet werden. Beispiel: M106 S500 soll M106 S127 sein, Rechnung 500/1000*255 und vom Ergebnis nur die Zahl vor dem Komma, geht das auch mit Notepad++. Wie gesagt, ich bin Laie.
 
Zuletzt bearbeitet:
Schön dass die Zeilenverschiebung via Search/Replace mit Regex und Macro geklappt hat.

Bzgl. der Umrechnung 0-1000 auf 0-255 (falls ich Dich richtig verstanden habe):
Ich kann mir nicht vorstellen, dass das mit Search-and-Replace abbildbar ist, es sei denn Du möchtest (fast) 1000 Fälle manuell abbilden und alles von M106 S000 bis M106 S999 suchen und (nach eigener Umrechnung) mit ...M106 S255 ersetzen - Reguläre Ausdrücke können keine Arithmetik.

Für sowas benutzt man in bash() den stream editor sed(); ausserdem könnte man das einfach mit Python, PHP oder Perl programmieren.
Die grossen Jungs würden wohl gleich awk(*) benutzen.

(*) falls Du z.B. nen Raspberry Pi mit Raspberry Pi OS oder einem anderen klassischen Linux betreiben solltest, hast Du das darauf wahrscheinlich verfügbar

Viele Leute hier im Forum sind fit in powershell, wahrscheinlich könnte man das auch damit scripten - das hätte den Vorteil, dass Du nicht extra eine Laufzeitumgebung installieren müsstest (solange Du ein modernes Windows einsetzt).
Sollte Letzteres für Dich von Interesse sein, dann frag die Moderatoren, ob sie dieses Thema in's "Programmieren"-Unterforum verschieben würden, oder leg dort ein neues Thema an, ich bin sicher die PS-Leute dort können Dir helfen - bei PS bin ich leider raus.

OT: Laser-Gravur-Upgrade für den heimischen 3D-Drucker!? Wie geil ist das denn?
Falls Du das am Laufen hast, willst Du nicht mal ein paar Infos posten? Bilder??
 
Zuletzt bearbeitet:
Zurück
Oben