SprutCAM
...unsere Software ... Ihr Erfolg
Formatierte Werkzeugliste, Anpassung unseres PP
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
Hallo,
vielleicht kann mir jemand hier im Forum helfen.
Wir beschreiben unsere Werkzeuge an jeder Fräse nach einem bestimmten System:
z.B.: VHSFR-010.00-4S-30lg
steht für: Vollhartmetall-Schaftfräser, 10mm Durchmesser, 4 Schneiden als "S" Schlichtfräser und ist 30mm ausgespannt.
Jetzt möchte ich dieses System auch mit dem PP umsetzten und habe die Sub-Routine "PrintAllTools" im PP dementsprechend geändert:
Die Berechnungen in den ersten drei Zeilen dienen der Formatierung mit führender und folgender Null. Dann wird die Zahl je nach Position der Kommastelle zusammengebaut und ausgegeben.
Jetzt aber zu meinen eigentlichen Fragen:
1. Gibt es eine einfachere Art der Formatierung (Format Befehl) oder einen anderen Aufbau des Programms. Vielleicht hat ja jemand eine Idee?
2. Wie kann ich die Zähnezahl des Fräsers ermitteln? Im LOADTL Befehl wird dieser Wert scheinbar nicht mit übermittelt. Bisher habe ich also nur einen Platzhalter eingebaut. "-0S-".
MFG Uschi
vielleicht kann mir jemand hier im Forum helfen.
Wir beschreiben unsere Werkzeuge an jeder Fräse nach einem bestimmten System:
z.B.: VHSFR-010.00-4S-30lg
steht für: Vollhartmetall-Schaftfräser, 10mm Durchmesser, 4 Schneiden als "S" Schlichtfräser und ist 30mm ausgespannt.
Jetzt möchte ich dieses System auch mit dem PP umsetzten und habe die Sub-Routine "PrintAllTools" im PP dementsprechend geändert:
CODE
...
wkzd1 = pos(".",Toolinfo_Durchmesser)
wkzd2 = LEN(Toolinfo_Durchmesser)
if wkzd1 > 0 then wkzd1 = wkzd2 - wkzd1 + 1 else wkzd1 = 0
wkzd3 = "000.00"
if wkzd1 = 0 then wkzd3 = COPY(wkzd3,1,3-wkzd2) + Toolinfo_Durchmesser + ".00"
if wkzd1 = 2 then wkzd3 = COPY(wkzd3,1,3-(wkzd2-wkzd1)) + Toolinfo_Durchmesser + "0"
if wkzd1 = 3 then wkzd3 = COPY(wkzd3,1,3-(wkzd2-wkzd1)) + Toolinfo_Durchmesser
!FormBlock ! Ausgabe
output OutStr$ + "( T" + Toolinfo_Nummer + ": " + WKZinfo + wkzd3 + "-0S-" + Toolinfo_Laenge + "lg - " + UPCASE(k) + " )"
...
wkzd1 = pos(".",Toolinfo_Durchmesser)
wkzd2 = LEN(Toolinfo_Durchmesser)
if wkzd1 > 0 then wkzd1 = wkzd2 - wkzd1 + 1 else wkzd1 = 0
wkzd3 = "000.00"
if wkzd1 = 0 then wkzd3 = COPY(wkzd3,1,3-wkzd2) + Toolinfo_Durchmesser + ".00"
if wkzd1 = 2 then wkzd3 = COPY(wkzd3,1,3-(wkzd2-wkzd1)) + Toolinfo_Durchmesser + "0"
if wkzd1 = 3 then wkzd3 = COPY(wkzd3,1,3-(wkzd2-wkzd1)) + Toolinfo_Durchmesser
!FormBlock ! Ausgabe
output OutStr$ + "( T" + Toolinfo_Nummer + ": " + WKZinfo + wkzd3 + "-0S-" + Toolinfo_Laenge + "lg - " + UPCASE(k) + " )"
...
Die Berechnungen in den ersten drei Zeilen dienen der Formatierung mit führender und folgender Null. Dann wird die Zahl je nach Position der Kommastelle zusammengebaut und ausgegeben.
CODE
N2 ( ... WERKZEUGLISTE ........................ )
N3 ( T21: HSSFR-019.70-0S-35lg - SCHAFTFRÄSER L35, D19.7 HS )
N4 ( T53: VHSFR-003.90-0S-20lg - SCHAFTFRÄSER L20, D3.9 )
N5 ( T54: VHSFR-003.96-0S-20lg - SCHAFTFRÄSER L20, D3.96 )
N6 ( T55: VHSFR-004.00-0S-20lg - SCHAFTFRÄSER L20, D4 )
N7 ( ... ENDE WERKZEUGLISTE .................. )
N3 ( T21: HSSFR-019.70-0S-35lg - SCHAFTFRÄSER L35, D19.7 HS )
N4 ( T53: VHSFR-003.90-0S-20lg - SCHAFTFRÄSER L20, D3.9 )
N5 ( T54: VHSFR-003.96-0S-20lg - SCHAFTFRÄSER L20, D3.96 )
N6 ( T55: VHSFR-004.00-0S-20lg - SCHAFTFRÄSER L20, D4 )
N7 ( ... ENDE WERKZEUGLISTE .................. )
Jetzt aber zu meinen eigentlichen Fragen:
1. Gibt es eine einfachere Art der Formatierung (Format Befehl) oder einen anderen Aufbau des Programms. Vielleicht hat ja jemand eine Idee?
2. Wie kann ich die Zähnezahl des Fräsers ermitteln? Im LOADTL Befehl wird dieser Wert scheinbar nicht mit übermittelt. Bisher habe ich also nur einen Platzhalter eingebaut. "-0S-".
MFG Uschi
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
der einfachere Befehl ist ein Register. Bei Registern kann eine Formatierung vorgenommen werden.
Die Zähnezahl wird im PP nicht ausgegeben. Gebe ich mal an die Entwicklung weiter.
Die Zähnezahl wird im PP nicht ausgegeben. Gebe ich mal an die Entwicklung weiter.
--------------------
Datentechnik Reitz GmbH & Co. KG
Distributor SprutCAM, SolidWorks, ency, P3D, Robotic
T:06461 / 7593437
F:06461 / 7593438
www.cnc-Technik.de
reitz@cnc-technik.de
Distributor SprutCAM, SolidWorks, ency, P3D, Robotic
T:06461 / 7593437
F:06461 / 7593438
www.cnc-Technik.de
reitz@cnc-technik.de
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
Hallo,
vielen Dank für die schnelle Antwort.
Register zu benutzen scheint eine gute Idee zu sein, ich hätte mir dazu aber eine etwas detailliertere Antwort gewünscht.
Jetzt habe ich mich selber mal daran versucht und scheiterte scheinbar an Unwissenheit. Im nachhinein frage ich mich auch ob dieser Weg wirklich der einfachere ist?
Also:
Neues Register angelegt:
WLT - Werkzeugliste (ganz am Ende der Liste)
Im PP unter PARTNO:
Werkzeugliste = 0
Werkzeugliste@ = 0
Im Sub des PP unter Filter:
replace(S,"WLT","") !Werkzeuglistenzähler Bezeichner löschen
Dann habe ich meinen Code etwas geändert und bekomme nun zumindest das Register angezeigt.
Folgendes wird jetzt ausgegeben:
Soweit so gut. Jetzt scheitere ich aber daran den "Output OutStr$" Befehl zusammen zusetzten, damit die Ausgabe wieder folgendes Format hat:
N11 ( T21: HSSFR-019.70-0S-35lg - SCHAFTFRÄSER L35, D19.7 HS )
Mir scheint als wenn ich kurz vor der Lösung stehe...Sollte ich einen Lösungsweg finden, werde ich es hier posten.
Zu dem anderen Problem mit der Zähnezahl. Vielen Dank das Sie es weiterleiten, ich wäre natürlich über einen Hinweis diesbezüglich sehr dankbar.
MFG Uschi
vielen Dank für die schnelle Antwort.
Register zu benutzen scheint eine gute Idee zu sein, ich hätte mir dazu aber eine etwas detailliertere Antwort gewünscht.
Jetzt habe ich mich selber mal daran versucht und scheiterte scheinbar an Unwissenheit. Im nachhinein frage ich mich auch ob dieser Weg wirklich der einfachere ist?
Also:
Neues Register angelegt:
WLT - Werkzeugliste (ganz am Ende der Liste)
Im PP unter PARTNO:
Werkzeugliste = 0
Werkzeugliste@ = 0
Im Sub des PP unter Filter:
replace(S,"WLT","") !Werkzeuglistenzähler Bezeichner löschen
Dann habe ich meinen Code etwas geändert und bekomme nun zumindest das Register angezeigt.
CODE
Toolinfo_Nummer = CldFile[i].Cmd[j].Data[1]
Toolinfo_Durchmesser = CldFile[i].Cmd[j].Data[5]
Toolinfo_Laenge = CldFile[i].Cmd[j].Data[8]
Werkzeugliste@ = 0
Werkzeugliste = NUM(Toolinfo_Durchmesser)
formblock
wkzd1 = pos(".",Toolinfo_Durchmesser)
wkzd2 = LEN(Toolinfo_Durchmesser)
if wkzd1 > 0 then wkzd1 = wkzd2 - wkzd1 + 1 else wkzd1 = 0
wkzd3 = "000.00"
if wkzd1 = 0 then wkzd3 = COPY(wkzd3,1,3-wkzd2) + Toolinfo_Durchmesser + ".00"
if wkzd1 = 2 then wkzd3 = COPY(wkzd3,1,3-(wkzd2-wkzd1)) + Toolinfo_Durchmesser + "0"
if wkzd1 = 3 then wkzd3 = COPY(wkzd3,1,3-(wkzd2-wkzd1)) + Toolinfo_Durchmesser
output OutStr$
Toolinfo_Durchmesser = CldFile[i].Cmd[j].Data[5]
Toolinfo_Laenge = CldFile[i].Cmd[j].Data[8]
Werkzeugliste@ = 0
Werkzeugliste = NUM(Toolinfo_Durchmesser)
formblock
wkzd1 = pos(".",Toolinfo_Durchmesser)
wkzd2 = LEN(Toolinfo_Durchmesser)
if wkzd1 > 0 then wkzd1 = wkzd2 - wkzd1 + 1 else wkzd1 = 0
wkzd3 = "000.00"
if wkzd1 = 0 then wkzd3 = COPY(wkzd3,1,3-wkzd2) + Toolinfo_Durchmesser + ".00"
if wkzd1 = 2 then wkzd3 = COPY(wkzd3,1,3-(wkzd2-wkzd1)) + Toolinfo_Durchmesser + "0"
if wkzd1 = 3 then wkzd3 = COPY(wkzd3,1,3-(wkzd2-wkzd1)) + Toolinfo_Durchmesser
output OutStr$
Folgendes wird jetzt ausgegeben:
CODE
N10 ( ... WERKZEUGLISTE ........................ )
N11 020.00
N12 004.65
N13 005.00
N14 004.00
N15 008.00
N16 014.00
N17 010.00
N18 004.00
N19 004.00
N20 009.97
N21 012.00
N14 ( ... ENDE WERKZEUGLISTE .................. )
N11 020.00
N12 004.65
N13 005.00
N14 004.00
N15 008.00
N16 014.00
N17 010.00
N18 004.00
N19 004.00
N20 009.97
N21 012.00
N14 ( ... ENDE WERKZEUGLISTE .................. )
Soweit so gut. Jetzt scheitere ich aber daran den "Output OutStr$" Befehl zusammen zusetzten, damit die Ausgabe wieder folgendes Format hat:
N11 ( T21: HSSFR-019.70-0S-35lg - SCHAFTFRÄSER L35, D19.7 HS )
Mir scheint als wenn ich kurz vor der Lösung stehe...Sollte ich einen Lösungsweg finden, werde ich es hier posten.
Zu dem anderen Problem mit der Zähnezahl. Vielen Dank das Sie es weiterleiten, ich wäre natürlich über einen Hinweis diesbezüglich sehr dankbar.
MFG Uschi
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
Für diejenigen die es interessieren könnte. Ich habe das Problem nun selber lösen können.
In der Registertabelle steht weiterhin mein neu angelegtes Register: ID= WLT und Name= Werkzeugliste
Die Einträge unter "PARTNO" habe ich entfernt, die waren überflüssig. Auch in den Sub´s unter Filter den Eintrag habe ich wieder entfernt.
Der Aufbau unter "PrintAllTools" sieht nun folgendermaßen aus:
Als Ausgabe aus dem PP erhalte ich nun:
Damit habe ich jetzt zwar eine andere Art der Formatierung eingebaut, aber das mir diese Variante nun besser gefällt kann ich nicht sagen.
Mir wäre ein "Format" Befehl, wie man ihn aus anderen Programmiersprachen kennt, lieber gewesen. Vielleicht ja in einer späteren SC-Version.
Über einen Hinweis zur Ausgabe der Zähnezahl des Werkzeugs würde ich mich trotzdem freuen.
Mit freundlichen Grüßen
Uschi
In der Registertabelle steht weiterhin mein neu angelegtes Register: ID= WLT und Name= Werkzeugliste
Die Einträge unter "PARTNO" habe ich entfernt, die waren überflüssig. Auch in den Sub´s unter Filter den Eintrag habe ich wieder entfernt.
Der Aufbau unter "PrintAllTools" sieht nun folgendermaßen aus:
CODE
Toolinfo_Nummer = CldFile[i].Cmd[j].Data[1]
Toolinfo_Durchmesser = CldFile[i].Cmd[j].Data[5]
Toolinfo_Laenge = CldFile[i].Cmd[j].Data[8]
Werkzeugliste@ = 0
Werkzeugliste = NUM(Toolinfo_Durchmesser)
formblock !Formatierung anwenden
speicher = COPY(OutStr$,len(OutStr$)-5,6) !letzten Teil auslesen
OutStr$ = "" !OutStr$ leeren
numkadr = numkadr@ !Nummer wieder auf Ursprung setzen
formblock ! Satznummer ausgeben
output OutStr$ + "( T" + Toolinfo_Nummer + ": " + WKZinfo + speicher + "-0S-" + Toolinfo_Laenge + "lg - " + UPCASE(k) + " )" !Werkzeugliste
Toolinfo_Durchmesser = CldFile[i].Cmd[j].Data[5]
Toolinfo_Laenge = CldFile[i].Cmd[j].Data[8]
Werkzeugliste@ = 0
Werkzeugliste = NUM(Toolinfo_Durchmesser)
formblock !Formatierung anwenden
speicher = COPY(OutStr$,len(OutStr$)-5,6) !letzten Teil auslesen
OutStr$ = "" !OutStr$ leeren
numkadr = numkadr@ !Nummer wieder auf Ursprung setzen
formblock ! Satznummer ausgeben
output OutStr$ + "( T" + Toolinfo_Nummer + ": " + WKZinfo + speicher + "-0S-" + Toolinfo_Laenge + "lg - " + UPCASE(k) + " )" !Werkzeugliste
Als Ausgabe aus dem PP erhalte ich nun:
CODE
N10 ( ... WERKZEUGLISTE ........................ )
N11 ( T21: VHSFR-020.00-0S-35lg - SCHAFTFRÄSER L35, D20 )
N12 ( T70: VHKBO-004.65-0S-30lg - BOHRER L30, D4.65, A130 )
N13 ( T83: VHGWD-005.00-0S-50lg - GEWINDEBOHRER L50, D5, A130 )
....
N18 ( ... ENDE WERKZEUGLISTE .................. )
N11 ( T21: VHSFR-020.00-0S-35lg - SCHAFTFRÄSER L35, D20 )
N12 ( T70: VHKBO-004.65-0S-30lg - BOHRER L30, D4.65, A130 )
N13 ( T83: VHGWD-005.00-0S-50lg - GEWINDEBOHRER L50, D5, A130 )
....
N18 ( ... ENDE WERKZEUGLISTE .................. )
Damit habe ich jetzt zwar eine andere Art der Formatierung eingebaut, aber das mir diese Variante nun besser gefällt kann ich nicht sagen.
Mir wäre ein "Format" Befehl, wie man ihn aus anderen Programmiersprachen kennt, lieber gewesen. Vielleicht ja in einer späteren SC-Version.
Über einen Hinweis zur Ausgabe der Zähnezahl des Werkzeugs würde ich mich trotzdem freuen.
Mit freundlichen Grüßen
Uschi
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
Hallo,
ich finde die Idee sehr interessant aber ich bin mir nicht ganz im klaren wo der Vorteil im Vergleich zu einem Einrichteplan liegt.
Mit freundlichen Grüßen
Heinz
ich finde die Idee sehr interessant aber ich bin mir nicht ganz im klaren wo der Vorteil im Vergleich zu einem Einrichteplan liegt.
Mit freundlichen Grüßen
Heinz
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
Hallo,
ich finde die Idee sehr interessant aber ich bin mir nicht ganz im klaren wo der Vorteil im Vergleich zu einem Einrichteplan liegt.
Mit freundlichen Grüßen
Heinz
ich finde die Idee sehr interessant aber ich bin mir nicht ganz im klaren wo der Vorteil im Vergleich zu einem Einrichteplan liegt.
Mit freundlichen Grüßen
Heinz
Hallo Heinz,
die Werkzeugliste im NC-Programm hat für uns den Vorteil, dass wir nicht für jedes einmal erstellte Programm einen Einrichteplan pflegen oder irgendwo ablegen müssen. Wenn das Programm auf der Maschine gespeichert ist, können wir die Werkzeugdaten direkt im Programm anschauen und brauchen oftmals gar keinen Einrichteplan. In den Kopfdaten des Programms speichern wir auch Informationen zum Nullpunkt und zum Rohmaterial.
Da wir nur eine SC Lizenz besitzen, kommen wir auch nicht immer zum Einrichten an die Daten heran und eine extra Mappe mit Einrichteplänen führen wir nur bei wirklich aufwendigen Teilen.
Mit diesem System fahren wir sehr gut. Jeder Arbeiter kennt die Abkürzungen der Werkzeuge und findet sich sofort an jeder Maschine zurecht.
Die oben beschriebene Werkzeugliste soll ja kein Ersatz für einen Einrichteplan sein. Ich würde es eher als Ergänzung sehen.
MFG Uschi
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
Hallo,
Ich habe nach einer Möglichkeit gesucht meine Werkzeuge, im NC-Code, als formatierte Werkzeugliste auszugeben.
In dieser Werkzeugliste sollten einige technische Details des Werkzeugs ausgegeben werden.
Ich habe mir mal die Mühe gemacht, die Standard-Sub-Ausgabe "PrintAllTools", wie im Sprutcam Handbuch beschrieben,
um zuarbeiten. Meine Anforderungen:
- Die Werkzeugnummer sollte in der Liste nur noch einmal auftauchen
- Die Werkzeugnummern sortiert von klein nach groß ausgeben
- Technische Details wie Durchmesser, Zähnezahl und Länge beinhalten.
Zum Schluss sollte das ganze ja noch formatiert ausgegeben werden, aber der Übersichtlichkeit halber habe ich hier mal
darauf verzichtet. Wie ich die Werkzeuge formatiere habe ich ja schon weiter oben beschrieben.
Wie gesagt ist es als SUB angelegt und kann "PrintAllTools" ersetzen.
Den Programmcode könnt ihr benutzen, aber der Hinweis auf "cncuschi" und "cnc-arena.com" sollte erhalten bleiben !
Damit ist auch dieses Thema für mich abgeschlossen.
cncuschi
Ich habe nach einer Möglichkeit gesucht meine Werkzeuge, im NC-Code, als formatierte Werkzeugliste auszugeben.
In dieser Werkzeugliste sollten einige technische Details des Werkzeugs ausgegeben werden.
Ich habe mir mal die Mühe gemacht, die Standard-Sub-Ausgabe "PrintAllTools", wie im Sprutcam Handbuch beschrieben,
um zuarbeiten. Meine Anforderungen:
- Die Werkzeugnummer sollte in der Liste nur noch einmal auftauchen
- Die Werkzeugnummern sortiert von klein nach groß ausgeben
- Technische Details wie Durchmesser, Zähnezahl und Länge beinhalten.
Zum Schluss sollte das ganze ja noch formatiert ausgegeben werden, aber der Übersichtlichkeit halber habe ich hier mal
darauf verzichtet. Wie ich die Werkzeuge formatiere habe ich ja schon weiter oben beschrieben.
CODE
sub PATS
! Coded from cncuschi - (www.cnc-arena.com)
ToolArrayA: array of string ! Array definition
ToolArrayB: array of string
fc: Integer ! CLD-Filezähler
cc: Integer ! CMD-Filezähler
tc: integer ! Toolcounter
bs1: integer ! Bubblesort Zähler
bs2: integer
bstmp1: string ! Bubblesort Speicher 1
bstmp2: string ! Bubblesort Speicher 2
wkznr: string ! Werkzeugnummer
wkzdm: string ! Werkzeugdurchmesser
wkzart: string ! Werkzeugkommentar
wkzzahn: string ! Zähnezahl Werkzeug
wkzlng: string ! Werkzeuglänge
tc = 1 ! Schleifenzähler
bs = 1
formblock
output OutStr$ + "( . WERKZEUGLISTE ...................... )"
for fc = 0 to CldFile.FileCount do begin
if (CldFile[fc].Enabled > 0) and (CldFile[fc].IsNCSub = 0) then begin
for cc = 1 to CldFile[fc].CmdCount do begin
if CldFile[fc].Cmd[cc].Code = CodeOfCmd("LOADTL") then begin
if CldFile[fc].Cmd[cc-3].Code = CodeOfCmd("PPFUN") then
wkznr = CldFile[fc].Cmd[cc-3].Int["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Number"]
wkzdm = CldFile[fc].Cmd[cc-3].Flt["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Properties.Diameter"]
wkzart = CldFile[fc].Cmd[cc-3].Str["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Comment"]
wkzart = copy(wkzart,1,32) ! Ausgabelänge Kommentar begrenzen
wkzzahn = CldFile[fc].Cmd[cc-3].Int["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Properties.TeethCount"]
wkzlng = CldFile[fc].Cmd[cc-3].Flt["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Properties.Length"]
ToolArrayA[tc] = "T"+wkznr+": "+wkzart
ToolArrayB[tc] = " ->: D="+wkzdm+" Z="+wkzzahn+" L="+wkzlng
tc = tc + 1
end
end
end
end
for bs = 1 to tc-2 do ! Bubblesort der Werkzeugliste
begin
for fc = 1 to tc-2 do
begin
bs1 = num(copy(ToolArrayA[fc],2,pos(":",ToolArrayA[fc])-2))
bs2 = num(copy(ToolArrayA[fc+1],2,pos(":",ToolArrayA[fc+1])-2))
if bs1 > bs2 then
begin
bstmp1 = ToolArrayA[fc+1]
bstmp2 = ToolArrayB[fc+1]
ToolArrayA[fc+1] = ToolArrayA[fc]
ToolArrayB[fc+1] = ToolArrayB[fc]
ToolArrayA[fc] = bstmp1
ToolArrayB[fc] = bstmp2
end
end
end
for fc = 1 to tc-1 do ! Ausgabe der Arrays
begin
formblock
output outstr$ + "( " + ToolArrayA[fc] + " )"
formblock
output outstr$ + "( " + ToolArrayB[fc] + " )"
end
formblock
output OutStr$ + "( ..................................... )"
subend
! Coded from cncuschi - (www.cnc-arena.com)
ToolArrayA: array of string ! Array definition
ToolArrayB: array of string
fc: Integer ! CLD-Filezähler
cc: Integer ! CMD-Filezähler
tc: integer ! Toolcounter
bs1: integer ! Bubblesort Zähler
bs2: integer
bstmp1: string ! Bubblesort Speicher 1
bstmp2: string ! Bubblesort Speicher 2
wkznr: string ! Werkzeugnummer
wkzdm: string ! Werkzeugdurchmesser
wkzart: string ! Werkzeugkommentar
wkzzahn: string ! Zähnezahl Werkzeug
wkzlng: string ! Werkzeuglänge
tc = 1 ! Schleifenzähler
bs = 1
formblock
output OutStr$ + "( . WERKZEUGLISTE ...................... )"
for fc = 0 to CldFile.FileCount do begin
if (CldFile[fc].Enabled > 0) and (CldFile[fc].IsNCSub = 0) then begin
for cc = 1 to CldFile[fc].CmdCount do begin
if CldFile[fc].Cmd[cc].Code = CodeOfCmd("LOADTL") then begin
if CldFile[fc].Cmd[cc-3].Code = CodeOfCmd("PPFUN") then
wkznr = CldFile[fc].Cmd[cc-3].Int["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Number"]
wkzdm = CldFile[fc].Cmd[cc-3].Flt["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Properties.Diameter"]
wkzart = CldFile[fc].Cmd[cc-3].Str["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Comment"]
wkzart = copy(wkzart,1,32) ! Ausgabelänge Kommentar begrenzen
wkzzahn = CldFile[fc].Cmd[cc-3].Int["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Properties.TeethCount"]
wkzlng = CldFile[fc].Cmd[cc-3].Flt["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Properties.Length"]
ToolArrayA[tc] = "T"+wkznr+": "+wkzart
ToolArrayB[tc] = " ->: D="+wkzdm+" Z="+wkzzahn+" L="+wkzlng
tc = tc + 1
end
end
end
end
for bs = 1 to tc-2 do ! Bubblesort der Werkzeugliste
begin
for fc = 1 to tc-2 do
begin
bs1 = num(copy(ToolArrayA[fc],2,pos(":",ToolArrayA[fc])-2))
bs2 = num(copy(ToolArrayA[fc+1],2,pos(":",ToolArrayA[fc+1])-2))
if bs1 > bs2 then
begin
bstmp1 = ToolArrayA[fc+1]
bstmp2 = ToolArrayB[fc+1]
ToolArrayA[fc+1] = ToolArrayA[fc]
ToolArrayB[fc+1] = ToolArrayB[fc]
ToolArrayA[fc] = bstmp1
ToolArrayB[fc] = bstmp2
end
end
end
for fc = 1 to tc-1 do ! Ausgabe der Arrays
begin
formblock
output outstr$ + "( " + ToolArrayA[fc] + " )"
formblock
output outstr$ + "( " + ToolArrayB[fc] + " )"
end
formblock
output OutStr$ + "( ..................................... )"
subend
Wie gesagt ist es als SUB angelegt und kann "PrintAllTools" ersetzen.
Den Programmcode könnt ihr benutzen, aber der Hinweis auf "cncuschi" und "cnc-arena.com" sollte erhalten bleiben !
Damit ist auch dieses Thema für mich abgeschlossen.
![biggrin.gif](https://de.industryarena.com/forum/style_emoticons/default/biggrin.gif)
cncuschi
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
Die Ausgabe sieht übrigens folgendermaßen aus:
Wie gesagt allerdings unformatiert!
Diese Liste mit den originalen technischen Daten ist nicht mehr so fehleranfällig gegenüber der PrintAllTools Version.
Die PrintAllTools Version liest nur den Kommentar aus und der muss nicht zwangsläufig stimmen.
Gruß cncuschi
Der Beitrag wurde von cncuschi bearbeitet: 07.04.2014, 13:57 Uhr
Wie gesagt allerdings unformatiert!
CODE
N3 ( . WERKZEUGLISTE ...................... )
N4 ( T20: Torus Fraeser L38, D16, Rc1 )
N5 ( ->: D=16 Z=2 L=38 )
N6 ( T51: Gravierfraeser L20, D6, A45, dm0, )
N7 ( ->: D=6 Z=4 L=20 )
N8 ( T69: Torus Fraeser L38, D12, Rc0.3 )
N9 ( ->: D=12 Z=4 L=38 )
N10 ( T71: Bohrer L40, D3.65, A140 )
N11 ( ->: D=3.65 Z=2 L=40 )
N12 ( T83: Gewindebohrer L40, D4, A180 )
N13 ( ->: D=4 Z=2 L=40 )
N14 ( ..................................... )
N4 ( T20: Torus Fraeser L38, D16, Rc1 )
N5 ( ->: D=16 Z=2 L=38 )
N6 ( T51: Gravierfraeser L20, D6, A45, dm0, )
N7 ( ->: D=6 Z=4 L=20 )
N8 ( T69: Torus Fraeser L38, D12, Rc0.3 )
N9 ( ->: D=12 Z=4 L=38 )
N10 ( T71: Bohrer L40, D3.65, A140 )
N11 ( ->: D=3.65 Z=2 L=40 )
N12 ( T83: Gewindebohrer L40, D4, A180 )
N13 ( ->: D=4 Z=2 L=40 )
N14 ( ..................................... )
Diese Liste mit den originalen technischen Daten ist nicht mehr so fehleranfällig gegenüber der PrintAllTools Version.
Die PrintAllTools Version liest nur den Kommentar aus und der muss nicht zwangsläufig stimmen.
Gruß cncuschi
Der Beitrag wurde von cncuschi bearbeitet: 07.04.2014, 13:57 Uhr
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
Sehr geil,
ich folge deiner Aufforderung und werde CNCUschi noch groß schreiben.
![smile.gif](https://de.industryarena.com/forum/style_emoticons/default/smile.gif)
Gruß
Heinz.
ich folge deiner Aufforderung und werde CNCUschi noch groß schreiben.
![smile.gif](https://de.industryarena.com/forum/style_emoticons/default/smile.gif)
Gruß
Heinz.
![Beitrag](https://de.industryarena.com/forum/style_images/10/to_post_off.gif)
![thumbs-up.gif](https://de.industryarena.com/forum/style_emoticons/default/thumbs-up.gif)
![biggrin.gif](https://de.industryarena.com/forum/style_emoticons/default/biggrin.gif)
![smile.gif](https://de.industryarena.com/forum/style_emoticons/default/smile.gif)
![smile.gif](https://de.industryarena.com/forum/style_emoticons/default/smile.gif)
Gruß CNCuschi
3 Besucher lesen dieses Thema (Gäste: 3)
0 Mitglieder: