This article presents an overview of the design and functionality of the “Integrated Post Processor” type tool files. We will refer to them as IPP tool files hereafter in this article.
One of the strengths of Microvellum has been in its ability to connect to a wide variety of CNC machines. One of the difficulties in connecting to these machines lies in the controller software used by each machine. This software allows the setting of a variety of properties, and thus when each machine setup is complete that particular setup is unique.
This is true even between machines of the same manufacture and model. Thus, the exact G-Code requirements of a Biesse Rover at one company will likely be different from a Biesse Rover at a different company. This is because although the two Biesse machines both contain the same proprietary controller software, that controller software may be set up with different properties on each machine, resulting in different G-Code requirements.
Since its very early days, Microvellum software has been able to address this situation with the use of a spreadsheet-based “tool file.” You can think of this spreadsheet as a customization or configuration file that contains a variety of settings that manipulate the material, machining, and related part information, producing a G-Code file with the desired format and content.
To take advantage of the latest VB.Net technology, Microvellum now has a second option available. This option is what we call an IPP Tool file, as defined above.
There are several benefits of using an IPP tool file over the legacy spreadsheet tool files.
There are four levels of configuration built into the IPP structure. They are listed here in the order of top-level to bottom level: Post Base, Machine Base, G-Code Writer, Custom Strings.
“Post Base” contains the configuration parameters common to all CNC machines supported by Microvellum. It consumes the properties found in the only part of the spreadsheet that is still utilized in the G-Code creation process when using the IPP option. It is part of the program code and cannot be modified by the user.
“Machine Base” contains the configuration parameters common to all CNC machines of a particular make and model. It is part of the program code and cannot be modified by the user.
“G-Code Writer” contains configuration parameters common to the controller software installed on a single CNC machine. An identical, but separate machine, may contain different controller software depending on the date of production, or other factors. This functionality ‘writes’ or creates the G-Code used to machine the parts. It is contained either in the program code or if it is a custom Writer, in a separate DLL file. One example of the location of the DLL file is: “C:\ProgramFiles\Microvellum\Toolbox 7\Custom Posts.”
“Custom Strings” contains configuration parameters that are unique to individual CNC machines. These are typically required because of machine setup parameters. If customization cannot be accomplished with a custom sequence string, a custom writer file may need to be created.
To begin processing with the “Integrated Post Processor” (IPP) capabilities, a new user must purchase the IPP module, and the service to configure the tool file. Once the purchase is complete, the module is activated by Microvellum, and the tool file tech completes the configuration task, a file with a .tlfx extension will be provided to the user. The user must then import that file into their system, attach it to a processing station, and create and process a work order using that Processing Station. We strongly recommend that this testing phase be done inside a ‘sandbox’ environment until test results are satisfactory. Once complete, export the tool file or the processing station using that tool file from the sandbox system to the production computers.
Here is a reference listing the properties configured on the Integrated Post Processor Settings page.
Post Name – This is the name of the post. Make sure you receive this name after the toolfile configuration service from your Tool File Technician. The Post Name is not necessarily the visible name of the IPP custom DLL file, but is defined inside that file and not accessible to the user. Be sure to enter the name in this field correctly.
User Set Origin – This is the base point that applies to your specific machine and is applicable only to face 6 first machining. The selections are NotSet, LowerLeft, LowerRight, UpperRight, and UpperLeft.
Inverse X-Axis – This is an additional setting that applies to the User Set Origin. It sets all X values as negative – Cartesian quadrant 2 or 3.
Inverse Y-Axis – This is an additional setting that applies to the User Set Origin. It sets all Y values as negative – Cartesian quadrant 3 or 4.
Machine Can Offset Zone – This is an additional setting that applies to the User Set Origin. It determines whether the machine can offset a zone. 0 = False, 1 = True. The default value is 1.
Machine Origin – This is the material alignment location.
GCode Combine Type – This sets the type of G-Code file that will be produced. The two options are based on whether or not the CNC machine performs machining operations on both sides of the panel at the same time – a dual head machine. Or a single head machine requiring an optional stop so the program can be flipped.
Offset Point Type – This is a value that determines the route tool compensation adjustment. 0 = None, 1 = Perpendicular, 2 = Tangent, 3 = Vertical. Default value is 1.
Arc Mode Type – This sets the G-Code arc format based on the type selected. The arc start point is assuming that the tool is positioned at the start of the arc for the options below. The selection of this option is dependent on the setup of the machine.
Absolute Arcs: [G90] arcs defined with an ending point, a center point, and a bulge.
Incremental Arcs: [G91] arcs defined with a value representing the change in the X-axis, and another value representing the change in the Y-axis from the start of the arc to its end. It also accounts for the change in value from the start of the arc to the center of the arc in X and Y. This type is not commonly used.
Radius Arcs: [G02 & G03] arcs defined with an ending point in X and Y, and a value representing the length of the arc radius.
Reverse Toolcomp – This is an additional setting that applies to the Offset Toolcomp Values setting. It reverses all tool offset directions in the G-Code output.
Reverse Arc Direction – This is an additional setting that applies to the Offset Toolcomp Values setting. It reverses all arc directions in the G-Code output.
Z Value Type – This sets the machine-specific positive reference of Z values relative to the material. Either positive Z-direction is in to the material, or negative Z-direction is in to the material.
Z Reference – This sets the Z origin reference for machining. Either the top of the material is the 0 value in the Z-axis, or the top of the spoil board is the 0 value in the Z-axis.
Enable Actual Route and Saw Z – This sets the spoil board penetration override. This checkbox allows the Machine Token to set Z values to persist for routing and sawing.
Enable Actual VDrill Z – This sets the spoil board penetration override. This checkbox allows the Machine Token to set Z values to persist for vertical drilling.
Machine Bed Rotation – This sets the rotation of the machine bed. The selections are either None, or CounterClockWise. Some machines are made with the short dimension of the bed being on the Y-axis and the long dimension in the X-axis. Other machines are made with the short dimension of the bed being in the X-axis and the long dimension in the Y-axis.
Flip Face 6 Type – This sets the orientation preference for face 6 programs. 0 = No Flip, 1 = Mirror, 2 = Flip in X, 3 = Flip in Y. Default value is Mirror (1).
Flip Face 6 Axis Size – This sets the part dimension limit for part flipping of face 6 parts. If the part size exceeds this value, it is flipped on the other axis.
Custom Post Sequence – This defines the string for the sequence of machining operations. For example, “HVSRN” = Horizontal Drilling (H), Vertical Drilling (V), Sawing (S), Routing (R), Nesting (N). This may be modified to suit the machine setup requirements.
Auto Labeling Type – This sets the auto-labeling type. This will change the output of various auto-labeling files.
Use Specific Auto Nest Label Type – This can override the existing auto-labeling type and instead set a specific label type.
Label Info Units – This sets the units required for correct placement of the label info file. The selections are MachineMetric and MachineImperial.
Label Origin – This sets the origin point for the label. This value can be set differently from the general machine unit settings. That means that the machine can have an origin of upper left, while the label may be located based on an origin of the lower-left corner of the label.
Label Placement Quadrant – This sets the labeling quadrant for those machines that require it. Anderson is one manufacturer that requires it. The selections are XPositive YPositive, XNegative YPositive, XNegative YNegative, and XPositive YNegative.
Label Image DPI – This sets the resolution of the auto-labeling image produced.
Label FileName Options – This sets the file name format required by the CNC machine. Some machines require the full path containing the file name, while others require only the file name without the path. The selections are: FullFileName and FileName.
Enable Post Nest Labeling – This sets the ability to utilize the CNC machine controller software to print labels after the nest has been machined. This overrides the auto-labeling functionality of Microvellum.
Enable Nest Label Rotation – This sets the ability to rotate the labels based on the part size. If the label would normally be placed on the part in such a way that the edges of the label would overhang the part width, the label can be rotated with this option.
Work List Type – This sets how the worklist is grouped. A worklist is a file that is consumed by a CNC controller system to load material sheets on the CNC, place the labels, and execute the machine code on that sheet. They may also be used on older CNC machines.
The Work List is loaded in the controller software at the machine, the list loaded for sheet #1, the parts machined for that sheet, the list loaded for sheet #2, and so on. This system is most often used for auto-loading systems. It can replace the need for the Optimization Report in some systems. The selections are Per Material, Per Sheet, Per Batch.
Path to Nest Label Images – This sets the path for the location of the images used to create the nest labels when required by the machine. Normally, when setting your Machine Code Path, you would navigate to and enter the work order, batch, and processing station name (C:\<set path>\<work order name>\<batch name>\<processing station name>\<files>). If you check the checkbox for shortening gcode file path in the settings, you get a folder which is a combination of the work order name and the batch name (C:\<set path>\<work order name>_<batch name>\<processing station name>\<files>). When you check the checkbox for No SubFolders, the files will go into C:\<set path>\<files>.
Path to Nest label Parts Files – This sets the path for the location to the parts files used with auto-labeling. Normally, when setting your Machine Code Path, you would navigate to and enter the work order, batch, and processing station name ( C:\<set path>\<work order name>\<batch name>\<processing station name>\<files> ). If you check the checkbox for shortening gcode file path in the settings you get a folder which is a combination of the work order name and the batch name (C:\<set path>\<work order name>_<batch name>\<processing station name>\<files>). When you check the checkbox for No SubFolders, the files will go into C:\<set path>\<files>.
Path to Nest Label Worklist Files – This sets the path for the location to the worklist files used with auto-labeling. Normally, when set your Machine Code Path, you would navigate to and enter the work order, batch, and processing station name (C:\<set path>\<work order name>\<batch name>\<processing station name>\<files>). If you check the checkbox for shortening gcode file path in the settings you get a folder which is a combination of the work order name and the batch name (C:\<set path>\<work order name>_<batch name>\<processing station name>\<files>). When you check the checkbox for No SubFolders, the files will go into C:\<set path>\<files>.
Path to Nest Label Aux Files – This sets the path for the location to the auxiliary files used with auto-labeling if they are required by the controller software. Normally, when setting your Machine Code Path, you would navigate to and enter the work order, batch, and processing station name (C:\<set path>\<work order name>\<batch name>\<processing station name>\<files>). If you check the checkbox for shortening gcode file path in the settings you get a folder which is a combination of the work order name and the batch name (C:\<set path>\<work order name>_<batch name>\<processing station name>\<files>). When you check the checkbox for No SubFolders, the files will go into C:\<set path>\<files>.
MIX: Work List file.
PGM: G-Code file.
PNG: Auto-labeling label graphic produced by Microvellum.
TXT: Part placement file.
RLL: Secondary placement file in a different format, required by some systems. There may be two of these files, and when there are two, one will be blank on the FlexStore system.
Some settings are currently found on the tool file Tools page under the various tool types, that apply either to both IPP and spreadsheet tool file or only to IPP tool files. See below for a list of these, along with their purpose and settings.
Tool Safe Height 1 – This sets the retract height of the tool head. Safe height 1 is the value that the head retracts to when making rapid movements between operations requiring different tools, or when moving to begin a machining operation. This may be set to any value as desired, but a typical value is .75” above the surface of the material. This setting applies to both spreadsheets and IPP tool files.
Tool Safe Height 2 – This sets the retract height for the tool head. Safe Height 2 is the value that the head retracts to when making rapid movements between operations requiring the same tools. This may be set to any value as desired, but a typical value is .25” above the surface of the material. This setting applies to both spreadsheets and IPP tool files.
Head Value – This sets the number identifying a specific head in multiple head machines. An example of these machines would be dual head machine systems (top and bottom heads). It is a reference to which head is required in a machining operation. It may also be required by some single head machines. This setting applies to both spreadsheets and IPP tool files.
Binary Value – This sets a unique binary placeholder equivalent for each vertical drill. For example, see the list below for tool numbers on the left, and their binary placeholder equivalents on the right:
1 = 12 = 23 = 44 = 85 = 166 = 327 = 648 = 1289 = 25610 = 51211 = 102412 = 2048
These binary equivalents make it possible for the program to create a unique number for each unique combination of drills required in a machining operation. Using bitwise comparison, this unique number identifies which drills are to be used in a single operation using multiple drills.
Enter the binary placeholder equivalent numbers for each drill number as per the list above, and click the Apply button after each one is entered. This setting applies to both spreadsheets and IPP tool files.
Aggregate Drill Block – This sets whether or not the drill tool number represents an aggregate drill block. If the checkbox is checked, additional options will be displayed for the drills to be included in the aggregate block. Enter values for the properties as required by your machine. This setting applies to IPP tool files only.
Tool Safe Height 1 – This sets the retract height of the tool head. Safe height 1 is the value that the head retracts to when making rapid movements between operations requiring different tools, or when moving to begin a machining operation. This may be set to any value as desired, but a typical value is .75” away from the surface of the material. This setting applies to both spreadsheets and IPP tool files.
Tool Safe Height 2 – This sets the retract height of the tool head. Safe height 2 is the value that the head retracts to when making rapid movements between operations requiring the same tools. This may be set to any value as desired, but a typical value is .25” away from the surface of the material. This setting applies to both spreadsheets and IPP tool files.
Head Value – This sets the number identifying a specific head in multiple head machines. An example of these machines would be dual head machine systems (top and bottom heads). It is a reference to which head is required in a machining operation. It may also be required by some single head machines. This setting applies to both spreadsheets and IPP tool files.
Head Value – This sets the number identifying a specific head in multiple head machines. An example of these machines would be dual head machine systems (top and bottom heads). It is a reference to which head is required in a machining operation. It may also be required by some single head machines. This setting applies to both spreadsheets and IPP tool files.
Tool Safe Height 1 – Sets the retract height of the tool head. Safe height 1 is the value that the head retracts to when making rapid movements between operations requiring different tools, or when moving to begin a machining operation. This may be set to any value as desired, but a typical value is .75” away from the surface of the material. This setting applies to both spreadsheets and IPP tool files.
Tool Safe Height 2 – Sets the retract height of the tool head. Safe height 2 is the value that the head retracts to when making rapid movements between operations requiring the same tools. This may be set to any value as desired, but a typical value is .25” away from the surface of the material. This setting applies to both spreadsheets and IPP tool files.
Score Pass Depth – Sets the depth of the score pass. The score pass is a saw pass that usually runs the saw in the direction opposite of what is normally done in a cutting operation. It is typically a shallow cut to prevent chipping only. Often it is set to only the depth of the melamine or laminate thickness. This setting applies to IPP tool files only.
Head Value – Sets the number identifying a specific head in multiple head machines. An example of these machines would be dual head machine systems (top and bottom heads). It is a reference to which head is required in a machining operation. It may also be required by some single head machines. This setting applies to both spreadsheets and IPP tool files.
Saw Cut Direction – Sets the axis and direction of default saw cuts. This is needed because not all CNC machines run in all axes and directions. The selections are Positive X Direction, Negative X Direction, Positive Y Direction, Negative Y Direction, and support multiple selections. Enter all that your machine supports. This setting applies to IPP tool files only.
Score Pass Direction – Sets the axis and direction of default score pass cuts. This is needed because not all CNC machines run in all axes and directions. The selections are Positive X Direction, Negative X Direction, Positive Y Direction, Negative Y Direction, and support multiple selections. Enter all that your machine supports. This setting applies to IPP tool files only.
Custom Sequence Strings tab – This is the interface to set up user-specific customizations that are not contained in the G-Code Writer file.
Tags – These are placeholders in custom strings that take the place of either defined name values in the former spreadsheet interface or functions that perform specific work. Some names did not exist in the previous interface. The name is usually descriptive of its purpose.
Current Tool – Non Router:
<ToolX> | Current tools X position |
<ToolY> | Current tools Y position |
<ToolZ> | Current tools Z position |
<ToolName> | Current tools Name |
<ToolNameExp> | Current tools Name using an expression |
<ToolNumber> | Current tools Number |
<ToolDiameter> | Current tools Diameter |
<RouterComp> | Current Tools Assigned Tool Comp |
<VectorArcDirection> | Current Vectors Arc Direction Value |
<VectorBulge> | Current Vectors Bulge Value |
<VectorRadius> | Current Vectors Radius Value |
<VectorZ> | Current Vectors Z Value |
<PartName> | Current Part Name |
<PartNameExp> | Current Part Name using an expression |
<PartWidth> | Current Part Width |
<PartLength> | Current Part Length |
<PartThickness> | Current Part Thickness |
<FileName> | Current Part File Name |
<ZoneName> | Current Zone in which the Part is run |
<Mirrored> | Current Part Machine Point |
<CurrentFace> | Current Part Face |
<LineFeed> | Adds a carriage return after the current line of code |
<Tab> | Adds a Tab Space on the current line of code |
<Quote> | Adds a quotation mark - replaces the use of hard string quotation marks, which don't work correctly in the String Editor. |
<ToolGroup> | Returns the current Tool Group defined in the tool file |
<UnitsDef> | Returns the current units definition |
<P> | Places the current line(s) to be a Prefix (before) to the Header or Footer lines |
<S> | Places the current line(s) to be a Suffix (after) to the Header or Footer lines |
Expressions:
Use <Exp></Exp> to "wrap" a formula (designating the beginning and end of the formula) to be evaluated like any Excel formula. For example, the formula below evaluates the CurrentFace value to see if it is FaceFive inserting a different set of text if it does or does not.
Sequence Placement Parameters:
< P > or < S > are used to insert the code at the beginning or end of the sequence where you enter it.
< P >XBLOWER E=0# T=<ToolName>
<IA> and <IB> are used to insert code before or after something else when it is found. <IA>~<Exp>if(<ToolName>>200,"""",if(""<ToolOffset>""=""1"",""C=1"",if(""<ToolOffset>""=""2"",""C=2"",""C=0"")))</Exp>~XHOODSUPP Q=3#"
<R> is used to replace specific code. For Example, <R>"M23","M232" would replace M23 with M232
<RL> is similar but instead of just replacing specific text you can use it to replace an entire line.
Custom Barcode – Sets a string using tags and hard text to configure a custom part label barcode. See the article "Common Barcode Part Filename Barcode Formats" for more details regarding common barcode formats. Complete this field only when the default machine barcode will not accomplish what is needed.
Custom Header – Sets a string using tags and hard text to configure a custom header as required. Here is an example of a custom header as entered in this field for a User’s specific needs:
For a part in imperial units that is 36 x 24 x .75 in Zone AB with a ToolGroup defined as DEF in the toolfile, the line resulting from this custom string would be as follows:
Routing – Custom strings in this tab use the same tags as previously described.
Drilling & Sawing – Custom strings in this tab use the same tags as previously described.
Tool Subroutines > Vertical Drills – Evaluates to a custom subroutine as required by specific machines. As an example, some CNC machines include the capability to both machine and insert hardware. This could be accomplished with the use of Tool Subroutine associated with a specific tool.
Here are a few examples of three subroutines that should give you an idea of the general capabilities of the custom strings. It is not possible to give examples of everything possible, but this should help to understand how they work.
Example #1 demonstrating a simple code string:
The custom string is:
Here is a brief explanation of the string:
<ToolX> & <ToolY> are tags that get replaced by the currents tools X and Y location, and would call a subprogram for a hole located at X10.0 Y10.0
Resulting line of code:
Example #2 demonstrating an expression calling a function:
The custom string is:
Here is a brief explanation of the string:
In this example we are comparing the text string FaceFive to the string value of the current part face that is being machined. The comparison tag <CurrentFace> must have quotation marks around it. Use <Exp>, </Exp> to turn the sub program line into an excel style expression
The tags get replaced by the actual value and the expression for a face 5 program would read like this:
Resulting line of code:
Example #3 demonstrating how to write multiple lines of code:
The custom string is:
Here is a brief explanation of the string:
Using a pipe “|” delimiter will cause multiple lines to be written.
Resulting line of code:
Tool Subroutines > Horizontal Drills – Evaluates to a custom subroutine as required by specific machines. The requirements of the subroutine code in this location is similar to that found in the Vertical Drills tab described above.