hey, andre.
this might be a better place to work on this rather than emailing
i had emailed you last week about my lathe PPR but figured i would warm up on something already functioning ( my milling PPR )
it is a basic 3 axis knee mill with VFD spindle
i have chatbot helping me but we cant get it all worked out


1 i would like to have a G04 with a second per 1000 rpm commanded. can be rounded up to whole seconds
chatbot got me this but it does not add the dwell in the final G code

:SPINDLE = { $SPINDLE:SPIN (M03) eob
(G04 P$SPINDLE/1000) eob ; Dwell 1 second per 1000 RPM
}

2 trying to have a basic end of cycle details

:FINISH = {
(G00 Z0.5) (M05) (M09) (M30) EOB
}


3 a basic once over if i am missing or killing something usefull
THANKS

HTML Code:
TITLE:
    :T1 = {
        KmotionCNC Milling Controller       
    }
END:

WORDS:
    :TMP   =  {DDDDDD.dd}
    :BLOCK =  {"N"DDDD" "}
    :XAXIS =  {" X"DDDDD.ddd} {" X"DDD.dddd}
    :YAXIS =  {" Y"DDDDD.ddd} {" Y"DDD.dddd}
    :ZAXIS =  {" Z"DDDDD.ddd} {" Z"DDD.dddd}
    :XARC  =  {" I"DDDDD.ddd} {" I"DDD.dddd}
    :YARC  =  {" J"DDDDD.ddd} {" J"DDD.dddd}
    :KARC  =  {" K"DDDDD.ddd} {" K"DDD.dddd}
    :DELAY =  {"G04X"DDDDD.ddd}
    :DWELL =  {"P"DDDD.ddd}
    :PECK  =  {"Q"DDDDD.ddd} {"Q"DDD.dddd}
    :RPLANE = {"R"DDDDD.ddd} {"R"DDD.dddd}
    :FEED   = {"    F"DDDDD.dddI} {"    F"DDD.dddd}
    :SPIN   = {"S"DDDD} 
    :TOOL   = {"T"DD} 
    :SUBPR  = {"P"DDDD} 
    :REPEAT = {"L"DDDD} 
    :CRC    = {"D"DD} 
    :TLC    = {"H"DD}
    :INDEX  = {"INDEX"DDD.ddd}
    :PROGNO = {"O"DDDDD}
END:

GROUPS:
    :G2  = { G17  G18  G19 }
    :G1  = { G00  G01  G02  G03 }
    :G8  = { G73  G74  G76  G80  G81  G82  G83  G84  G85  G86  G87  G88  G89 } 
    :G3  = { G90  G91 }
    :G4  = { G94  G95 }
    :G5  = { G20  G21 }
    :G6  = { G40  G41  G42 }
    :G7  = { G43  G44  G49 }
    :G9  = { G98  G99 }
    :G10 = { G54  G55  G56  G57  G58  G59 }
    :M1  = { M00  M01  M03  M04  M05  M06 }
    :M2  = { M98  M99 }
END:

CYCLES:
    DRILL      CANNED
    DRILLDWELL CANNED
    DEEPDRILL  EXPAND
    NDEEP      CANNED
    NPECK      CANNED
    PECKDRILL  EXPAND
    NPECK      CANNED
    HELIX      VECTOR
    ARC        QUADRANT
END:

MACROS:
    #N      = {}
    #L      = { [RAPID ? (G01) / (G00)]  }
    #FTYPE  = { (G94) }
    #X      = { ($X:XAXIS) }
    #Y      = { ($Y:YAXIS) }
    #Z      = { ($Z:ZAXIS) }
    #I      = { $XCEN-$OLDX:XARC }
    #J      = { $YCEN-$OLDY:YARC }
    #K      = { $KCEN-$OLDK:KARC }
    #R      = { ($CCLDIST:RPLANE) }
    #P      = { if ( $CDELAY ne 0 ) then ($CDELAY:DWELL) endif }
    #F      = { ($FPM:FEED)  }
    #DWELL  = { if ($CDELAY ne 0) then (G82) else (G81) endif }
    #RAPID  = { SET [RAPID] = 2 }
    #FEED   = { SET [RAPID] = 1 }
    #IPLANE = { if ( [CRETRACT] eq 2 ) then (G99) else (G98) endif }
    #CRCX   = { [CUTCOM ? (G40) / (G41) / (G42)] }
    #CRCNOX = { [CUTCOM ? NULL / ($CRCNO:CRC) / ($CRCNO:CRC) ] }
    #CRC    = { NULL }
    #CRCNO  = { NULL }
    #Q      = { (ABS($CD1):PECK) }
END:

RULES:
    :INIT = {
        SET $USR1      = 0
        SET $USR5      = 2.5
        SET $BLOCK     = 1
        SET $INCR      = 1
        SET $RAPIDFEED = 10000 ; rapid feedrate
    }
    
    :XPROGNO = { "%" EOB $PROGNO:PROGNO EOB }
   
    :UNITS = {
        #N (G20) (G17) (G90) (G40) (G49) (G80) (G94) EOB
        IF ([UNITS] EQ 1) THEN
            SET $USR2      = 0.0005
            SET $PRECISION = 0.001
        ELSE
            SET $USR2      = 0.00005
            SET $PRECISION = 0.0001
        ENDIF
    }

    :STOP = {
        UNSETALL
        #N (M00) EOB 
    }

    :PPRINT = { #N $JOBTEXT EOB }

    :RETRACT = { #N (G00) #Z eob }

    :INSERT = { #N $JOBTEXT EOB }

    :GOTO = {
        SET $USR3 = 0
        IF ((ABS($DELTAX) GE $USR2) OR (ABS($DELTAY) GE $USR2)) THEN
            SET $USR3 = 1
        ENDIF
        IF (($USR3 EQ 1) OR (ABS($DELTAZ) GE $USR2)) THEN
            #L #CRC 
            IF ((ABS($DELTAX) GE $USR2) OR (ABS($DELTAY) GE $USR2)) THEN
                $X:XAXIS $Y:YAXIS
            ENDIF
            IF (ABS($DELTAZ) GE $USR2) THEN
                #Z
            ENDIF
            #CRCNO #F EOB
        ENDIF
    }

    :GOCLW =  { (G02) #CRC #X #Y #Z #I #J #CRCNO #F eob }

    :GOACLW = { (G03) #CRC #X #Y #Z #I #J #CRCNO #F eob }

    :DELAY  = { $DELAY:DELAY eob }

    :SPINDLE = { $SPINDLE:SPIN (M03) eob
                 (G04 P$SPINDLE/1000) eob   ; Dwell 1 second per 1000 RPM
	     }

   :FINISH = {  (_M05) (_M09) EOB
                (_M30) EOB }

    :CLEARP = {
        if ($CLEARP lt $CLDIST) then
            ERRMSG "Clear plane is below Wsurf - DANGER"
        endif
    }

END: