newbie58
Goto Top

UltraEdit NC-Programm neu nummerieren

Hallo,
ich habe von collorado ein Script bekommen welches mir ein NV-Programm neu nummeriert.
Das ganze funktioniert eigentlich wunderbar. Jedoch ist jetzt ein Problem aufgetaucht.
Wenn vor einer Zeile (z.B. N420 G00 G507 G60 G90 G601 A=DC(227) D1 F=R40 S=R96 M03 M08 M07 M52 T="5099353") ein Leerzeichen ist, wird diese nach der Neunummerierung gelöscht.

Beispiel (Original):

N340 R20=-227

N350 A_START
N360 M6
N370 A_STOP

N380 SPINDELOK:

N390 R41=120 R42=0
N400 TOOL_CONTROL_D1

N410 R40=5026 R96=837 ;Bearbeitung

N420 G00 G507 G60 G90 G601 A=DC(227) D1 F=R40 S=R96 M03 M08 M07 M52 T="5099353"

; NC_JOB: 40001 FLAECHE E-FLANSCH

N430 R2=162.788 R3=160.788 R10=162.788 R11=510

N440 G00 G60 X285.8 Y264.112


Nach der Neunummerierung:

N340 R20=-227

N350 A_START
N360 M6
N370 A_STOP

N380 SPINDELOK:

N390 R41=120 R42=0
N400 TOOL_CONTROL_D1

N410 R40=5026 R96=837 ;Bearbeitung

; NC_JOB: 40001 FLAECHE E-FLANSCH

N420 R2=162.788 R3=160.788 R10=162.788 R11=510

N430 G00 G60 X285.8 Y264.112


Das Script von colorado:

// Eingabe über Eingabefenster
var counter = UltraEdit.getValue("Startzähler?",1);
var schritt = UltraEdit.getValue("Schrittweite?",1);

UltraEdit.activeDocument.selectAll();
var doc = UltraEdit.activeDocument.selection;
var regex = /^(N\d+ )?([^\r\n]+\s*)/gmi;

while (result = regex.exec(doc)){
if (result[1]){
UltraEdit.activeDocument.write("N" + counter + " " + result[2]);
counter += schritt;
}else{
UltraEdit.activeDocument.write(result);
}
}

Frage:
Wie kann ich das beheben.

Vielen Dank im voraus

Content-ID: 275294

Url: https://administrator.de/contentid/275294

Ausgedruckt am: 24.11.2024 um 08:11 Uhr

114757
114757 22.06.2015 aktualisiert um 09:23:56 Uhr
Goto Top
Moin,
ich habe von collorado
hä ? Ein Script von Haribo ? face-big-smile Ich glaub du meinst @colinardo ...

Da sollte die Abänderung der REGEX Zeile Abhilfe schaffen:
var regex = /^\s*(N\d+ )?([^\r\n]+\s*)/gmi; 
Nun genieße deine Tüte "Colorado" ;-P

Gruß jodel32
newbie58
newbie58 22.06.2015 um 11:37:37 Uhr
Goto Top
Hallo jodel32,
ja du hast recht, es war colinardo.

habe die zeile "var regex = /^\s*(N\d+ )?([^\r\n]+\s*)/gmi;" eingefügt.
Aber leider ist die besagte Zeile nach wie vor weg.

Gruß Peter
114757
114757 22.06.2015 aktualisiert um 11:39:39 Uhr
Goto Top
Bitte nutze Code-Tags für deinen Quellcode. So sind keinerlei Zeichen deines Codes unterscheidbar !
newbie58
newbie58 22.06.2015 um 12:41:09 Uhr
Goto Top
ok, ich versuche es mal mit Code-Tags

Beispiel Original:
 N340 R20=-227 

 N350 A_START
 N360 M6
 N370 A_STOP

 N380 SPINDELOK:

 N390 R41=120 R42=0
 N400 TOOL_CONTROL_D1

 N410 R40=5026 R96=837 ;Bearbeitung
  N420 G00 G507 G60 G90 G601 A=DC(227) D1 F=R40 S=R96 M03 M08 M07 M52 T="5099353"  
 ; NC_JOB: 40001 FLAECHE E-FLANSCH
 N430 R2=162.788 R3=160.788 R10=162.788 R11=510

 N440 G00 G60 X285.8 Y264.112 

Nach der Neunummerierung:
 N340 R20=-227 

 N350 A_START
 N360 M6
 N370 A_STOP

 N380 SPINDELOK:

 N390 R41=120 R42=0
 N400 TOOL_CONTROL_D1

 N410 R40=5026 R96=837 ;Bearbeitung
 ; NC_JOB: 40001 FLAECHE E-FLANSCH
 N420 R2=162.788 R3=160.788 R10=162.788 R11=510

 N430 G00 G60 X285.8 Y264.112 

Das Script von colinardo:
 // Eingabe über Eingabefenster
 var counter = UltraEdit.getValue("Startzähler?",1);  
 var schritt = UltraEdit.getValue("Schrittweite?",1);  

 UltraEdit.activeDocument.selectAll(); 
 var doc = UltraEdit.activeDocument.selection; 
 var regex = /^(N\d+ )?([^\r\n]+\s*)/gmi; 

 while (result = regex.exec(doc)){ 
 if (result[1]){ 
 UltraEdit.activeDocument.write("N" + counter + " " + result[2]);   
 counter += schritt;
 }else{ 
 UltraEdit.activeDocument.write(result); 
 }
 }

Zeile von jodel32

var regex = /^\s*(N\d+ )?([^\r\n]+\s*)/gmi;
</code/

D. h., die Zeile N420 wird gelöscht und die Zeile N430 wird zu N420.
114757
114757 22.06.2015 aktualisiert um 13:17:26 Uhr
Goto Top
und wie soll das richtige Ergebnis aussehen ? Da sind überall Leerzeichen am Anfang ?
newbie58
newbie58 22.06.2015 um 13:42:37 Uhr
Goto Top
Nein, am Anfang sind keine Leerzeichen,
Beispiel:
N410 R40=5026 R96=837  ;Bearbeitung
 N420 G00 G507 G60 G90 G601 A=DC(227) D1 F=R40 S=R96 M03 M08 M07 M52 T="5099353"  
; NC_JOB:    40001 FLAECHE E-FLANSCH
N430 R2=162.788 R3=160.788 R10=162.788 R11=510
N440 G00 G60 X285.8 Y264.112 
N450 G00 G60 Z=R3
N460 G01 G42 NORM Y292.312 


SOLL nach der Umnummerrierung
N10 R40=5026 R96=837  ;Bearbeitung
N20 G00 G507 G60 G90 G601 A=DC(227) D1 F=R40 S=R96 M03 M08 M07 M52 T="5099353"  
; NC_JOB:    40001 FLAECHE E-FLANSCH
N30 R2=162.788 R3=160.788 R10=162.788 R11=510
N40 G00 G60 X285.8 Y264.112 
N50 G00 G60 Z=R3
N60 G01 G42 NORM Y292.312 

Derzeit geht die Zeile in der ein Leerzeichen am Satzanfang vor N... steht, verloren:
N10 R40=5026 R96=837  ;Bearbeitung
 
; NC_JOB:    40001 FLAECHE E-FLANSCH
N20 R2=162.788 R3=160.788 R10=162.788 R11=510
N30 G00 G60 X285.8 Y264.112 
N40 G00 G60 Z=R3
N50 G01 G42 NORM Y292.312 
114757
Lösung 114757 22.06.2015, aktualisiert am 23.06.2015 um 07:01:46 Uhr
Goto Top
Nein, am Anfang sind keine Leerzeichen,
Naja, in deinem ersten gesposteten Text um 12:14 schon ...

// Eingabe über Eingabefenster
var counter = UltraEdit.getValue("Startzähler?",1);  
var schritt = UltraEdit.getValue("Schrittweite?",1);  

UltraEdit.activeDocument.selectAll();
var doc = UltraEdit.activeDocument.selection;
var regex = /^(\s*?N\d+)?([^\r\n]+)/gmi;

while (result = regex.exec(doc)){
	if (result[1]){
		UltraEdit.activeDocument.write("N" + counter + " " + result[2] + "\r\n");  
		counter += schritt;
	}else{
		UltraEdit.activeDocument.write(result + "\r\n");  
	}
}
newbie58
newbie58 23.06.2015 um 07:01:55 Uhr
Goto Top
Hallo jodel32,

vielen Dank für Deine Bemühungen.
Es funktioniert tadellos face-smile

Gruß Peter
newbie58
newbie58 23.06.2015 um 14:28:24 Uhr
Goto Top
Hallo jodel32,

das Script funktioniert ja soweit, dass es führende Leerzeichen vor der Satznummer N.... entfernt und die Zeile auch nicht gelöscht wird.
Jedoch werden auch die gewollten Leerzeilen rausgenommen.
Gibt es da eine Möglichkeit, dass die Leerzeilen (bessere Lesbarkeit des NC-Programmes) erhalten bleiben?

Danke
Peter