What's new
What's new

post processor -number of decimal places

dsergison

Diamond
Joined
Oct 23, 2003
Location
East Peoria, IL, USA
I'm using pro/man + pro/e

my post procesor is specifically for dynapath D20, but for some reason it outputs arc commands to 5 decimal places. the controll only takes 4. all the linear events are 4 places. I have looked through every nook and cranny of the post processor file customizer and I can find where to set the decimals for arc moves but it makes no difference. they still come in at 5 places?
 
could be in the software settings... and not the post...

I know with mastercam, whenever i look into the post that i use, i dont ever recal seeing a place for number of characters after the decimal...
you might find that in your software settings...
also you could always manually remove them , right ?

or is this some sort of huge mill, contouring program ?
 
I've seen it done both ways, specified in the software setup is the most common. It is possible to strip away the extra numbers in the post but if there is a software setting it would be much easier.
 
i found settings for decimal places after the xyz linerar moves, and changing that value has the expected result.

but the field for places in a arc motion were greyed out. I was able to enable them and enter a value but it had no effect.

I'm pretty sure it should have worked but obviously it didn't and everybodies post processor is different and I'm going to have a hell of a time finding someone using pro/e with an old dynapath controll who has allready been down this road.

Thanks, Dan


I thought about stripping them away. it would be preffered to round up or down, rather than eliminate. though I'll probably never notice the difference. any thoughts about how to accomplish this (automatically)
 
I wonder if you ever encountered the phantom arcs?
If you have really short arc segments, they can be rounded or truncated to look like the ending is the same as the start. In that case the controller can interpret it as full circle.
That by itself is good incentive to output 5 decimals on arc. I have my post split any arc over 180 degrees into two arcs. And 5 decimals for arcs.
Too bad there is not an obvious way to force arcs under a certain length to become a line.

So there is the danger of truncated or rounding on arcs.
Pete
 
1. Open the option file generator:

Applications -> NC Post Processor...

2. Select your post then click Open Optfile

3. Go to File Formats -> MCD File

4. Click on the letter I in the ADDR column

5. Adjust format to your liking

6. Repeat for J and K

7. File -> Save

That's it!


Edit:
I just reread your post and it seems like you might already have tried this. If you have, maybe you could post the FIL section of the post. If its too long then email me.
 
REDEF/ON $$ ALLOW SYMBOLS TO BE OVERWRITTEN

CYCFLG=0 $$ CREATE A SYMBOL = 0
FSTPNT=0 $$ CREATE A SYMBOL = 0
MNRWRD=0 $$ CREATE A SYMBOL = 0
CIRFLG=0 $$ CREATE A SYMBOL = 0
SIDE=0 $$ CREATE A SYMBOL = 0
SEQINC=0 $$ CREATE A SYMBOL = 0
mode=1
CIMFIL/ON,MACHIN $$ CAPTURE MACHIN
RSLT=POSTF(13) $$ SEND RECORD TO POST
SEQNO/OFF $$ TURN SEQUENCE NUMBERS OFF
INSERT/'(1)$' $$ WRITE BLOCK TO POST
CIMFIL/OFF $$ END MACHIN

CIMFIL/ON,LOADTL $$ CAPTURE LOADTL
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
RSLT=POSTF(20) $$ SAVE RECORD
INSERT/'N',SEQ,'(9)' $$ OUTPUT N# (9)
REPEAT/20,5,1 $$ OUTPUT E1 WITH THE NEXT T
RSLT=POSTF(21) $$ LOAD SAVED RECORD
RSLT=POSTF(13) $$ SEND RECORD TO POST
RECNUM=POSTF(7,1) $$ CREATE A SYMBOL = THE CURRENT RECORD NUMBER
LIMIT=100000 $$ CREATE A SYMBOL = A LARGE NUMBER
DO/PRESEL,COUNT=1,LIMIT $$ CREATE A DO LOOP TO FIND CUTTER COMP
RSLT=POSTF(14) $$ READ NEXT RECORD
RECTYP=POSTF(7,2) $$ CREATE A SYMBOL = RECORD NUMBER
CASE/RECTYP $$ CREATE A CASE TEST
WHEN/14000 $$ WHEN EOF IS FOUND
RSLT=POSTF(15,(RECNUM+1)) $$ RETURN TO BEGINING
COUNT=(LIMIT+1) $$ EXCEED LIMIT
CMPCHK=0 $$ CREATE A SYMBOL = 0
WHEN/2000 $$ WHEN A STANDARD POST RECORD
WORD=POSTF(7,3) $$ CREATE A SYMBOL = MAJOR WORD
IF(WORD.EQ.ICODEF(CUTCOM))THEN $$ IF IT IS CUTCOM
RSLT=POSTF(15,(RECNUM+1)) $$ RETURN TO BEGINING
COUNT=(LIMIT+1) $$ EXCEED LIMIT
CMPCHK=1 $$ CREATE A SYMBOL = 1
ENDIF $$ END IF TEST
IF(WORD.EQ.ICODEF(SELECT))THEN $$ IF SELECT ID FOUND
FXTOFF=POSTF(7,4) $$ CREATE A SYMBOL = MINOR WORD
ENDIF $$ END ID TEST
IF(WORD.EQ.ICODEF(LOADTL))THEN $$ IF TOOL CHANGE IS FOUND
RSLT=POSTF(15,(RECNUM+1)) $$ RETURN TO BEGINING
COUNT=(LIMIT+1) $$ EXCEED LIMIT
CMPCHK=0 $$ CREATE A SYMBOL = 0
ENDIF $$ END ID TEST
ENDCAS $$ END CASE
PRESEL)CONTIN $$ END OD DO LOOP
CIMFIL/OFF $$ END LOADTL

CIMFIL/ON,SPINDL $$ CAPTURE SPINDL
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(1)M3$' $$ OUTPUT N# (1)M3
CIMFIL/OFF $$ END SPINDLE

CIMFIL/ON,COOLNT $$ CAPTURE COOLNT
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
CIMFIL/OFF $$ END COOLNT

CIMFIL/ON,CUTCOM $$ CAPTURE CUTCOM
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
COMP=POSTF(7,4) $$ CREATE A VARABLE = MINOR WORD
CASE/COMP $$ CREATE A CASE TEST
WHEN/ICODEF(LEFT) $$ WHEN LEFT
SIDE=1 $$ CREATE A SYMBOL = 1
WHEN/ICODEF(RIGHT) $$ WHEN RIGHT
SIDE=2 $$ CREATE A SYMBOL = 2
WHEN/ICODEF(OFF) $$ WHEN CANCELED
SIDE=3 $$ CREATE A SYMBOL = 3
ENDCAS $$ END CASE
CIMFIL/OFF $$ END CUTCOM

CIMFIL/ON,RAPID $$ CAPTURE RAPID
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
MODE=0 $$ CREATE A SYMBOL = 0
CIMFIL/OFF $$ END RAPID

CIMFIL/ON,FEDRAT $$ CAPTURE FEDRAT
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
MODE=1 $$ CREATE A SYMBOL = 1
CIMFIL/OFF $$ END FEDRAT

CIMFIL/ON,5,5 $$ CAPTURE GOTO
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
RATE=POSTF(1,3,104) $$ CREATE A SYMBOL = CURRENT FEED RATE
XLOC=POSTF(1,3,414) $$ CREATE A SYMBOL = CURRENT X
YLOC=POSTF(1,3,415) $$ CREATE A SYMBOL = CURRENT Y
ZLOC=POSTF(1,3,416) $$ CREATE A SYMBOL = CURRENT Z
IF(MODE.EQ.0.AND.CYCFLG.EQ.0)THEN $$ IF A RAPID MOVE ONLY
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0) NEXT TO...
POSTN/IN,24,XLOC,25,YLOC,26,ZLOC $$ X# Y# Z#
ENDIF $$ END IF TEST
IF(MODE.EQ.1.AND.CIRFLG.EQ.0.AND.CYCFLG.EQ.0.AND.CMPCHK.EQ.0)THEN $$ IF A FEED MOVE ONLY
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(1)' $$ OUTPUT N# (1) NEXT TO...
POSTN/IN,24,XLOC,25,YLOC,26,ZLOC,6,RATE $$ X# Y# Z# F#
ENDIF $$ END IF
IF(MODE.EQ.1.AND.CIRFLG.EQ.0.AND.CYCFLG.EQ.0.AND.CMPCHK.EQ.1)THEN $$ IF A COMP MOVE
CMPCHK=2 $$ CREATE A SYMBOL = 2
JUMPTO/SKIP $$ JUMP DOWN TO SKIP
ENDIF $$ END IF
IF(MODE.EQ.1.AND.CIRFLG.EQ.0.AND.CYCFLG.EQ.0.AND.CMPCHK.EQ.2)THEN $$ IF A COMP MOVE
CMPCHK=3 $$ SET A SYMBOL TO 3
ENDIF $$ END IF
IF(MODE.EQ.1.AND.CIRFLG.EQ.0.AND.CYCFLG.EQ.0.AND.CMPCHK.EQ.3)THEN $$ IF A COMP MOVE
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(1)X0/Y0/C0$' $$ OUTPUT N# (1)X0Y0C0
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(1)' $$ OUTPUT N# (1) NEXT TO...
POSTN/IN,24,XLOC,25,YLOC,6,RATE,3,SIDE $$ OUTPUT X# Y# F# C#
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(1)' $$ OUTPUT N# (1)
POSTN/IN,26,ZLOC,6,RATE $$ OUTPUT Z# F#
CMPCHK=0 $$ CREATE A SYMBOL = 0
ENDIF $$ END IF
IF(SIDE.EQ.3)THEN $$ IF SYMBOL = 3
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(1)X0/Y0/C0$' $$ OUTPUT N# (1)X0Y0C0
SIDE=0 $$ CREATE A SYMBOL = 0
ENDIF $$ END IF
SKIP) $$ JUMPTO LABEL
IF(MODE.EQ.1.AND.CIRFLG.EQ.1)THEN $$ IF A CIRCLE
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(',DIR,')' $$ OUTPUT N# (1 OR 2) NEXT TO...
INSERT/'X',XLOC,'Y',YLOC,'Z',ZLOC,'I',ILOC,'J',JLOC,'F',RATE,'$'
ENDIF $$ END IF
IF(CYCFLG.EQ.1)THEN $$ IF SYMBOL = 1 THEN
IF(FSTPNT.EQ.0)THEN $$ IF SYMBOL = 0 THEN
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0) NEXT TO...
POSTN/IN,24,XLOC,25,YLOC $$ X# Y#
ENDIF $$ END IF
FSTPNT=0 $$ CREATE A SYMBOL = 0
ENDIF $$ END IF
CIRFLG=0 $$ CREATE A SYMBOL = 0
CIMFIL/OFF $$ END GOTO

CIMFIL/ON,3 $$ CAPTURE CIRCLE
CIRFLG=1 $$ CREATE A SYMBOL = 1
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
ILOC=POSTF(7,9) $$ CREATE A SYMBOL = X ARC CENTER
JLOC=POSTF(7,10) $$ CREATE A SYMBOL = Y ARC CENTER
IF(POSTF(7,14).EQ.-1)THEN $$ IF THE CIRCLE NORMAL IS -1,( RECORD 14 )
DIR=2 $$ CREATE A SYMBOL = 2
ELSE $$ ELSE
DIR=3 $$ CREATE A SYMBOL = 3
ENDIF $$ END IF TEST
CIMFIL/OFF $$ END CIRCLE

CIMFIL/ON,CYCLE $$ CAPTURE CYCLE
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
DPTH=POSTF(7,6) $$ CREATE A SYMBOL = TOTAL DEPTH
FED=POSTF(7,8) $$ CREATE A SYMBOL = FEED RATE
INC=POSTF(7,10) $$ CREATE A SYMBOL = INCREMENT
PLG=POSTF(7,12) $$ CREATE A SYMBOL = PLUNGE CLEARANCE
TYPE=POSTF(7,4) $$ CREATE A SYMBOL = MINOR WORD
IF(TYPE.EQ.ICODEF(OFF))THEN $$ IF SYMBOL = OFF
CYCFLG=0 $$ SET SYMBOL = 0
ELSE $$ IF SYMBOL IS NOT = OFF
CYCFLG=1 $$ SET SYMBOL = 1
ENDIF $$ END TEST
SUBTYP=POSTF(7,4) $$ CREATE A SYMBOL = MINOR WORD
CASE/SUBTYP $$ TEST MINOR WORD
WHEN/ICODEF(DRILL) $$ WHEN DRILL
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0)
POSTN/IN,24,XLOC,25,YLOC,26,DPTH,23,PLG,6,FED,7,1 $$ OUTPUT X# Y# Z# W# F# G1
WHEN/ICODEF(DEEP) $$ WHEN DEEP
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0)
POSTN/IN,24,XLOC,25,YLOC,26,DPTH,11,INC,23,PLG,6,FED,7,3 $$ OUTPUT X# Y# Z# K# W# F# G3
WHEN/ICODEF(TAP) $$ WHEN TAP
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0)
POSTN/IN,24,XLOC,25,YLOC,26,DPTH,23,PLG,6,FED,7,1 $$ OUTPUT X# Y# Z# W# F# G1
WHEN/ICODEF(REAM) $$ WHEN REAM
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0)
POSTN/IN,24,XLOC,25,YLOC,26,DPTH,23,PLG,6,FED,7,2 $$ OUTPUT X# Y# Z# W# F# G2
WHEN/ICODEF(BORE) $$ WHEN BORE
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0)
POSTN/IN,24,XLOC,25,YLOC,26,DPTH,23,PLG,6,FED,7,5 $$ OUTPUT X# Y# Z# W# F# G5
WHEN/ICODEF(OFF) $$ WHEN OFF
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0)
POSTN/IN,7,0 $$ OUTPUT G0
ENDCAS $$ END CASE
FSTPNT=1 $$ CREATE A SYMBOL = 1
CIMFIL/OFF $$ END CYCLE

CIMFIL/ON,14 $$ CAPTURE END
RSLT=POSTF(2,1,1867,1) $$ TURN SIMULATION ON
RSLT=POSTF(13) $$ SEND BLOCK TO POST
RSLT=POSTF(2,1,1867,0) $$ TURN SIMULATION OFF
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(9)M30$' $$ OUTPUT N# (9)M30
RSLT=POSTF(2,1,1847,1) $$ TURN EOB CHARACTERS OFF
INSERT/'END$' $$ OUTPUT END
CIMFIL/OFF $$ END END

SEQNUM=MACRO $$ SEQUENCE NUMBER MACRO
SEQINC=SEQINC+1 $$ INCREMENT SYMBOL BY 10
SEQ=TEXT/CONVF,SEQINC,4,0,0,1,1 $$ TURN THE SYMBOL INTO A FORMATTED TEXT STRING
TERMAC $$ END MACRO
 
it's weird. I can change the format for linear xyzijkr. but it ignores anything I do for arcs. I can't even change the starting line number! very few of the things the mcd editor does actually have any effect. but a few do. I think the post is a sad hack job.

the big deal to me was the # of places.

then I discovered the fact that G02 G03 is not what my controll likes to read it wants the # in parenthesees. the fil file does convert that to (2) (3). but that's not quite right either.

cw arcs are output (2) and ccw arcs are (3) by the post, but my controll requires cw(2)with a D0 or a ccw(2)with D1. seeing (3) makes the controll think its a frame mill event!

so I've been using wordpad find/replace.
(2) with (2)D0
(3) with (2)D1

there's a few other details I need to manually edit, the the mcd doesn't work on. like the start and stop spindle sequence.

I'd like to speed up the process though.
 
First, back up your current post.

Find this line:
JLOC=POSTF(7,10) $$ CREATE A SYMBOL = Y ARC CENTER

...and insert these two lines after it:

ILOC=TEXT/CONVF,ILOC,7,4,0,0,4 $$ ROUND X ARC CENTER TO 4 PLACES
JLOC=TEXT/CONVF,JLOC,7,4,0,0,4 $$ ROUND Y ARC CENTER TO 4 PLACES

That *should* fix your decimal problem


Find this section:
IF(POSTF(7,14).EQ.-1)THEN $$ IF THE CIRCLE NORMAL IS -1,( RECORD 14 )
DIR=2 $$ CREATE A SYMBOL = 2
ELSE $$ ELSE
DIR=3 $$ CREATE A SYMBOL = 3
ENDIF $$ END IF TEST

...and replace it with:

IF(POSTF(7,14).EQ.-1)THEN $$ IF THE CIRCLE NORMAL IS -1,( RECORD 14 )
DIR=0 $$ CREATE A SYMBOL = 0 SO WE CAN OUTPUT (2)D0
ELSE $$ ELSE
DIR=1 $$ CREATE A SYMBOL = 1 SO WE CAN OUTPUT (2)D1
ENDIF $$ END IF TEST

Then find this section:
IF(MODE.EQ.1.AND.CIRFLG.EQ.1)THEN $$ IF A CIRCLE
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(',DIR,')' $$ OUTPUT N# (1 OR 2) NEXT TO...
INSERT/'X',XLOC,'Y',YLOC,'Z',ZLOC,'I',ILOC,'J',JLOC,'F',RATE,'$'
ENDIF $$ END IF

...and replace it with:
IF(MODE.EQ.1.AND.CIRFLG.EQ.1)THEN $$ IF A CIRCLE
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(2)D',DIR $$ OUTPUT N# (2)D0 OR (2)D1 NEXT TO...
INSERT/'X',XLOC,'Y',YLOC,'Z',ZLOC,'I',ILOC,'J',JLOC,'F',RATE,'$'
ENDIF $$ END IF

and that should fix the (2) or (3) problem.

Let me know if this works. If it doesn't, you may need to send me the rest of the post and a sample of a properly formatted program so I can debug.
 
thanks. ALMOST!

the (2) D0 D1 part worked. the rounding did not.

this is my fil file after your changes.

REDEF/ON $$ ALLOW SYMBOLS TO BE OVERWRITTEN

CYCFLG=0 $$ CREATE A SYMBOL = 0
FSTPNT=0 $$ CREATE A SYMBOL = 0
MNRWRD=0 $$ CREATE A SYMBOL = 0
CIRFLG=0 $$ CREATE A SYMBOL = 0
SIDE=0 $$ CREATE A SYMBOL = 0
SEQINC=0 $$ CREATE A SYMBOL = 0
mode=1
CIMFIL/ON,MACHIN $$ CAPTURE MACHIN
RSLT=POSTF(13) $$ SEND RECORD TO POST
SEQNO/OFF $$ TURN SEQUENCE NUMBERS OFF
INSERT/'(1)$' $$ WRITE BLOCK TO POST
CIMFIL/OFF $$ END MACHIN

CIMFIL/ON,LOADTL $$ CAPTURE LOADTL
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
RSLT=POSTF(20) $$ SAVE RECORD
INSERT/'N',SEQ,'(9)' $$ OUTPUT N# (9)
REPEAT/20,5,1 $$ OUTPUT E1 WITH THE NEXT T
RSLT=POSTF(21) $$ LOAD SAVED RECORD
RSLT=POSTF(13) $$ SEND RECORD TO POST
RECNUM=POSTF(7,1) $$ CREATE A SYMBOL = THE CURRENT RECORD NUMBER
LIMIT=100000 $$ CREATE A SYMBOL = A LARGE NUMBER
DO/PRESEL,COUNT=1,LIMIT $$ CREATE A DO LOOP TO FIND CUTTER COMP
RSLT=POSTF(14) $$ READ NEXT RECORD
RECTYP=POSTF(7,2) $$ CREATE A SYMBOL = RECORD NUMBER
CASE/RECTYP $$ CREATE A CASE TEST
WHEN/14000 $$ WHEN EOF IS FOUND
RSLT=POSTF(15,(RECNUM+1)) $$ RETURN TO BEGINING
COUNT=(LIMIT+1) $$ EXCEED LIMIT
CMPCHK=0 $$ CREATE A SYMBOL = 0
WHEN/2000 $$ WHEN A STANDARD POST RECORD
WORD=POSTF(7,3) $$ CREATE A SYMBOL = MAJOR WORD
IF(WORD.EQ.ICODEF(CUTCOM))THEN $$ IF IT IS CUTCOM
RSLT=POSTF(15,(RECNUM+1)) $$ RETURN TO BEGINING
COUNT=(LIMIT+1) $$ EXCEED LIMIT
CMPCHK=1 $$ CREATE A SYMBOL = 1
ENDIF $$ END IF TEST
IF(WORD.EQ.ICODEF(SELECT))THEN $$ IF SELECT ID FOUND
FXTOFF=POSTF(7,4) $$ CREATE A SYMBOL = MINOR WORD
ENDIF $$ END ID TEST
IF(WORD.EQ.ICODEF(LOADTL))THEN $$ IF TOOL CHANGE IS FOUND
RSLT=POSTF(15,(RECNUM+1)) $$ RETURN TO BEGINING
COUNT=(LIMIT+1) $$ EXCEED LIMIT
CMPCHK=0 $$ CREATE A SYMBOL = 0
ENDIF $$ END ID TEST
ENDCAS $$ END CASE
PRESEL)CONTIN $$ END OD DO LOOP
CIMFIL/OFF $$ END LOADTL

CIMFIL/ON,SPINDL $$ CAPTURE SPINDL
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(1)M3$' $$ OUTPUT N# (1)M3
CIMFIL/OFF $$ END SPINDLE

CIMFIL/ON,COOLNT $$ CAPTURE COOLNT
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
CIMFIL/OFF $$ END COOLNT

CIMFIL/ON,CUTCOM $$ CAPTURE CUTCOM
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
COMP=POSTF(7,4) $$ CREATE A VARABLE = MINOR WORD
CASE/COMP $$ CREATE A CASE TEST
WHEN/ICODEF(LEFT) $$ WHEN LEFT
SIDE=1 $$ CREATE A SYMBOL = 1
WHEN/ICODEF(RIGHT) $$ WHEN RIGHT
SIDE=2 $$ CREATE A SYMBOL = 2
WHEN/ICODEF(OFF) $$ WHEN CANCELED
SIDE=3 $$ CREATE A SYMBOL = 3
ENDCAS $$ END CASE
CIMFIL/OFF $$ END CUTCOM

CIMFIL/ON,RAPID $$ CAPTURE RAPID
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
MODE=0 $$ CREATE A SYMBOL = 0
CIMFIL/OFF $$ END RAPID

CIMFIL/ON,FEDRAT $$ CAPTURE FEDRAT
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
MODE=1 $$ CREATE A SYMBOL = 1
CIMFIL/OFF $$ END FEDRAT

CIMFIL/ON,5,5 $$ CAPTURE GOTO
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
RATE=POSTF(1,3,104) $$ CREATE A SYMBOL = CURRENT FEED RATE
XLOC=POSTF(1,3,414) $$ CREATE A SYMBOL = CURRENT X
YLOC=POSTF(1,3,415) $$ CREATE A SYMBOL = CURRENT Y
ZLOC=POSTF(1,3,416) $$ CREATE A SYMBOL = CURRENT Z
IF(MODE.EQ.0.AND.CYCFLG.EQ.0)THEN $$ IF A RAPID MOVE ONLY
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0) NEXT TO...
POSTN/IN,24,XLOC,25,YLOC,26,ZLOC $$ X# Y# Z#
ENDIF $$ END IF TEST
IF(MODE.EQ.1.AND.CIRFLG.EQ.0.AND.CYCFLG.EQ.0.AND.CMPCHK.EQ.0)THEN $$ IF A FEED MOVE ONLY
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(1)' $$ OUTPUT N# (1) NEXT TO...
POSTN/IN,24,XLOC,25,YLOC,26,ZLOC,6,RATE $$ X# Y# Z# F#
ENDIF $$ END IF
IF(MODE.EQ.1.AND.CIRFLG.EQ.0.AND.CYCFLG.EQ.0.AND.CMPCHK.EQ.1)THEN $$ IF A COMP MOVE
CMPCHK=2 $$ CREATE A SYMBOL = 2
JUMPTO/SKIP $$ JUMP DOWN TO SKIP
ENDIF $$ END IF
IF(MODE.EQ.1.AND.CIRFLG.EQ.0.AND.CYCFLG.EQ.0.AND.CMPCHK.EQ.2)THEN $$ IF A COMP MOVE
CMPCHK=3 $$ SET A SYMBOL TO 3
ENDIF $$ END IF
IF(MODE.EQ.1.AND.CIRFLG.EQ.0.AND.CYCFLG.EQ.0.AND.CMPCHK.EQ.3)THEN $$ IF A COMP MOVE
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(1)X0/Y0/C0$' $$ OUTPUT N# (1)X0Y0C0
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(1)' $$ OUTPUT N# (1) NEXT TO...
POSTN/IN,24,XLOC,25,YLOC,6,RATE,3,SIDE $$ OUTPUT X# Y# F# C#
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(1)' $$ OUTPUT N# (1)
POSTN/IN,26,ZLOC,6,RATE $$ OUTPUT Z# F#
CMPCHK=0 $$ CREATE A SYMBOL = 0
ENDIF $$ END IF
IF(SIDE.EQ.3)THEN $$ IF SYMBOL = 3
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(1)X0/Y0/C0$' $$ OUTPUT N# (1)X0Y0C0
SIDE=0 $$ CREATE A SYMBOL = 0
ENDIF $$ END IF
SKIP) $$ JUMPTO LABEL
IF(MODE.EQ.1.AND.CIRFLG.EQ.1)THEN $$ IF A CIRCLE
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(2)D',DIR $$ OUTPUT N# (2)D0 OR (2)D1 NEXT TO...
INSERT/'X',XLOC,'Y',YLOC,'Z',ZLOC,'I',ILOC,'J',JLOC,'F',RATE,'$'
ENDIF $$ END IF
IF(CYCFLG.EQ.1)THEN $$ IF SYMBOL = 1 THEN
IF(FSTPNT.EQ.0)THEN $$ IF SYMBOL = 0 THEN
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0) NEXT TO...
POSTN/IN,24,XLOC,25,YLOC $$ X# Y#
ENDIF $$ END IF
FSTPNT=0 $$ CREATE A SYMBOL = 0
ENDIF $$ END IF
CIRFLG=0 $$ CREATE A SYMBOL = 0
CIMFIL/OFF $$ END GOTO

CIMFIL/ON,3 $$ CAPTURE CIRCLE
CIRFLG=1 $$ CREATE A SYMBOL = 1
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
ILOC=POSTF(7,9) $$ CREATE A SYMBOL = X ARC CENTER
JLOC=POSTF(7,10) $$ CREATE A SYMBOL = Y ARC CENTER
ILOC=TEXT/CONVF,ILOC,7,4,0,0,4 $$ ROUND X ARC CENTER TO 4 PLACES
JLOC=TEXT/CONVF,JLOC,7,4,0,0,4 $$ ROUND Y ARC CENTER TO 4 PLACES
IF(POSTF(7,14).EQ.-1)THEN $$ IF THE CIRCLE NORMAL IS -1,( RECORD 14 )
DIR=0 $$ CREATE A SYMBOL = 0 SO WE CAN OUTPUT (2)D0
ELSE $$ ELSE
DIR=1 $$ CREATE A SYMBOL = 1 SO WE CAN OUTPUT (2)D1
ENDIF $$ END IF TEST
CIMFIL/OFF $$ END CIRCLE

CIMFIL/ON,CYCLE $$ CAPTURE CYCLE
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
RSLT=POSTF(2,1,1867,1) $$ SIMULATION ON
RSLT=POSTF(13) $$ SEND RECORD TO POST
RSLT=POSTF(2,1,1867,0) $$ SIMULATION OFF
DPTH=POSTF(7,6) $$ CREATE A SYMBOL = TOTAL DEPTH
FED=POSTF(7,8) $$ CREATE A SYMBOL = FEED RATE
INC=POSTF(7,10) $$ CREATE A SYMBOL = INCREMENT
PLG=POSTF(7,12) $$ CREATE A SYMBOL = PLUNGE CLEARANCE
TYPE=POSTF(7,4) $$ CREATE A SYMBOL = MINOR WORD
IF(TYPE.EQ.ICODEF(OFF))THEN $$ IF SYMBOL = OFF
CYCFLG=0 $$ SET SYMBOL = 0
ELSE $$ IF SYMBOL IS NOT = OFF
CYCFLG=1 $$ SET SYMBOL = 1
ENDIF $$ END TEST
SUBTYP=POSTF(7,4) $$ CREATE A SYMBOL = MINOR WORD
CASE/SUBTYP $$ TEST MINOR WORD
WHEN/ICODEF(DRILL) $$ WHEN DRILL
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0)
POSTN/IN,24,XLOC,25,YLOC,26,DPTH,23,PLG,6,FED,7,1 $$ OUTPUT X# Y# Z# W# F# G1
WHEN/ICODEF(DEEP) $$ WHEN DEEP
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0)
POSTN/IN,24,XLOC,25,YLOC,26,DPTH,11,INC,23,PLG,6,FED,7,3 $$ OUTPUT X# Y# Z# K# W# F# G3
WHEN/ICODEF(TAP) $$ WHEN TAP
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0)
POSTN/IN,24,XLOC,25,YLOC,26,DPTH,23,PLG,6,FED,7,1 $$ OUTPUT X# Y# Z# W# F# G1
WHEN/ICODEF(REAM) $$ WHEN REAM
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0)
POSTN/IN,24,XLOC,25,YLOC,26,DPTH,23,PLG,6,FED,7,2 $$ OUTPUT X# Y# Z# W# F# G2
WHEN/ICODEF(BORE) $$ WHEN BORE
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0)
POSTN/IN,24,XLOC,25,YLOC,26,DPTH,23,PLG,6,FED,7,5 $$ OUTPUT X# Y# Z# W# F# G5
WHEN/ICODEF(OFF) $$ WHEN OFF
INSERT/'N',SEQ,'(0)' $$ OUTPUT N# (0)
POSTN/IN,7,0 $$ OUTPUT G0
ENDCAS $$ END CASE
FSTPNT=1 $$ CREATE A SYMBOL = 1
CIMFIL/OFF $$ END CYCLE

CIMFIL/ON,14 $$ CAPTURE END
RSLT=POSTF(2,1,1867,1) $$ TURN SIMULATION ON
RSLT=POSTF(13) $$ SEND BLOCK TO POST
RSLT=POSTF(2,1,1867,0) $$ TURN SIMULATION OFF
CALL/SEQNUM $$ CALL SEQUENCE NUMBER MACRO
INSERT/'N',SEQ,'(9)M30$' $$ OUTPUT N# (9)M30
RSLT=POSTF(2,1,1847,1) $$ TURN EOB CHARACTERS OFF
INSERT/'END$' $$ OUTPUT END
CIMFIL/OFF $$ END END

SEQNUM=MACRO $$ SEQUENCE NUMBER MACRO
SEQINC=SEQINC+1 $$ INCREMENT SYMBOL BY 10
SEQ=TEXT/CONVF,SEQINC,4,0,0,1,1 $$ TURN THE SYMBOL INTO A FORMATTED TEXT STRING
TERMAC $$ END MACRO


*****************************
this is the file it generated
*****************************

(1)$
N0001(9)T2M6E1$
N0002(1)M3$
N0003(0)X-1.4788Y-2.0571Z1.5$
N0004(0)X-1.4788Y-2.0571Z.1$
N0005(1)X-1.4788Y-2.0571Z-.1F20.$
N0006(2)D0X1.32959Y2.15653Z-.1I.0J.0F20$
N0007(2)D1X3.58369Y1.86965Z-.1I2.7728J4.4974F20$
N0008(2)D0X6.05111Y-2.41093Z-.1I4.3307J-.5512F20$
N0009(2)D1X5.94529Y-3.0021Z-.1I6.3893J-2.7765F20$
N0010(2)D0X4.37589Y-4.62664Z-.1I4.88J-3.5433F20$
N0011(2)D1X4.28724Y-4.66385Z-.1I4.3485J-4.6855F20$
N0012(2)D0X3.34646Y-5.32874Z-.1I3.3465J-4.3307F20$
N0013(1)X1.4567Y-5.3287Z-.1F20.$
N0014(2)D0X.52122Y-4.67849Z-.1I1.4567J-4.3307F20$
N0015(2)D1X-1.47875Y-2.05712Z-.1I-4.7798J-6.6493F20$
N0016(1)X-1.4788Y-2.0571Z-.2F20.$
N0017(2)D0X1.32959Y2.15653Z-.2I.0J.0F20$
N0018(2)D1X3.58369Y1.86965Z-.2I2.7728J4.4974F20$
N0019(2)D0X6.05111Y-2.41093Z-.2I4.3307J-.5512F20$
N0020(2)D1X5.94529Y-3.0021Z-.2I6.3893J-2.7765F20$
N0021(2)D0X4.37589Y-4.62664Z-.2I4.88J-3.5433F20$
N0022(2)D1X4.28724Y-4.66385Z-.2I4.3485J-4.6855F20$
N0023(2)D0X3.34646Y-5.32874Z-.2I3.3465J-4.3307F20$
N0024(1)X1.4567Y-5.3287Z-.2F20.$
N0025(2)D0X.52122Y-4.67849Z-.2I1.4567J-4.3307F20$
N0026(2)D1X-1.47875Y-2.05712Z-.2I-4.7798J-6.6493F20$
N0027(1)X-1.4788Y-2.0571Z-.27F20.$
N0028(2)D0X1.32959Y2.15653Z-.27I.0J.0F20$
N0029(2)D1X3.58369Y1.86965Z-.27I2.7728J4.4974F20$
N0030(2)D0X6.05111Y-2.41093Z-.27I4.3307J-.5512F20$
N0031(2)D1X5.94529Y-3.0021Z-.27I6.3893J-2.7765F20$
N0032(2)D0X4.37589Y-4.62664Z-.27I4.88J-3.5433F20$
N0033(2)D1X4.28724Y-4.66385Z-.27I4.3485J-4.6855F20$
N0034(2)D0X3.34646Y-5.32874Z-.27I3.3465J-4.3307F20$
N0035(1)X1.4567Y-5.3287Z-.27F20.$
N0036(2)D0X.52122Y-4.67849Z-.27I1.4567J-4.3307F20$
N0037(2)D1X-1.47875Y-2.05712Z-.27I-4.7798J-6.6493F20$
N0038(1)X-1.4788Y-2.0571Z1.5F20.$
N0039(1)M3$
$
 
OK. I thought you were having problems with the I and J addresses. I can see now why only arcs are affected. Whoever wrote this post used a different command to output the arc data. Rather than changing the command (which may or may not work), I'll just add some lines to format the data (which I'm pretty sure will work).

Find this line:
INSERT/'N',SEQ,'(2)',DIR $$ OUTPUT N# (2)D0 OR (2)D1 NEXT TO...

...and insert these lines after it:
XLOC=TEXT/CONVF,XLOC,7,4,0,0,4$$ ROUND X TO 4 PLACES
YLOC=TEXT/CONVF,YLOC,7,4,0,0,4$$ ROUND Y TO 4 PLACES
ZLOC=TEXT/CONVF,ZLOC,7,4,0,0,4$$ ROUND Z TO 4 PLACES

This post should only be used when programming in inches because the formatting I've used restricts the numbers before the decimal to 3 places.

So what was the problem with the spindle commands?
 
N0039(1)M3$

should read:
N0039(9)M30$

it's funny. I think I see that in the fil file. but it sure doesn't output like that.

also:
N0001(9)T2M6E1$
N0002(1)M3$

I would prefer read:
(i'll have to paste this tonight)


thanks so much!
 
I didn't create the post. I downloaded it from PTC.

I didn't know the Dynapath controll could take it in any other format.

your saying I'm going through all this trouble and it will take the generic posts just fine?

do I have to set the controll to EIA mode before I send? I've not done that before.

Also. I bought it from fastolds. I believe he was doing it this way too. he showed me how to load and gave me a sample program.

this is my first cnc anything. I don't know any better
I'm feeling pretty good though because I have it running and making stuff!
 
wow. thanks.

I like the conversational. I've only programmed a few things so far, like pocketing to depth by increment and removing the inner area G71 ? dont remember..... yes I agree, easy to make running changes that way.

however, I use proe. so in less time I can change my model, update the toolpath, and post it.

problem is the 56kb memory limit and 9600 baud connection!

I need to get the drip feeding mastered next. I have not tried it yet.

in fact, most of the things I have made are here.
http://www.sergisonmachine.net/gallery_shop.html
 








 
Back
Top