SolidCAM
SolidCAM

The Solid Platform for Manufacturing

Datensatznummerierung ändern

Beitrag 05.05.2009, 18:54 Uhr
Heinidererste
Heinidererste
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.03.2008
Beiträge: 14
Hallo,
ich bräuchte Eure Hilfe......
Ist es möglich, in SolidCam 2008 bei der Datensatzerzeugung automatisch zwei Stellen dazu zu schreiben ?
Ein Beispiel:

Ist Zustand
N01
N02
N03
usw

Soll Zustand
N0001
N0002
N0003
.....
N0010
N0011
N0012
...
N0100
N0101
N0102

Besten Dank für Eure Hilfe...
Tschau
Heini
   
Beitrag 05.05.2009, 19:46 Uhr
nebbe
nebbe
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 14.06.2002
Beiträge: 839
Ja, ist möglich.

Entweder die Satznummerierung formatiert ausgeben, oder die Satznummern selbst im PP generieren.

Bin nicht am System. Wenn Du es nicht hinkriegst, hier noch mal nachhaken.

Gruß,
t.


--------------------
Grüßle
nebbe
   
Beitrag 05.05.2009, 21:08 Uhr
Heinidererste
Heinidererste
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.03.2008
Beiträge: 14
Hi
wenn Du mir da helfen könntest ?....
Ich bin leider nicht soooo fit in Sachen PP
Wenn es im SolidCam geht wo muß ich da was ändern ?

Tschau
Heini
   
Beitrag 06.05.2009, 05:56 Uhr
orgelbie_
orgelbie_
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 15.05.2007
Beiträge: 136
Hi,

im Programmteil @init_post Eintrag blknum_f suchen und wie folgt ändern:


blknum_f = '4/4.0(P)'

Willste etwa 5 führende Stellen wäre der Syntax 5/5.

Gruß Orgelbie
   
Beitrag 06.05.2009, 06:51 Uhr
nebbe
nebbe
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 14.06.2002
Beiträge: 839
Moin,

der orgelbie hats drauf, was ?

Ich wollte mal bestimmte Programmteile mit höheren Satznummern ausgeben. Da kann man dann einfach mit der Variable blknum rumrechnen:

blknum=blknum + 70000 oder so.

t.


--------------------
Grüßle
nebbe
   
Beitrag 06.05.2009, 08:32 Uhr
Heinidererste
Heinidererste
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.03.2008
Beiträge: 14
Hallo Ihr zwei.....
Besten Dank für die schnelle Hilfe !!
Orglbie`s Info war genau richtig, jetzt habe ich die zwei Nullen die ich brauche ;-)
Eine letzte Frage noch.
Meine Programplätze fangen ja mit 10 an und gehen dann in 10er Schritten weiter.
Wenn ich aber bei 1 Anfangen möchte und in 1er Schritten weiter machen will, wie geht das dann ?
Hier der Auszug aus dem PostPro.
Ich habe mal so ganz unbefangen den Wert unter:
blknum = 10
blknum_delta = 10
auf 1 setzen....hat aber nichts gebracht ;-)
Hat sich aber beim Berechnen des NC Prog`s nichts geändert.... :-(

Danke und Tschüß
Heini




; Machine: ?
; Controller: Deckel2 Contour
; Kinematic-Type: 3Achsen
; SolidCAM-Release: R12 and higher
;

@init_post
global string tool_diameter_f program_number_f tool_number_f z_f
global numeric s_blk_num save_feed
global logical rap flag_start_job m_feed_flag
global numeric last_zpos last_xpos last_ypos siman
global logical comp first_rapid_move
global integer tool_counter drill_counter save_drill_counter
; Non GPPL variables
num_user_procs = 1
line_labels = FALSE ;Jump to N...

; GPPL variables
pre_processor = 'FANUC'
numeric_def_f = '+5.3'
integer_def_f = '4/4.0(p)'
program_number_f= '2/2.0(p)'
gcode_f = '2/2.0(p)'
mcode_f = '2/2.0(p)'
xpos_f = '+5.3(p*1000)'
ypos_f = '+5.3(p*1000)'
zpos_f = '+5.3(p*1000)'
z_f = '5.3'
feed_f = '4.0(p)'
tool_diameter_f = '5.3/1'
tool_number_f = '2/2.0(p)'
blknum_f = '4/4.0(p)'
blknum_gen = true
blknum_exist = TRUE
blknum = 10
blknum_delta = 10
blknum_max = 9998
blknum_LETTER = 'N'
gcode_space = true
; procs_before_main = true

; trace"all":1
; trace"@drill":5

endp


@start_of_file

{nl '%'}
{nl,'(&P' program_number,'/0000)'}
{nl}

tool_counter = 0
drill_counter = 0
endp


@end_program

{nb,'G0 Z'tool_start_plane:zpos_f}
{nb,'M30'}

endp


@end_of_file

{nl,'?'}
{nl,'0000'}
{nl}

endp


@relative_mode
gcode = 91
{nb,'G'gcode, ' '}
skipline = FALSE
endp


@machine_plane
if machine_plane eq XY
gcode = 17
endif
if machine_plane eq YZ
gcode = 19
endif
if machine_plane eq ZX
gcode = 18
endif

endp


@call_proc
integer_def_f = BLKNUM_F

{nb,'L1 N*'start_line}
{' N*'end_line}


integer_def_f = INTEGER_DEF_F
endp


@proc
flag_start_job = true
endp


@def_tool

tool_counter = tool_counter +1
endp


@rapid_move

if machine_plane eq zx
call @invert_xpos
endif

local logical s_x s_y s_z

s_x = change(xpos)
s_y = change(ypos)
s_z = change(zpos)

xpos=round(xpos ,2)
ypos=round(ypos ,2)
zpos=round(zpos ,2)

change(xpos) = s_x
change(ypos) = s_y
change(zpos) = s_z

if flag_start_job
last_zpos = zpos + 1
flag_start_job = false
endif

if change(zpos) eq true
if zpos < last_zpos then
if not rap
if machine_plane eq XY
call @move_xy
endif
if machine_plane eq ZX
call @move_zx
endif
endif
if machine_plane eq ZX
call @move_y
endif
else
if machine_plane eq ZX
call @move_y
endif
if not rap
if machine_plane eq XY
call @move_xy
endif
if machine_plane eq ZX
call @move_zx
endif
endif
endif
else
if not rap
call @move_xy
endif
endif

rap=FALSE
last_zpos = zpos
last_ypos = ypos
last_xpos = xpos
save_feed =20000

endp


@line

if machine_plane eq zx
call @invert_xpos
endif

local logical s_x s_y s_z

s_x = change(xpos)
s_y = change(ypos)
s_z = change(zpos)

xpos=round(xpos ,2)
ypos=round(ypos ,2)
zpos=round(zpos ,2)

change(xpos) = s_x
change(ypos) = s_y
change(zpos) = s_z

if comp
{nb,'F'feed}
if side eq COMP_LEFT then
gcode = 41
{nb,'G'gcode,' D'd_offset:'+2.0(p)',' G47 A+1000'}
{' X'xpos}
{' Y'ypos}
{' G1 G60 M61 '}
endif
if side eq COMP_RIGHT then
gcode = 42
{nb,'G'gcode,' D'd_offset:'+2.0(p)',' G47 A+1000'}
{' X'xpos, ' Y'ypos}
{' G1 G60 M61 '}
endif
comp = false
change(feed)=false
else
gcode = 1
if change(gcode) then
{nb,'G'gcode}
else
{nb,'G'gcode}
endif
{[' X'xpos], [' Y'ypos], [' Z'zpos]}
if save_feed <> feed or change(feed) then
m_feed_flag = true
endif
if m_feed_flag eq true then
m_feed_flag = false
{' F',feed}
endif
endif

save_feed = feed
endp


@arc

if machine_plane eq zx
call @invert_xpos
xcenter_rel = xcenter_rel * -1
endif

local logical s_x s_y s_z

s_x = change(xpos)
s_y = change(ypos)
s_z = change(zpos)


xpos=round(xpos ,2)
ypos=round(ypos ,2)
zpos=round(zpos ,2)
xcenter_rel=round(xcenter_rel ,2)
ycenter_rel=round(ycenter_rel ,2)

change(xpos) = s_x
change(ypos) = s_y
change(zpos) = s_z


if arc_direction eq CCW then
gcode = 3
else ; CW
gcode = 2
endif
{nb,'G'gcode}

if save_feed <> feed or change(feed) then
m_feed_flag = true
endif

{[' X'xpos] [' Y'ypos] [' Z'zpos]}
if machine_plane eq XY
{' I'xcenter_rel:xpos_f, ' J'ycenter_rel:ypos_f}
endif
if arc_plane eq ZX then
{' K'xcenter_rel:xpos_f, ' I'ycenter_rel:ypos_f}
endif

if machine_plane eq zx
call @invert_xpos ; init xpos to get the original sign
endif

if m_feed_flag eq true then
m_feed_flag = false
{' F',feed}
endif

save_feed=feed

endp


@compensation
if side eq COMP_LEFT or side eq COMP_RIGHT then
comp = true
else
gcode = 40

{nb,'G'gcode,' D'd_offset:'+2.0(p)',' G47 A+1000 '}
endif
endp


@change_tool

if !first_tool then
{nb,'M9'}
endif

local logical save_blknum_gen

if machine_plane eq ZX
call @gen_nb
{'G0 Y'ytool:zpos_f}
endif

{'T'tool_number:mcode_f}

xpos = xnext
ypos = ynext
zpos = znext
last_zpos = zpos + 1
tool_direction = CW

endp


@drill

call @rapid_move
s_blk_num = blknum
if drill_type eq G81 then
gcode = 81

{nb,'G'gcode ' F'feed ' S'spin:'+5.0(p)' }
if machine_plane eq XY
{' Z-'(abs(drill_depth)):z_f, ' Z'(zpos-safety)}
endif
if arc_plane eq ZX then
{' Y-'(abs(drill_depth)):z_f, ' Y'(zpos-safety)}
endif
endif
if drill_type eq G82 then
gcode = 82

{nb,'G'gcode ' F'feed ' S'spin:'+5.0(p)' }
if machine_plane eq XY
{' Z-'(abs(drill_depth)):z_f, ' Z-'down_step:z_f ' Z'abheb ' Z'(zpos-safety)}
endif
if arc_plane eq ZX then
{' Y-'(abs(drill_depth)):z_f, ' Y-'down_step:z_f ' Y'abheb ' Y'(zpos-safety)}
endif
endif
if drill_type eq G83 then
gcode = 83

{nb,'G'gcode ' F'feed ' S'spin:'+5.0(p)' }
if machine_plane eq XY
{' Z-'(abs(drill_depth)):z_f, ' Z-'down_step:z_f ' Z'abheb ' Z'(zpos-safety)}
endif
if arc_plane eq ZX then
{' Y-'(abs(drill_depth)):z_f, ' Y-'down_step:z_f ' Y'abheb ' Y'(zpos-safety)}
endif
endif
if drill_type eq G84 then
gcode = 84

{nb,'G'gcode ' F'feed ' S'spin:'+5.0(p)' }
if machine_plane eq XY
{' Z-'(abs(drill_depth)):z_f, ' Z'(zpos-safety)}
endif
if arc_plane eq ZX then
{' Y-'(abs(drill_depth)):z_f, ' Y'(zpos-safety)}
endif
endif
if drill_type eq G85 then
gcode = 85

{nb,'G'gcode ' F'feed ' S'spin:'+5.0(p)' }
if machine_plane eq XY
{' Z-'(abs(drill_depth)):z_f, ' Z'(zpos-safety)}
endif
if arc_plane eq ZX then
{' Y-'(abs(drill_depth)):z_f, ' Y'(zpos-safety)}
endif
endif
endp


@drill_point


local logical s_x s_y s_z

s_x = change(xpos)
s_y = change(ypos)
s_z = change(zpos)

xpos=round(xpos ,2)
ypos=round(ypos ,2)
zpos=round(zpos ,2)
gcode=0
change(xpos) = s_x
change(ypos) = s_y
change(zpos) = s_z

{nb,'G'gcode, [' X'xpos], [' Y'ypos], [' Z'zpos] }

endp


@halt_program
{' M0'}
endp


@start_of_job

first_rapid_move = true

endp


@end_of_job
{nb,'M09'}
endp


@call_simple_proc
active(message) = FALSE
active(parm1) = FALSE
active(parm2) = FALSE
active(parm3) = FALSE
proc_count = 1
call @call_proc
endp


@start_tool
local string s
if tool_direction eq CW then
s = '+'
else ; CCW
s = '-'
endif

{' S's,spin:'5.0(p)'}

endp


@stop_tool
{' M5'}
endp

@move_xy

gcode = 0

if first_rapid_move eq true then
{nb,'G'gcode,[' X'xpos], [' Y'ypos]}
call @start_tool
{' M08'}
{nb,'G'gcode,[' Z'zpos],' D+'tool_number}
first_rapid_move = false
else
{nb,'G'gcode [' X'xpos], [' Y'ypos],[' Z'zpos]}
endif



endp


@move_xy_arc

{nb,'CC X'xcenter:xpos_f ' Y'ycenter:ypos_f}
{nb,'C X'xpos ' Y'ypos}
if arc_direction eq CW
{ ' DR-'}
else
{ ' DR+'}
endif
call @comp_arc
endp


@m_feed_spin
m_feed_flag = true
endp

@invert_xpos
local logical xpos_modal
xpos_modal = change(xpos)
xpos = -xpos
change(xpos) = xpos_modal
endp
   
Beitrag 06.05.2009, 08:41 Uhr
nebbe
nebbe
Level 6 = Community-Doktor
******
Gruppe: Mitglied
Mitglied seit: 14.06.2002
Beiträge: 839
Moin,

bei mir klappt es.

blknum und blknum_delta musste ändern, abspeichern, NC-Sätze, fertich und läuft.

t.


--------------------
Grüßle
nebbe
   
Beitrag 06.05.2009, 08:50 Uhr
Heinidererste
Heinidererste
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.03.2008
Beiträge: 14
Hi nebbe,
bei mir will er es ums verrecken nicht machen...
Fängt immer bei 10 an und geht in 10er Schritten weiter....
Hast Du noch woanders was geändert oder nur in der GPP Datei ?

; GPPL variables
pre_processor = 'FANUC'
numeric_def_f = '+5.3'
integer_def_f = '4/4.0(p)'
program_number_f= '2/2.0(p)'
gcode_f = '2/2.0(p)'
mcode_f = '2/2.0(p)'
xpos_f = '+5.3(p*1000)'
ypos_f = '+5.3(p*1000)'
zpos_f = '+5.3(p*1000)'
z_f = '5.3'
feed_f = '4.0(p)'
tool_diameter_f = '5.3/1'
tool_number_f = '2/2.0(p)'
blknum_f = '4/4.0(p)'
blknum_gen = true
blknum_exist = TRUE
blknum = 1
blknum_delta = 1
blknum_max = 9998
blknum_LETTER = 'N'
gcode_space = true
; procs_before_main = true
   
Beitrag 06.05.2009, 11:40 Uhr
orgelbie_
orgelbie_
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 15.05.2007
Beiträge: 136
Hi,

blknum_delta = 10 auf 1

Grüße Orgelbie
   
Beitrag 06.05.2009, 11:40 Uhr
orgelbie_
orgelbie_
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 15.05.2007
Beiträge: 136
Hi,

blknum_delta = 10 auf 1

Grüße Orgelbie
   
Beitrag 06.05.2009, 11:45 Uhr
orgelbie_
orgelbie_
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 15.05.2007
Beiträge: 136
Hi,

habe gerade nicht richtig hingeschaut.

Wie Nebbe ausführt, genau so.

Bist du sicher, das du den geänderten PP wirklich ansprichst?

Gib mal irgendwo neue Zeile einfügen print "Test" ein.
Dann PP Lauf. Kriegste keine Meldung mit Test, biste im falschen Film.

Sonst melde dich nochmal

Grüße Orgelbie
   
Beitrag 06.05.2009, 11:49 Uhr
Themenstarter
Gruppe:
Mitglied seit: --
Beiträge: 0
Hallo,

@Heinidererste:

Hast du eigentlich mal die AGBs deines Resellers gelesen?

Sicher wolltest du nur, das andere deinen PP mal lesen, und an den entsprechenden Stellen, dir Änderungen vorschlagen, aber somit ist auch eine Veröffentlichung eines PPs geschehen, die dir ne Menge Ärger einbringen kann.

Mal ein Auszug aus den AGBs:

"8. Geheimhaltung, Schutzrechte

8.1 Der Kunde wird die Informationen und Unterlagen über die Vertragssoftware gegen die Kenntnisnahme durch unbefugte Dritte
sorgfältig schützen und steht dafür ein. Dies gilt über die Beendigung dieses Vertrages hinaus."

Der Beitrag wurde von Paranuit bearbeitet: 06.05.2009, 11:55 Uhr
   
Beitrag 06.05.2009, 12:15 Uhr
orgelbie_
orgelbie_
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 15.05.2007
Beiträge: 136
Hi,

@Paranuit

Jetzt kommt ein heisses Eisen auf dem Tisch!

Ich habe die Posts für etliche Lizenzen Xmal zur Überarbeitung beim Reseller resp. SolidCAM gehabt.
Bis zuletzt waren schwerwiegende Fehler drin. (Mal paar Stichworte: Drehzahlwechsel bei gleichem Werkzeug bei unterschiedlichen Jobs, auch wenn selten benötigt wird, Drehrichtungswechsel etc.)
Jeder weiß, das einen perfekten indiduell angepaßten PP ganz schwer zu haben ist. In meinem Fall war
der PP erst dann w i r k l i c h astrein, als ich mir meinen eigenen geschrieben habe.

Und nun abschließend die Frage:

Wer sagt denn, das der PP, den der Kollege eingestellt hat, von einem Reseller oder von SolidCAM
erstellt wurde?
Der nackte Syntax dürfte das wohl kaum beweisen.

Warum soll sich der Anwender, der auf s c h n e l l e Hilfe angewiesen ist, sich nicht auf diese Art und Weise helfen?

Viele Grüße Orgelbie
   
Beitrag 07.05.2009, 17:59 Uhr
Heinidererste
Heinidererste
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.03.2008
Beiträge: 14
@ Paranoid

Um gegen einen Vertrag oder gegen Auszüge eines AGB`s zu verstoßen, muß man erst einmal einen Vertrag geschlossen haben .....ups...
Aber trotzdem vielen Dank für Deine Belehrung ;-)

Tschau
Heini
   
Beitrag 07.05.2009, 18:06 Uhr
Themenstarter
Gruppe:
Mitglied seit: --
Beiträge: 0
Hallo,

das sollte keine Belehrung sein, sondern ein Hinweis, das man sich da zuweilen auf sehr dünnem Eis bewegt.

Ich selber bin SC User (mit Vertrag), hab auch so meine Probleme, die ich meist wie andere hier selber löse, aber nichts desto Trotz lesen hier auch andere mit, wenn nicht sogar die Progger selbst, und die haben jeder für sich ihre eigene Handschrift, ich denke da kann jeder seinen Post entdecken, auch ohne PP-Kopf und Hinweise im PP.

Trotzdem gut Schaffenskraft. thumbs-up.gif

Der Beitrag wurde von Paranuit bearbeitet: 07.05.2009, 18:08 Uhr
   
Beitrag 07.05.2009, 18:21 Uhr
Heinidererste
Heinidererste
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.03.2008
Beiträge: 14
Hi Orgelbi,
sorry für die späte Antwort.....

Ich glaube, das der geänderte PP gar nicht angenommen wird..

Wenn ich alle PP´s aus dem Ordner GPP Toll lösche ( natürlich auf c sichern) und nur den einen geänderten drin lasse (MPI und GPP file), dann einen neuen Job anlege und das NC Prog berechnen will gibt es die Fehlermeldung, das SC den "ursprünglichen" zb Fanuc nicht finden kann.
Kann er ja auch nicht steht ja nicht mehr im Ordner.
Also schnallt SC gar nicht, das mit dem neuen Job auch der "neue" PP genutzt werden soll.
Komisch, ich dachte wenn ich den PP zu beginn aussuche, das nur der zur Berechnung genommen wird????
Irgendwo anders steckt dann noch die Info auf welchen PP er zugreifen soll, eine Idee wo ?

Oder SC ist irgendwo abgeschmiert ?

Tschau
Heini
   
Beitrag 07.05.2009, 18:24 Uhr
Heinidererste
Heinidererste
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.03.2008
Beiträge: 14
@ Paranoid

ich denke auch das wir da nicht so`n Drama draus machen sollen.
Der PP ist für eine Uralte Fp4A (aus 1985), damit verdient man heute sicher keinen Blumenstrauß mehr ;-)
Aber damit es keinen Ärger gibt, sollte der Admin den Teil des Post`s löschen...
Tschau
Heini
   
Beitrag 07.05.2009, 19:07 Uhr
Themenstarter
Gruppe:
Mitglied seit: --
Beiträge: 0
Hallo,

@Heinidererste:

QUOTE
Der PP ist für eine Uralte Fp4A (aus 1985), damit verdient man heute sicher keinen Blumenstrauß mehr


Das sehe ich anders, denn zu der Zeit war sicher nicht jeder in der Lage 3D Formen zu fräsen, dank Cam ist es machbar, somit hat man einen Vorteil.


QUOTE
Aber damit es keinen Ärger gibt, sollte der Admin den Teil des Post`s löschen...


Das ist ein guter Gedanke
   
Beitrag 07.05.2009, 20:11 Uhr
Heinidererste
Heinidererste
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 05.03.2008
Beiträge: 14
Sooooo....
Fehler gefunden ;-)

Wichtig ist, das die Bezeichnungen der GPP und Mac Datei z.B. xyz123 auch in der Mac und der GPP Datei oben im Kopf steht
So:


Datei Namen im SC Ordner GPPTool
Gpp xyz123
Mac xyz123


Gpp Datei
;
; xxxxx: ?
; Controller: xyz123
; Kinematic-Type: xxxxx
; xxxxxxxxx: Rxx and higher


Mac Datei
;Internal parms
machine_type = MILLING
post_processor = xyz123
doc_processor = xyz123
gpp_file_ext = p
mac_holder =




Nu gehts ;-)

Tschö
Heini
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: