<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Getting tools to Post Out to my programs?? in Manufacturing (CAM)</title>
    <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40545#M3946</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jeff,&lt;/P&gt;&lt;P&gt;Here's the post I generally use for machines with tool changers. Maybe you can extract the stuff you want from it? Hopefully I'm not defying any rules by posting something this long.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Author : Kenneth J. Farley&lt;/P&gt;&lt;P&gt;$$ Date : 13 November 2013&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Handling routines for various APT code that is not done in the&lt;/P&gt;&lt;P&gt;$$ proper fashion by the default routines.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PRINT/ OFF, IN $$ debug: ON production: OFF, IN&lt;/P&gt;&lt;P&gt;DMY = POSTF ( 24, 0 ) $$ : ( 24, 1 ) : ( 24, 0 )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ ===================[ Global Variable Declarations ]==================&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REDEF/ ON&lt;/P&gt;&lt;P&gt;A=1 ; B=2 ; C=3 ; D=4 ; E=5 ; F=6 ; G=7 ; H=8 ; I=9 ; J=10&lt;/P&gt;&lt;P&gt;K=11 ; L=12 ; M=13 ; N=14 ; O=15 ; P=16 ; Q=17 ; R=18 ; S=19 ; T=20&lt;/P&gt;&lt;P&gt;U=21 ; V=22 ; W=23 ; X=24 ; Y=25 ; Z=26&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CURREG = 0 $$ Current offset register in use&lt;/P&gt;&lt;P&gt;CHTOOL = 0 $$ Boolean indicator of tool change&lt;/P&gt;&lt;P&gt;CUTOOL = 0 $$ Current tool number in use&lt;/P&gt;&lt;P&gt;TXTVAL = TEXT/ ' ' $$ Generic text variable 'returned' by macros&lt;/P&gt;&lt;P&gt;CMTLST = TEXT/ ' ' $$ Last PPRINT comment processed&lt;/P&gt;&lt;P&gt;MAXTLS = 50 $$ Maximum number of tools used&lt;/P&gt;&lt;P&gt;LSTTIM = 0.0 $$ Initial cycle time&lt;/P&gt;&lt;P&gt;CYCDEP = 0.0 $$ Depth of drilling in current cycle&lt;/P&gt;&lt;P&gt;CYCPCK = 0.0 $$ Drilling cycle peck depth&lt;/P&gt;&lt;P&gt;CYCCLR = 0.0 $$ Drilling cycle clearance&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;RESERV/ MONNAM, 12 $$ Array of names for the months&lt;/P&gt;&lt;P&gt;MONNAM ( 1 ) = TEXT/ 'J', ( TEXT/ LOW, ( TEXT/ 'anuary' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 2 ) = TEXT/ 'F', ( TEXT/ LOW, ( TEXT/ 'ebruary' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 3 ) = TEXT/ 'M', ( TEXT/ LOW, ( TEXT/ 'arch' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 4 ) = TEXT/ 'A', ( TEXT/ LOW, ( TEXT/ 'pril' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 5 ) = TEXT/ 'M', ( TEXT/ LOW, ( TEXT/ 'ay' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 6 ) = TEXT/ 'J', ( TEXT/ LOW, ( TEXT/ 'une' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 7 ) = TEXT/ 'J', ( TEXT/ LOW, ( TEXT/ 'uly' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 8 ) = TEXT/ 'A', ( TEXT/ LOW, ( TEXT/ 'ugust' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 9 ) = TEXT/ 'S', ( TEXT/ LOW, ( TEXT/ 'eptember' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 10 ) = TEXT/ 'O', ( TEXT/ LOW, ( TEXT/ 'ctober' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 11 ) = TEXT/ 'N', ( TEXT/ LOW, ( TEXT/ 'ovember' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 12 ) = TEXT/ 'D', ( TEXT/ LOW, ( TEXT/ 'ecember' ) )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;RESERV/ TLUSED, MAXTLS $$ Array of boolean tool usage flags&lt;/P&gt;&lt;P&gt;RESERV/ TLCOMT, MAXTLS $$ Array of tool comments&lt;/P&gt;&lt;P&gt;DO/ DOTLS, INDEX = 1, MAXTLS, 1&lt;/P&gt;&lt;P&gt; TLUSED ( INDEX ) = 0&lt;/P&gt;&lt;P&gt; TLCOMT ( INDEX ) = TEXT/ '* X.XXXX DIA'&lt;/P&gt;&lt;P&gt;DOTLS) CONTIN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ ========================[ Macro Declarations ]=======================&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ Macro : IN2TXT ]-------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Converts an integer value to a text string, with the desired&lt;/P&gt;&lt;P&gt;$$ number of characters. If necessary, the number is padded with&lt;/P&gt;&lt;P&gt;$$ leading zeroes to achieve the desired width.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Parameters&lt;/P&gt;&lt;P&gt;$$ INTVAL : the value that is to be processed&lt;/P&gt;&lt;P&gt;$$ NUMDIG : the number of characters the number is to fill&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Global variables&lt;/P&gt;&lt;P&gt;$$ TXTVAL : the resultant number as a text string&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IN2TXT = MACRO/ INTVAL, NUMDIG&lt;/P&gt;&lt;P&gt; WRKVAL = INTF ( INTVAL )&lt;/P&gt;&lt;P&gt; DIGSOK = 1 + INTF ( LOGF ( WRKVAL ) / LOGF ( 10.0 ) )&lt;/P&gt;&lt;P&gt; NUMZED = NUMDIG - DIGSOK&lt;/P&gt;&lt;P&gt; IF ( NUMZED .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; TXTVAL = TEXT/ REPEAT, NUMZED, '0', CONVI, WRKVAL, DIGSOK&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; TXTVAL = TEXT/ CONVI, WRKVAL, NUMDIG&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;TERMAC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ Macro : RL2TXT ]-------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Converts a real number to a string. The resultant number is&lt;/P&gt;&lt;P&gt;$$ padded with spaces to the right in order to obtain a final res-&lt;/P&gt;&lt;P&gt;$$ ult with the same width as '-XX.XXXX '.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Parameters&lt;/P&gt;&lt;P&gt;$$ RLVALU : the value that is to be processed&lt;/P&gt;&lt;P&gt;$$ NUMDIG : the number of characters the number is to fill&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Global variables&lt;/P&gt;&lt;P&gt;$$ TXTVAL : the resultant number as a text string&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;RL2TXT = MACRO/ RLVALU, NUMDIG&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Calculate the number of spaces that need to be added. The end&lt;/P&gt;&lt;P&gt; $$ result desired is any of the following:&lt;/P&gt;&lt;P&gt; $$ '-XX.XXXX' -&amp;gt; no space padding needed&lt;/P&gt;&lt;P&gt; $$ '-X.XXXX ' or 'XX.XXXX ' -&amp;gt; one trailing space&lt;/P&gt;&lt;P&gt; $$ 'X.XXXX ' -&amp;gt; two trailing spaces&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; NUMSPC = 1&lt;/P&gt;&lt;P&gt; IF ( RLVALU .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; NUMSPC = NUMSPC + 1&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; IF ( ABSF ( RLVALU ) .LT. 10 ) THEN&lt;/P&gt;&lt;P&gt; NUMSPC = NUMSPC + 1&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Generate the text string including the label, sign, value,&lt;/P&gt;&lt;P&gt; $$ and necessary number of spaces.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; IF ( ABSF ( RLVALU ) .LT. 1 ) THEN&lt;/P&gt;&lt;P&gt; TXTNUM = TEXT/ CONVF, ABSF ( RLVALU ), NUMDIG, 4, 0, 0, 3&lt;/P&gt;&lt;P&gt; IF ( RLVALU .LT. 0 ) THEN&lt;/P&gt;&lt;P&gt; TXTVAL = TEXT/ '-0', TXTNUM, REPEAT, NUMSPC, ' '&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; TXTVAL = TEXT/ '0', TXTNUM, REPEAT, NUMSPC, ' '&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; TXTNUM = TEXT/ CONVF, RLVALU, NUMDIG, 4, 0, 0, 3&lt;/P&gt;&lt;P&gt; TXTVAL = TEXT/ TXTNUM, REPEAT, NUMSPC, ' '&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;TERMAC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ Macro : BLDTLL ]-------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Build and then output a list of the tools used in the program.&lt;/P&gt;&lt;P&gt;$$ This is done by the following algorithm:&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ (1) Save the restart CL record position.&lt;/P&gt;&lt;P&gt;$$ (2) Parse through the remainder of the CL file, storing any occur-&lt;/P&gt;&lt;P&gt;$$ ences of tool changes as you go.&lt;/P&gt;&lt;P&gt;$$ (3) Reset the CL file to the restart position.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BLDTLL = MACRO/&lt;/P&gt;&lt;P&gt; CIMPOS = POSTF ( 7, 1 ) + 1 $$ Set the return CL position&lt;/P&gt;&lt;P&gt; DO/ DOCMD, INDEX = 0, 10, 1&lt;/P&gt;&lt;P&gt; RESULT = POSTF ( 14 )&lt;/P&gt;&lt;P&gt; CMDTYP = POSTF ( 7, 2 )&lt;/P&gt;&lt;P&gt; CMDSUB = POSTF ( 7, 3 )&lt;/P&gt;&lt;P&gt; IF ( CMDTYP .EQ. 14000 ) THEN&lt;/P&gt;&lt;P&gt; RESULT = POSTF ( 15, CIMPOS )&lt;/P&gt;&lt;P&gt; INDEX = 11&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; INDEX = 2&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; TARGET = ICODEF ( PPRINT )&lt;/P&gt;&lt;P&gt; IF ( CMDTYP .EQ. 2000 .AND. CMDSUB .EQ. TARGET ) THEN&lt;/P&gt;&lt;P&gt; CMTLST = TEXT/ OMIT, (TEXT/ CLW), 1&lt;/P&gt;&lt;P&gt; CMTLST = TEXT/ MODIFY, CMTLST, (TEXT/ '/'), (TEXT/ '*'), 1&lt;/P&gt;&lt;P&gt; CMTLST = TEXT/ OMIT, CMTLST, 2&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; TARGET = ICODEF ( LOADTL )&lt;/P&gt;&lt;P&gt; IF ( CMDTYP .EQ. 2000 .AND. CMDSUB .EQ. TARGET ) THEN&lt;/P&gt;&lt;P&gt; TLNUM = POSTF ( 7, 4 )&lt;/P&gt;&lt;P&gt; TLUSED ( TLNUM ) = 1&lt;/P&gt;&lt;P&gt; TLCOMT ( TLNUM ) = TEXT/ CMTLST&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; DOCMD) CONTIN&lt;/P&gt;&lt;P&gt; CALL/ WRTTLS&lt;/P&gt;&lt;P&gt;TERMAC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ Macro : WRTTLS ]------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Writes out a list of the tools used in the current CL file&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Global variables&lt;/P&gt;&lt;P&gt;$$ TLUSED : array of flags indicating if the tool is used&lt;/P&gt;&lt;P&gt;$$ TLCOMT : the comment string for a the tool&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WRTTLS = MACRO/&lt;/P&gt;&lt;P&gt; LINCNT = 0&lt;/P&gt;&lt;P&gt; DO/ DOTLS, INDEX = 1, MAXTLS, 1&lt;/P&gt;&lt;P&gt; IF ( TLUSED ( INDEX ) .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; CALL/ IN2TXT, INTVAL = INDEX, NUMDIG = 2&lt;/P&gt;&lt;P&gt; IF ( LINCNT .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ '( '&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ '( T', (TEXT/LOW, (TEXT/ 'ools : '))&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; INSERT/ TXTPRE, TXTVAL, ' ', TLCOMT ( INDEX )&lt;/P&gt;&lt;P&gt; INSERT/ ' )$'&lt;/P&gt;&lt;P&gt; LINCNT = LINCNT + 1&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; DOTLS) CONTIN&lt;/P&gt;&lt;P&gt;TERMAC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ Macro : WRTTIM ]-------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Obtains and outputs a runtime value, depending on the argument passed&lt;/P&gt;&lt;P&gt;$$ to the macro:&lt;/P&gt;&lt;P&gt;$$ CODTIM = 0 -&amp;gt; Output the elapsed runtime since the last tool change.&lt;/P&gt;&lt;P&gt;$$ CODTIM = 1 -&amp;gt; Output the total runtime at present&lt;/P&gt;&lt;P&gt;$$ The runtime is output as a properly formatted comment. The macro&lt;/P&gt;&lt;P&gt;$$ utilizes the always-obscure and cryptic POSTF function to read the&lt;/P&gt;&lt;P&gt;$$ correct common variable.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WRTTIM = MACRO/ CODTIM&lt;/P&gt;&lt;P&gt; CURTIM = POSTF ( 1, 3, 0495 ) $$ Get the total runtime&lt;/P&gt;&lt;P&gt; IF ( CODTIM .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; RAWTIM = CURTIM&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; RAWTIM = CURTIM - LSTTIM&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ The runtime is given in minutes. Convert the provided number to&lt;/P&gt;&lt;P&gt; $$ hours, minutes, and seconds. If the CODTIM parameter is non-zero&lt;/P&gt;&lt;P&gt; $$ the minutes portion of the time will be rounded up one minute if the&lt;/P&gt;&lt;P&gt; $$ seconds portion is at least 30 or greater.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; HRTIME = INTF ( RAWTIM / 60.0 )&lt;/P&gt;&lt;P&gt; MNTIME = INTF ( RAWTIM - ( HRTIME * 60.0 ) )&lt;/P&gt;&lt;P&gt; SETIME = INTF ( ( RAWTIM - INTF ( RAWTIM ) ) * 60.0 )&lt;/P&gt;&lt;P&gt; IF ( CODTIM .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; MNTIME = MNTIME + INTF ( ( SETIME + 31.0 ) / 60.0 )&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; CALL/ IN2TXT, INTVAL = HRTIME, NUMDIG = 2&lt;/P&gt;&lt;P&gt; HRTEXT = TEXT/ TXTVAL&lt;/P&gt;&lt;P&gt; CALL/ IN2TXT, INTVAL = MNTIME, NUMDIG = 2&lt;/P&gt;&lt;P&gt; MNTEXT = TEXT/ TXTVAL&lt;/P&gt;&lt;P&gt; CALL/ IN2TXT, INTVAL = SETIME, NUMDIG = 2&lt;/P&gt;&lt;P&gt; SETEXT = TEXT/ TXTVAL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ The label for the time depends on whether this is a call for the&lt;/P&gt;&lt;P&gt; $$ overall program time or a tool.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; IF ( CODTIM .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; TXTLAB = TEXT/ '( E', ( TEXT/ LOW, ( TEXT/ 'st ' ) ), 'T'&lt;/P&gt;&lt;P&gt; TXTLAB = TEXT/ TXTLAB, ( TEXT/ LOW, ( TEXT/ 'ime : '))&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; TXTLAB = TEXT/ '( T', ( TEXT/ LOW, ( TEXT/ 'ool ' ) ), 'T'&lt;/P&gt;&lt;P&gt; TXTLAB = TEXT/ TXTLAB, ( TEXT/ LOW, ( TEXT/ 'ime : '))&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; TXTHRS = TEXT/ ' H', ( TEXT/ LOW, ( TEXT/ 'ours '))&lt;/P&gt;&lt;P&gt; TXTMNS = TEXT/ ' M', ( TEXT/ LOW, ( TEXT/ 'inutes '))&lt;/P&gt;&lt;P&gt; TXTSEC = TEXT/ ' S', ( TEXT/ LOW, ( TEXT/ 'econds' ) )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Output the time only if the time is greater than 1 second. If a tool&lt;/P&gt;&lt;P&gt; $$ time is being output, include the seconds value.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; IF ( SETIME .GE. 1.0 ) THEN&lt;/P&gt;&lt;P&gt; IF ( CODTIM .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; INSERT/ TXTLAB, HRTEXT, TXTHRS, MNTEXT, TXTMNS&lt;/P&gt;&lt;P&gt; INSERT/ ' )$'&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; INSERT/ TXTLAB,HRTEXT,TXTHRS,MNTEXT,TXTMNS,SETEXT,TXTSEC, ' )$'&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; LSTTIM = CURTIM&lt;/P&gt;&lt;P&gt;TERMAC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ Macro : CLCDTC ]-------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Cycle time calculations are not accurate when the deep drilling cycle&lt;/P&gt;&lt;P&gt;$$ is used. Therefore, this routine calculates an additional time need-&lt;/P&gt;&lt;P&gt;$$ ed for the currently active cycle, based upon the currently set depth&lt;/P&gt;&lt;P&gt;$$ values, feedrate, etc.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Global variables:&lt;/P&gt;&lt;P&gt;$$ CYCSTP : the number of steps that are needed to drill each hole&lt;/P&gt;&lt;P&gt;$$ CYCPCK : the Z increment or peck depth for the cycle&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLCDTC = MACRO/&lt;/P&gt;&lt;P&gt; DEPCOD = POSTF ( 1, 1, 0472 ) $$ The G code for a DEEP cycle&lt;/P&gt;&lt;P&gt; OFFCOD = POSTF ( 1, 1, 0500 ) $$ The G code for cycle state OFF&lt;/P&gt;&lt;P&gt; CYCNOW = POSTF ( 1, 1, 0539 ) $$ The current active cycle G code&lt;/P&gt;&lt;P&gt; IF ( ( CYCNOW .NE. OFFCOD ) .AND. ( CYCNOW .EQ. DEPCOD ) ) THEN&lt;/P&gt;&lt;P&gt; DZCLR = 0.040 $$ Rapid clearance between pecks&lt;/P&gt;&lt;P&gt; FEDDRL = POSTF ( 1, 3, 0102 ) $$ Cycle feedrate in IPM&lt;/P&gt;&lt;P&gt; FEDRAP = POSTF ( 1, 3, 0109 ) $$ Rapid feedrate in Z direction&lt;/P&gt;&lt;P&gt; NUMSTP = INTF ( ( CYCDEP + CYCCLR ) / CYCPCK )&lt;/P&gt;&lt;P&gt; TIMADD = 0.0&lt;/P&gt;&lt;P&gt; IF ( FEDDRL .GT. 0.0 ) THEN&lt;/P&gt;&lt;P&gt; TIMADD = ( DZCLR * NUMSTP ) / FEDDRL&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; IF ( FEDRAP .LE. 0.0 ) THEN&lt;/P&gt;&lt;P&gt; FEDRAP = 100.0&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; NUMRAP = NUMSTP * ( NUMSTP + 1 ) / 2 - 1&lt;/P&gt;&lt;P&gt; TIMADD = TIMADD + ( NUMRAP * CYCPCK ) / FEDRAP&lt;/P&gt;&lt;P&gt; RESULT = POSTF ( 2, 3, 0495, ( POSTF ( 1, 3, 0495 ) + TIMADD ) )&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;TERMAC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ =======================[ CIMFIL Declarations ]=======================&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ SET ]------------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ None of the processors seem to handle the offset register indicated&lt;/P&gt;&lt;P&gt;$$ by the programmer, so this code will output it as the appropriate&lt;/P&gt;&lt;P&gt;$$ G-code. Note that it is only output once per program or tool change,&lt;/P&gt;&lt;P&gt;$$ to avoid redundant calls from every NC sequence, which can cause&lt;/P&gt;&lt;P&gt;$$ troubles on some machines.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, SET, OFSETL&lt;/P&gt;&lt;P&gt; OFSTYP = POSTF ( 6, 5 )&lt;/P&gt;&lt;P&gt; OFSREG = POSTF ( 7, 5 )&lt;/P&gt;&lt;P&gt; IF ( OFSTYP .EQ. 1 ) THEN&lt;/P&gt;&lt;P&gt; IF ( OFSREG.GE.54.AND.OFSREG.LE.59.AND.CURREG.NE.OFSREG ) THEN&lt;/P&gt;&lt;P&gt; CURREG = OFSREG&lt;/P&gt;&lt;P&gt; OFSCMD = TEXT/ 'G', CONVI, OFSREG, 2, '$'&lt;/P&gt;&lt;P&gt; INSERT/ OFSCMD&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ MACHIN ]---------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ The MACHIN designation is useless, but can be used as a marker for&lt;/P&gt;&lt;P&gt;$$ the beginning of the file. Use it as the trigger to write the header&lt;/P&gt;&lt;P&gt;$$ comments and setup commands. Note that some of the lines are broken&lt;/P&gt;&lt;P&gt;$$ up into two pieces because it seems to be impossible to output them&lt;/P&gt;&lt;P&gt;$$ properly in one.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, MACHIN&lt;/P&gt;&lt;P&gt; RESULT = POSTF ( 13 )&lt;/P&gt;&lt;P&gt; TXTTIM = TEXT/ TIMES&lt;/P&gt;&lt;P&gt; TXTMON = TEXT/ RANGE, TXTTIM, 1, 2&lt;/P&gt;&lt;P&gt; TXTDAY = TEXT/ RANGE, TXTTIM, 4, 5&lt;/P&gt;&lt;P&gt; TXTYR = TEXT/ RANGE, TXTTIM, 7, 8&lt;/P&gt;&lt;P&gt; NUMMON = SCALF ( TXTMON )&lt;/P&gt;&lt;P&gt; INSERT/ ' $'&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ '( D', (TEXT/LOW, (TEXT/ 'ate : '))&lt;/P&gt;&lt;P&gt; INSERT/ TXTPRE, TXTDAY, ' ', MONNAM(NUMMON),' 20', TXTYR&lt;/P&gt;&lt;P&gt; INSERT/ ' )$'&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ '( A', (TEXT/LOW, (TEXT/ 'uthor :'))&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ TXTPRE, ' K', (TEXT/LOW, (TEXT/ 'enneth '))&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ TXTPRE, 'J. F', (TEXT/LOW, (TEXT/ 'arley'))&lt;/P&gt;&lt;P&gt; INSERT/ TXTPRE&lt;/P&gt;&lt;P&gt; INSERT/ ' )$'&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ '( D', (TEXT/LOW, (TEXT/ 'escription :'))&lt;/P&gt;&lt;P&gt; INSERT/ TXTPRE&lt;/P&gt;&lt;P&gt; INSERT/ ' )$'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; CALL/ BLDTLL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; INSERT/ ' $'&lt;/P&gt;&lt;P&gt; INSERT/ 'G17 G40 G80 G90$'&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ CYCLE ]----------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Process a drilling cycle. The reason for any special handling here is&lt;/P&gt;&lt;P&gt;$$ not to change the output to the NC file, but to correct the time est-&lt;/P&gt;&lt;P&gt;$$ imate for the cycle.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ The calculation methodology is as follows:&lt;/P&gt;&lt;P&gt;$$ (1) Tell the post-processor to generate the CYCLE NC code normally.&lt;/P&gt;&lt;P&gt;$$ (2) If the type of cycle is DEEP, set the global cycle parameters.&lt;/P&gt;&lt;P&gt;$$ (3) Call for the calculation of the time.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, CYCLE&lt;/P&gt;&lt;P&gt; RESULT = POSTF ( 13 )&lt;/P&gt;&lt;P&gt; CMDSUB = POSTF ( 7, 4 )&lt;/P&gt;&lt;P&gt; TARGET = ICODEF ( DEEP )&lt;/P&gt;&lt;P&gt; IF ( CMDSUB .EQ. TARGET ) THEN&lt;/P&gt;&lt;P&gt; CYCDEP = POSTF ( 7, 6 ) $$ The depth of the hole&lt;/P&gt;&lt;P&gt; CYCPCK = POSTF ( 7, 8 ) $$ The incremental steps to be drilled&lt;/P&gt;&lt;P&gt; CYCCLR = POSTF ( 7, 12 ) $$ The clearance distance&lt;/P&gt;&lt;P&gt; CALL / CLCDTC&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ LOADTL ]---------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Handle a tool change to ensure that the machine is moved to the home&lt;/P&gt;&lt;P&gt;$$ position, that the outputs are in the desired format, etc.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, LOADTL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Obtain the tool number requested from the current line. Also,&lt;/P&gt;&lt;P&gt; $$ reset the current offset register value. If the tool number&lt;/P&gt;&lt;P&gt; $$ called for is different from the current tool, process it in&lt;/P&gt;&lt;P&gt; $$ the appropriate fashion. Otherwise, ignore it.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; CURREG = 0&lt;/P&gt;&lt;P&gt; TLNUM = POSTF ( 7, 4 )&lt;/P&gt;&lt;P&gt; CALL/ WRTTIM, CODTIM = 0&lt;/P&gt;&lt;P&gt; IF ( TLNUM .NE. CUTOOL ) THEN&lt;/P&gt;&lt;P&gt; CHTOOL = 1&lt;/P&gt;&lt;P&gt; CUTOOL = TLNUM&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Write preparatory lines. Some of the machines need to be&lt;/P&gt;&lt;P&gt; $$ in the home position to properly load tools, so we might as&lt;/P&gt;&lt;P&gt; $$ well default to moving there.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; INSERT/ 'G00$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G49 G28', REPEAT, 17, ' ', 'Z0.0000$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G91$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G28 X0.0000 Y0.0000$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G90$'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Output the tool change, a comment about the tool being loaded, and&lt;/P&gt;&lt;P&gt; $$ an optional stop.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; CALL/ IN2TXT, INTVAL = TLNUM, NUMDIG = 2&lt;/P&gt;&lt;P&gt; INSERT/ 'M06 T', TXTVAL, '$'&lt;/P&gt;&lt;P&gt; INSERT/ '( ', TLCOMT ( TLNUM ), ' * )$'&lt;/P&gt;&lt;P&gt; INSERT/ 'M01$'&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ CUTCOM ]---------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Process a cutter compensation command, but only if it meets the&lt;/P&gt;&lt;P&gt;$$ proper requirements.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, CUTCOM&lt;/P&gt;&lt;P&gt; SETV = POSTF ( 7, 4 )&lt;/P&gt;&lt;P&gt; SETT = POSTF ( 6, 4 )&lt;/P&gt;&lt;P&gt; NBEL = POSTF ( 5 )&lt;/P&gt;&lt;P&gt; IF ( SETT .EQ. 0 ) THEN&lt;/P&gt;&lt;P&gt; IF ( SETV .NE. ( ICODEF ( OFF ) ) .AND. NBEL .EQ. 4 ) THEN&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 10, 5, ( POSTF ( 1, 3, 497 ) ) )&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 12, 5 )&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 13 )&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ GOTO ]-----------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ The most prevalent command in the file. If there was just a tool&lt;/P&gt;&lt;P&gt;$$ change, output a move to the indicated first position in the tool's&lt;/P&gt;&lt;P&gt;$$ motion, then set the tool length offset.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ If the provided position is part of a drilling cycle, calculate the&lt;/P&gt;&lt;P&gt;$$ necessary time delta and add it to the accumulated program time.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, GOTO&lt;/P&gt;&lt;P&gt; XPOS = POSTF ( 7, 6 )&lt;/P&gt;&lt;P&gt; YPOS = POSTF ( 7, 7 )&lt;/P&gt;&lt;P&gt; ZPOS = POSTF ( 7, 8 )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Convert the given positions to a properly formatted text string.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; CALL/ RL2TXT, RLVALU = XPOS, NUMDIG = 8&lt;/P&gt;&lt;P&gt; XTEXT = TEXT/ 'X', TXTVAL&lt;/P&gt;&lt;P&gt; CALL/ RL2TXT, RLVALU = YPOS, NUMDIG = 8&lt;/P&gt;&lt;P&gt; YTEXT = TEXT/ 'Y', TXTVAL&lt;/P&gt;&lt;P&gt; CALL/ RL2TXT, RLVALU = ZPOS, NUMDIG = 8&lt;/P&gt;&lt;P&gt; ZTEXT = TEXT/ 'Z', TXTVAL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ If a tool change was processed previously, now is the time to&lt;/P&gt;&lt;P&gt; $$ take care of setting the offset.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; IF ( CHTOOL.GT.0 ) THEN&lt;/P&gt;&lt;P&gt; CHTOOL = 0&lt;/P&gt;&lt;P&gt; INSERT/ 'G00 ', XTEXT, YTEXT, '$'&lt;/P&gt;&lt;P&gt; CALL/ IN2TXT, INTVAL = CUTOOL, NUMDIG = 2&lt;/P&gt;&lt;P&gt; INSERT/ 'G43 H', TXTVAL, REPEAT, 17, ' ', ZTEXT, '$'&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 13 )&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; CALL / CLCDTC&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ PPRINT ]---------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Processes the printing commands, which, for this post-processor, means&lt;/P&gt;&lt;P&gt;$$ ignoring them.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, PPRINT&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ FINI ]-----------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ At the end of the program, add code that will move the machine to the&lt;/P&gt;&lt;P&gt;$$ home position.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, 14&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 20 )&lt;/P&gt;&lt;P&gt; CALL/ WRTTIM, CODTIM = 0&lt;/P&gt;&lt;P&gt; CALL/ WRTTIM, CODTIM = 1&lt;/P&gt;&lt;P&gt; INSERT/ 'G00$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G49 G28', REPEAT, 17, ' ', 'Z0.0000$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G91$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G28 X0.0000 Y0.0000$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G90$'&lt;/P&gt;&lt;P&gt; AUXFUN/ 30&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 21 )&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 13 )&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FINI&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 27 Mar 2014 17:44:12 GMT</pubDate>
    <dc:creator>KenFarley</dc:creator>
    <dc:date>2014-03-27T17:44:12Z</dc:date>
    <item>
      <title>Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40539#M3940</link>
      <description>Anyone know how to get the tools from my Manufaturing to post out to my programs so that the list of tools and sizes are in the program for the operator. Now i write them down or use the "Process Documention" button to this after the fact and give to operator.Jeff</description>
      <pubDate>Fri, 21 Mar 2014 20:10:06 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40539#M3940</guid>
      <dc:creator>jeuclide</dc:creator>
      <dc:date>2014-03-21T20:10:06Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40540#M3941</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jeff,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Looks like you need to activate the tools options on PPRINT table. On Creo2 look on the Manufacturing tab under Machine Tool Setup / PPRINT / Modify&lt;BR /&gt;There are a number of options referring to tools. Activate those that you need. Probably the options you need are TOOL_TABLE and ONLY_OUTPUT_USED_TOOLS&lt;BR /&gt;If after that you still don’t see the tools on the programs it means that tool table output is disabled on the post-processor. Here I'm not quite sure what you need to do. I think you need to look if PPRINT comments are enabled&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Mar 2014 13:13:39 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40540#M3941</guid>
      <dc:creator>GabrielZaha</dc:creator>
      <dc:date>2014-03-24T13:13:39Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40541#M3942</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jeff,&lt;/P&gt;&lt;P&gt;I went through this a while back, and as stated above, you need to set the PPRINT parameters. Here's a link to the discussion I had on here, and I posted my solution, too.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" class="loading active_link" href="https://www.ptcusercommunity.com/message/194250#194250" title="http://communities.ptc.com/message/194250#194250"&gt;http://communities.ptc.com/message/194250#194250&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have any other questions, or maybe want me to send you my full post processor file, feel free to ask.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Mar 2014 17:45:23 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40541#M3942</guid>
      <dc:creator>KenFarley</dc:creator>
      <dc:date>2014-03-26T17:45:23Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40542#M3943</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey guys thanks for the responces. I did change the PPRINT option and nothing posts out to my programs??? Maybe like Gabriel says my PPRINT is off?? Here is my FIL data, any ideas if this looks correct? PRINT/ON should this be PPRINT/ON maybe?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jeff&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$====================================================&lt;BR /&gt;$$ -------- Post-Processor Name: HAAS VF1 ------&lt;BR /&gt;$$====================================================&lt;BR /&gt;$$&lt;BR /&gt;$$ ****************************************************&lt;BR /&gt;$$ * G L O B A L S e c t i o n s *&lt;BR /&gt;$$ ****************************************************&lt;BR /&gt;REDEF/ON&lt;BR /&gt;DMY=POSTF(24,1) $$ Debug options **&lt;BR /&gt;PRINT/ON&lt;BR /&gt;$$&lt;BR /&gt;A=1;B=2;C=3;D=4;E=5;F=6;G=7;H=8;I=9;J=10;K=11;L=12;M=13;N=14&lt;BR /&gt;O=15;P=16;Q=17;R=18;S=19;T=20;U=21;V=22;W=23;X=24;Y=25;Z=26&lt;BR /&gt;$$&lt;BR /&gt;TLCUNT=0&lt;BR /&gt;$$ Support for CSINK cycle : output G81 for a CSINK cycle&lt;BR /&gt;DMY=POSTF(2,1,471,81) $$ Set INTCOM 471 to 81&lt;/P&gt;&lt;P&gt;$$ ****************************************************&lt;BR /&gt;$$ * R E P L A C S e c t i o n s *&lt;BR /&gt;$$ ****************************************************&lt;BR /&gt;T1=TEXT/' - / ';T2=TEXT/' - ';REPLAC/T1,T2&lt;BR /&gt;T1=TEXT/' - 1 ';T2=TEXT/' - 01 ';REPLAC/T1,T2&lt;BR /&gt;T1=TEXT/' - 2 ';T2=TEXT/' - 02 ';REPLAC/T1,T2&lt;BR /&gt;T1=TEXT/' - 3 ';T2=TEXT/' - 03 ';REPLAC/T1,T2&lt;BR /&gt;T1=TEXT/' - 4 ';T2=TEXT/' - 04 ';REPLAC/T1,T2&lt;BR /&gt;T1=TEXT/' - 5 ';T2=TEXT/' - 05 ';REPLAC/T1,T2&lt;BR /&gt;T1=TEXT/' - 6 ';T2=TEXT/' - 06 ';REPLAC/T1,T2&lt;BR /&gt;T1=TEXT/' - 7 ';T2=TEXT/' - 07 ';REPLAC/T1,T2&lt;BR /&gt;T1=TEXT/' - 8 ';T2=TEXT/' - 08 ';REPLAC/T1,T2&lt;BR /&gt;T1=TEXT/' - 9 ';T2=TEXT/' - 09 ';REPLAC/T1,T2&lt;BR /&gt;T1=TEXT/'M6';T2=TEXT/'M06';REPLAC/T1,T2&lt;BR /&gt;T1=TEXT/'M5';T2=TEXT/'M05';REPLAC/T1,T2&lt;/P&gt;&lt;P&gt;$$ ****************************************************&lt;BR /&gt;$$ * M A C R O S e c t i o n s *&lt;BR /&gt;$$ ****************************************************&lt;BR /&gt;$$-------------------------------------------------------&lt;BR /&gt;$$ Macro to extract elements of time and date&lt;BR /&gt;$$--------------------------------------------------------&lt;BR /&gt;TIMDAT=MACRO/&lt;BR /&gt; TIMEDD=TEXT/TIMES&lt;BR /&gt; MONTH=TEXT/RANGE,TIMEDD,1,2&lt;BR /&gt; DATE=TEXT/RANGE,TIMEDD,4,5&lt;BR /&gt; YEAR=TEXT/RANGE,TIMEDD,7,8&lt;BR /&gt; HOUR=TEXT/RANGE,TIMEDD,10,11&lt;BR /&gt; MINUTE=TEXT/RANGE,TIMEDD,13,14&lt;BR /&gt; SECOND=TEXT/RANGE,TIMEDD,16,17&lt;BR /&gt;TERMAC&lt;/P&gt;&lt;P&gt;$$-------------------------------------------------------&lt;BR /&gt;$$ Macro to extract the contents before and after ':'&lt;BR /&gt;$$ in PPRINT (except OPERATION COMMENTS)&lt;BR /&gt;$$--------------------------------------------------------&lt;BR /&gt;PRTCON=MACRO/&lt;BR /&gt; COLON=TEXT/':'&lt;BR /&gt; MESTYP=TEXT/'----' &lt;BR /&gt; MESCON=TEXT/'----'&lt;BR /&gt; $$&lt;BR /&gt; MESAGE=TEXT/CLW $$ Get text in PPRINT&lt;BR /&gt; COLPOS=INDXF(MESAGE,COLON) $$ Find position of ':'&lt;BR /&gt; IF(COLPOS .NE. 0)THEN $$ In case ':' exist&lt;BR /&gt; MESAGE=TEXT/OMIT,MESAGE,1&lt;BR /&gt; MESAGE=TEXT/OMIT,MESAGE,2&lt;BR /&gt; NBCHAR=CANF(MESAGE,1)&lt;BR /&gt; MESAGE=TEXT/RANGE,MESAGE,2,NBCHAR&lt;BR /&gt; MESAGE=TEXT/OMIT,MESAGE,1&lt;BR /&gt; MESAGE=TEXT/OMIT,MESAGE,2 &lt;BR /&gt; NBCHAR=CANF(MESAGE,1)&lt;BR /&gt; COLPOS=INDXF(MESAGE,COLON)&lt;BR /&gt; $$ Get contents before ':'&lt;BR /&gt; MESTYP=TEXT/RANGE,MESAGE,1,(COLPOS-1)&lt;BR /&gt; MESTYP=TEXT/OMIT,MESTYP,1&lt;BR /&gt; MESTYP=TEXT/OMIT,MESTYP,2 $$ Text before ':', message type &lt;BR /&gt; $$ Get contents after ':' &lt;BR /&gt; MESCON=TEXT/RANGE,MESAGE,(COLPOS+1),NBCHAR&lt;BR /&gt; MESCON=TEXT/OMIT,MESCON,1&lt;BR /&gt; MESCON=TEXT/OMIT,MESCON,2 $$ Text after ':', message contents&lt;BR /&gt; ENDIF&lt;BR /&gt;TERMAC&lt;/P&gt;&lt;P&gt;$$-------------------------------------------------------&lt;BR /&gt;$$ Macro to find all PPRINT/TOOL NAME and LOADTL record&lt;BR /&gt;$$ and save them in MACRO&lt;BR /&gt;$$--------------------------------------------------------&lt;BR /&gt;TLINFO=MACRO/&lt;BR /&gt;CUCLPO=POSTF(7,1)&lt;BR /&gt;T1=TEXT/'TOOL NAME'&lt;BR /&gt;TLINDX=1&lt;BR /&gt;INDEX1=1&lt;BR /&gt;$$&lt;BR /&gt;DMY=POSTF(2,1,1836,1) $$ Suppress all warnings&lt;BR /&gt;RESERV/TLNAME,100,TLNUMB,100,OFFSET,100,CYCFLG,100&lt;BR /&gt;DMY=POSTF(2,1,1836,0) $$ Enable warnings&lt;BR /&gt;$$&lt;BR /&gt;DO/ENDDO2,BBB=1,100,1&lt;BR /&gt; TLNAME(BBB)=TEXT/'NO TOOL NAME DEFINED IN NCL FILE'&lt;BR /&gt; CYCFLG(BBB)=0&lt;BR /&gt;ENDDO2)CONTIN&lt;BR /&gt;$$&lt;BR /&gt;DO/ENDDO1,AAA=1,3,1&lt;BR /&gt; DMY=POSTF(14)&lt;BR /&gt; WORD_2=POSTF(7,2)&lt;BR /&gt; WORD_3=POSTF(7,3)&lt;BR /&gt; IF(WORD_2 .NE. 14000)THEN&lt;BR /&gt; CASE/WORD_3&lt;BR /&gt; WHEN/(ICODEF(PPRINT))&lt;BR /&gt; CALL/PRTCON&lt;BR /&gt; OKTLCM=CMPRF(MESTYP,T1)&lt;BR /&gt; IF(OKTLCM .EQ. 1)THEN&lt;BR /&gt; TLNAME(TLINDX)=TEXT/MESCON&lt;BR /&gt; TLINDX=TLINDX+1&lt;BR /&gt; ENDIF&lt;BR /&gt; WHEN/(ICODEF(LOADTL))&lt;BR /&gt; TOOLNB=POSTF(7,4) $$ Get tool info.&lt;BR /&gt; FIVWOD=POSTF(7,5)&lt;BR /&gt; SIXWOD=POSTF(7,6)&lt;BR /&gt; TLNUMB(INDEX1)=TOOLNB&lt;BR /&gt; IF(FIVWOD .EQ. ICODEF(OSETNO))THEN $$ If offset # exist&lt;BR /&gt; OFFSET(INDEX1)=SIXWOD&lt;BR /&gt; ELSE $$ No offset #, use tool # instead &lt;BR /&gt; OFFSET(INDEX1)=TOOLNB&lt;BR /&gt; ENDIF&lt;BR /&gt; INDEX1=INDEX1+1&lt;BR /&gt; WHEN/(ICODEF(CYCLE)) $$ Check if a CYCLE is used for &lt;BR /&gt; CYCFLG(INDEX1-1)=1 $$ this tool&lt;BR /&gt; ENDCAS&lt;BR /&gt; AAA=2&lt;BR /&gt; ELSE&lt;BR /&gt; AAA=4&lt;BR /&gt; DMY=POSTF(15,(CUCLPO+1))&lt;BR /&gt; ENDIF&lt;BR /&gt;ENDDO1)CONTIN&lt;BR /&gt;TERMAC&lt;/P&gt;&lt;P&gt;$$---------------------------------&lt;BR /&gt;$$ Current register contents MACRO&lt;BR /&gt;$$---------------------------------&lt;BR /&gt;REGVAL=MACRO/&lt;BR /&gt; AVAL=POSTF(1,3,292);NVAL=POSTF(1,3,305)&lt;BR /&gt; BVAL=POSTF(1,3,293);OVAL=POSTF(1,3,306)&lt;BR /&gt; CVAL=POSTF(1,3,294);PVAL=POSTF(1,3,307)&lt;BR /&gt; DVAL=POSTF(1,3,295);QVAL=POSTF(1,3,308)&lt;BR /&gt; EVAL=POSTF(1,3,296);RVAL=POSTF(1,3,309)&lt;BR /&gt; FVAL=POSTF(1,3,297);SVAL=POSTF(1,3,310)&lt;BR /&gt; GVAL=POSTF(1,3,298);TVAL=POSTF(1,3,311)&lt;BR /&gt; HVAL=POSTF(1,3,299);UVAL=POSTF(1,3,312)&lt;BR /&gt; IVAL=POSTF(1,3,300);VVAL=POSTF(1,3,313)&lt;BR /&gt; JVAL=POSTF(1,3,301);WVAL=POSTF(1,3,314)&lt;BR /&gt; KVAL=POSTF(1,3,302);XVAL=POSTF(1,3,315)&lt;BR /&gt; LVAL=POSTF(1,3,303);YVAL=POSTF(1,3,316)&lt;BR /&gt; MVAL=POSTF(1,3,304);ZVAL=POSTF(1,3,317)&lt;BR /&gt;TERMAC&lt;BR /&gt; &lt;/P&gt;&lt;P&gt;$$=====================================================&lt;BR /&gt;$$ C I M F I L S E C T I O N &lt;BR /&gt;$$===================================================== &lt;BR /&gt;$$ ****************************************************&lt;BR /&gt;$$ * M A C H I N S e c t i o n s *&lt;BR /&gt;$$ **************************************************** &lt;BR /&gt;CIMFIL/ON, MACHIN&lt;BR /&gt;DMY=POSTF(13)&lt;BR /&gt;SEQNO/OFF&lt;BR /&gt;INSERT/'(PROGRAM NAME - ',PTNUMB, ' )$'&lt;BR /&gt;CALL/TIMDAT&lt;BR /&gt;INSERT/'(DATE, DAY-MONTH-YEAR - ',DATE,'-',MONTH,'-',YEAR,' )$'&lt;BR /&gt;$$&lt;BR /&gt;CALL/TLINFO&lt;BR /&gt;DO/ENDDO3,CCC=1,(TLINDX-1),1&lt;BR /&gt; INSERT/'( TOOL -', TLNUMB(CCC), ' DIA. OFF. -' $&lt;BR /&gt; TLNUMB(CCC), ' LENGTH -', TLNUMB(CCC), ' ', TLNAME(CCC),' )$'&lt;BR /&gt;ENDDO3)CONTIN&lt;BR /&gt;$$&lt;BR /&gt;INSERT/' $'&lt;BR /&gt;SEQNO/ON&lt;BR /&gt;INSERT/' G00 G40 G49 G80 G90$'&lt;BR /&gt;SEQNO/30,INCR,5,1&lt;BR /&gt;CIMFIL/OFF&lt;/P&gt;&lt;P&gt;$$ ****************************************************&lt;BR /&gt;$$ * C O O L N T S e c t i o n s *&lt;BR /&gt;$$ ****************************************************&lt;BR /&gt;CIMFIL/ON, COOLNT&lt;BR /&gt;DMY=POSTF(12,4) $$ Set CL to 4 digits&lt;BR /&gt;WORD_4=POSTF(7,4)&lt;BR /&gt;IF(WORD_4 .NE. ICODEF(OFF))THEN&lt;BR /&gt; REPEAT/Z,M,8&lt;BR /&gt;ELSE&lt;BR /&gt; REPEAT/Z,M,9&lt;BR /&gt;ENDIF&lt;BR /&gt;CIMFIL/OFF&lt;/P&gt;&lt;P&gt; &lt;BR /&gt;$$ ****************************************************&lt;BR /&gt;$$ * L O A D T L S e c t i o n s *&lt;BR /&gt;$$ **************************************************** &lt;BR /&gt;CIMFIL/ON,LOADTL&lt;BR /&gt;CUTLNB=POSTF(7,4) $$ Added 04/30/01&lt;BR /&gt;DMY=POSTF(20)&lt;BR /&gt;SEQNO/OFF&lt;BR /&gt;INSERT/' $'&lt;BR /&gt;SEQNO/ON&lt;BR /&gt;DMY=POSTF(21)&lt;BR /&gt;DMY=POSTF(12,6)&lt;BR /&gt;DMY=POSTF(9,5,(ICODEF(OSETNO)))&lt;BR /&gt;DMY=POSTF(10,6,CUTLNB)&lt;BR /&gt;DMY=POSTF(13)&lt;BR /&gt;TLCUNT=TLCUNT+1&lt;BR /&gt;REPEAT/OFF&lt;BR /&gt;REPEAT/G,A,90&lt;BR /&gt;CIMFIL/OFF&lt;/P&gt;&lt;P&gt;$$ ****************************************************&lt;BR /&gt;$$ * C U T C O M S e c t i o n s *&lt;BR /&gt;$$ **************************************************** &lt;BR /&gt;CIMFIL/ON,CUTCOM $$ Force CUTCOM # same as Tool #&lt;BR /&gt;WORD_4=POSTF(7,4)&lt;BR /&gt;IF(WORD_4 .NE. ICODEF(OFF))THEN&lt;BR /&gt; DMY=POSTF(10,5,CUTLNB)&lt;BR /&gt;ENDIF&lt;BR /&gt;DMY=POSTF(13)&lt;BR /&gt;CIMFIL/OFF&lt;/P&gt;&lt;P&gt;$$ ****************************************************&lt;BR /&gt;$$ * P A R T N O S e c t i o n s *&lt;BR /&gt;$$ ****************************************************&lt;BR /&gt;CIMFIL/ON,PARTNO&lt;BR /&gt;PTNUMB=TEXT/CLW&lt;BR /&gt;PTNUMB=TEXT/OMIT,PTNUMB,1&lt;BR /&gt;PTNUMB=TEXT/OMIT,PTNUMB,2&lt;BR /&gt;CIMFIL/OFF&lt;/P&gt;&lt;P&gt;$$ ****************************************************&lt;BR /&gt;$$ * S P I N D L S e c t i o n s *&lt;BR /&gt;$$ ****************************************************&lt;BR /&gt;CIMFIL/ON,SPINDL&lt;BR /&gt;WORD_4=POSTF(7,4)&lt;BR /&gt;IF(WORD_4 .NE. ICODEF(OFF))THEN&lt;BR /&gt; DMY=POSTF(2,1,1867,1) $$ Disable Tape output &lt;BR /&gt; DMY=POSTF(13) $$ Process&lt;BR /&gt; DMY=POSTF(2,1,1867,0) $$ Enable Tape output&lt;BR /&gt; CALL/REGVAL&lt;BR /&gt; $$REPEAT/OFF&lt;BR /&gt; IF((CYCFLG(TLCUNT)) .EQ. 0)THEN $$ If no CYCLE exist, output Dxx &lt;BR /&gt; REPEAT/X,Y,D,CUTLNB,ALL $$ Added 04/30/01&lt;BR /&gt; ENDIF&lt;BR /&gt; REPEAT/X,Y,Z,S,SVAL,ALL $$ Output SxxxMx&lt;BR /&gt; REPEAT/X,Y,Z,M,MVAL,ALL $$ with next motion&lt;BR /&gt;ELSE&lt;BR /&gt; DMY=POSTF(13)&lt;BR /&gt; POSTN/OUT,G,91,A,28,Z,0&lt;BR /&gt;ENDIF&lt;BR /&gt;CIMFIL/OFF&lt;/P&gt;&lt;P&gt;$$ ****************************************************&lt;BR /&gt;$$ * E N D 08/21/01 *&lt;BR /&gt;$$ ****************************************************&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Mar 2014 12:49:02 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40542#M3943</guid>
      <dc:creator>jeuclide</dc:creator>
      <dc:date>2014-03-27T12:49:02Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40543#M3944</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jeff,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I took a look at your fil file and it look like the informations you are looking for are handled by TLINFO macro. Here is what I suggest to do:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In your PPRINT table (on the mfg model) activate the following options: TOOL_NAME, CUTTER_DIAM, LENGTH&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edit the TLINFO macro on the fil file to look like this&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;$$-------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$ Macro to find all PPRINT/TOOL NAME and LOADTL record&lt;/P&gt;&lt;P&gt;$$ and save them in MACRO&lt;/P&gt;&lt;P&gt;$$--------------------------------------------------------&lt;/P&gt;&lt;P&gt;TLINFO=MACRO/&lt;/P&gt;&lt;P&gt;CUCLPO=POSTF(7,1)&lt;/P&gt;&lt;P&gt;T1=TEXT/'TOOL NAME'&lt;/P&gt;&lt;P&gt;T2=TEXT/'LENGTH'&lt;/P&gt;&lt;P&gt;T3=TEXT/'CUTTER_DIAM'&lt;/P&gt;&lt;P&gt;TLINDX=1&lt;/P&gt;&lt;P&gt;INDEX1=1&lt;/P&gt;&lt;P&gt;INDEX2=1&lt;/P&gt;&lt;P&gt;INDEX3=1&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;DMY=POSTF(2,1,1836,1) $$ Suppress all warnings&lt;/P&gt;&lt;P&gt;RESERV/TLNAME,100,TLNUMB,100,OFFSET,100,CYCFLG,100,TLLNGT,100,TLDIAM,100&lt;/P&gt;&lt;P&gt;DMY=POSTF(2,1,1836,0) $$ Enable warnings&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;DO/ENDDO2,BBB=1,100,1&lt;/P&gt;&lt;P&gt; TLNAME(BBB)=TEXT/'NO TOOL NAME DEFINED IN NCL FILE'&lt;/P&gt;&lt;P&gt; CYCFLG(BBB)=0&lt;/P&gt;&lt;P&gt;ENDDO2)CONTIN&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;DO/ENDDO1,AAA=1,3,1&lt;/P&gt;&lt;P&gt; DMY=POSTF(14)&lt;/P&gt;&lt;P&gt; WORD_2=POSTF(7,2)&lt;/P&gt;&lt;P&gt; WORD_3=POSTF(7,3)&lt;/P&gt;&lt;P&gt; IF(WORD_2 .NE. 14000)THEN&lt;/P&gt;&lt;P&gt; CASE/WORD_3&lt;/P&gt;&lt;P&gt; WHEN/(ICODEF(PPRINT))&lt;/P&gt;&lt;P&gt; CALL/PRTCON&lt;/P&gt;&lt;P&gt; OKTLCM=CMPRF(MESTYP,T1)&lt;/P&gt;&lt;P&gt; IF(OKTLCM .EQ. 1)THEN&lt;/P&gt;&lt;P&gt; TLNAME(TLINDX)=TEXT/MESCON&lt;/P&gt;&lt;P&gt; TLINDX=TLINDX+1&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; OKTLCM=CMPRF(MESTYP,T2)&lt;/P&gt;&lt;P&gt; IF(OKTLCM .EQ. 1)THEN&lt;/P&gt;&lt;P&gt; TLLNGT(INDEX2)=TEXT/MESCON&lt;/P&gt;&lt;P&gt; INDEX2=INDEX2+1&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; OKTLCM=CMPRF(MESTYP,T3)&lt;/P&gt;&lt;P&gt; IF(OKTLCM .EQ. 1)THEN&lt;/P&gt;&lt;P&gt; TLDIAM(INDEX3)=TEXT/MESCON&lt;/P&gt;&lt;P&gt; INDEX3=INDEX3+1&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; WHEN/(ICODEF(LOADTL))&lt;/P&gt;&lt;P&gt; TOOLNB=POSTF(7,4) $$ Get tool info.&lt;/P&gt;&lt;P&gt; FIVWOD=POSTF(7,5)&lt;/P&gt;&lt;P&gt; SIXWOD=POSTF(7,6)&lt;/P&gt;&lt;P&gt; TLNUMB(INDEX1)=TOOLNB&lt;/P&gt;&lt;P&gt; IF(FIVWOD .EQ. ICODEF(OSETNO))THEN $$ If offset # exist&lt;/P&gt;&lt;P&gt; OFFSET(INDEX1)=SIXWOD&lt;/P&gt;&lt;P&gt; ELSE $$ No offset #, use tool # instead &lt;/P&gt;&lt;P&gt; OFFSET(INDEX1)=TOOLNB&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; INDEX1=INDEX1+1&lt;/P&gt;&lt;P&gt; WHEN/(ICODEF(CYCLE)) $$ Check if a CYCLE is used for &lt;/P&gt;&lt;P&gt; CYCFLG(INDEX1-1)=1 $$ this tool&lt;/P&gt;&lt;P&gt; ENDCAS&lt;/P&gt;&lt;P&gt; AAA=2&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; AAA=4&lt;/P&gt;&lt;P&gt; DMY=POSTF(15,(CUCLPO+1))&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;ENDDO1)CONTIN&lt;/P&gt;&lt;P&gt;TERMAC&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edit the MACHIN section:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;CIMFIL/ON, MACHIN&lt;/P&gt;&lt;P&gt;DMY=POSTF(13)&lt;/P&gt;&lt;P&gt;SEQNO/OFF&lt;/P&gt;&lt;P&gt;INSERT/'(PROGRAM NAME - ',PTNUMB, ' )$'&lt;/P&gt;&lt;P&gt;CALL/TIMDAT&lt;/P&gt;&lt;P&gt;INSERT/'(DATE, DAY-MONTH-YEAR - ',DATE,'-',MONTH,'-',YEAR,' )$'&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;CALL/TLINFO&lt;/P&gt;&lt;P&gt;DO/ENDDO3,CCC=1,(TLINDX-1),1&lt;/P&gt;&lt;P&gt; INSERT/'( TOOL:',TLNUMB(CCC), ' TOOL_DIA:', TLDIAM(CCC), $&lt;/P&gt;&lt;P&gt; ' OFFSET:' OFFSET(CCC), ' LENGTH:', TLLNGT(CCC), $&lt;/P&gt;&lt;P&gt; ' ', TLNAME(CCC),' )$'&lt;/P&gt;&lt;P&gt;ENDDO3)CONTIN&lt;/P&gt;&lt;P&gt;INSERT/' $'&lt;/P&gt;&lt;P&gt;SEQNO/ON&lt;/P&gt;&lt;P&gt;INSERT/' G00 G40 G49 G80 G90$'&lt;/P&gt;&lt;P&gt;SEQNO/30,INCR,5,1&lt;/P&gt;&lt;P&gt;CIMFIL/OFF&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After I made those changes the header of the tape file looks like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;G20&lt;/P&gt;&lt;P&gt;(PROGRAM NAME - TEST_MFG )&lt;/P&gt;&lt;P&gt;(DATE, DAY-MONTH-YEAR - 27-03-14 )&lt;/P&gt;&lt;P&gt;( TOOL: 4 TOOL_DIA:0.393701 OFFSET: 4 LENGTH:3.937010 T0004 )&lt;/P&gt;&lt;P&gt;( TOOL: 7 TOOL_DIA:0.312500 OFFSET: 7 LENGTH:3.000000 T0007 )&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Mar 2014 14:56:06 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40543#M3944</guid>
      <dc:creator>GabrielZaha</dc:creator>
      <dc:date>2014-03-27T14:56:06Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40544#M3945</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Gabriel, I changed my settings like above and it does not post correct yet?? All i get is the part number to show up. Any ideas?? Thankyou for your help on this!!!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jeff&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Mar 2014 15:37:51 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40544#M3945</guid>
      <dc:creator>jeuclide</dc:creator>
      <dc:date>2014-03-27T15:37:51Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40545#M3946</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jeff,&lt;/P&gt;&lt;P&gt;Here's the post I generally use for machines with tool changers. Maybe you can extract the stuff you want from it? Hopefully I'm not defying any rules by posting something this long.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Author : Kenneth J. Farley&lt;/P&gt;&lt;P&gt;$$ Date : 13 November 2013&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Handling routines for various APT code that is not done in the&lt;/P&gt;&lt;P&gt;$$ proper fashion by the default routines.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PRINT/ OFF, IN $$ debug: ON production: OFF, IN&lt;/P&gt;&lt;P&gt;DMY = POSTF ( 24, 0 ) $$ : ( 24, 1 ) : ( 24, 0 )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ ===================[ Global Variable Declarations ]==================&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REDEF/ ON&lt;/P&gt;&lt;P&gt;A=1 ; B=2 ; C=3 ; D=4 ; E=5 ; F=6 ; G=7 ; H=8 ; I=9 ; J=10&lt;/P&gt;&lt;P&gt;K=11 ; L=12 ; M=13 ; N=14 ; O=15 ; P=16 ; Q=17 ; R=18 ; S=19 ; T=20&lt;/P&gt;&lt;P&gt;U=21 ; V=22 ; W=23 ; X=24 ; Y=25 ; Z=26&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CURREG = 0 $$ Current offset register in use&lt;/P&gt;&lt;P&gt;CHTOOL = 0 $$ Boolean indicator of tool change&lt;/P&gt;&lt;P&gt;CUTOOL = 0 $$ Current tool number in use&lt;/P&gt;&lt;P&gt;TXTVAL = TEXT/ ' ' $$ Generic text variable 'returned' by macros&lt;/P&gt;&lt;P&gt;CMTLST = TEXT/ ' ' $$ Last PPRINT comment processed&lt;/P&gt;&lt;P&gt;MAXTLS = 50 $$ Maximum number of tools used&lt;/P&gt;&lt;P&gt;LSTTIM = 0.0 $$ Initial cycle time&lt;/P&gt;&lt;P&gt;CYCDEP = 0.0 $$ Depth of drilling in current cycle&lt;/P&gt;&lt;P&gt;CYCPCK = 0.0 $$ Drilling cycle peck depth&lt;/P&gt;&lt;P&gt;CYCCLR = 0.0 $$ Drilling cycle clearance&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;RESERV/ MONNAM, 12 $$ Array of names for the months&lt;/P&gt;&lt;P&gt;MONNAM ( 1 ) = TEXT/ 'J', ( TEXT/ LOW, ( TEXT/ 'anuary' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 2 ) = TEXT/ 'F', ( TEXT/ LOW, ( TEXT/ 'ebruary' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 3 ) = TEXT/ 'M', ( TEXT/ LOW, ( TEXT/ 'arch' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 4 ) = TEXT/ 'A', ( TEXT/ LOW, ( TEXT/ 'pril' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 5 ) = TEXT/ 'M', ( TEXT/ LOW, ( TEXT/ 'ay' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 6 ) = TEXT/ 'J', ( TEXT/ LOW, ( TEXT/ 'une' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 7 ) = TEXT/ 'J', ( TEXT/ LOW, ( TEXT/ 'uly' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 8 ) = TEXT/ 'A', ( TEXT/ LOW, ( TEXT/ 'ugust' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 9 ) = TEXT/ 'S', ( TEXT/ LOW, ( TEXT/ 'eptember' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 10 ) = TEXT/ 'O', ( TEXT/ LOW, ( TEXT/ 'ctober' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 11 ) = TEXT/ 'N', ( TEXT/ LOW, ( TEXT/ 'ovember' ) )&lt;/P&gt;&lt;P&gt;MONNAM ( 12 ) = TEXT/ 'D', ( TEXT/ LOW, ( TEXT/ 'ecember' ) )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;RESERV/ TLUSED, MAXTLS $$ Array of boolean tool usage flags&lt;/P&gt;&lt;P&gt;RESERV/ TLCOMT, MAXTLS $$ Array of tool comments&lt;/P&gt;&lt;P&gt;DO/ DOTLS, INDEX = 1, MAXTLS, 1&lt;/P&gt;&lt;P&gt; TLUSED ( INDEX ) = 0&lt;/P&gt;&lt;P&gt; TLCOMT ( INDEX ) = TEXT/ '* X.XXXX DIA'&lt;/P&gt;&lt;P&gt;DOTLS) CONTIN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ ========================[ Macro Declarations ]=======================&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ Macro : IN2TXT ]-------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Converts an integer value to a text string, with the desired&lt;/P&gt;&lt;P&gt;$$ number of characters. If necessary, the number is padded with&lt;/P&gt;&lt;P&gt;$$ leading zeroes to achieve the desired width.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Parameters&lt;/P&gt;&lt;P&gt;$$ INTVAL : the value that is to be processed&lt;/P&gt;&lt;P&gt;$$ NUMDIG : the number of characters the number is to fill&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Global variables&lt;/P&gt;&lt;P&gt;$$ TXTVAL : the resultant number as a text string&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IN2TXT = MACRO/ INTVAL, NUMDIG&lt;/P&gt;&lt;P&gt; WRKVAL = INTF ( INTVAL )&lt;/P&gt;&lt;P&gt; DIGSOK = 1 + INTF ( LOGF ( WRKVAL ) / LOGF ( 10.0 ) )&lt;/P&gt;&lt;P&gt; NUMZED = NUMDIG - DIGSOK&lt;/P&gt;&lt;P&gt; IF ( NUMZED .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; TXTVAL = TEXT/ REPEAT, NUMZED, '0', CONVI, WRKVAL, DIGSOK&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; TXTVAL = TEXT/ CONVI, WRKVAL, NUMDIG&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;TERMAC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ Macro : RL2TXT ]-------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Converts a real number to a string. The resultant number is&lt;/P&gt;&lt;P&gt;$$ padded with spaces to the right in order to obtain a final res-&lt;/P&gt;&lt;P&gt;$$ ult with the same width as '-XX.XXXX '.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Parameters&lt;/P&gt;&lt;P&gt;$$ RLVALU : the value that is to be processed&lt;/P&gt;&lt;P&gt;$$ NUMDIG : the number of characters the number is to fill&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Global variables&lt;/P&gt;&lt;P&gt;$$ TXTVAL : the resultant number as a text string&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;RL2TXT = MACRO/ RLVALU, NUMDIG&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Calculate the number of spaces that need to be added. The end&lt;/P&gt;&lt;P&gt; $$ result desired is any of the following:&lt;/P&gt;&lt;P&gt; $$ '-XX.XXXX' -&amp;gt; no space padding needed&lt;/P&gt;&lt;P&gt; $$ '-X.XXXX ' or 'XX.XXXX ' -&amp;gt; one trailing space&lt;/P&gt;&lt;P&gt; $$ 'X.XXXX ' -&amp;gt; two trailing spaces&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; NUMSPC = 1&lt;/P&gt;&lt;P&gt; IF ( RLVALU .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; NUMSPC = NUMSPC + 1&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; IF ( ABSF ( RLVALU ) .LT. 10 ) THEN&lt;/P&gt;&lt;P&gt; NUMSPC = NUMSPC + 1&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Generate the text string including the label, sign, value,&lt;/P&gt;&lt;P&gt; $$ and necessary number of spaces.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; IF ( ABSF ( RLVALU ) .LT. 1 ) THEN&lt;/P&gt;&lt;P&gt; TXTNUM = TEXT/ CONVF, ABSF ( RLVALU ), NUMDIG, 4, 0, 0, 3&lt;/P&gt;&lt;P&gt; IF ( RLVALU .LT. 0 ) THEN&lt;/P&gt;&lt;P&gt; TXTVAL = TEXT/ '-0', TXTNUM, REPEAT, NUMSPC, ' '&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; TXTVAL = TEXT/ '0', TXTNUM, REPEAT, NUMSPC, ' '&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; TXTNUM = TEXT/ CONVF, RLVALU, NUMDIG, 4, 0, 0, 3&lt;/P&gt;&lt;P&gt; TXTVAL = TEXT/ TXTNUM, REPEAT, NUMSPC, ' '&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;TERMAC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ Macro : BLDTLL ]-------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Build and then output a list of the tools used in the program.&lt;/P&gt;&lt;P&gt;$$ This is done by the following algorithm:&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ (1) Save the restart CL record position.&lt;/P&gt;&lt;P&gt;$$ (2) Parse through the remainder of the CL file, storing any occur-&lt;/P&gt;&lt;P&gt;$$ ences of tool changes as you go.&lt;/P&gt;&lt;P&gt;$$ (3) Reset the CL file to the restart position.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BLDTLL = MACRO/&lt;/P&gt;&lt;P&gt; CIMPOS = POSTF ( 7, 1 ) + 1 $$ Set the return CL position&lt;/P&gt;&lt;P&gt; DO/ DOCMD, INDEX = 0, 10, 1&lt;/P&gt;&lt;P&gt; RESULT = POSTF ( 14 )&lt;/P&gt;&lt;P&gt; CMDTYP = POSTF ( 7, 2 )&lt;/P&gt;&lt;P&gt; CMDSUB = POSTF ( 7, 3 )&lt;/P&gt;&lt;P&gt; IF ( CMDTYP .EQ. 14000 ) THEN&lt;/P&gt;&lt;P&gt; RESULT = POSTF ( 15, CIMPOS )&lt;/P&gt;&lt;P&gt; INDEX = 11&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; INDEX = 2&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; TARGET = ICODEF ( PPRINT )&lt;/P&gt;&lt;P&gt; IF ( CMDTYP .EQ. 2000 .AND. CMDSUB .EQ. TARGET ) THEN&lt;/P&gt;&lt;P&gt; CMTLST = TEXT/ OMIT, (TEXT/ CLW), 1&lt;/P&gt;&lt;P&gt; CMTLST = TEXT/ MODIFY, CMTLST, (TEXT/ '/'), (TEXT/ '*'), 1&lt;/P&gt;&lt;P&gt; CMTLST = TEXT/ OMIT, CMTLST, 2&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; TARGET = ICODEF ( LOADTL )&lt;/P&gt;&lt;P&gt; IF ( CMDTYP .EQ. 2000 .AND. CMDSUB .EQ. TARGET ) THEN&lt;/P&gt;&lt;P&gt; TLNUM = POSTF ( 7, 4 )&lt;/P&gt;&lt;P&gt; TLUSED ( TLNUM ) = 1&lt;/P&gt;&lt;P&gt; TLCOMT ( TLNUM ) = TEXT/ CMTLST&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; DOCMD) CONTIN&lt;/P&gt;&lt;P&gt; CALL/ WRTTLS&lt;/P&gt;&lt;P&gt;TERMAC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ Macro : WRTTLS ]------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Writes out a list of the tools used in the current CL file&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Global variables&lt;/P&gt;&lt;P&gt;$$ TLUSED : array of flags indicating if the tool is used&lt;/P&gt;&lt;P&gt;$$ TLCOMT : the comment string for a the tool&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WRTTLS = MACRO/&lt;/P&gt;&lt;P&gt; LINCNT = 0&lt;/P&gt;&lt;P&gt; DO/ DOTLS, INDEX = 1, MAXTLS, 1&lt;/P&gt;&lt;P&gt; IF ( TLUSED ( INDEX ) .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; CALL/ IN2TXT, INTVAL = INDEX, NUMDIG = 2&lt;/P&gt;&lt;P&gt; IF ( LINCNT .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ '( '&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ '( T', (TEXT/LOW, (TEXT/ 'ools : '))&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; INSERT/ TXTPRE, TXTVAL, ' ', TLCOMT ( INDEX )&lt;/P&gt;&lt;P&gt; INSERT/ ' )$'&lt;/P&gt;&lt;P&gt; LINCNT = LINCNT + 1&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; DOTLS) CONTIN&lt;/P&gt;&lt;P&gt;TERMAC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ Macro : WRTTIM ]-------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Obtains and outputs a runtime value, depending on the argument passed&lt;/P&gt;&lt;P&gt;$$ to the macro:&lt;/P&gt;&lt;P&gt;$$ CODTIM = 0 -&amp;gt; Output the elapsed runtime since the last tool change.&lt;/P&gt;&lt;P&gt;$$ CODTIM = 1 -&amp;gt; Output the total runtime at present&lt;/P&gt;&lt;P&gt;$$ The runtime is output as a properly formatted comment. The macro&lt;/P&gt;&lt;P&gt;$$ utilizes the always-obscure and cryptic POSTF function to read the&lt;/P&gt;&lt;P&gt;$$ correct common variable.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WRTTIM = MACRO/ CODTIM&lt;/P&gt;&lt;P&gt; CURTIM = POSTF ( 1, 3, 0495 ) $$ Get the total runtime&lt;/P&gt;&lt;P&gt; IF ( CODTIM .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; RAWTIM = CURTIM&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; RAWTIM = CURTIM - LSTTIM&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ The runtime is given in minutes. Convert the provided number to&lt;/P&gt;&lt;P&gt; $$ hours, minutes, and seconds. If the CODTIM parameter is non-zero&lt;/P&gt;&lt;P&gt; $$ the minutes portion of the time will be rounded up one minute if the&lt;/P&gt;&lt;P&gt; $$ seconds portion is at least 30 or greater.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; HRTIME = INTF ( RAWTIM / 60.0 )&lt;/P&gt;&lt;P&gt; MNTIME = INTF ( RAWTIM - ( HRTIME * 60.0 ) )&lt;/P&gt;&lt;P&gt; SETIME = INTF ( ( RAWTIM - INTF ( RAWTIM ) ) * 60.0 )&lt;/P&gt;&lt;P&gt; IF ( CODTIM .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; MNTIME = MNTIME + INTF ( ( SETIME + 31.0 ) / 60.0 )&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; CALL/ IN2TXT, INTVAL = HRTIME, NUMDIG = 2&lt;/P&gt;&lt;P&gt; HRTEXT = TEXT/ TXTVAL&lt;/P&gt;&lt;P&gt; CALL/ IN2TXT, INTVAL = MNTIME, NUMDIG = 2&lt;/P&gt;&lt;P&gt; MNTEXT = TEXT/ TXTVAL&lt;/P&gt;&lt;P&gt; CALL/ IN2TXT, INTVAL = SETIME, NUMDIG = 2&lt;/P&gt;&lt;P&gt; SETEXT = TEXT/ TXTVAL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ The label for the time depends on whether this is a call for the&lt;/P&gt;&lt;P&gt; $$ overall program time or a tool.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; IF ( CODTIM .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; TXTLAB = TEXT/ '( E', ( TEXT/ LOW, ( TEXT/ 'st ' ) ), 'T'&lt;/P&gt;&lt;P&gt; TXTLAB = TEXT/ TXTLAB, ( TEXT/ LOW, ( TEXT/ 'ime : '))&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; TXTLAB = TEXT/ '( T', ( TEXT/ LOW, ( TEXT/ 'ool ' ) ), 'T'&lt;/P&gt;&lt;P&gt; TXTLAB = TEXT/ TXTLAB, ( TEXT/ LOW, ( TEXT/ 'ime : '))&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; TXTHRS = TEXT/ ' H', ( TEXT/ LOW, ( TEXT/ 'ours '))&lt;/P&gt;&lt;P&gt; TXTMNS = TEXT/ ' M', ( TEXT/ LOW, ( TEXT/ 'inutes '))&lt;/P&gt;&lt;P&gt; TXTSEC = TEXT/ ' S', ( TEXT/ LOW, ( TEXT/ 'econds' ) )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Output the time only if the time is greater than 1 second. If a tool&lt;/P&gt;&lt;P&gt; $$ time is being output, include the seconds value.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; IF ( SETIME .GE. 1.0 ) THEN&lt;/P&gt;&lt;P&gt; IF ( CODTIM .GT. 0 ) THEN&lt;/P&gt;&lt;P&gt; INSERT/ TXTLAB, HRTEXT, TXTHRS, MNTEXT, TXTMNS&lt;/P&gt;&lt;P&gt; INSERT/ ' )$'&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; INSERT/ TXTLAB,HRTEXT,TXTHRS,MNTEXT,TXTMNS,SETEXT,TXTSEC, ' )$'&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; LSTTIM = CURTIM&lt;/P&gt;&lt;P&gt;TERMAC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ Macro : CLCDTC ]-------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Cycle time calculations are not accurate when the deep drilling cycle&lt;/P&gt;&lt;P&gt;$$ is used. Therefore, this routine calculates an additional time need-&lt;/P&gt;&lt;P&gt;$$ ed for the currently active cycle, based upon the currently set depth&lt;/P&gt;&lt;P&gt;$$ values, feedrate, etc.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Global variables:&lt;/P&gt;&lt;P&gt;$$ CYCSTP : the number of steps that are needed to drill each hole&lt;/P&gt;&lt;P&gt;$$ CYCPCK : the Z increment or peck depth for the cycle&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLCDTC = MACRO/&lt;/P&gt;&lt;P&gt; DEPCOD = POSTF ( 1, 1, 0472 ) $$ The G code for a DEEP cycle&lt;/P&gt;&lt;P&gt; OFFCOD = POSTF ( 1, 1, 0500 ) $$ The G code for cycle state OFF&lt;/P&gt;&lt;P&gt; CYCNOW = POSTF ( 1, 1, 0539 ) $$ The current active cycle G code&lt;/P&gt;&lt;P&gt; IF ( ( CYCNOW .NE. OFFCOD ) .AND. ( CYCNOW .EQ. DEPCOD ) ) THEN&lt;/P&gt;&lt;P&gt; DZCLR = 0.040 $$ Rapid clearance between pecks&lt;/P&gt;&lt;P&gt; FEDDRL = POSTF ( 1, 3, 0102 ) $$ Cycle feedrate in IPM&lt;/P&gt;&lt;P&gt; FEDRAP = POSTF ( 1, 3, 0109 ) $$ Rapid feedrate in Z direction&lt;/P&gt;&lt;P&gt; NUMSTP = INTF ( ( CYCDEP + CYCCLR ) / CYCPCK )&lt;/P&gt;&lt;P&gt; TIMADD = 0.0&lt;/P&gt;&lt;P&gt; IF ( FEDDRL .GT. 0.0 ) THEN&lt;/P&gt;&lt;P&gt; TIMADD = ( DZCLR * NUMSTP ) / FEDDRL&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; IF ( FEDRAP .LE. 0.0 ) THEN&lt;/P&gt;&lt;P&gt; FEDRAP = 100.0&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; NUMRAP = NUMSTP * ( NUMSTP + 1 ) / 2 - 1&lt;/P&gt;&lt;P&gt; TIMADD = TIMADD + ( NUMRAP * CYCPCK ) / FEDRAP&lt;/P&gt;&lt;P&gt; RESULT = POSTF ( 2, 3, 0495, ( POSTF ( 1, 3, 0495 ) + TIMADD ) )&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;TERMAC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ =======================[ CIMFIL Declarations ]=======================&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ SET ]------------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ None of the processors seem to handle the offset register indicated&lt;/P&gt;&lt;P&gt;$$ by the programmer, so this code will output it as the appropriate&lt;/P&gt;&lt;P&gt;$$ G-code. Note that it is only output once per program or tool change,&lt;/P&gt;&lt;P&gt;$$ to avoid redundant calls from every NC sequence, which can cause&lt;/P&gt;&lt;P&gt;$$ troubles on some machines.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, SET, OFSETL&lt;/P&gt;&lt;P&gt; OFSTYP = POSTF ( 6, 5 )&lt;/P&gt;&lt;P&gt; OFSREG = POSTF ( 7, 5 )&lt;/P&gt;&lt;P&gt; IF ( OFSTYP .EQ. 1 ) THEN&lt;/P&gt;&lt;P&gt; IF ( OFSREG.GE.54.AND.OFSREG.LE.59.AND.CURREG.NE.OFSREG ) THEN&lt;/P&gt;&lt;P&gt; CURREG = OFSREG&lt;/P&gt;&lt;P&gt; OFSCMD = TEXT/ 'G', CONVI, OFSREG, 2, '$'&lt;/P&gt;&lt;P&gt; INSERT/ OFSCMD&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ MACHIN ]---------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ The MACHIN designation is useless, but can be used as a marker for&lt;/P&gt;&lt;P&gt;$$ the beginning of the file. Use it as the trigger to write the header&lt;/P&gt;&lt;P&gt;$$ comments and setup commands. Note that some of the lines are broken&lt;/P&gt;&lt;P&gt;$$ up into two pieces because it seems to be impossible to output them&lt;/P&gt;&lt;P&gt;$$ properly in one.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, MACHIN&lt;/P&gt;&lt;P&gt; RESULT = POSTF ( 13 )&lt;/P&gt;&lt;P&gt; TXTTIM = TEXT/ TIMES&lt;/P&gt;&lt;P&gt; TXTMON = TEXT/ RANGE, TXTTIM, 1, 2&lt;/P&gt;&lt;P&gt; TXTDAY = TEXT/ RANGE, TXTTIM, 4, 5&lt;/P&gt;&lt;P&gt; TXTYR = TEXT/ RANGE, TXTTIM, 7, 8&lt;/P&gt;&lt;P&gt; NUMMON = SCALF ( TXTMON )&lt;/P&gt;&lt;P&gt; INSERT/ ' $'&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ '( D', (TEXT/LOW, (TEXT/ 'ate : '))&lt;/P&gt;&lt;P&gt; INSERT/ TXTPRE, TXTDAY, ' ', MONNAM(NUMMON),' 20', TXTYR&lt;/P&gt;&lt;P&gt; INSERT/ ' )$'&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ '( A', (TEXT/LOW, (TEXT/ 'uthor :'))&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ TXTPRE, ' K', (TEXT/LOW, (TEXT/ 'enneth '))&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ TXTPRE, 'J. F', (TEXT/LOW, (TEXT/ 'arley'))&lt;/P&gt;&lt;P&gt; INSERT/ TXTPRE&lt;/P&gt;&lt;P&gt; INSERT/ ' )$'&lt;/P&gt;&lt;P&gt; TXTPRE = TEXT/ '( D', (TEXT/LOW, (TEXT/ 'escription :'))&lt;/P&gt;&lt;P&gt; INSERT/ TXTPRE&lt;/P&gt;&lt;P&gt; INSERT/ ' )$'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; CALL/ BLDTLL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; INSERT/ ' $'&lt;/P&gt;&lt;P&gt; INSERT/ 'G17 G40 G80 G90$'&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ CYCLE ]----------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Process a drilling cycle. The reason for any special handling here is&lt;/P&gt;&lt;P&gt;$$ not to change the output to the NC file, but to correct the time est-&lt;/P&gt;&lt;P&gt;$$ imate for the cycle.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ The calculation methodology is as follows:&lt;/P&gt;&lt;P&gt;$$ (1) Tell the post-processor to generate the CYCLE NC code normally.&lt;/P&gt;&lt;P&gt;$$ (2) If the type of cycle is DEEP, set the global cycle parameters.&lt;/P&gt;&lt;P&gt;$$ (3) Call for the calculation of the time.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, CYCLE&lt;/P&gt;&lt;P&gt; RESULT = POSTF ( 13 )&lt;/P&gt;&lt;P&gt; CMDSUB = POSTF ( 7, 4 )&lt;/P&gt;&lt;P&gt; TARGET = ICODEF ( DEEP )&lt;/P&gt;&lt;P&gt; IF ( CMDSUB .EQ. TARGET ) THEN&lt;/P&gt;&lt;P&gt; CYCDEP = POSTF ( 7, 6 ) $$ The depth of the hole&lt;/P&gt;&lt;P&gt; CYCPCK = POSTF ( 7, 8 ) $$ The incremental steps to be drilled&lt;/P&gt;&lt;P&gt; CYCCLR = POSTF ( 7, 12 ) $$ The clearance distance&lt;/P&gt;&lt;P&gt; CALL / CLCDTC&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ LOADTL ]---------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Handle a tool change to ensure that the machine is moved to the home&lt;/P&gt;&lt;P&gt;$$ position, that the outputs are in the desired format, etc.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, LOADTL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Obtain the tool number requested from the current line. Also,&lt;/P&gt;&lt;P&gt; $$ reset the current offset register value. If the tool number&lt;/P&gt;&lt;P&gt; $$ called for is different from the current tool, process it in&lt;/P&gt;&lt;P&gt; $$ the appropriate fashion. Otherwise, ignore it.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; CURREG = 0&lt;/P&gt;&lt;P&gt; TLNUM = POSTF ( 7, 4 )&lt;/P&gt;&lt;P&gt; CALL/ WRTTIM, CODTIM = 0&lt;/P&gt;&lt;P&gt; IF ( TLNUM .NE. CUTOOL ) THEN&lt;/P&gt;&lt;P&gt; CHTOOL = 1&lt;/P&gt;&lt;P&gt; CUTOOL = TLNUM&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Write preparatory lines. Some of the machines need to be&lt;/P&gt;&lt;P&gt; $$ in the home position to properly load tools, so we might as&lt;/P&gt;&lt;P&gt; $$ well default to moving there.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; INSERT/ 'G00$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G49 G28', REPEAT, 17, ' ', 'Z0.0000$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G91$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G28 X0.0000 Y0.0000$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G90$'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Output the tool change, a comment about the tool being loaded, and&lt;/P&gt;&lt;P&gt; $$ an optional stop.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; CALL/ IN2TXT, INTVAL = TLNUM, NUMDIG = 2&lt;/P&gt;&lt;P&gt; INSERT/ 'M06 T', TXTVAL, '$'&lt;/P&gt;&lt;P&gt; INSERT/ '( ', TLCOMT ( TLNUM ), ' * )$'&lt;/P&gt;&lt;P&gt; INSERT/ 'M01$'&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ CUTCOM ]---------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Process a cutter compensation command, but only if it meets the&lt;/P&gt;&lt;P&gt;$$ proper requirements.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, CUTCOM&lt;/P&gt;&lt;P&gt; SETV = POSTF ( 7, 4 )&lt;/P&gt;&lt;P&gt; SETT = POSTF ( 6, 4 )&lt;/P&gt;&lt;P&gt; NBEL = POSTF ( 5 )&lt;/P&gt;&lt;P&gt; IF ( SETT .EQ. 0 ) THEN&lt;/P&gt;&lt;P&gt; IF ( SETV .NE. ( ICODEF ( OFF ) ) .AND. NBEL .EQ. 4 ) THEN&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 10, 5, ( POSTF ( 1, 3, 497 ) ) )&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 12, 5 )&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 13 )&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ GOTO ]-----------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ The most prevalent command in the file. If there was just a tool&lt;/P&gt;&lt;P&gt;$$ change, output a move to the indicated first position in the tool's&lt;/P&gt;&lt;P&gt;$$ motion, then set the tool length offset.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ If the provided position is part of a drilling cycle, calculate the&lt;/P&gt;&lt;P&gt;$$ necessary time delta and add it to the accumulated program time.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, GOTO&lt;/P&gt;&lt;P&gt; XPOS = POSTF ( 7, 6 )&lt;/P&gt;&lt;P&gt; YPOS = POSTF ( 7, 7 )&lt;/P&gt;&lt;P&gt; ZPOS = POSTF ( 7, 8 )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ Convert the given positions to a properly formatted text string.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; CALL/ RL2TXT, RLVALU = XPOS, NUMDIG = 8&lt;/P&gt;&lt;P&gt; XTEXT = TEXT/ 'X', TXTVAL&lt;/P&gt;&lt;P&gt; CALL/ RL2TXT, RLVALU = YPOS, NUMDIG = 8&lt;/P&gt;&lt;P&gt; YTEXT = TEXT/ 'Y', TXTVAL&lt;/P&gt;&lt;P&gt; CALL/ RL2TXT, RLVALU = ZPOS, NUMDIG = 8&lt;/P&gt;&lt;P&gt; ZTEXT = TEXT/ 'Z', TXTVAL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt; $$ If a tool change was processed previously, now is the time to&lt;/P&gt;&lt;P&gt; $$ take care of setting the offset.&lt;/P&gt;&lt;P&gt; $$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; IF ( CHTOOL.GT.0 ) THEN&lt;/P&gt;&lt;P&gt; CHTOOL = 0&lt;/P&gt;&lt;P&gt; INSERT/ 'G00 ', XTEXT, YTEXT, '$'&lt;/P&gt;&lt;P&gt; CALL/ IN2TXT, INTVAL = CUTOOL, NUMDIG = 2&lt;/P&gt;&lt;P&gt; INSERT/ 'G43 H', TXTVAL, REPEAT, 17, ' ', ZTEXT, '$'&lt;/P&gt;&lt;P&gt; ELSE&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 13 )&lt;/P&gt;&lt;P&gt; ENDIF&lt;/P&gt;&lt;P&gt; CALL / CLCDTC&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ PPRINT ]---------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ Processes the printing commands, which, for this post-processor, means&lt;/P&gt;&lt;P&gt;$$ ignoring them.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, PPRINT&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ --[ FINI ]-----------------------------------------------------------&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;$$ At the end of the program, add code that will move the machine to the&lt;/P&gt;&lt;P&gt;$$ home position.&lt;/P&gt;&lt;P&gt;$$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CIMFIL/ ON, 14&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 20 )&lt;/P&gt;&lt;P&gt; CALL/ WRTTIM, CODTIM = 0&lt;/P&gt;&lt;P&gt; CALL/ WRTTIM, CODTIM = 1&lt;/P&gt;&lt;P&gt; INSERT/ 'G00$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G49 G28', REPEAT, 17, ' ', 'Z0.0000$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G91$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G28 X0.0000 Y0.0000$'&lt;/P&gt;&lt;P&gt; INSERT/ 'G90$'&lt;/P&gt;&lt;P&gt; AUXFUN/ 30&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 21 )&lt;/P&gt;&lt;P&gt; DMY = POSTF ( 13 )&lt;/P&gt;&lt;P&gt;CIMFIL/ OFF&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FINI&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Mar 2014 17:44:12 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40545#M3946</guid>
      <dc:creator>KenFarley</dc:creator>
      <dc:date>2014-03-27T17:44:12Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40546#M3947</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ken, thanks for the input. I actually took you file from above and created a new post with it and i still dont get any data. Is possible that my PPRINT is not active some how? Ready to punt and just use the Manufacturing button under Tools to create the tool list seperatly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jeff&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Mar 2014 20:05:38 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40546#M3947</guid>
      <dc:creator>jeuclide</dc:creator>
      <dc:date>2014-03-27T20:05:38Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40547#M3948</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Try to upload the NCL file. Or copy and paste the lines from the begining up to the firs GOTO line&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Mar 2014 20:11:13 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40547#M3948</guid>
      <dc:creator>GabrielZaha</dc:creator>
      <dc:date>2014-03-27T20:11:13Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40548#M3949</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sorry for my ignorance, how do I do that? &lt;IMG src="https://community.ptc.com/legacyfs/online/emoticons/laugh.png" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Mar 2014 20:15:20 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40548#M3949</guid>
      <dc:creator>jeuclide</dc:creator>
      <dc:date>2014-03-27T20:15:20Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40549#M3950</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jeff,&lt;/P&gt;&lt;P&gt;To get the tools to list properly, you need to set up the PPRINT parameters in your "Work Center". Click on it in the Model Tree, then right click and select "Edit Definition".&lt;/P&gt;&lt;P&gt;Click on the "Parameters" tab.&lt;/P&gt;&lt;P&gt;On the right side, click on the "PPRINT" button.&lt;/P&gt;&lt;P&gt;A sub menu will appear at bottom right, click on "Create" in there.&lt;/P&gt;&lt;P&gt;Another submenu will appear, click "Confirm" to continue.&lt;/P&gt;&lt;P&gt;Scroll down to "TOOL_COMMENTS" and select it, then click the "YES" button at the bottom left.&lt;/P&gt;&lt;P&gt;Once that's done, click the "OK" button and you're done.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now, when you define a tool, be sure to click on the "Settings" in the tool definition, and put in what you want in the "Comments" field. That is the stuff that will be put in your tool list.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Mar 2014 20:27:39 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40549#M3950</guid>
      <dc:creator>KenFarley</dc:creator>
      <dc:date>2014-03-27T20:27:39Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40550#M3951</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Every tool is set like you said already..... Thanks for the help though&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jeff&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Mar 2014 20:50:14 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40550#M3951</guid>
      <dc:creator>jeuclide</dc:creator>
      <dc:date>2014-03-27T20:50:14Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40551#M3952</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Jeff,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you look in your working directory with windows explorer you will find there one or more files that have ncl extension. Something like this: op010.ncl.8. Open the latest file of this type with wordpad or notepad and look for the line that begin with LOADTL word.&lt;/P&gt;&lt;P&gt;The lines above should look like this:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;PPRINT / TOOL NAME : T0004&lt;/P&gt;&lt;P&gt;PPRINT / CUTTER_DIAM : 0.393701&lt;/P&gt;&lt;P&gt;PPRINT / LENGTH : 3.937008&lt;/P&gt;&lt;P&gt;LOADTL / 4 $$-&amp;gt; 10 mm Dia; 3 mm Rad&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;If you don't see the PPRINT lines above the LOADTL then your problem is with the PPRINT settings. If the lines are there but you don't get the tool list on the tape file, then the issue is with the postprocessor&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Mar 2014 13:50:46 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/40551#M3952</guid>
      <dc:creator>GabrielZaha</dc:creator>
      <dc:date>2014-03-28T13:50:46Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/664548#M4628</link>
      <description>&lt;P&gt;I solved&lt;/P&gt;</description>
      <pubDate>Fri, 08 May 2020 01:04:57 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/664548#M4628</guid>
      <dc:creator>bnguyen-2</dc:creator>
      <dc:date>2020-05-08T01:04:57Z</dc:date>
    </item>
    <item>
      <title>Re: Getting tools to Post Out to my programs??</title>
      <link>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/1040911#M5746</link>
      <description>&lt;P&gt;Also make sure you have DISPLY/ON either in your cl file source code or in your FIL.&amp;nbsp; Otherwise PPRINT's will not be output to the NC file.&amp;nbsp; (This is actually per the APT standard, which nearly every other post-processor gets wrong.)&amp;nbsp; PPRINT's are converted to look like this (when DISPLY/ON is active)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;DISPLY/NEXT&lt;/P&gt;&lt;P&gt;PPRINTblahblahblah&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Otherwise, you would have to type DISPLY/NEXT before every PPRINT to have it output to NC file.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;On another note:&amp;nbsp; You guys might find this useful.&amp;nbsp; I compiled this using FreeBasic.&amp;nbsp; I use it to help build my setup sheets or for quick reference for customer before I have completed my runbook (using visual basic).&amp;nbsp; I always have a line after each load tool with "SEQ" giving a description of what the tool is doing.&amp;nbsp; For example:&lt;/P&gt;&lt;P&gt;LOADTL/2,ADJUST,2,LENGTH, 7.815000&lt;BR /&gt;DISPLY****************** SEQ10 *******************&lt;BR /&gt;DISPLYROUGHING +.050&lt;BR /&gt;DISPLYFINISH ALL ACCESSIBLE FEATURES&lt;BR /&gt;DISPLY********************************************&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So, this program extracts this code.&amp;nbsp; Feel free to modify or remove.&amp;nbsp; I realize that everything I am doing could be done with G-POST, but I prefer to relieve the burden on G-post for faster post-processing.&amp;nbsp; G-POST is able to send/receive from external files and executables/batch programs, etc, so one could always use another program to scan/build tool lists, get run times, distance calc's, etc, prior to running the post....this is how I used to do it in the days of FORTRAN.&amp;nbsp; I still do this with G-POST for LIMITS, and RUNTIME because I already had FORTRAN programs that I trust for these functions, run faster, and are more accurate.&amp;nbsp; The output from these utilities can be called and inserted by FIL and/or attached to CIMPRO buttons (what I do).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;At any rate, this should give some creative ideas of what can be done...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;'*********************************************************************
'SetupSheetHelper Main Program
'Bryan Felsher                     							  01-03-10
'Modified 10-17-2025 BCF for AUSTIN NC G-POST
'*********************************************************************
Dim Shared As Integer i=0,n=0,iTLNUM,SEQNUM=0,iPRNUM
Dim Shared As Integer FILTYP = 0, FREAD = 0
Dim Shared As String sLNIN, sLNIN2, sNLINE,sTIME, sINFNM, sOFLNM,sLNOUT
Dim Shared As String sTOOL(150)
sLNIN=""
sNLINE=""
sLNIN2=""

Declare Sub FILOPN
Declare Sub SETTML
Declare Sub HEADER
Declare Sub TLLIST
Declare Sub NCOUT

Declare Function APTMAJ(LINEIN As String) As String
'*********************************************************************

Screen 10

'SETTML

FILOPN

If InStr(UCase(sINFNM),".APT") &amp;lt; 1 Then 
   Print _
   "ERROR: INVALID FILE TYPE. MUST BE .APT OR .APTSOURCE FILE TYPE."
   Beep:Sleep:End
EndIf 	
	

'BUILD TOOL LIST
iTLNUM = 0
Do While Not Eof(1)
   Line Input #1, sLNIN
   sLNIN=UCase(sLNIN)			
   If APTMAJ(sLNIN) = "PPRI" Then
      Line Input #1, sLNIN2 'READ NEXT LINE
      If Instr(sLNIN2,"LOADTL") &amp;gt;0 Then
         iTLNUM += 1
         sTOOL(iTLNUM) = LTrim(sLNIN,"PPRINT")
         sTOOL(iTLNUM) = LTrim(sTOOL(iTLNUM),"/")
         sTOOL(iTLNUM) = Trim(sTOOL(iTLNUM))
      EndIf
   EndIf
Loop

Reset
FILOPN
HEADER

Do While Not Eof(1) 
   Line Input #1, sLNIN
   sLNIN=UCase(sLNIN)
   Select Case APTMAJ(sLNIN)
      Case "PART"
         iPRNUM = Val(LTrim(sLNIN,"PARTNO"))
         sLNOUT = "PROGRAM NUMBER: " &amp;amp; Str(iPRNUM)
         NCOUT
         Print #3, " "
      Case "FROM"
            TLLIST
            FREAD = 1
      Case "DISP", "PPRI"
         If APTMAJ(sLNIN) = "DISP" Then sLNOUT = LTrim(sLNIN,"DISPLY")
         If APTMAJ(sLNIN) = "PPRI" Then sLNOUT = LTrim(sLNIN,"PPRINT")
         sLNOUT = LTrim(sLNOUT, "/")            
'Remove CATIA comment lines
         If InStr(sLNOUT,"OPERATION NAME") Then sLNOUT = ""
         If SLNOUT = _
            "********************************************" _
            Then sLNOUT = ""  
'Remove tool description lines, handled later.               
         For i = 1 To iTLNUM Step 1
            If Instr(sLNOUT, sTOOL(i)) &amp;gt; 0 Then
               sLNOUT = ""                        
            End If
         Next               
'Check for sequence of operations notes            
         If FREAD = 1 Then  'Handle comments after FROM read
            If InStr(sLNOUT,"SEQ") Then
               SEQNUM+=1
               Print #3, sLNOUT
               sLNOUT = ""
               Print #3, STOOL(SEQNUM)
            End If
         End If
         NCOUT
   End Select
Loop
Print #3, "************** END OF PROGRAM **************"

Reset 
Beep	

Function APTMAJ(LINEIN As String) As String
	Dim As String MAJOR
	MAJOR = Left(LINEIN,4)
	Return MAJOR 
End Function

Sub FILOPN
	ChDir ExePath
	sINFNM = Command(1)
	sOFLNM = Left(sINFNM,(InStrRev(sINFNM, ".")-1)) &amp;amp; "_SetupSheet.txt"
	Dim choice As String

		If Len(sINFNM)=0 Then
		   Print "Missing parameter : No Input file!"
			Input "Select file for input? [Y,N] ";choice
			choice=LCase(choice)
			If choice = Chr(121) Then 
				Input "Enter Filename for Input: ";sINFNM
				sOFLNM = Left(sINFNM,(InStrRev(sINFNM, ".")-1))_
            &amp;amp; "_RunTime.log"
			Else 
				End
			End If
			
			If Open (sINFNM For Input As #1) &amp;lt;&amp;gt; 0 Then 
	  			Print "Error: can't open Input File!"
	  			Sleep:End
			Else
				If Open (sOFLNM For Output As #3) &amp;lt;&amp;gt; 0 Then
				  Print "Error: can't open Output File!"
				  Close #1
				  Close #3
				  End
				end If	
			End If 
		Else
				If Open (sINFNM For Input As #1) &amp;lt;&amp;gt; 0 Then 
				  Print "Error: can't open Input File!"
				  End
				Else		
					If Open (sOFLNM For Output As #3) &amp;lt;&amp;gt; 0 Then
					  Print "Error: can't open Output File!"
					  Close #1
					  Close #3
					  End
					end If
				End If		
		End If
	Return
	
End Sub

Sub SETTML
	Dim As String TimeLimit = "12-22-2010"
	Print "Today's date is: ";Date;_
   ". You have until ";TimeLimit;" to try this software."
	Print
	Print "Press any key to continue."
	Sleep:GetKey
	If Date &amp;gt; TimeLimit Then
		Print "Time limit ";TimeLimit;" has expired."
		Sleep:End
	EndIf
	Cls	
End Sub

Sub HEADER
	Print #3, "******************************************"
	Print #3, "True Precision CNC Programming Services"
	Print #3, "Ph: 310-750-6761"
   Print #3, "Email: trueprecisioncnc@outlook.com"
	Print #3, "Website: www.trueprecisioncnc.com"
	Print #3, "******************************************"
	Print #3, " "
	Print #3, "Setup Sheet Comments extracted from : "
   Print #3, sINFNM
	Print #3, " "
	Return 
End Sub

Sub TLLIST
   Print #3, ""
	Print #3, "*****************TOOL LIST******************"
	For i = 1 To iTLNUM Step 1
		Print #3, sTOOL(i)
	Next
   Print #3, "********************************************"
   Print #3, ""
   Print #3, "***********SEQUENCE OF OPERATIONS***********"	
   Print #3, ""
	i=0
   Return 
End Sub

Sub NCOUT
   If sLNOUT &amp;lt;&amp;gt; "" Then
      Print #3, Trim(sLNOUT)
      sLNOUT = ""
      sLNIN = ""
      sLNIN2 = ""
   EndIf
   Return
End Sub&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Oct 2025 14:38:52 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Manufacturing-CAM/Getting-tools-to-Post-Out-to-my-programs/m-p/1040911#M5746</guid>
      <dc:creator>BF_14259101</dc:creator>
      <dc:date>2025-10-30T14:38:52Z</dc:date>
    </item>
  </channel>
</rss>

