Jump to content

Welcome to eMastercam

Register now to participate in the forums, access the download area, buy Mastercam training materials, post processors and more. This message will be removed once you have signed in.

Use your display name or email address to sign in:

G10 Programming Post


The Fastmill
 Share

Recommended Posts

Is it possable to have a post for G10 programming?

 

This is the first place I've worked where they use G10 programming for all of there NC files. The other programmer here (including me for now) are just hand editing everything. There is a sub for everything and it was very confusing... I'm sure there is sombody else out there that is doing this type of programming. The programs are for Mazak horozontals of varieing sizes. Here is an example of the code I'm trying to reproduce...

 

N2502P5M98

G0G90G54G80G40B90.

X-blah Y-blah S-blah M3

G43Z0.M8

T40

G98G85Z-1.0R-.250F10.L0

P2125M98 (POINT SUB)

P200M98 (SHIFT SUB)

P2125M98 (POINT SUB)

P201M98 (SHIFT SUB)

P2225M98 (POINT SUB)

P202M98 (SHIFT SUB)

P2225M98 (POINT SUB)

G80G40M09

G91G30Y0Z0M5

G28X0

M01

M06

 

Any ideas or advise is welcome... I'm getting tired of hand editing...

 

confused.gif

 

V9.1 SP2 Waiting on Key for X!!!

Link to comment
Share on other sites

We use the G10's in the subs for setting the fixture offsets... The operator just sweeps one point on the fixture and sets the XYZ values in the correct sub (in the example above it's P5). Then the program jumps around to different parts of the tombstone and cuts the parts... using shifts...

 

"sounds more like you need to get involved with nesting routines/patterns for MC."

 

Thank you... I will look at that... Not sure if it will help though...

Link to comment
Share on other sites

quote:

Thank you... I will look at that... Not sure if it will help though...


No, it won't. I sort of get what you're doing. I'd like to see what the sub looks like and the code it uses though.

 

Not sure if I'm understanding you here though. You're sweeping a position on a stone or fixure then having to handtype that as a G10 offset in each sub? headscratch.gif

 

If I'm thinking right, (it is late for me), why not just use multiple work offsets? If you're sweeping each spot anyway..... confused.gif

 

cheers.gif

Link to comment
Share on other sites

I use g10's on some older mills that only have g54-g59. It's a very safe way to program multiple parts and have multiple setups on one of these old clunkers. I swear that we used to get one crash a week during shift changeover. I am currently doing a 9 part program so you can imagine what the program looks like. The centerline tolerances are such that simply transforming toolpaths is not accurate enough in the real world. Peter

Link to comment
Share on other sites

I think... headscratch.gif he's using them to create an infinite number of work offsets (on a machine that doen't support enough offsets).

 

His G10 is setting a location to run a pos. then a second G10 would efectively change to another "fixture" offset.

 

If I remeber right there was another post talking about this a few weeks ago.

 

edit: here it is.

 

At least that's what I think hes doin.

Link to comment
Share on other sites

3rd String, That's exactly what I'm doing.... Just didn't know how to discribe it... Thank You...

 

 

The Subs looks like this...

 

O00000005

(OFFSET SUB)

(THIS WRITES TO THE G54 OFFSET)

G90

G10P1L2X-20.6746 Y-20.7216 Z-28.7663

G90G54

M99

 

O00002125

(POINT SUB)

X0.Y1.625

X-0.9551Y1.3146

X-1.5455 Y.5022

Y-0.5021

X-.9552Y-1.3147

X0.Y-1.625

X.9552Y-1.3146

X1.5455Y-.5022

Y0.5021

X0.9551Y1.3146

M99

 

I hope this helps clarify...

 

 

Thanks for all your responces.. You guys are great...

Link to comment
Share on other sites
Guest CNC Apps Guy 1

David,

 

You're going to need this wherever you want your G10 to be output in the program.

 

"(", pwcs, ")", e

"G90 G10", pwcsp, "X00.0000", "Y00.0000", "Z00.0000", "B000.000", e

 

Then you're going to need to put this postblock in your post somewhere after peof.

code:

pwcsp            #Out put "P" for G10 Line

if workofs < 6,

[

p_wcs = workofs + 1

"L2", *p_wcs

]

else,

[

p_wcs = workofs - five

"L20", *p_wcs

]

HTH

Link to comment
Share on other sites

quote:

You're going to need this wherever you want your G10 to be output in the program.

I'm not sure I follow you on this?

Where do I put it?

Do I insert text?

I'm not even sure if I have my file setup right... I have a different WCS position for all the origins and parts.

 

I'm not translating any of the toolpaths... Should I ?

 

 

As far as the post edit... I think I have it right...

 

I've been using MC for about 8 years now and I still feel like I only know half of what I should... bonk.gif

Link to comment
Share on other sites

Fastmill,

Here's a Makino A55 post with G10's.

It uses a std. Fanuc Txt with it.

Backup your post first. Then start copying and pasting pieces of this post into your Backed up copy of your post. You can copy your Mazak txt file if you want to make any changes to it.

 

I provide this with no warranty or guarantees.

Good Luck and hope you can learn from it. cool.gif

 

code:

 # Post Name           : MAKINOA55

# Product : MASTERCAM VER 9.1SP2

# Machine Name : MAKINO A55

# Control Name : PROFESSIONAL 3

# Description : FANUC HORIZONTAL MILL POST

# Associated Post : NONE

# Mill/Turn : NO

# 4-axis/Axis subs. : YES

# 5-axis : NO

# Subprograms : YES

# Executable : MP 9.14 Post Updated to run in 9.1SP2 jimmy 08/07/2004

# This an original Version 8 post modified and updated to run in V9.1SP2

# --------------------------------------------------------------------------

# Revision log:

# --------------------------------------------------------------------------

# Programmers Note:

# CNC 01/27/00 - Initial post setup, don

# CNC 05/23/00 - Move 'c_msng' in ptlchg0 to position subs when no work offset, jph

# CNC 07/27/00 - Modified for horizontal machines with the following additions / changes. jce

# 1. Added support for G10 use

# 2. Added MR1 for Z clearance point on a null toolchange.

# 3. Added strings and switch for lock/unlock of table.

# 4. Post is setup for G10 usage. May need customization to not use G10 or

# Use MPFAN and set VMC to 0 for horizontal with no G10 support.

# xxx 07/28/00 - Updated tapping cycles and header

# xxx 07/31/00 - 1. Added "n" number for each tool

# 2. Removed g28 line for tool change (contained in M6 code in machine)

# xxx 08/16/00 - Made separate programs for Multi-DNC usage

# 1. Now has seperate programs (g10 and Main)

# 2. Uses M198 to Call 2nd Program (Main)

# 3. Has M30 at end of 1st Program (G10) and M99 after 2nd Program (lines 594-612)

# 1. Changed the L12 callout for rad comp to L11 to conform to PRO 3 Control

# 2. Got rid of additional incremental B axis rotation on lines 1000-1013

# xxx 08/17/00 - Changed work offset designation on Parameters so 54-59=g54-g59(instead of 0-5=g54-g59)

# and 1-48=g54.1p1-g54.1p48(instead of 6-54=g54.1p1-g54.1p48).

# I just like it that way better.

# THIS POST HAS BEEN MODIFIED FOR MAKINO A55 HORIZONTALS ONLY

# --------------------------------------------------------------------------

# Features:

# --------------------------------------------------------------------------

# This post supports Generic Fanuc code output for 3 and 4 axis milling.

# It is designed to support the features of Mastercam Mill V9.1SP2

#

# Following Misc. Integers are used:

#

# mi1 - Work coordinate system

# 0 = Reference return is generated and G92 with the

# X, Y and Z home positions at file head.

# 1 = Reference return is generated and G92 with the

# X, Y and Z home positions at each tool.

# 2 = WCS of G54, G55.... based on Mastercam settings.

#

# mi2 - Absolute or Incremental positioning at top level

# 0 = absolute

# 1 = incremental

#

# mi3 - Select G28 or G30 reference point return.

# 0 = G28, 1 = G30

#

# Following Misc. Reals are used:

#

# mr1 - Z safe clearance position for rotary on null toolchange

#

#Canned text:

# Entering cantext on a contour point from within Mastercam allows the

# following functions to enable/disable.

# Cantext value:

# 1 = Stop = output the "M00" stop code

# 2 = Ostop = output the "M1" optional stop code

# 3 = Bld on = turn on block delete codes in NC lines

# 4 = bLd off = turn off block delete codes in NC lines

#

#Milling toolpaths (4 axis)

#Layout:

# The term "Reference View" refers to the coordinate system associated

# with the Top view (Alt-F9, the upper gnomon of the three displayed).

# Create the part drawing with the axis of rotation about the axis

# of the "Reference View" according to the setting you entered for

# 'vmc' (vertical or horizontal) and 'rot_on_x' (machine relative

# axis of rotation).

# vmc = 1 (vertical machine) uses the top toolplane as the base machine

# view.

# vmc = 0 (horizontal machine) uses the front toolplane as the base machine

# view.

# Relative to the machine matrix -

# Rotation zero position is on the Z axis for rotation on X axis.

# Rotation zero position is on the Z axis for rotation on Y axis.

# Rotation zero position is on the X axis for rotation on Z axis.

# The machine view rotated about the selected axis as a "single axis

# rotation" are the only legal views for 4 axis milling. Rotation

# direction around the part is positive in the CCW direction when

# viewed from the plus direction of the rotating axis. Set the variable

# 'rot_ccw_pos' to indicate the signed direction. Always set the work

# origin at the center of rotation.

#

#Toolplane Positioning:

# Create the Cplane and Tplane as the rotation of the machine view about

# the selected axis of rotation. The toolplane is used to calculate

# the position of the rotary axis. This is the default setting.

#

#3 Axis Rotary (Polar)

# Polar positioning is offered in Mastercam 3 axis toolpaths through the

# rotary axis options dialog. The selected toolpath is converted to angle

# and radius position. The axis of rotation is forced to zero.

#

#Axis substitution:

# Use the Rotary axis substitution by drawing the geometry flattened

# from the cylinder. The rotary axis button must be active for axis

# substitution information to be output to the NCI file. The radius of

# the rotary diameter is added to all the Z positions at output.

#

#Simultaneous 4 Axis (11 gcode):

# Full 4 axis toolpaths can be generated from various toolpaths under the

# 'multi-axis' selection (i.e. Rotary 4 axis). All 5 axis paths are

# converted to 4 axis paths where only the angle about the rotation axis

# is resolved.

#

#Drill:

# All drill methods are supported in the post. See Simultaneous 4 Axis.

#

#Additional Notes:

# 1) Disable 4 axis by setting the numbered question 164. to 'n'.

# 2) G54 calls are generated where the work offset entry of 0 = G54,

# 1 = G55, etc.

# 3) Metric is applied from the NCI met_tool variable.

# 4) Incremental mode calculates motion from home position at toolchanges.

# The home position is used to define the last position of the tool

# for all toolchanges.

# 5) The variable 'absinc' is now pre-defined, set mi2 (Misc. Integer) for

# the 'top level' absolute/incremental program output. Subprograms are

# updated through the Mastercam dialog settings for sub-programs.

# 6) Always avoid machining to the center of rotation with rotary axis!

# 7) Transform subprograms are intended for use with G54.. workshifts.

# 8) G10 work offsets (L2 & L20) output is controlled by use_g10wcs flag. When active G10

# output will occur at the begining of the NC file and uses the tool origin.

# G10 L2 P_ X_ Y_ Z_

#

# 9) G10 Tool offsets (L11) output is controlled by use_g10tloff flag. When active G10 L11

# output will occur at the begining of the NC file and cancel at the end of the file in the

# following format.

# G10 L11 P_ R_

#

#

#

# --------------------------------------------------------------------------

# Debugging and Factory Set Program Switches

# --------------------------------------------------------------------------

m_one : -1 #Define constant

zero : 0 #Define constant

one : 1 #Define constant

two : 2 #Define constant

three : 3 #Define constant

four : 4 #Define constant

five : 5 #Define constant

c9k : 9999 #Define constant

 

fastmode : 1 #Posting speed optimizition, 0 for debug jimmy

bug1 : 2 #0=No display, 1=Generic list box, 2=Editor

bug2 : 30 #Append postline labels, non-zero is column position?

bug3 : 0 #Append whatline no. to each NC line?

bug4 : 1 #Append NCI line no. to each NC line?

whatno : yes #Do not perform whatline branches? (leave as yes)

 

get_1004 : 1 #Find gcode 1004 with getnextop?

skp_lead_flgs : 1 #Do not use v9 style contour flags

rpd_typ_v7 : 0 #Use Version 7 style contour flags/processing?

strtool_v7 : 2 #Use Version 7+ toolname?

tlchng_aft : 2 #Delay call to toolchange until move line

cant_tlchng : 1 #Ignore cantext entry on move with tlchng_aft

newglobal : 1 #Error checking for global variables

getnextop : 0 #Build the next variable table

tooltable : 1 #Read for tool table and pwrtt

 

# --------------------------------------------------------------------------

# General Output Settings

# --------------------------------------------------------------------------

sub_level : 1 #Enable automatic subprogram support

breakarcs : 0 #Break arcs, 0 = no, 1 = quadrants, 2 = 180deg. max arcs

arcoutput : 0 #0 = IJK, 1 = R no sign, 2 = R signed neg. over 180

arctype : 2 #Arc center 1=abs, 2=St-Ctr, 3=Ctr-St, 4=unsigned inc.

do_full_arc : 0 #Allow full circle output? 0=no, 1=yes

helix_arc : 2 #Support helix arc output, 0=no, 1=all planes, 2=XY plane only

arccheck : 1 #Check for small arcs, convert to linear

atol : .01 #Angularity tolerance for arccheck = 2

ltol : .002 #Length tolerance for arccheck = 1

vtol : .0001 #System tolerance

maxfeedpm : 1000 #Limit for feed in inch/min

ltol_m : .05 #Length tolerance for arccheck = 1, metric

vtol_m : .0025 #System tolerance, metric

maxfeedpm_m : 10000 #Limit for feed in mm/min

force_wcs : yes #Force WCS output at every toolchange?

spaces : 0 #No. of spaces to add between fields

omitseq : YES #Omit sequence no.

seqmax : 9999 #Max. sequence no.

stagetool : 1 #0 = Do not pre-stage tools, 1 = Stage tools

use_gear : 0 #Output gear selection code, 0=no, 1=yes

max_speed : 14000 #Maximum spindle speed

min_speed : 50 #Minimum spindle speed

nobrk : YES #Omit breakup of x, y & z rapid moves

progname : 1 #Use uppercase for program name

use_g10wcs : yes #Output G10 work offsets

use_g10tloff : yes #Output G10 Tool offsets

hoffset = tloffno

doffset = 17

prognomain = progno + 1

prognomainsub = progno + 1

 

# --------------------------------------------------------------------------

# Rotary Axis Settings

# --------------------------------------------------------------------------

vmc : 0 #0 = Horizontal Machine, 1 = Vertical Mill

rot_on_x : 2 #Default Rotary Axis Orientation, See ques. 164.

#0 = Off, 1 = About X, 2 = About Y, 3 = About Z

rot_ccw_pos : 1 #Axis signed dir, 0 = CW positive, 1 = CCW positive

index : 0 #Use index positioning, 0 = Full Rotary, 1 = Index only

lock_table : YES #Lock table for indexing operations

ctable : 1 #Degrees for each index step with indexing spindle

use_frinv : 0 #Use Inverse Time Feedrates in 4 Axis, (0 = no, 1 = yes)

maxfrdeg : 2000 #Limit for feed in deg/min

maxfrinv : 999.99#Limit for feed inverse time

frc_cinit : 1 #Force C axis reset at toolchange

ctol : 225 #Tolerance in deg. before rev flag changes

ixtol : .01 #Tolerance in deg. for index error

frdegstp : 10 #Step limit for rotary feed in deg/min

 

# --------------------------------------------------------------------------

# Enable Canned Drill Cycle Switches

# --------------------------------------------------------------------------

usecandrill : yes #Use canned cycle for drill

usecanpeck : yes #Use canned cycle for Peck

usecanchip : yes #Use canned cycle for Chip Break

usecantap : yes #Use canned cycle for Tap

usecanbore1 : yes #Use canned cycle for Bore1

usecanbore2 : yes #Use canned cycle for Bore2

usecanmisc1 : yes #Use canned cycle for Misc1

usecanmisc2 : yes #Use canned cycle for Misc2

 

# --------------------------------------------------------------------------

# Common User-defined Variable Initializations (not switches!)

# --------------------------------------------------------------------------

xia : 0 #Formated absolute value for X incremental calculations

yia : 0 #Formated absolute value for Y incremental calculations

zia : 0 #Formated absolute value for Z incremental calculations

cia : 0 #Formated absolute value for C incremental calculations

 

cuttype : 0 #Cut type flag

#0 = Tool Plane, 1 = Axis Subs, 2 = Polar, 3 = 4/5 axis

bld : 0 #Block delete active

result : 0 #Return value for functions

sav_spc : 0 #Save spaces

sav_gcode : 0 #Gcode saved

sav_absinc : 0 #Absolute/Incremental Saved Value

sav_coolant : 0 #Coolant saved

sav_frc_wcs : 0 #Force work offset flag saved

toolchng : 1 #On a toolchange flag

spdir2 : 1 #Copy for safe spindle direction calculation

 

#Drill variables

drlgsel : -1 #Drill Select Initialize

drillref : 0 #Select drill reference

peckacel : 0 #Fractional percent to reduce peck2 when usecan.. : no

drlgcode : 0 #Save Gcode in drill

sav_dgcode : 0 #Drill gcode saved

 

#Subprogram variables

mr_rt_actv : 0 #Flag to indicate if G51/G68 is active

#0=Off, 1=Toolchange, 2=Subprogram call/start, G68

#3=Absolute start, both

rt_csav : 0 #C saved value

end_sub_mny : 0 #Many tool setting captured at transform sub end

 

#Rotary/Index variables

csav : 0 #C saved value

prvcabs : 0 #Saved cabs from pe_inc_calc,

#Used for rotary feed and direction calculations

cdelta : 0 #Calculation for angle change

rev : 0 #Calculation for deg/min

sav_rev : 0 #Saved revolution counter

indx_out : c9k #Rotation direction calculation

fmt 16 indx_mc #Rotation direction calculation

 

#Vector Constants for Rotatary Calculations

aaxisx : 1 #A axis rotation vector constant

aaxisy : 0 #A axis rotation vector constant

aaxisz : 0 #A axis rotation vector constant

baxisx : 0 #B axis rotation vector constant

baxisy : 1 #B axis rotation vector constant

baxisz : 0 #B axis rotation vector constant

caxisx : 0 #C axis rotation vector constant

caxisy : 0 #C axis rotation vector constant

caxisz : 1 #C axis rotation vector constant

 

#Feedrate calculation variables

frdelta : 0 #Calculation for deg/min

frinv : 0 #Feedrate inverse time

frdeg : 0 #Feedrate deg/min actual

prvfrdeg : 0 #Feedrate deg/min actual

ldelta : 0 #Calculation for deg/min, linear

cldelta : 0 #Calculation for deg/min, linear and rotary

circum : 0 #Calculation for deg/min

ipr_type : 0 #Feedrate for Rotary, 0 = UPM, 1 = DPM, 2 = Inverse

 

# --------------------------------------------------------------------------

# Format statements - n=nonmodal, l=leading, t=trailing, i=inc, d=delta

# --------------------------------------------------------------------------

#Default english/metric position format statements

fs2 1 0.7 0.6 #Decimal, absolute, 7 place, default for initialize (
:)

fs2 2 0.4 0.3 #Decimal, absolute, 4/3 place

fs2 3 0.4 0.3d #Decimal, delta, 4/3 place

#Common format statements

fs2 4 1 0 1 0 #Integer, not leading

fs2 5 2 0 2 0l #Integer, force two leading

fs2 6 3 0 3 0l #Integer, force three leading

fs2 7 4 0 4 0l #Integer, force four leading

fs2 9 0.1 0.1 #Decimal, absolute, 1 place

fs2 10 0.2 0.2 #Decimal, absolute, 2 place

fs2 11 0.3 0.3 #Decimal, absolute, 3 place

fs2 12 0.4 0.4 #Decimal, absolute, 4 place

fs2 13 0.5 0.5 #Decimal, absolute, 5 place

fs2 14 0.3 0.3d #Decimal, delta, 3 place

fs2 15 0.2 0.1 #Decimal, absolute, 2/1 place

fs2 16 1 0 1 0n #Integer, forced output

 

# --------------------------------------------------------------------------

#String and string selector definitions for NC output

# --------------------------------------------------------------------------

#Numbered question 164. string to detect Rotary axis y/n

sq164

 

#Address string definitions

strm "M"

strn "N"

stro "O"

strp "P"

srad "R"

srminus "R-"

sblank

 

#Cantext string definitions (spaces must be padded here)

sm00 "M0"

sm01 "M1"

strtextno

strcantext

 

#Transform mirror and rotate codes

strns_mir_on "G51.1" #Programmable mirror image code

strns_mir_off "G50.1" #Programmable mirror image cancel code

strns_rot_on "G68" #Coordinate System Rotation

strns_rot_off "G69" #Coordinate System Rotation Cancel

 

# --------------------------------------------------------------------------

# Error messages

# --------------------------------------------------------------------------

saxiswarn "WARNING-POST ROTARY AXIS ASSIGNMENT ('rot_on_x') OVERWRITTEN BY OPERATION"

saxisoff "ERROR-POST ROTARY AXIS ASSIGNMENT ('rot_on_x') IS DISABLED"

saxiserror "ERROR-INVALID ROTARY AXIS ASSIGNMENT ('rot_on_x') FOR CURRENT OPERATION"

sindxerror "WARNING-INDEX ANGLE DOES NOT MATCH POST SETTING ('ctable')"

stlorgerr "ERROR-TOOL ORIGIN DOES NOT MATCH CENTER OF ROTATION IN POLAR MILLING"

shomeserror "ERROR-G92 WORK OFFSET ('mi1') DOES NOT SUPPORT TRANSFORM SUBPROGRAM"

 

# --------------------------------------------------------------------------

# General G and M Code String select tables

# --------------------------------------------------------------------------

# Motion G code selection

sg00 G0 #Rapid

sg01 G1 #Linear feed

sg02 G2 #Circular interpolation CW

sg03 G3 #Circular interpolation CCW

sg04 G4 #Dwell

sgcode #Target for string

 

fstrsel sg00 gcode sgcode

# --------------------------------------------------------------------------

# Select work plane G code

sg17 G17 #XY plane code

sg19 G19 #YZ plane code

sg18 G18 #XZ plane code

sgplane #Target string

 

fstrsel sg17 plane sgplane

# --------------------------------------------------------------------------

#Select english/metric code

sg20 G20 #Inch code

sg21 G21 #Metric code

smetric #Target string

 

fstrsel sg20 met_tool smetric

# --------------------------------------------------------------------------

#Select reference return code

sg28 G28 #First reference point return

sg30 G30 #Second reference point return

sg28ref #Target string

 

fstrsel sg28 mi3 sg28ref

# --------------------------------------------------------------------------

# Cutter compensation G code selection

scc0 G40 #Cancel cutter compensation

scc1 G41 #Cutter compensation left

scc2 G42 #Cutter compensation right

sccomp #Target for string

 

fstrsel scc0 cc_pos sccomp

# --------------------------------------------------------------------------

# Canned drill cycle string select

sg81 G81 #drill - no dwell

sg81d G82 #drill - with dwell

sg83 G83 #peck drill - no dwell

sg83d G83 #peck drill - with dwell

sg73 G73 #chip break - no dwell

sg73d G73 #chip break - with dwell

sg84 G84 #tap - right hand

sg84d G74 #tap - left hand

sg85 G85 #bore #1 - no dwell

sg85d G89 #bore #1 - with dwell

sg86 G86 #bore #2 - no dwell

sg86d G86 #bore #2 - with dwell

sgm1 G183 #misc #1 - no dwell

sgm1d G183 #misc #1 - with dwell

sgm2 G81 #misc #2 - no dwell

sgm2d G82 #misc #2 - with dwell

sgdrill #Target for string

 

fstrsel sg81 drlgsel sgdrill

# --------------------------------------------------------------------------

# Select incremental or absolute G code

sg90 G90 #Absolute code

sg91 G91 #Incremental code

sgabsinc #Target string

 

fstrsel sg90 absinc sgabsinc

# --------------------------------------------------------------------------

# Feed mode G code selection

sg94 G94 #UPM

sg94d G94 #DPM, See pfcalc_deg if you use another gcode

sg93 G93 #Inverse

sgfeed #Target for string

 

fstrsel sg94 ipr_type sgfeed

# --------------------------------------------------------------------------

#Canned drill cycle reference height

sg98 G98 #Reference at initht

sg99 G99 #Reference at refht

sgdrlref #Target for string

 

fstrsel sg98 drillref sgdrlref # Drill cycle G string select

# --------------------------------------------------------------------------

# Generate string for spindle

sm04 M4 #Spindle reverse

sm05 M5 #Spindle off

sm03 M3 #Spindle forward

spindle #Target for string

 

fstrsel sm04 spdir2 spindle

# --------------------------------------------------------------------------

# Coolant M code selection

sm09 M9 #Coolant Off

sm08 M8 #Coolant Flood

sm08_1 M8 #Coolant Mist

sm08_2 M26 #Coolant Tool

sm08_3 m

scoolant #Target for string

 

fstrsel sm09 coolant scoolant

# --------------------------------------------------------------------------

# Table rotation direction

# Table rotation direction, index

sindx_cw M22 #Rotate CW code

sindx_ccw M21 #Rotate CCW code

sindx_mc #Target for string

 

fstrsel sindx_cw indx_mc sindx_mc

 

sunlock M11 # Unlock Rotary Table

slock M10 # Lock Rotary Table

# --------------------------------------------------------------------------

# Define the gear selection code

flktbl 1 3 #Lookup table definition - table no. - no. entries

40 0 #Low gear range

41 400 #Med gear range

42 2250 #Hi gear range

 

# --------------------------------------------------------------------------

# Toolchange / NC output Variable Formats

# --------------------------------------------------------------------------

fmt T 4 t #Tool No

fmt T 4 first_tool #First Tool Used

fmt T 4 next_tool #Next Tool Used

fmt D 4 tloffno #Diameter Offset No

fmt N 4 hoffset #equal to tloffno for N block at tool change

fmt D 4 doffset #default diameter offset number for MAKINO

fmt H 4 tlngno #Length Offset No

fmt G 4 g_wcs #WCS G address

fmt P 4 p_wcs #WCS P address

fmt S 4 speed #Spindle Speed

fmt M 4 gear #Gear range

# --------------------------------------------------------------------------

fmt N 4 n #Sequence number

fmt X 2 xabs #X position output

fmt Y 2 yabs #Y position output

fmt Z 2 zabs #Z position output

fmt X 3 xinc #X position output

fmt Y 3 yinc #Y position output

fmt Z 3 zinc #Z position output

fmt Z 2 zclrot #Z clearance position for rotation

fmt B 11 cabs #C axis position

fmt B 14 cinc #C axis position

fmt B 4 indx_out #Index position

fmt R 14 rt_cinc #C axis position, G68

fmt I 3 i #Arc center description in X

fmt J 3 j #Arc center description in Y

fmt K 3 k #Arc center description in Z

fmt R 2 arcrad #Arc Radius

fmt F 15 feed #Feedrate

fmt P 4 dwell #Dwell

fmt M 5 cantext #Canned text

# --------------------------------------------------------------------------

#Move comment (pound) to output colon with program numbers

fmt O 7 progno #Program number

#fmt ":" 7 progno #Program number

fmt P 7 prognomain #Program number +1

#fmt ":" 7 prognomain #Program number +1

fmt O 7 prognomainsub #Program number +1

#fmt ":" 7 prognomainsub #Program number +1

fmt O 7 main_prg_no #Program number

#fmt ":" 7 main_prg_no #Program number

fmt O 7 sub_prg_no #Program number

#fmt ":" 7 sub_prg_no #Program number

fmt X 2 sub_trnsx #Rotation point

fmt Y 2 sub_trnsy #Rotation point

fmt Z 2 sub_trnsz #Rotation point

# --------------------------------------------------------------------------

fmt Q 2 peck1 #First peck increment (positive)

fmt Q 2 shftdrl #Fine bore tool shift

fmt R 2 refht_a #Reference height

fmt R 2 refht_i #Reference height

# --------------------------------------------------------------------------

fmt "T" 4 tnote # Note format

fmt " DIA. OFF. - " 4 toffnote # Note format

fmt " LEN. - " 4 tlngnote # Note format

fmt " DIA. - " 1 tldia # Note format

 

# --------------------------------------------------------------------------

# Tool Comment / Manual Entry Section

# --------------------------------------------------------------------------

ptoolcomment #Comment for tool

tnote = t

toffnote = tloffno

tlngnote = tlngno

"(", *tnote," ",pstrtool, ")", e

 

pstrtool #Comment for tool

if strtool <> sblank,

[

strtool = ucase(strtool)

*strtool, " "

]

 

pcomment #Comment from manual entry (must call pcomment2 if booleans)

pcomment2

 

pcomment2 #Comment from manual entry

scomm = ucase (scomm)

if gcode = 1007, "(", scomm, ")"

else, "(", scomm, ")", e

 

# --------------------------------------------------------------------------

# Start of File and Toolchange Setup

# --------------------------------------------------------------------------

psof0 #Start of file for tool zero

psof

 

psof #Start of file for non-zero tool number

pcuttype

toolchng = one

if ntools = one,

[

#skip single tool outputs, stagetool must be on

stagetool = m_one

!next_tool

]

"%", e

*progno, "(", progname, "-G10)", e

"(MAKINO A55 HORIZONTAL)", e

"(TORQUE VALUE ---FT/LBS)", e

"(CUSTOMER NAME ---)", e

"(PART NUMBER ---", progname, ")", e

"(PART NAME ---)", e

"( ---)", e

"( ---)", e

"(PROGRAM BY ---JIMMY KALLHOFF)", e

"(PROGRAM DATE ---", month,"/",day,"/",year,")", e

"(PROVEN DATE ---)", e

"(CYCLE TIME ---)", e

" ", e

 

pbld, n, *sgcode, *sgplane, *smetric, "G40", "G49", "G80", *sgabsinc, e

"G10L2P0X0Y0Z0B0", e

#Read buffer 2 and write out preload work offsets

if use_g10wcs = yes, preloadwcs

" ", e

if use_g10tloff = yes, preloadtloff

" ", e

"M98", *prognomain, e

" ", e

"G90M30", e

sav_absinc = absinc

if mi1 <= one, #Work coordinate system

[

absinc = one

# pfbld, n, sgabsinc, *sg28ref, "Z0", e

# pfbld, n, *sg28ref, "X0", "Y0", e

pfbld, n, "G92", *xh, *yh, *zh, e

absinc = sav_absinc

]

pcom_moveb

c_mmlt #Multiple tool subprogram call

pcan

" "

*prognomainsub, "(", progname, "-MAIN)", e

" "

hoffset, *t, "M6", e

"M1", e

"M11", e

pcan1, pbld, n, *sgcode, *sgabsinc, pwcs, "B0", scoolant, e

"M10", e

ptoolcomment

comment

pindex, pfxout, pfyout, *speed, *spindle, pgear, strcantext, next_tool, e

"G43", "H1", pfzout, "M754", e #turn on chip conveyor wash

"G8P1", e

absinc = sav_absinc

pcom_movea

toolchng = zero

c_msng #Single tool subprogram call

 

ptlchg0 #Call from NCI null tool change (tool number repeats)

pcuttype

pcom_moveb

c_mmlt #Multiple tool subprogram call

pzclrot

pcan

pbld, n, sgplane, e

# if prv_spdir2 <> spdir2, pbld, n, *sm05, e

if prv_speed <> speed | prv_spdir2 <> spdir2,

pbld, n, *speed, *spindle, pgear, e

pbld, n, scoolant, e

if mi1 > one & workofs <> prv_workofs,

[

sav_absinc = absinc

absinc = zero

"G8P0",e

"M128", e

" ", e

"M11", e

pbld, n, *sgabsinc, pwcs, "B0", e

"M10", e

comment

pfxout, pfyout, e

"G8P1", e

pe_inc_calc

ps_inc_calc

absinc = sav_absinc

]

if cuttype = zero, ppos_cax_lin

if gcode = one, plinout

else, prapidout

pcom_movea

c_msng #Single tool subprogram call

 

ptlchg #Tool change

pcuttype

toolchng = one

if mi1 = one, #Work coordinate system

[

# pfbld, n, *sg28ref, "X0", "Y0", e

pfbld, n, "G92", *xh, *yh, *zh, e

]

# pbld, n, "M1", e

pcom_moveb

c_mmlt #Multiple tool subprogram call

pcan

"G8P0",e

pbld, n, "M117", e

" ", e

sav_absinc = absinc

if mi1 > one, absinc = zero

hoffset, "M1", e

*t,"M6", e

"M11", e

pcan1, pbld, n, *sgcode, *sgabsinc, pwcs, "B0", scoolant, e

"M10", e

ptoolcomment

comment

pindex, pfxout, pfyout, *speed, *spindle, pgear, strcantext, next_tool, e

"G43", *"H1", pfzout, "M754", e #turn on chip conveyor wash

"G8P1",e

absinc = sav_absinc

pcom_movea

toolchng = zero

c_msng #Single tool subprogram call

 

pretract #End of tool path, toolchange

sav_absinc = absinc

absinc = one

sav_coolant = coolant

coolant = zero

#cc_pos is reset in the toolchange here

cc_pos = zero

gcode = zero

# pbld, n, sccomp, *sm05, psub_end_mny, e

# pbld, n, sgabsinc, sgcode, *sg28ref, "Z0",

scoolant, e

# pbld, n, *sg28ref, "X0", "Y0", protretinc, e

absinc = sav_absinc

coolant = sav_coolant

 

protretinc #Reset the C axis revolution counter

if frc_cinit & rot_on_x,

[

rev = zero

sav_rev = zero

cabs = zero

csav = zero

indx_out = zero

if index, e, pindxcalc, pindex

else, *cabs

prvcabs = zero

!csav, !cabs

]

 

peof0 #End of file for tool zero

peof

 

peof #End of file for non-zero tool

pretract

comment

#Remove pound character to output first tool with staged tools

#if stagetool = one, pbld, n, *first_tool, e

"M6", e

"M1", e

" ", e

if use_g10tloff = yes, preloadtloff

" ", e

n, "G90", e

n, "M99", e

mergesub

clearsub

mergeaux

clearaux

"%", e

 

pwcs #G54+ coordinate setting at toolchange

if mi1 > one,

[

sav_frc_wcs = force_wcs

if sub_level, force_wcs = zero

if workofs <> prv_workofs | (force_wcs & toolchng),

[

if workofs > 53,

[

g_wcs = workofs

*g_wcs

]

else,

[

p_wcs = workofs

"G54.1", *p_wcs

]

]

force_wcs = sav_frc_wcs

!workofs

]

 

pgear #Find spindle gear from lookup table

if use_gear = one,

[

gear = frange (one, speed)

*gear

]

 

#Toolchange setup

pspindle #Spindle speed calculations for RPM

speed = abs(ss)

if maxss = zero | maxss > max_speed, maxss = max_speed

if speed > max_speed, speed = maxss

if speed < min_speed, speed = min_speed

spdir2 = fsg3(spdir)

 

pq #Setup post based on switch settings

if stagetool = one, bldnxtool = one

#Rotaxtyp = 1 sets initial matrix to top

#Rotaxtyp = -2 sets initial matrix to front

if vmc, rotaxtyp = one

else, rotaxtyp = -2

#Shut off rotary axis if, Q164. Enable Rotary Axis button? n

if ucase(sq164) = strn, rot_on_x = zero

if arctype = one | arctype = four,

[

result = newfs(two, i)

result = newfs(two, j)

result = newfs(two, k)

]

else,

[

result = newfs(three, i)

result = newfs(three, j)

result = newfs(three, k)

]

 

pheader #Call before start of file

if met_tool = one, #Metric constants and variable adjustments

[

ltol = ltol_m

vtol = vtol_m

maxfeedpm = maxfeedpm_m

]

 

ptoolend #End of tool path, before reading new tool data

!speed, !spdir2

 

ptlchg1002 #Call at actual toolchange, end last path here

sav_rev = rev #Axis Sub does not update to rev

pspindle

whatline = four #Required for vector toolpaths

if gcode = 1000,

[

#Null toolchange

]

else,

[

#Toolchange and Start of file

if gcode = 1002,

[

#Actual toolchange

pretract

]

if stagetool = one, prv_next_tool = m_one

prv_xia = vequ(xh)

prv_feed = c9k

]

 

# --------------------------------------------------------------------------

# Motion NC output

# --------------------------------------------------------------------------

#The variables for absolute output are xabs, yabs, zabs.

#The variables for incremental output are xinc, yinc, zinc.

# --------------------------------------------------------------------------

prapidout #Output to NC of linear movement - rapid

pcan1, pbld, n, sgplane, `sgcode, sgabsinc, pccdia,

pxout, pyout, pzout, strcantext, scoolant, e

 

plinout #Output to NC of linear movement - feed

pcan1, pbld, n, sgfeed, sgplane, `sgcode, sgabsinc, pccdia,

pxout, pyout, pzout, feed, strcantext, scoolant, e

 

pcirout #Output to NC of circular interpolation

pcan1, pbld, n, `sgfeed, sgplane, sgcode, sgabsinc, pccdia,

pxout, pyout, pzout, parc, feed, strcantext, scoolant, e

 

pcom_moveb #Common motion preparation routines, before

pxyzcout

ps_inc_calc

 

pncoutput #Movement output

pcom_moveb

comment

pcan

if cuttype = zero, ppos_cax_lin #Toolplane rotary positioning

if gcode = zero, prapidout

if gcode = one, plinout

if gcode > one & gcode < four, pcirout

if mr_rt_actv, #Restore absolute/incremental for G51/G68

[

absinc = sav_absinc

mr_rt_actv = zero

]

pcom_movea

 

pcom_movea #Common motion preparation routines, after

pcan2

pe_inc_calc

 

pdwl_spd #Call from NCI gcode 4

pspindle

comment

# if prv_spdir2 <> spdir2, pbld, n, *sm05, e

if prv_speed <> speed | prv_spdir2 <> spdir2,

pbld, n, *speed, *spindle, pgear, e

pcan

if fmtrnd(dwell), pcan1, pbld, n, *sgcode, dwell, strcantext, e

else, pcan1, pbld, n, strcantext, e

pcan2

 

prapid #Output to NC of linear movement - rapid

pncoutput

 

pzrapid #Output to NC of linear movement - rapid Z only

pncoutput

 

plin #Output to NC of linear movement - feed

pncoutput

 

pz #Output to NC of linear movement - feed Z only

pncoutput

 

pmx #Output to NC of vector NCI

pncoutput

 

pcir #Output to NC of circular interpolation

pncoutput

 

#Pre-process rotary motion control flags

pmx0 #5 axis gcode setup

if drillcur = zero,

[

if fr = -2, gcode = zero

else, gcode = one

]

 

plin0 #Linear movement, mill motion test

pmotion_su

 

pcir0 #Circular interpolation, mill arc motion test

pmotion_su

 

# --------------------------------------------------------------------------

# Motion output components

# --------------------------------------------------------------------------

pbld #Canned text - block delete

if bld, '/'

 

pfbld #Force - block delete

"/"

 

pccdia #Cutter Compensation

#Force Dxx#

# if prv_cc_pos <> cc_pos & cc_pos, prv_tloffno = c9k

sccomp

if cc_pos, doffset

 

pzclrot #Z Clearance for rotation on Null Tool change

# prv_indx_out, ~indx_out, e

if prv_indx_out <> fmtrnd (indx_out),

[

zclrot = mr1

gcode = 0

pbld, n, "G8P0",e

"M128", e

]

 

pfxout #Force X axis output

if absinc = zero, *xabs, !xinc

else, *xinc, !xabs

 

pxout #X output

if absinc = zero, xabs, !xinc

else, xinc, !xabs

 

pfyout #Force Y axis output

if absinc = zero, *yabs, !yinc

else, *yinc, !yabs

 

pyout #Y output

if absinc = zero, yabs, !yinc

else, yinc, !yabs

 

pfzout #Force Z axis output

if absinc = zero, *zabs, !zinc

else, *zinc, !zabs

 

pzout #Z output

if absinc = zero, zabs, !zinc

else, zinc, !zabs

 

pfcout #Force C axis output

if index = zero & rot_on_x,

[

if absinc = zero, *cabs, !cinc

else, *cinc, !cabs

]

 

pcout #C axis output

if index = zero & rot_on_x,

[

if absinc = zero, cabs, !cinc

else, cinc, !cabs

]

 

pindex #Index output

if index & rot_on_x & prv_indx_out <> fmtrnd (indx_out),

[

if use_g10wcs = 1, indx_out = 0

# `sindx_mc, indx_out

if lock_table = yes, pbld, n, *sunlock, e

*indx_out

if lock_table = yes, pbld, n, *slock, e

!cabs, !cinc

]

 

parc #Select the arc output

if arcoutput = zero,

[

#Arc output for IJK

*i, *j, k

]

else,

[

#Arc output for R

if abs(sweep)<=180 | arcoutput=one, result = nwadrs(srad, arcrad)

else, result = nwadrs(srminus, arcrad)

*arcrad

]

 

ppos_cax_lin #Position the rotary axis before move - rapid

# if index, pindex

# else,

# [

# if fmtrnd(prv_cabs) <> fmtrnd(cabs) & rot_on_x,

# [

# sav_gcode = gcode

# gcode = zero

# pbld, n, sgcode, pcout, e

# !cia

# ps_cinc_calc

# gcode = sav_gcode

# ]

# ]

 

# --------------------------------------------------------------------------

# Drilling

# --------------------------------------------------------------------------

pdrill0 #Pre-process before drill call

sav_dgcode = gcode #Capture gcode for 5 axis drill

 

pdrlcommonb #Canned Drill Cycle common call, before

if sav_dgcode = 81,

[

result = newfs (two, zinc)

if drillcyc = three, drlgsel = fsg1(-ss) + drillcyc * two

else, drlgsel = fsg2(dwell) + drillcyc * two

if initht <> refht, drillref = zero

else, drillref = one

prv_refht_a = c9k

prv_refht_i = c9k

]

if cuttype = three, sav_dgcode = gcode

else, z = depth

if cuttype = one, prv_zia = initht + (rotdia/two)

else, prv_zia = initht

feed = fr_pos

prv_dwell = zero

@dwell

pcom_moveb

comment

pcan

#5 axis must map the true Z, correct Z calculation here

if cuttype = three,

[

prv_zia = zabs + (-depth) + initht

zia = fmtrnd(zabs)

zinc = zia - prv_zia

]

 

prdrlout #R drill position

if cuttype = one, refht_a = refht + (rotdia / two))

else, refht_a = refht

refht_i = refht - initht

if cuttype = three, refht_a = w

if absinc = zero, refht_a, !refht_i

else, refht_i, !refht_a

 

pdrill #Canned Drill Cycle

pdrlcommonb

pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout, prdrlout,

dwell, *feed, strcantext, e

pcom_movea

 

ppeck #Canned Peck Drill Cycle

pdrlcommonb

pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout,

prdrlout, *peck1, *feed, strcantext, e

pcom_movea

 

pchpbrk #Canned Chip Break Cycle

pdrlcommonb

pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout,

prdrlout, *peck1, *feed, strcantext, e

pcom_movea

 

ptap #Canned Tap Cycle

pdrlcommonb

"G8P0"

*speed, e

"M135", e

pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout,

prdrlout, *feed, strcantext, e

pcom_movea

 

pbore1 #Canned Bore #1 Cycle

pdrlcommonb

pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout,

prdrlout, dwell, *feed, strcantext, e

pcom_movea

 

pbore2 #Canned Bore #2 Cycle

pdrlcommonb

pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout,

prdrlout, *feed, strcantext, e

pcom_movea

 

pmisc1 #Canned Misc #1 Cycle

pdrlcommonb

pcan1, pbld, n, *sgdrlref, *sgdrill, pxout, pyout, pfzout,

prdrlout, shftdrl, dwell, *feed, strcantext, e

pcom_movea

 

pmisc2 #Canned Misc #2 Cycle (User Option)

pdrill

 

pdrill_2 #Canned Drill Cycle, additional points

pdrlcommonb

pcan1, pbld, n, pxout, pyout, pzout, prdrlout, dwell,

feed, strcantext, e

pcom_movea

 

ppeck_2 #Canned Peck Drill Cycle

pdrill_2

 

pchpbrk_2 #Canned Chip Break Cycle

pdrill_2

 

ptap_2 #Canned Tap Cycle

pdrill_2

 

pbore1_2 #Canned Bore #1 Cycle

pdrill_2

 

pbore2_2 #Canned Bore #2 Cycle

pdrill_2

 

pmisc1_2 #Canned Misc #1 Cycle

pdrill_2

 

pmisc2_2 #Canned Misc #2 Cycle

pdrill_2

 

pdrlcst #Custom drill cycles 8 - 19 (user option)

#Use this postblock to customize drilling cycles 8 - 19

pdrlcommonb

"CUSTOMIZABLE DRILL CYCLE ", pfxout, pfyout, pfzout, e

pcom_movea

 

pdrlcst_2 #Custom drill cycles 8 - 19, additional points (user option)

#Use this postblock to customize drilling cycles 8 - 19

pdrlcommonb

"CUSTOMIZABLE DRILL CYCLE ", pfxout, pfyout, pfzout, e

pcom_movea

 

pcanceldc #Cancel canned drill cycle

result = newfs (three, zinc)

z = initht

if cuttype = one, prv_zia = initht + (rotdia/two)

else, prv_zia = initht

pxyzcout

!zabs, !zinc

prv_gcode = zero

pbld, n, "G80", e

 

# --------------------------------------------------------------------------

#Subprogram postblocks

#sub_trnstyp - 0=mirror, 1=rotate, 2=scale, 3=translate

#sub_trnmthd (mirror) - 0=X axis, 1=Y axis, 2=line

#sub_trnmthd (rotate) - 0=tplane, 1=tplane origin only, 2=coordinates

# --------------------------------------------------------------------------

psub_call_m #Call to main level, single tool

psub_call_trans

 

psub_call_mm #Call to main level, multiple tools

psub_call_trans

 

psub_call_trans #Translate level calls from toolchange, user

if mi1 <= one, result = mprint(shomeserror)

sav_absinc = absinc

pindex

#Mirror or Rotate Coord's

if sub_trnstyp = zero | (sub_trnstyp = one & mr_rt_actv),

[

#The original pattern is not mirrored or rotated

if sub_sec_no,

[

absinc = zero

if sub_trnstyp, psub_rotate

else, psub_mirror

]

mr_rt_actv = three

]

else, #Translate

[

if sub_mny_t,

[

if mi1 > one, absinc = zero

pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfzout,

pfcout, e

pe_inc_calc

ps_inc_calc

]

]

absinc = sav_absinc

result = nwadrs(strp, main_prg_no)

pbld, n, "M98", *main_prg_no, e

prv_feed = c9k #Force feed in sub

 

psub_mirror #Mirror start code, user

#Mirror Y axis

if sub_trnmthd, pbld, n, *sgabsinc, strns_mir_on, *sub_trnsx, e

#Mirror X axis

else, pbld, n, *sgabsinc, strns_mir_on, *sub_trnsy, e

 

psub_rotate #Rotate start code, user

pbld, n, *sgcode, *sgabsinc, strns_rot_on, *sub_trnsx, *sub_trnsy,

[absinc = one], *sgabsinc, *rt_cinc, e

 

psub_st_m #Header in main level

result = nwadrs(stro, main_prg_no)

" ", e

*main_prg_no, e

#G51/G68 requires absolute position on first move

if mr_rt_actv & absinc = one,

[

sav_absinc = absinc

absinc = zero

prv_absinc = m_one

prv_xabs = m_one

prv_yabs = m_one

]

else, pbld, n, sgabsinc, e

 

psub_end_m #End in main level

pbld, n, sgabsinc, e

n, "M99", e

#Reset update variables for subs at main level

#Mirror or Rotate cancel, output is forced

if (sub_trnstyp = zero & esub_sec_no > zero)

| (sub_trnstyp = one & esub_sec_no = esub_totl_no-one

& sub_trnmthd = two),

[

subout = zero

no_nc_out = m_one

sav_absinc = absinc

#Mirror cancel

if sub_trnstyp = zero,

[

absinc = zero

pbld, n, *sgabsinc, strns_mir_off, *sub_trnsx, *sub_trnsy, e

]

else, #Rotate cancel

[

pbld, n, strns_rot_off, e

]

absinc = sav_absinc

no_nc_out = zero

]

end_sub_mny = sub_mny_t

 

psub_end_mny #End in main level for many tools sub, user

#Check for coming out of xform with stage tool.

if end_sub_mny & stagetool = one,

[

*t

end_sub_mny = zero

]

 

psub_call_s #Call to sub level

result = nwadrs(strp, sub_prg_no)

sub_prg_no = sub_prg_no + 1000 #Add sub number offset

pbld, n, "M98", *sub_prg_no, e

 

psub_st_s #Header in sub leveln

result = nwadrs(stro, sub_prg_no)

" ", e

*sub_prg_no, e

pbld, n, sgabsinc, e

 

psub_end_s #End in sub level

pbld, n, sgabsinc, e

n, "M99", e

 

# --------------------------------------------------------------------------

# Canned Text

# --------------------------------------------------------------------------

pcan #Canned text - before output call

strcantext = sblank

if cant_no > zero,

[

if cant_pos1 = zero, pcant_1

if cant_pos2 = zero, pcant_2

if cant_pos3 = zero, pcant_3

if cant_pos4 = zero, pcant_4

if cant_pos5 = zero, pcant_5

if cant_pos6 = zero, pcant_6

if cant_pos7 = zero, pcant_7

if cant_pos8 = zero, pcant_8

if cant_pos9 = zero, pcant_9

if cant_pos10 = zero, pcant_10

pbld, n, strcantext, e

strcantext = sblank

]

 

pcan1 #Canned text - with move

strcantext = sblank

if cant_no > zero,

[

if cant_pos1 = one, pcant_1

if cant_pos2 = one, pcant_2

if cant_pos3 = one, pcant_3

if cant_pos4 = one, pcant_4

if cant_pos5 = one, pcant_5

if cant_pos6 = one, pcant_6

if cant_pos7 = one, pcant_7

if cant_pos8 = one, pcant_8

if cant_pos9 = one, pcant_9

if cant_pos10 = one, pcant_10

]

if cstop, strcantext = strcantext + sm00

if cgstop, strcantext = strcantext + sm01

#Output of strcantext occurs at the end of the output line

 

pcan2 #Canned text - after output call

strcantext = sblank

if cant_no > zero,

[

if cant_pos1 = two, pcant_1

if cant_pos2 = two, pcant_2

if cant_pos3 = two, pcant_3

if cant_pos4 = two, pcant_4

if cant_pos5 = two, pcant_5

if cant_pos6 = two, pcant_6

if cant_pos7 = two, pcant_7

if cant_pos8 = two, pcant_8

if cant_pos9 = two, pcant_9

if cant_pos10 = two, pcant_10

pbld, n, strcantext, e

strcantext = sblank

]

 

pcant_1 #Canned text - output call

cantext = cant_val1

pcant_out

 

pcant_2 #Canned text - output call

cantext = cant_val2

pcant_out

 

pcant_3 #Canned text - output call

cantext = cant_val3

pcant_out

 

pcant_4 #Canned text - output call

cantext = cant_val4

pcant_out

 

pcant_5 #Canned text - output call

cantext = cant_val5

pcant_out

 

pcant_6 #Canned text - output call

cantext = cant_val6

pcant_out

 

pcant_7 #Canned text - output call

cantext = cant_val7

pcant_out

 

pcant_8 #Canned text - output call

cantext = cant_val8

pcant_out

 

pcant_9 #Canned text - output call

cantext = cant_val9

pcant_out

 

pcant_10 #Canned text - output call

cantext = cant_val10

pcant_out

 

pcant_out #Canned text - build the string for output

#Assign string select type outputs

if cantext = three, bld = one

if cantext = four, bld = zero

#Build the cantext string

if cantext = one, strcantext = strcantext + sm00

if cantext = two, strcantext = strcantext + sm01

if cantext > four,

[

strtextno = no2str(cantext)

strcantext = strcantext + strm + strtextno

]

 

# --------------------------------------------------------------------------

# Position calculations, generally these do not need to be modified

# --------------------------------------------------------------------------

pmiscint #Capture the top level absinc for subprograms

if sub_level = zero, absinc = mi2

#Disable cutpos2 if not 4 axis, saves time

if rot_on_x = zero, cutpos2 = m_one

 

pmotion_su #Motion Setup (Set brklinestype & linarc)

brklinestype = zero

linarc = zero

if rot_on_x,

[

if cuttype = one, linarc = one #Axis subs

if cuttype = two, #Polar

[

brklinestype = rotary_axis + three

linarc = one

]

]

 

pcuttype #Determine the cut type

#cuttype (0 = Tool Plane, 1 = Axis Subs, 2 = Polar, 3 = 4/5 axis)

cuttype = rotary_type

if cuttype = three, cuttype = zero

if mill5,

[

if rot_on_x = zero, result = mprint(saxisoff)

cuttype = three

]

if rotary_axis,

[

if rotary_axis <> rot_on_x, result = mprint(saxiswarn)

rot_on_x = rotary_axis

]

#Check for Tool Origin in Polar Milling

if cuttype = two & (tox | toy | toz), result = mprint(stlorgerr)

#Transform Rotate, set mr_rt_actv if user selected 'coordinates'

if sub_trnstyp = one & sub_trnmthd = two,

[

#Calculate the rotation incremental angle for G68

rt_csav = atan2(sub_m2, sub_m1)

rt_cinc = prv_rt_csav - rt_csav

while rt_cinc > 180, rt_cinc = rt_cinc - 360

while rt_cinc < -180, rt_cinc = rt_cinc + 360

if rot_ccw_pos = one, rt_cinc = -rt_cinc

!rt_csav

if sub_sec_no, mr_rt_actv = two

else, mr_rt_actv = one

]

else, mr_rt_actv = zero

pfcalc_u_min

pmotion_su

 

pxyzcout #Map coordinates

if rot_on_x,

[

if cuttype = zero, pxyzcout0 #Toolplane Positioning

if cuttype = one, pxyzcout1 #Axis Substitution

if cuttype = two, pxyzcout2 #Polar Conversion

if cuttype = three, pxyzcout3 #Simulatneous 4 axis (Multi-axis)

if rot_ccw_pos = one, csav = -csav

if mr_rt_actv <> two,

[

pcoutrev

if index, pindxcalc

pfcalc

]

else, feed = fr_pos

]

else,

[

xabs = vequ (x)

feed = fr_pos

]

 

pxyzcout0 #Toolplane Positioning

xabs = vequ (x)

if rot_on_x = two, csav = -c

else, csav = c

 

pxyzcout1 #Axis substitution

if rot_on_x = one, #X axis substitution

[

xabs = x

yabs = zero

zabs = z + (rotdia / two)

csav = -y * (360 / (pi * rotdia))

]

else, #Y axis substitution

[

xabs = zero

yabs = y

zabs = z + (rotdia / two)

csav = -x * (360 / (pi * rotdia))

]

 

pxyzcout2 #polar interpolation

#Drill polar is toolplane drilling toward center

#if not a coincident axis

#Also, Capture initial index position for Polar Milling

if (opcode = three & rot_on_x <> three), pxyzcout0

else,

[

if rot_on_x = one, #X axis rotation

[

csav = atan2(y, z) #Z+ zero

axisx = vequ(aaxisx)

xabs = rotp(csav, x)

]

if rot_on_x = two, #Y axis rotation

[

csav = atan2(-x, z) #Z+ zero

axisx = vequ(baxisx)

xabs = rotp(csav, x)

]

if rot_on_x = three, #Z axis rotation

[

csav = atan2(-y, x) #X+ zero

axisx = vequ(caxisx)

xabs = rotp(csav, x)

]

csav = csav + c

]

 

pxyzcout3 #Multisurf rotary axis motion

if rot_on_x = one, #Multisurf Rotary about X

[

csav = atan2 (vtooly, vtoolz)

axisx = vequ (aaxisx)

]

if rot_on_x = two, #Multisurf Rotary about Y

[

csav = atan2 (-vtoolx, vtoolz)

axisx = vequ (baxisx)

]

xabs = rotp (csav, x)

u = rotp (csav, u)

csav = csav + c

 

pcoutrev #Rotary axis revolution calculation (Modify for wind-up)

cdelta = csav - prv_csav

while abs(cdelta) > ctol, #If motion exceeds ctol, add wind-up

[

if cdelta > zero,

[

rev = rev - one

cdelta = cdelta - 360

]

else,

[

rev = rev + one

cdelta = cdelta + 360

]

]

if cuttype <> one, cabs = rev * 360 + csav

else, cabs = sav_rev * 360 + csav

!csav

 

pindxcalc #Index move calculations, direction is shortest

#Check if in tolerance

cdelta = frac(abs(csav)/ctable)

if cdelta > ixtol & cdelta < 1-ixtol,

result = mprint(sindxerror)

cdelta = prvcabs - cabs

#Phase shift delta 10 revolutions, check odd/even

if frac(int((cdelta + 3600)/180)/two), indx_mc = one

else, indx_mc = zero

#Set range 0-360

indx_out = csav

while indx_out < 0, indx_out = indx_out + 360

while indx_out > 360, indx_out = indx_out - 360

 

#Feedrate calculations

pfcalc #Feedrate calculations, gcode 0 does not evaluate

if gcode <> zero,

[

if fmtrnd(cabs) = prvcabs | index, pfcalc_u_min

else,

[

if cuttype = one & (cutpos2 <= one | cutpos2 = four),

pfcalc_u_min

else, pfclc_deg_inv

]

if ipr_type <> prv_ipr_type, prv_feed = c9k

]

 

pfcalc_u_min #Feedrate unit/min

ipr_type = zero

feed = fr_pos

if feed > maxfeedpm, feed = maxfeedpm

prvfrdeg = feed

 

pfclc_deg_inv #Feedrate deg/min

circum = zabs * two * pi

if circum = zero, circum = c9k #Don't allow Zero

ldelta = sqrt((xabs-prv_xabs)^2+(yabs-prv_yabs)^2+(zabs-prv_zabs)^2)

cdelta = ((abs(cabs - prvcabs))/360)*circum

if ldelta = zero, cldelta = cdelta

else, cldelta = sqrt(cdelta^two + ldelta^two)

if cldelta = zero, cldelta = c9k

if use_frinv,

[

#Feedrate inverse calculation

ipr_type = two

prv_feed = c9k #Always force feed

frinv = fr_pos/cldelta

if frinv > maxfrinv, frinv = maxfrinv

feed = frinv

]

else,

[

#Feedrate deg/min control and calculation

ipr_type = zero #Change to ipr_type = one to force new DPM

frdeg = abs(cdelta/cldelta) * abs(fr_pos * (360/circum))

if abs(frdeg - prvfrdeg) > frdegstp | ipr_type <> prv_ipr_type,

[

#Control output of frdeg

prvfrdeg = frdeg

feed = frdeg

]

if frdeg > maxfrdeg, feed = maxfrdeg

]

 

#Incremental calculations

ps_inc_calc #Incremental calculations, start

xia = fmtrnd(xabs)

yia = fmtrnd(yabs)

zia = fmtrnd(zabs)

xinc = vsub (xia, prv_xia)

ps_cinc_calc

 

ps_cinc_calc #Incremental calculations, start rotary

cia = fmtrnd(cabs)

cinc = cia - prv_cia

 

pe_inc_calc #Incremental calculations, end

prvcabs = fmtrnd(cabs) #Avoid updating until called explicitly

!xia, !yia, !zia, !cia

!x, !y, !z

 

# --------------------------------------------------------------------------

# G10 tool offset (L11) preloads & cancel write, read, output routines

# --------------------------------------------------------------------------

#This section is designed to allow the user to output the many different G10 L10 - L13

#Tool offset settings for preload and cancel. By default the L11 is supportted but can

#be replaced or additional L output can be added. Additional variable data can be written to

#The buffer and extracted from it. If you do not know how to use buffers, please contact your

#Mastercam dealer or CNC Software's post Department

wc3 : 1 #Initial count for write buffer 3

rc3 : 1 #Initial count for read buffer 3

size3 : 0 #Buffer 3 size

 

fmt P 4 offset3 #Buffer 3

 

offsetn : 0 #Next buffer variables

 

fbuf 3 0 1 0 #Buffer 3 definintion

 

preloadtloff #Read tool offset buffer and write to NC file

#This postblock is called from the PSOF and PEOF postblocks and only if the use_g10tloff flag is on.

#This postblock is responsible for reading the tool offset buffer and outputting the preloads or cancel

#to the NC output file.

pg10sortl12

rc3 = 1

size3 = rbuf (3, 0)

"G90", e

while rc3 <= size3,

[

offset3 = rbuf (3, rc3)

pbld, n, sgabsinc, "G10", "L11", *offset3, "R0", e

]

 

pg10sortl12 #Sort preload work offsets in accending order

#This postblock is designed to sort the tloffno preload buffer in accending order. This postblock is called

#from the preloadtloff postblock. DO NOT MODIFY this post block unless you are absolutely sure of what you

#are doing.

rc3 = 1

size3 = rbuf (3, 0)

 

cnt1 = 1 #intialize counters

cnt2 = 1 #intialize counters

 

while cnt1 < size3, #loop 1 - loop 1 time less than the size of the buffer

[

size3 = rbuf (3, 0)

while cnt2 <= size3 - cnt1, #loop 2 - loop 1 less every time

[

rc3 = cnt2 #set buffer read counter to current loop counter value (Current record to read)

offset3 = rbuf (3, rc3) #Read current and next record from buffer

offsetn = rbuf (3, rc3)

if offsetn < offset3, #Check and swap records if next offset is less than current

[

wc3 = cnt2 #initalize write counter to current loop counter value (current record to write)

offsetn = wbuf (3, wc3) #Swap records by writing back into buffer. Next into current, current into next

offset3 = wbuf (3, wc3)

]

cnt2 = cnt2 + 1 #increment loop counter 2

]

cnt2 = 1 #Reset loop counter 2 to start at record 1

cnt1 = cnt1 + 1 #increment loop counter 1

]

 

 

 

pg10tloff_writbuf #Buffer 2 works offset preload buffer

#This postblock is called from pwrtt and only if the use_g10tloff variable is on.

#This postblock is designed to write out the tool offsetinformation to buffer 3 the

#preload buffer. The preload buffer will be scanned and checked to see if the tloffno was already

#written to the buffer, if not the wcs is written to the buffer.

test = 0

size3 = rbuf(3, 0) #Get size of buffer

#read buffer and compare current tloffno value with one read from buffer.

#If current tloffno matches one already in buffer set flag to not process.

 

while rc3 <= size3,

[

offset3 = rbuf (3, rc3)

if tloffno = offset3, test = 1

]

 

#If tloffno doesn't match one in the buffer, write it to the buffer

 

if test = 0,

[

offset3 = tloffno

offset3 = wbuf (3, wc3)

]

rc3 = 1 #reset read counter for next pass

 

# --------------------------------------------------------------------------

# G10 work offset preloads write, sort, read, output routines

# --------------------------------------------------------------------------

#This section is designed to write the work offsets preloads to a buffer file, then sort them

#into accesding order and eventually output the preloads to the NC output files. These sections

#only get called if the use_g10wcs flag is on.

# Work offset preload buffer

test : 0 #Result variable

cnt1 : 0 #Loop counter number 1 for sort

cnt2 : 0 #Loop counter number 2 for sort

wc2 : 1 #Initial count for write buffer 2

rc2 : 1 #Initial count for read buffer 2

size2 : 0 #Buffer 2 size

 

toz3 = toz2 - 26.378 #Figures Z Offset from machine zero

toy3 = toy2 - 25.1969 #Figures Y Offset from machine zero

fmt W 4 workofs2 #Buffer 2

fmt P 4 pofs2 #Buffer 2

fmt X 2 tox2 #Buffer 2

fmt Y 2 toy2 #Buffer 2

fmt Z 2 toz2 #Buffer 2

fmt B 2 cout2 #Buffer 2

fmt Z 2 toz3 #Writes Z Offset from machine zero

fmt Y 2 toy3 #Buffer 2 Offset from machine zero

 

 

workofsn : 0 #Temporary data for swap in buffer2

pofsn : 0 #Temporary data for swap in buffer2

toxn : 0 #Temporary data for swap in buffer2

toyn : 0 #Temporary data for swap in buffer2

tozn : 0 #Temporary data for swap in buffer2

coutn : 0 #Temporary data for swap in buffer2

 

fbuf 2 1 6 0 #Buffer 2

# --------------------------------------------------------------------------

preloadwcs #Output G10 preloads from Buffer2

#This postblock is called from the PSOF postblock and is designed to output the WCS

#preloads to the beggining of the NC output file and only if the use_g10wcs flag is active.

pg10sort #Sort preload buffer in accesnding order before output

 

#read preload buffer and output preloads

rc2 = 1

size2 = rbuf (two, 0)

while rc2 <= size2,

[

workofs2 = rbuf (two, rc2)

if workofs2 > 53, pbld, n, sgabsinc, "G10", "L2", *pofs2, *tox2, *toy3, *toz3, *cout2, e #Offsets G54 - G59

else, pbld, n, sgabsinc, "G10", "L20", *pofs2, *tox2, *toy3, *toz3, *cout2, e #Extended offsets g54.1 P1 - P48

]

 

 

pg10sort #Sort preload work offsets in accending order

#This postblock is designed to sort the wcs preload buffer in accending order. This postblock is called

#from the preloadwcs postblock. DO NOT MODIFY this post block unless you are absolutely sure of what you

#are doing.

rc2 = 1

size2 = rbuf (two, 0)

 

cnt1 = 1 #intialize counters

cnt2 = 1 #intialize counters

 

while cnt1 < size2, #loop 1 - loop 1 time less than the size of the buffer

[

size2 = rbuf (two, 0)

while cnt2 <= size2 - cnt1, #loop 2 - loop 1 less every time

[

rc2 = cnt2 #set buffer read counter to current loop counter value (Current record to read)

workofs2 = rbuf (two, rc2) #Read current and next record from buffer

workofsn = rbuf (two, rc2)

if workofsn < workofs2, #Check and swap records if next offset is less than current

[

wc2 = cnt2 #initalize write counter to current loop counter value (current record to write)

workofsn = wbuf (two, wc2) #Swap records by writing back into buffer. Next into current, current into next

workofs2 = wbuf (two, wc2)

]

cnt2 = cnt2 + 1 #increment loop counter 2

]

cnt2 = 1 #Reset loop counter 2 to start at record 1

cnt1 = cnt1 + 1 #increment loop counter 1

]

 

 

pg10wcs_writbuf #Buffer 2 works offset preload buffer

#This postblock is called from pwrtt and only if the use_g10wcs flag is active.

#This postblock is designed to write out the WCS and tool origin information to the

#preload buffer. The preload buffer will be scanned and checked to see if the WCS was already

#written to the buffer, if not the wcs is written to the buffer.

test = 0

size2 = rbuf(2, 0) #Get size of buffer

 

#read buffer and compare current workofs value with one read from buffer.

#If current workofs matches one already in buffer set flag to not process.

 

while rc2 <= size2,

[

workofs2 = rbuf (2, rc2)

if workofs = workofs2, test = 1

]

 

#If workofs doesn't match one in the buffer, write it to the buffer

# with the P value and tool origin.

 

if test = 0,

[

cout2 = atan2 (m7, -m8)

workofs2 = workofs

pofs2 = workofs - 53

if workofs2 < 54, pofs2 = workofs #Extened offsets P1 - P48

tox2 = tox

toy2 = toy

toz2 = toz

# cout2 = cout

workofs2 = wbuf (2, wc2)

]

rc2 = 1 #reset read counter for next pass

 

pwrtt #Buffer toolchange information

# Call to save work offset and tool origin to buffer for output at SOF.

if use_g10wcs = yes, pg10wcs_writbuf

if use_g10tloff = yes & opcode <> 3, pg10tloff_writbuf #don't output for drilling tools

 

 

 

 

# --------------------------------------------------------------------------

# Numbered questions for Mastercam Version 8

# --------------------------------------------------------------------------

38. Rapid feedrate? 1187.0

76. Name of associated CFG file?

400. Name of associated CFG file?

1538. Rapid feedrate (metric)? 10000.0

 

#76. Configuration file name?

80. Communications port number for receive and transmit (1 or 2) ? 2

81. Data rate (110,150,300,600,1200,2400,4800,9600,14400,19200,38400)? 19200

82. Parity (E/O/N)? E

83. Data bits (7 or 8)? 7

84. Stop bits (1 or 2)? 2

85. Strip line feeds? N

86. Delay after end of line (seconds)? 0

87. Ascii, Eia, or Binary (A/E/B)? A

88. Echo keyboard to screen in terminal emulation? n

89. Strip carriage returns? N

90. Drive and subdirectory for NC files?

91. Name of executable post processor? MP

92. Name of reverse post processor? RP

93. Reverse post PST file name? RPFAN

100. Number of places BEFORE the decimal point for sequence numbers? 3

101. Number of places AFTER the decimal point for sequence numbers? 0

103. Maximum spindle speed? 14000

107. Average time for tool change (seconds)? .8

#110. Default tool library? TOOLS.TL8

159. Compensate the first and last point in cutter comp. in control simulation? y

160. Display first and last entity in toolpath when simulating cutter compensation in control? y

161. Enable Home Position button? y

162. Enable Reference Point button? y

163. Enable Misc. Values button? y

164. Enable Rotary Axis button? y

165. Enable Tool Plane button? y

166. Enable Construction Plane button? y

167. Enable Tool Display button? y

168. Check tplane during automatic work origin creation? y

 

# --------------------------------------------------------------------------

# Default Miscellaneous Real Values

# --------------------------------------------------------------------------

201. Default miscellaneous real variable 1 (mr1)? 0.0

202. Default miscellaneous real variable 2 (mr2)? 0.0

203. Default miscellaneous real variable 3 (mr3)? 0.0

204. Default miscellaneous real variable 4 (mr4)? 0.0

205. Default miscellaneous real variable 5 (mr5)? 0.0

206. Default miscellaneous real variable 6 (mr6)? 0.0

207. Default miscellaneous real variable 7 (mr7)? 0.0

208. Default miscellaneous real variable 8 (mr8)? 0.0

209. Default miscellaneous real variable 9 (mr9)? 0.0

210. Default miscellaneous real variable 10 (mr10)? 0.0

 

# --------------------------------------------------------------------------

# Default Miscellaneous Real Values (METRIC)

# --------------------------------------------------------------------------

1601. Default miscellaneous real variable 1 (mr1) (metric)? 0.0

1602. Default miscellaneous real variable 2 (mr2) (metric)? 0.0

1603. Default miscellaneous real variable 3 (mr3) (metric)? 0.0

1604. Default miscellaneous real variable 4 (mr4) (metric)? 0.0

1605. Default miscellaneous real variable 5 (mr5) (metric)? 0.0

1606. Default miscellaneous real variable 6 (mr6) (metric)? 0.0

1607. Default miscellaneous real variable 7 (mr7) (metric)? 0.0

1608. Default miscellaneous real variable 8 (mr8) (metric)? 0.0

1609. Default miscellaneous real variable 9 (mr9) (metric)? 0.0

1610. Default miscellaneous real variable 10 (mr10) (metric)? 0.0

 

# --------------------------------------------------------------------------

# Enable/Disable Miscellaneous Real Variable switches

# --------------------------------------------------------------------------

1611. Enable miscellaneous real variable 1? y

1612. Enable miscellaneous real variable 2? y

1613. Enable miscellaneous real variable 3? y

1614. Enable miscellaneous real variable 4? y

1615. Enable miscellaneous real variable 5? y

1616. Enable miscellaneous real variable 6? y

1617. Enable miscellaneous real variable 7? y

1618. Enable miscellaneous real variable 8? y

1619. Enable miscellaneous real variable 9? y

1620. Enable miscellaneous real variable 10? y

 

 

# --------------------------------------------------------------------------

# Default Miscellaneous Integer Values

# --------------------------------------------------------------------------

301. Work Coordinates [0-1=G92, 2=G54's] (mi1)? 2

302. Absolute or Incremental [0=ABS, 1=INC] (mi2)? 0

303. Reference Return [0=G28, 1=G30] (mi3)? 1

304. Miscellaneous integer variable 4 (mi4)? 0

305. Miscellaneous integer variable 5 (mi5)? 0

306. Miscellaneous integer variable 6 (mi6)? 0

307. Miscellaneous integer variable 7 (mi7)? 0

308. Miscellaneous integer variable 8 (mi8)? 0

309. Miscellaneous integer variable 9 (mi9)? 0

310. Miscellaneous integer variable 10 (mi10)? 0

 

# --------------------------------------------------------------------------

# Enable/Disable Miscellaneous Integer Variable switches

# --------------------------------------------------------------------------

1621. Enable miscellaneous integer variable 1? y

1622. Enable miscellaneous integer variable 2? y

1623. Enable miscellaneous integer variable 3? y

1624. Enable miscellaneous integer variable 4? y

1625. Enable miscellaneous integer variable 5? y

1626. Enable miscellaneous integer variable 6? y

1627. Enable miscellaneous integer variable 7? y

1628. Enable miscellaneous integer variable 8? y

1629. Enable miscellaneous integer variable 9? y

1630. Enable miscellaneous integer variable 10? y

 

 

# --------------------------------------------------------------------------

# Configuration File association parameters (default is "y")

# --------------------------------------------------------------------------

#400. Name of associated cfg file?

401. Read SYSTEM COLORS section? y

402. Read ALLOCATIONS section? y

403. Read TOLERANCES section? y

404. Read DATA PATHS section? y

405. Read COMMUNICATIONS section? y

406. Read DRAFT SETTINGS section? y

407. Read MISCELLANEOUS section? y

408. Read NC SETTINGS section? y

409. Read DIALOG SCRIPTS section? y

410. Read DESIGN SETTINGS section? y

411. Read PLOTTER SETTINGS section? y

412. Read ALT-KEY ASSIGNMENTS section? y

413. Read CAD section? y

414. Read START/EXIT section? y

415. Read SCREEN section? y

416. Read FILE NAMES section? y

 

1500. Chook to execute from 'Misc. values' button?

1501. Insert parameter information in the ascii NCI? n

1502. Write operation information to binary file (.ops)? n

1503. Write transform operations (0=transform ops, 1=source ops, 2=both)? 1

 

 

1520. Display a warning when cutter compensation in control simulation finds an error? n

 

1521. Number of controller look-ahead blocks for CDC in control? 2

 

1530. Ignore work offset numbers when processing subprograms? y

1531. Ignore contour flags when processing subprograms? y

 

# Do NOT manually change the answer for Q.1999 !

1999. Product major version number that post supports? 9

 

3001. Machine acceleration? 2

3002. timing size? .1

 


Link to comment
Share on other sites

David, somewhere on Jays ftp site is a zip file called vertical_G10.zip which contains a V9 post and text file and a sample mc9 file to try it out. It is setup for a vertical but that is just a switch in the post to switch it to horizontal. This post creates a G10 list at the top of the file, not really what you want. I beleive without too much post editing it could be made to do what you want. Turn off the list at the top of the file and then read the buffer at the start of each sub. Without actually doing it I don't know how long it would take but I beleive it should be doable.

 

 

HTH

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.

Join us!

eMastercam - your online source for all things Mastercam.

Together, we are the strongest Mastercam community on the web with over 56,000 members, and our online store offers a wide selection of training materials for all applications and skill levels.

Follow us

×
×
  • Create New...