Example Script

<< Click to Display Table of Contents >>

Navigation:  MILL Module > Post Processing Machining Operations  > Use Programmable Post >

Example Script

Here is an example Python post script, (PostScriptExample.py), for a programmable post-processor which sets following data:

Linear/Rapid motion format

Start/End block format

Setting "[SEQ_PRECHAR]" variable

Tool Change block format (different for fist tool change)

File extension for "File Extension from Post Processor" option

 

from post_ext import *

 

# Set output file extension

GENERAL_OutputFileExt = ".nc"

 

# Define block format for outputten code

LinearMotionCodeBlock = "[G_CODE][DELIMITER][NEXT_X][DELIMITER][NEXT_Y][DELIMITER][NEXT_Z]"

RapidMotionCodeBlock = "[G_CODE][DELIMITER][NEXT_Z]\n[NEXT_X][DELIMITER][NEXT_Y]"

StartProcessingBlock = "[START_CHAR]\n[SEQ_PRECHAR][SEQNUM][DELIMITER]G40[DELIMITER]G49[DELIMITER]G80[DELIMITER]G98 - Start processing"

EndProcessingBlock = "[SEQ_PRECHAR][SEQNUM][DELIMITER]M30\n[STOP_CHAR] - End processing"

 

FirstToolChangeCodeBlock = ("; First Tool Change\n"

"[SEQ_PRECHAR][SEQNUM][DELIMITER][OUTPUT_UNITS_CODE][DELIMITER]T[TOOL_NUM][DELIMITER]M06",

"[SEQ_PRECHAR][SEQNUM][SPINDLE_BLK]",

"[SEQ_PRECHAR][SEQNUM][DELIMITER][OUTPUT_MODE_CODE][DELIMITER][G_CODE][DELIMITER]X[NEXT_NONMDL_X][DELIMITER]Y[NEXT_NONMDL_Y]",

"[SEQ_PRECHAR][SEQNUM][DELIMITER]G43[DELIMITER]Z[NEXT_NONMDL_Z][DELIMITER]H[TOOL_ADJST_REG]")

 

ToolChangeCodeBlock = ("[SEQ_PRECHAR][SEQNUM][DELIMITER][OUTPUT_UNITS_CODE][DELIMITER]T[TOOL_NUM][DELIMITER]M06",

"[SEQ_PRECHAR][SEQNUM][SPINDLE_BLK]",

"[SEQ_PRECHAR][SEQNUM][DELIMITER][OUTPUT_MODE_CODE][DELIMITER][G_CODE][DELIMITER]X[NEXT_NONMDL_X][DELIMITER]Y[NEXT_NONMDL_Y]",

"[SEQ_PRECHAR][SEQNUM][DELIMITER]G43[DELIMITER]Z[NEXT_NONMDL_Z][DELIMITER]H[TOOL_ADJST_REG]")

 

 

# Global vars for processing

ToolChangeNum = 0

 

# Helper functions

def SetBlockData(blockData: PostBlockData, value):

   block = '\n'

   if type(value) == tuple:

       block = block.join(value)

   else:

       value = value.splitlines()

       block = block.join(value)

   blockData.Set(block)

 

# Set post vars

def InitializeVars(globalData: PostGlobalData):

   globalData.SetStrVar("[SEQ_PRECHAR]", "#")

 

def OnStartProcessing(blockData: PostBlockData, globalData: PostGlobalData):

   InitializeVars(globalData)

   SetBlockData(blockData, StartProcessingBlock)

   return

   

def OnEndProcessing(blockData: PostBlockData, globalData: PostGlobalData):

   SetBlockData(blockData, EndProcessingBlock)

   return

   

def OnMOpStart(globalData: PostGlobalData):

   return

   

def OnMOpEnd(globalData: PostGlobalData):

   return

   

def OnComment(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnSetup(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnWorkZero(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnToolChange(blockData: PostBlockData, globalData: PostGlobalData):

   global ToolChangeNum

   

   if ToolChangeNum == 0:

     SetBlockData(blockData, FirstToolChangeCodeBlock) # 1st tool change

   else:

     SetBlockData(blockData, ToolChangeCodeBlock)

   ToolChangeNum = ToolChangeNum + 1

   return

   

def OnSpindleSpeed(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnFeedRate(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnToolCompensation(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnCoolant(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnRapidMotion(blockData: PostBlockData, globalData: PostGlobalData):

   SetBlockData(blockData, RapidMotionCodeBlock)

   return

   

def OnLinearMotion(blockData: PostBlockData, globalData: PostGlobalData):

   SetBlockData(blockData, LinearMotionCodeBlock)

   return

   

def OnCirclularMotion(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnSpiralMotion(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnHelicalMotion(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def On4AxisRapidMotion(blockData: PostBlockData, globalData: PostGlobalData):

   SetBlockData(blockData, RapidMotionCodeBlock)

   return

   

def On4AxLinearMotion(blockData: PostBlockData, globalData: PostGlobalData):

   SetBlockData(blockData, LinearMotionCodeBlock)

   return

   

def On5AxRapidMotion(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def On5AxLinearMotion(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnCycleStart(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnCyclePoint(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnCycleEnd(globalData: PostGlobalData):

   return

   

def OnDwell(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnRotateHead(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnRotateTable(blockData: PostBlockData, globalData: PostGlobalData):

   return

   

def OnMachineRewind(blockData: PostBlockData, globalData: PostGlobalData):

   return