Hallo Edgecamler,
hier nun der erste Teil zu Punkt 1.
Wer kennt das nicht? In den Arbeitsplänen, Toollisten und Materialien schleichen sich immer wieder Umlaute und Sonderzeichen ein.
Z.B. Fräser, Gehäuse, der Programierer Jürgen Müller oder der Werkstoff <0,8%Co<500N/mm².
Auf einige dieser Zeichen reagieren die meisten Steuerungen sehr "allergisch".
Lösung 1: Alle Kommentate aus dem NC-Code rauslassen! Na ja, hilft nicht gerade der Übersichtlichkeit.
Lösung 2: Akriebisch darauf achten, das keine Sonderzeichen in die Datenbanken kommen! Auch nur bedingt möglich.
Lösung 3: Man fummelt alle Sonderzeichen von Hand aus dem NC-Code! Spätestens nach den zehnten erfolglosem Versuch, das Programm auf die Steuerung zu übertragen, ist man Reif für die Klapse!
Lösung 4: Man schreibt das Problem an Vero und hoft auf ein Update! Wer bis 2035 Zeit hat.....
Einerseits hat es mich schon gewundert, dass sich Vero oder auch andere CAM-Hersteller noch nicht diesem offen sichtlichem Problem angenommen haben.
Andererseits gefällt mir meine Lösung um so besser, da ich jetzt selber bestimmen kann, wo und wie die Sonderzeichen ersetzt werden sollen.
Z.B. Im NC-Code Ersetzen, in den gedruckten Werkzeuglisten nicht.
Vorab noch ein paar Anmerkungen:
- Für alles, was Ihr am
Postprozessor ändert, übernehme ich kein Haftung. Ich garantiere auch nicht, dass der Code bei euch läuft.
- Es empfiehlt sich, vorher die Daten (speziell vom PP) zu sichern. Wäre schade, wenn man sich einen funktionierenden PP zerschießt!
- Der Code-Konstruktor läuft nicht mit der Trainings-Lizenz
Hier nun die Prozedur um die Umlaute zu ersetzen. Dieser Code muß in das "Anwenderdefinition Whiteboard". Wenn schon etwas dadrin steht, setzt den Code unten dran.
Zeilen, die nach dem ;CODE: ein * haben, sind Kommentare und erläutern die einzelnen Schritte.
;CODE: *--------------Prozedur Umlaute ersetzen------------------
;CODE:
;CODE: *Den String an die Variable $REPLACE übergeben und Prozedur REPLACE_MV aufrufen.
;CODE: *Nach Durchlauf enthält die Variable $REPLACE den geänderten String
;CODE:
;CODE: %DECLARE=#SuEr1,#SuEr2,$REPLACE,$REP4,$REP3,$REP2,$REP1
;CODE: %DECLARE=$REPMV,#REPN3,#REPN2,#REPN1,#REPN0
;CODE:
;CODE: %PROCEDURE=REPLACE_MV
;CODE:
;CODE: *Startwerte äussere Schleife
;CODE: *Die Variable $REPMV enthält jeweils den Umlaut und die zwei zu ersetzenden Zeichen
;CODE: $REPMV="ÄAEäaeÖOEöoeÜUEüueßsz²-2³-3%Pr°Gr"
;CODE: *Zeichenkettenlänge ermitteln
;CODE: #REPN3=STRLENGTH($REPMV)
;CODE: *Zeiger auf erstes Zeichen
;CODE: #REPN0=1
;CODE: *Anfang außere Schleife, Such- und Ersatzzeichen festlegen
;CODE: @STARTREP0
;CODE: *Zu suchende unb zu ersetzende Zeichen extrahieren
;CODE: #REPN1=#REPN0+1
;CODE: #REPN2=#REPN1+1
;CODE: $REP1=STRMID($REPMV,#REPN0,#REPN0)
;CODE: $REP2=STRMID($REPMV,#REPN1,#REPN2)
;CODE: *Zeiger auf nächstes Zeichen erhöhen
;CODE: #REPN0=#REPN0+3
;CODE:
;CODE: * Innere Schleife, Suchen/Ersetzen
;CODE: *Startwerte innere Schleife setzen
;CODE: *Zeichenkettenlänge ermitteln
;CODE: #SuEr1=STRLENGTH($REPLACE)
;CODE: #SuEr1=#SuEr1+1
;CODE: *Zeiger auf erstes Zeichen
;CODE: #SuEr2=1
;CODE: *In $REP4 wird der geänderte String zusammengesetzt. Startwert ist ""
;CODE: $REP4=""
;CODE: *Innere Schleife
;CODE: @STARTREP1
;CODE: *Zeichen aus String holen
;CODE: $REP3=STRMID($REPLACE,#SuEr2,#SuEr2)
;CODE: *Wenn Sonderzeichen, dann ersetzen
;CODE: %IF $REP3=$REP1 %THEN $REP3=$REP2
;CODE: *Neue Zeichenkette zusammensetzen
;CODE: $REP4=STRCAT($REP4,$REP3)
;CODE: *Zeiger auf Zeichen um 1 erhöhen
;CODE: #SuEr2=#SuEr2+1
;CODE: *Wiederholen, bis Ende erreicht
;CODE: %IF #SuEr2<>#SuEr1 @STARTREP1
;CODE: *Geänderte Zeichenkette in Übergabevariable
;CODE: $REPLACE=$REP4
;CODE: %IF #REPN0<=#REPN3 @STARTREP0
;CODE:
;CODE: %ENDM
In der Zeile
;CODE: $REPMV="ÄAEäaeÖOEöoeÜUEüueßsz²-2³-3%Pr°Gr"
ist immer ein zu ersetzendes Zeichen und zwei Zeichen zum ersetzen. "ÄAE" bedeutet, Ä wird mit AE ersetz usw. Die Kette kann nach belieben geändert oder erweitert werden.
Es müssen aber immer eins plus zwei Zeichen sein!
So, der erste Teil ist geschaft. Jetzt muss man "nur" noch die Prozedur an der gewünschten Stelle mit der entsprechenden Variable Aufrufen.
Für den Programmstart könnte das so aussehen:
%
;CODE: $REPLACE=JOBCOM < Variable JOBCOM in die Übergabevariable schreiben
;CODE: %CALL=REPLACE_MV < Prozedur aufrufen
;CODE: $USER5=$REPLACE < Wert in USER5 schreiben
<[PROGID]> ([ANWENDER-STRING-5]) < Ausgabe in den NC-Code
;CODE:
;CODE: $REPLACE=JOBCUST
;CODE: %CALL=REPLACE_MV
;CODE: $USER4=$REPLACE
(KUNDE : [ANWENDER-STRING-4])
;CODE:
(WERKSTUECK : [ANWENDER-STRING-5])
;CODE:
;CODE: $REPLACE=JOBMATL
;CODE: %CALL=REPLACE_MV
;CODE: $USER5=$REPLACE
(MATERIAL : [ANWENDER-STRING-5])
;CODE:
;CODE: $REPLACE=JOBPROG
;CODE: %CALL=REPLACE_MV
;CODE: $USER5=$REPLACE
(PPROGRAMMIERER: [ANWENDER-STRING-5])
;CODE:
Den Text nach dem Zeichen < nicht einfügen. Nur zur Erläuterung!
Der ausgegebene NC-Code sieht dann z.B. so aus:
%
<123456789> (XS Gehaeuse)
(KUNDE : Baerenjaeger)
(WERKSTUECK : XS Gehaeuse)
(MATERIAL : Edelstaehle 700-1200 N/mm-2)
(PROGRAMMIERER : Juergen Mueller)
Für den Werkzeugkommentar sieht der Code z.B. so aus:
;CODE: *Umlaut entfernen
;CODE: $REPLACE=USERDEFINEDSTRING
;CODE: %CALL=REPLACE_MV
;CODE: $USER5=$REPLACE
;CODE: *
[AUSBLEND][SATZNUM]G2900 P1 ([ANWENDER-STRING-5])
[AUSBLEND][SATZNUM][<C>REV-NR] M06
[AUSBLEND][SATZNUM][NÄCHSTESWKZ]
An weiteren Stellen im PP nach Bedarf anpassen.
Dann den PP Kompilieren (Mit dem Zahnradbutton).
In Edgecam das Fenster "Maschinendiagramm" aufrufen. Mit der Maus auf die Maschine gehen und rechte Taste drücken.
Dann "Maschine erneut laden" auswählen.
NC-Code erstellen und Ergebnis überprüfen.
Wenn es Probleme Gibt!?
Beim Kompilieren: Der Kompiler gibt einen gute Fehlerdatei aus. Genau durchlesen! Der Fehler ist dann schell gefunden.
Bei der Erstellung des NC-Codes: Bei mir hat sich Edgecam bei der Erzeugung des NC-Codes aufgehängt, wenn manche Variablen nicht belegt sind bzw. nichts in das Feld eingetragen wurde.
Dies Betrifft z.B. Feld "Werkzeugdatenbank" bei der Werkzeugauswahl. Muss mal sehen, ob man das noch irgendwie abfangen kann.
So, ich hoffe, Ihr habt das Prinzip verstanden!
Die anderen Features kommen im Anschluss...
Viel Spaß und Erfolg
Grüße aus dem Lipperland