65
NX 10.0 POST BUIDER Biên soạn:KS.Phan Văn Tú Page 1 CHUYÊN ĐỀ: CAM Post Builder Sinumerik controller support View a topic Sinumerik template posts Events and cycles for Sinumerik controllers in NX Procedures and settings Cycle832 Cycle95 Add the Sinumerik 840D events in NX Modify the mill method to support CYCLE832 Set _camtolerance for Cycle832 Define the machine’s home position coordinates ORIRESET and TRAORI Match the swivel data record of CYCLE800 Machine home position Sinumerik template posts The following template posts support Sinumerik controllers for mills: Sinumerik_802D_3axis Sinumerik_828D Sinumerik_840D Sinumerik_840D_millturn The Sinumerik_840D_lathe template post supports lathes: Where do I find it? Post Builder template posts Application Post Builder Menu FileNew Location in dialog box Controller group→Library list Events and cycles for Sinumerik controllers in NX Supported Sinumerik cycles are documented in Chapter 10 of the file Working_with_OOTB_MACH_Simulation_Examples.pdf in your ...\MACH\samples\nc_simulation_samples folder. Sinumerik 840D Sets default settings including tolerance, high speed machining parameters, five axis orientation parameters, and whether the feed rate is defined in a variable.

Book Ly Thuyet CAM-Post Builder

Embed Size (px)

DESCRIPTION

t7y

Citation preview

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 1

    CHUYN : CAM Post Builder

    Sinumerik controller support

    View a topic

    Sinumerik template posts

    Events and cycles for Sinumerik

    controllers in NX

    Procedures and settings

    Cycle832

    Cycle95

    Add the Sinumerik 840D events in NX

    Modify the mill method to support

    CYCLE832

    Set _camtolerance for Cycle832

    Define the machines home position coordinates

    ORIRESET and TRAORI

    Match the swivel data record of

    CYCLE800

    Machine home position

    Sinumerik template posts

    The following template posts support Sinumerik controllers for mills:

    Sinumerik_802D_3axis

    Sinumerik_828D

    Sinumerik_840D

    Sinumerik_840D_millturn

    The Sinumerik_840D_lathe template post supports lathes:

    Where do I find it?

    Post Builder template posts

    Application Post Builder

    Menu FileNew

    Location in dialog box Controller groupLibrary list

    Events and cycles for Sinumerik controllers in NX

    Supported Sinumerik cycles are documented in Chapter 10 of the file

    Working_with_OOTB_MACH_Simulation_Examples.pdf in your

    ...\MACH\samples\nc_simulation_samples folder.

    Sinumerik

    840D

    Sets default settings including tolerance, high speed machining parameters,

    five axis orientation parameters, and whether the feed rate is defined in a

    variable.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 2

    You can add the Sinumerik 840D start event for:

    A single milling operation

    The lowest level program group in the Program view of the

    Operation Navigator.

    The Compressor option works only with linear motion. If the Compressor

    option is set to On, the post will disable circular output, and output only

    linear motion.

    If you choose Swiveling in the Transformation option of the

    Sinumerik_840D user-defined event, CYCLE800 is output and

    transformation is turned off (TRAFOOF), otherwise TRANS/AROT is

    output for coordinate translation and rotation.

    You can set the number of significant digits for the output format, and the

    appropriate rounding resolutions, with the custom commands

    PB_CMD_reset_output_digits and PB_CMD_set_resolution.

    DNC Header Makes the NC output file accessible to the Siemens Motion Control

    Information System (MCIS) by appending the following comments and

    values to the file before the % (start of tape) symbol:

    ;HEADER-START

    ;NODENAME=$mom_dnc_machine_name

    ;NCDATANAME=$mom_dnc_program_name

    ;NCDATATYPE=$mom_dnc_data_type

    ;VERSION=$mom_dnc_version_number

    ;RELEASEID=$mom_dnc_release_number

    ;DEVELNAME=$mom_dnc_user_name

    ;HEADER-END

    ;NC-START

    %

    Add the user-defined event to the top working program group under

    NC_PROGRAM in your milling program.

    Sinumerik

    Program

    Control

    Lets you call external subroutines. Used by MOM_program_control,

    PB_CMD_MOM_program_control, PB_CMD_start_of_extcall_operation,

    PB_CMD_end_of_extcall_operation, PB_CMD_end_of_extcall_program,

    and other procedures.

    Add the event to a program group for the Sinumerik_840D and

    Sinumerik_828D template posts. Do not add it to operations.

    Where do I find it?

    Application Manufacturing

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 3

    Menu InsertOperation

    Location in dialog

    box Operation dialog boxMachine Control groupEdit (Start of Path Events)

    Procedures and settings

    PB_CMD_set_Sinumerik_default_setting

    Set the post default settings (mills only) according to the Sinumerik version. If the

    sinumerik_version is not set, the procedure returns without making any settings.

    Interprets the On and Off parameters from the event dialog box and the controller version

    to sets the appropriate values for variables.

    PB_CMD_set_Sinumerik_V7_default_setting

    Set the post default settings (802D_3axis) for Sinumerik version 7.

    PB_CMD_set_Sinumerik_Version

    Sets the Sinumerik version. The default is value is V7.

    Sinumerik version 6 and later support CYCLE832 high speed machining G code output.

    Cycle832

    To output CYCLE832 parameters, set PB_CMD_set_Sinumerik_version to V6 or V7.

    V6 and V7 have different CYCLE832 codes, as shown in the following examples.

    Sinumerik

    version Output example differences

    V5

    FGREF[C]=10

    FGREF[A]=10

    $MA_COMPRESS-POS_TOL[X]= _camtolerance*1.2

    $MA_COMPRESS-POS_TOL[Y]= _camtolerance*1.2

    $MA_COMPRESS-POS_TOL[Z]= _camtolerance*1.2

    $MA_COMPRESS-POS_TOL[C]= _camtolerance*12

    $MA_COMPRESS-POS_TOL[A]= _camtolerance*12

    NEWCONF

    FFWON

    UPATH

    SOFT

    COMPCURV

    G642

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 4

    V6

    FGREF[C]=10

    FGREF[A]=10

    CYCLE832(_camtolerance,112100)

    The Compressor, Smoothing, Feed Forward, and Transformation

    options set the corresponding bit of the second parameter of CYCLE832.

    The last bit of the second parameter of CYCLE832 defines the machining

    method.

    V7

    CYCLE832(_camtolerance,0,1)

    The Compressor, Smoothing, Feed Forward, and Transformation

    options do not affect the CYCLE832 output code.

    The second parameter of CYCLE 832 defines the machining method.

    Note The machining method is set in the Mill Method dialog box. To open the Mill Method

    dialog box, in an operation dialog box, in the Path Settings group, beside Method, click

    Edit .

    Cycle95

    The NX turning processor supports output for the Siemens Sinumeric 840ds CYCLE95 stock removing cycle in the following operation types:

    FACING

    ROUGH_TURN_OD

    ROUGH_BACK_TURN

    ROUGH_BORE_ID

    ROUGH_BACK_BORE

    FINISH_TURN_OD

    FINISH_BORE_ID

    FINISH_BACK_BORE

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 5

    Cycle parameters are automatically mapped from NX CAM turning parameters. Knowledge of

    specific output parameters is not required.

    Note The IPW that is created by existing operations which are capable of CYCLE95 output is

    used by subsequent operations. This IPW will be only an approximation of the actual

    CYCLE95 results.

    The Post Builder template post for the Siemens Sinumerik 840D Controller has been updated to

    include support for CYCLE95.

    The contour definition for CYCLE95 is output in the form of a subprogram. You can output the

    subprogram in one of these ways:

    In-line with the main program

    At the end of main program

    In a separate SPF file

    On the shop floor, the machine operator can adjust a single line of code, for example to change

    the cut depth per pass. To make the same change with conventional output, many lines of code

    must be recalculated.

    Where do I find it?

    Application NX

    Prerequisite

    Create or edit a turning operation of a type listed in the preceding

    article.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 6

    Location in dialog

    box Machine ControlMotion OutputMachine Cycle

    Application Post Builder

    Prerequisite Create or edit a SIEMENS SinumeriK_840D_lathe post.

    Location dialog

    box

    Program & Tool PathCustom CommandPB_CMD_init_cycle95_output

    Add the Sinumerik 840D events in NX

    1. In the ...\MACH\resource\user_def_event folder, remove the # from # INCLUDE {$UGII_CAM_USER_DEF_EVENT_DIR/Siemens_Cycles.cdl}

    This also makes additional parameters, such as Top Dwell and Final Dwell, available in

    the Cycle Parameters dialog box for Hole Making operations.

    2. In an operation dialog box, in the Machine Control group, beside Start of Path Events,

    click Edit .

    3. In the User Defined Events dialog box, from the Events Available list, select Sinumerik 840D.

    4. Click Add new event . 5. In the Sinumerik 840D dialog box, specify the options you need, and click OK.

    Consult your current Sinumerik manuals for explanations of the purpose and usage of

    each option.

    6. Click OK to close the User Defined Events dialog box. 7. Click OK to save the operation.

    Modify the mill method to support CYCLE832

    This procedure is for Sinumerik 840D version 6 or later

    1. In an operation dialog box, in the Path Settings group, from the Method list, select the appropriate method.

    2. Next to Method, click Edit .

    3. In the Mill Method dialog box, in the Path Settings group, click Edit .

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 7

    4. In the Search Result dialog box, from the Matching Items list, select one of the following options to support CYCLE832:

    o OPD0_00021, roughing

    Sample code output: CYCLE832 ( _camtolerance, 1112103)

    o OPD0_00022, semi-finishing

    Sample code output: CYCLE832 ( _camtolerance, 1112102)

    o OPD0_00023, finishing

    Sample code output: CYCLE832 ( _camtolerance, 1112101)

    o OTHERS, prismatic

    Sample code output: CYCLE832 ( _camtolerance, 1112100)

    5. Click OK to close the Search Result dialog box. 6. Click OK to close the Mill Method dialog box. 7. Click OK to save the operation.

    Set _camtolerance for Cycle832

    For all versions, the default value of _camtolerance is the average of the Intol and Outtol values

    defined in the operation. To output a different value for _camtolerance:

    1. In NX, add the Sinumerik 840D UDE start event. 2. In the Sinumerik 840D dialog box, in the Tolerance group, select the User Defined

    Tolerance Status checkbox.

    3. In the User Defined Tolerance box, type the tolerance value that you want to use. 4. Click OK until the operation is saved.

    Define the machines home position coordinates

    To output the safe home position for your machine:

    1. In the Post Builder application, click the Machine Tool tab. 2. Under Display Machine Tool, click General Parameters. 3. In the Home Position group, enter the appropriate X, Y, and Z values. 4. ORIRESET and TRAORI 5. To change the output order of TRAORI and rotary angles, ORIRESET must output after

    TRAORI. ORIRESET is available in Sinumerik software version V7.

    6. In the template post, ORIRESET is output by the command PB_CMD_preset_angle. 7. Match the swivel data record of CYCLE800

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 8

    8. The _TC parameter in CYCLE800 is the name of the swivel data record, and must exactly match the swivel data record name for your machine.

    9. To change the output, modify _TC in the CYCLE800 macro as shown.

    Parameter Expression

    _TC \R_DATA\

    10. The output would be similar to the following example. 11. CYCLE800(1,R_DATA,0,57,0.40,0,-45.0,0,0,0,0,-1) 12. If there is only one swivel data record, it could be blank as shown in the following

    example.

    13. CYCLE800(1,"",0,57,0.40,0,45.0,0,0,0,0,-1) Machine home position

    The template post outputs a return motion to the machine home position before a tool change,

    after a tool change, and at the end of an operation. For example:

    SUPA G0 Z=_Z_HOME D0

    SUPA G0 X=_X_HOME Y=_Y_HOME C=_C_HOME A=_A_HOME D1

    Note D is the Tool Adjust Register value set in the operation.

    The default X, Y, and Z values for safe home position are:

    _X_HOME=999999.9

    _Y_HOME=999999.9

    _Z_HOME=999999.9

    Legacy postprocessor conversion

    View a topic

    Pre V3.4 Mill posts

    Pre V3.3 Lathe Posts

    Pre V3.1 multi-axis posts

    Pre V3.0 XZC Simple Mill-Turn Posts

    Pre V3.0 Linked Posts

    Correct pre V2.0.2 XZC Mill and Simple

    Mill-Turn Posts

    Pre V3.4 Mill posts

    Preserving New IKS Parameters

    In Post Builder 3.3 or earlier, custom commands such as PB_CMD_init_new_iks were used to

    enable the new IKS functionality. Parameters specified in any of these custom commands are

    extracted and preserved with the posts when saved in this version of Post Builder. Interactively,

    these parameters are presented in the appropriate dialog boxes when a post is open. However, the

    parameters are not preserved if the new IKS service was not enabled (mom_kin_iks_usage = 0)

    in the custom command. Default values for the new IKS parameters are presented instead.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 9

    These legacy custom commands are no longer needed but are retained with the posts for your

    reference. You can delete them manually.

    Swapping Rotary Axes of Dual-Head Posts

    The assignments of rotary axes in all dual-head 5-axis mill posts created before this version of

    Post Builder were intentionally switched to accommodate certain short comings with the legacy

    inverse kinematics solver. The rotary axes assignments are corrected when a post is saved with

    this version of Post Builder.

    Kinematic parameters for the 4th rotary axis are swapped with that of the 5th axis.

    The custom command PB_CMD_revert_dual_head_kin_vars is provided for all 5-axis mill

    posts and is used to swap the kinematic parameters of the dual rotary heads. Use this custom

    command whenever the new IKS is disabled.

    VNC of Dual Rotary Heads

    Prior to NX 4, the NC axes assignment in a VNC file required a custom command. To convert

    the file, manually edit the custom command.

    Legacy Posts using ugpadvkins.dll

    The new IKS service is disabled for dual-head mill posts using the ugpadvkins.dll shared library.

    The kinematic parameters assigned for the dual rotary heads are swapped as described above.

    Pre V3.3 Lathe Posts

    The custom command PB_CMD_output_spindle used by any legacy lathe posts to output a

    block for setting the maximum spindle speed requires the following entry:

    if {$mom_spindle_maximum_rpm > 0} {

    MOM_do_template spindle_max_rpm

    }

    Example

    #=============================================================

    proc PB_CMD_output_spindle { } {

    #=============================================================

    global mom_spindle_mode

    global spindle_is_out

    global mom_spindle_maximum_rpm

    if {![info exists spindle_is_out]} {

    if {$mom_spindle_mode == "RPM"} {

    MOM_force once M_spindle S G_spin

    MOM_do_template spindle_rpm

    } elseif {$mom_spindle_mode == "SFM" || $mom_spindle_mode == "SMM"} {

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 10

    MOM_force once M_spindle S G G_spin

    # The following line has been changed.

    if {$mom_spindle_maximum_rpm > 0} {

    MOM_do_template spindle_max_rpm

    }

    MOM_do_template spindle_css

    }

    set spindle_is_out 1

    }

    }

    Pre V3.1 multi-axis posts

    Axis Limit Violation Handling for a rotary axis specifies how the postprocessor behaves when

    the system reaches a rotary axis limit. The options are:

    Warning outputs a message to the warning file, but takes no action to correct the axis

    limit violation.

    Retract/Re-engage generates N/C codes that enable the machine-tool to:

    o Retract to clearance geometry (plane, cylinder or sphere) at the retract feed rate.

    o Reposition the rotary axis to a valid position if possible.

    o Re-engage to a specified distance above the part at the approach feed rate.

    o Feed to the previous position where it retracted from at the engage feed rate.

    o Continue moving to the programmed destination.

    Parameters for this control are specified in the custom command PB_CMD_init_rotary

    under Program & Tool PathCustom Command. You can modify the variables mom_kin_retract_type, mom_kin_retract_distance and

    mom_kin_reengage_distance to configure how this functionality behaves.

    The parameter mom_kin_retract_plane has been replaced by mom_kin_retract_distance. The

    parameter PLANE used as one of the options of mom_kin_retract_type in some pre-release

    versions of v3.1 has been replaced by SURFACE. After you save your legacy posts in Post

    Builder v3.1, unless you make changes in the custom command PB_CMD_init_rotary, the

    value of mom_kin_retract_plane is transferred to mom_kin_retract_distance and PLANE is

    automatically interpreted as SURFACE.

    Pre V3.0 XZC Simple Mill-Turn Posts

    The information in the custom commands PB_CMD_init_mill_turn and

    PB_CMD_init_mill_xzc have been converted to dialog box options on the Machine Tool pages

    and removed.

    The custom commands PB_CMD_start_of_mill, PB_CMD_end_of_mill,

    PB_CMD_start_of_turn and PB_CMD_end_of_turn have been converted into event handlers.

    You can now edit these event handlers on the Linked Posts page.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 11

    Pre V3.0 Linked Posts

    The custom command PB_CMD_init_multiple_post of all legacy posts has been converted to

    dialog box options on the Linked Posts page and removed. The custom commands used to start

    and end each head are converted into event handlers. You can now edit these event handlers on

    the Linked Posts page.

    Correct pre V2.0.2 XZC Mill and Simple Mill-Turn Posts

    To correct existing XZC mill posts created in Post Builder version 2.0:

    1. Create a new XZC mill post using the existing post as the controller post. Make sure the new post has the same output units as the existing post.

    2. Transfer your changes of the variables, if any, from the custom commands PB_CMD_kin_mill_turn_initialize and PB_CMD_kin_mill_xzc_init to

    PB_CMD_init_mill_turn and PB_CMD_init_mill_xzc respectively.

    3. Add a line of code containing the return statement at the beginning of both PB_CMD_kin_mill_turn_initialize and PB_CMD_kin_mill_xzc_init commands.

    4. Examine and save the post.

    Postprocessing your tool paths

    Postprocessing overview

    The NX Manufacturing application generates tool paths that are used to manufacture parts. A

    tool path consists of the following:

    Information about tool motion, such as GOTO points, feed rates, and tool axis

    orientation.

    Instructions to the controller that are called events, for example, coolant conditions,

    spindle control, and tool changes.

    Each machine tool and controller combination has different requirements, for example, specific

    M-codes and G-codes, and the sequence of G-codes that is permitted in a program line. This

    information is not in the initial NX tool path.

    Output files

    The NX Post output file can be :

    Verified in NX with the Simulation Control Panel, which simulates machine tool motions

    and material removal.

    Loaded to the controller and run on the shop floor.

    Fully simulated with the VNCK application, which uses the Siemens 840D controllers logic to generate motions, alarms, and so on. The machine tool must be equipped with the

    Siemens Sinumerik 840D controller and VNCK must be configured by the machine tool

    manufacturer

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 12

    NX/Post Builder dialog box overview

    Use the NX/Post Builder dialog box to do the following:

    Define a new post processor in the Create New Post Processor dialog box.

    Edit an existing post processor.

    Manage the available forms of help for the other dialog boxes.

    The dialog box contains only a menu bar, toolbar, and a cue line. Other dialog boxes appear as

    you perform tasks related to post processor definition.

    Suggestions for your current task appear in the cue line in the NX/Post Builder dialog box.

    Where do I find it?

    Menu StartAll ProgramsSiemens NX 8.0Manufacturing ToolsPost Builder

    Defining a new postprocessor

    Use the New command in the Post Builder application to define the following:

    The name and description of your new post processor.

    The type of post to be created: Main Post or Units Only Subpost

    The default output units

    The type of machine tool for which the post is intended

    The controller information

    You can also choose to enable the user defined event editor and user cycle editing by default

    anytime the post is opened for edit.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 13

    Where do I find it?

    Application Post Builder

    Shortcut button New

    Menu FileNew

    Defining and editing main post processors

    The dialog box to define and edit a post processor shows the name of the currently open post

    processor in its title bar.

    The following main tabs are available:

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 14

    Machine Tool Lets you display a generic view of the machine tool, set basic kinematic

    parameters of the machine tool, and set or modify some basic controller

    capabilities, such as whether to output circular records.

    Program &

    Tool Path

    Lets you add code blocks and words, set the format and sequencing for

    controller words, managed linked posts, and more.

    N/C Data

    Definitions

    Lets you modify blocks, words, formats, and word formats; attach user

    defined event files; and inherit user defined events from other posts.

    Output

    settings

    Lets you manage listing file output and listing file content, attach units-

    only subposts, and more.

    Virtual N/C

    Controller

    Lets you configure a virtual numeric controller. Output is compatible only

    with the Tcl-based machine tool driver, or MTD.

    Where do I find it?

    Application Post Builder

    Toolbar NX/Post BuilderOpen

    Menu

    NX/Post BuilderFileOpen

    NX/Post BuilderFileRecently Opened Posts

    Create New Post Processor dialog box OK

    Defining and editing units-only subposts

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 15

    The dialog box to define and edit a post processor shows the name of the currently open post

    processor in its title bar.

    Values from the main post are shown in blue boxes that cannot be changed in this dialog box.

    Values for the units of the subpost appear in white boxes that you can modify.

    The following main tabs are available:

    Units

    Parameters

    Values default to standard conversions of values in the main post.

    If your machine and controller manuals specify different values from the

    automatically converted values, you can set them on this tab.

    WORD Values for word formats are defaulted to the same number of digits, with a

    shift in the decimal point.

    For example, if the format is 4.4 in Inches, it is represented in this dialog

    box as 9999.9999.

    The metric format is automatically converted to 9999.999.

    If your controller recognizes a different format for alternate units, you can

    set it on this tab.

    FORMAT Values for word formats are defaulted to the same number of digits, with a

    shift in the decimal point.

    This tab has formats for absolute coordinates, coordinates, and feed rates.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 16

    Where do I find it?

    Application Post Builder

    Prerequisite

    You must have a main post from NX 8 or later on which to

    base the subpost.

    Toolbar NX/Post BuilderOpen

    Menu

    NX/Post BuilderFileOpen

    NX/Post BuilderFileRecently Opened Posts

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 17

    Create New Post Processor dialog box OK

    Create a mill-turn post

    1. Create a new 2-axis lathe post. 2. Save the 2-axis lathe post using one of the following options:

    o Save it as lathe_tool_tip in the folder where you intend to create your mill-turn

    post.

    o Save it in your postprocessor folder, using a name of your choice.

    3. Create a new mill post and select 3-Axis Mill-Turn (XZC). 4. In the mill post, on the Machine Tool tab, on the General Parameters page, under

    Machine Mode, do one of the following:

    o If you saved the 2-axis lathe post as lathe_tool_tip in the folder where you intend

    to save your mill-turn post, select XZC Mill to automatically use the

    lathe_tool_tip post.

    o If you saved your lathe post in your postprocessor folder using a name of your

    choice, select Simple Mill-Turn and click Select Name to navigate to your lathe

    post.

    5. Complete your mill post and save it to the folder where you saved your lathe post. 6. In NX, on the Navigator toolbar, click Geometry 7. Make sure that all the lathe tool paths are in the MCS_SPINDLE group object. 8. Make sure that all the mill tool paths are in the MCS_MILL group object. 9. Postprocess your tool paths. 10. Customizing Post Builder 11. Post Builder allows you to customize the appearance of the dialogs. Work with the

    following two files to make your customization changes.

    12. ui_pb_resource.tcl 13. You can modify this file to change the default font sets, labels, messages and text strings

    that appear throughout Post Builder. Only the system administrator should change this

    file. This file resides in the POSTBUILD/app/ui directory.

    14. ui_pb_user_resource.tcl 15. You can modify this file to overwrite the ui_pb_resource.tcl file. This file also resides in

    the POSTBUILD/app/ui directory. You should copy this file to your home directory in

    order to personally customize the appearance and behavior of Post Builder.

    16. On Unix this directory is /users/log_name. 17. On Windows this directory is found by typing echo %homedrive%%homepath% from a

    DOS command prompt.

    18. The following example allows you to change the font appearance on your display, either increase or decrease the size of the numbers in the file. Only change the value of the

    numbers or the name of the browser.

    19. You can change other features as well. 20. ########################################################################

    ######

    21. # UI_PB_USER_RESOURCE.TCL

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 18

    22. ##############################################################################

    23. # Description 24. # This file defines personalized resources for the Post Builder. 25. # 26. ########################################################################

    ######

    27. global gPB env Tcl_platform tixOption 28. #======================== 29. # Font set specification 30. #======================== 31. if {$tcl_platform(platform) == "windows"} \ 32. { 33. set gPB(font) {ansi 8} 34. set gPB(font_sm) {ansi 6} 35. set gPB(bold_font) {ansi 8 bold} 36. set gPB(bold_font_lg) {ansi 10 bold} 37. set gPB(italic_font) {ansi 8 italic bold} 38. set gPB(fixed_font) {courier 8} 39. set gPB(fixed_font_sm) {courier 6} 40. }

    Install your own language translation file

    You can translate Post Builder into a language that is not installed with the software if you have

    a language translation file. To install a new language:

    1. In the POSTBUILD/msgs folder, copy one of the installed language files and rename it. This example uses pb_msg_english.tcl.

    Note Edit and save the file with unicode utf-8 encoding.

    2. Define the label for your language. Add the following lines just below the language test: 3. #+++++++++++++++++++++++++++++++++++++++++++ 4. # Define label in Unicode for this language 5. #+++++++++++++++++++++++++++++++++++++++++++ 6. set gPB(my_language,LABEL) "my_label"

    a. Replace my_language with the name of your language translation file. Use your language file name as the locale name throughout the translation file.

    b. Replace my_label with the label for your new language selection.

    This label appears in the language list when you choose OptionsLanguage.

    7. To prevent Post Builder from using an incomplete translation file, replace return 1 with return 0.

    8. Replace every instance of mcset pb_msg_english with the name of your language translation file.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 19

    9. Replace every English label with your translation. 10. Replace return 0 with return 1 when the file is ready to use. 11. Save the file with unicode utf-8 encoding.

    Example of custom translation file modifications

    ################## DO NOT CHANGE ANYTHING ABOVE THIS LINE

    ###################

    if { [info exists gPB(LANG_TEST)] } {

    #+++++++++++++++++++++++++++++++++++++++++++

    # Define label in Unicode for this language

    #+++++++++++++++++++++++++++++++++++++++++++

    set gPB(my_language,LABEL) "My_label"

    #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    # Return "1" when this language file is ready to be deployed,

    # otherwise return "0".

    #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    return 1

    }

    ##------

    ## Title

    ##

    ::msgcat::mcset my_language "MC(main,title,Unigraphics)" "Unigraphics"

    ::msgcat::mcset my_language "MC(main,title,UG)" "UG"

    ::msgcat::mcset my_language "MC(main,title,Post_Builder)" "My_title"

    Modal Word Groups and mom Variables

    Modal

    Group MOM Variable Default Value Description

    G_cutc

    om

    $mom_sys_cutcom_code(LEFT) 41 Cutcom Left

    $mom_sys_cutcom_code(RIGHT) 42 Cutcom Right

    $mom_sys_cutcom_code(OFF) 40 Cutcom Off

    $mom_sys_cutcom_code($mom_cutcom

    _status)

    $mom_sys_cutcom_code(L

    EFT)

    Cutcom

    (LEFT/RIGHT

    /OFF)

    G_plan

    e

    $mom_sys_cutcom_plane_code(XY) 17

    XY Plane

    Code

    $mom_sys_cutcom_plane_code(ZX) 18 ZX Plane Code

    $mom_sys_cutcom_plane_code(YZ) 19 YZ Plane Code

    $mom_sys_cutcom_plane_code($mom_p

    os_arc_plane)

    $mom_sys_cutcom_plane_c

    ode(XY)

    Arc Plane

    Code

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 20

    (XY/ZX/YZ)

    $mom_sys_cutcom_plane_code($mom_c

    utcom_plane)

    $mom_sys_cutcom_plane_c

    ode(XY)

    Cutcom Plane

    Code

    (XY/ZX/YZ)

    G_adju

    st

    $mom_sys_adjust_code 43

    Tool Len

    Adjust Plus

    $mom_sys_adjust_code_minus 44

    Tool Len

    Adjust Minus

    $mom_sys_adjust_cancel_code 49

    Cancel Tool

    Len Adjust

    G_feed

    $mom_sys_feed_rate_mode_code(IPM) 94

    IPM Feed Rate

    Mode

    $mom_sys_feed_rate_mode_code(IPR) 95

    IPR Feed Rate

    Mode

    $mom_sys_feed_rate_mode_code(FRN) 93

    FRN Feed

    Rate Mode

    $mom_sys_feed_rate_mode_code(DPM) 94

    DPM Feed

    Rate Mode

    $mom_sys_feed_rate_mode_code($feed_

    mode)

    $mom_sys_feed_rate_mode

    _code(IPM)

    Feed Rate

    Mode

    (IPM/IPR/FRN

    )

    G_spin

    $mom_sys_spindle_mode_code(SFM) 96

    Spindle output

    (CSS)

    $mom_sys_spindle_mode_code(RPM) 97

    Spindle output

    (RPM)

    $mom_sys_spindle_mode_code($mom_s

    pindle_status)

    $mom_sys_spindle_mode_c

    ode(RPM)

    Spindle output

    Mode

    (RPM/SFM)

    G_retur

    n

    $mom_sys_cycle_ret_code(AUTO) 99

    Cycle Retract

    (Auto)

    $mom_sys_cycle_ret_code(MANUAL) 98

    Cycle Retract

    (MANUAL)

    $mom_sys_cycle_ret_code($mom_cycle_

    retract_mode)

    $mom_sys_cycle_ret_code(

    MANUAL)

    Cycle Retract

    (AUTO/MAN

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 21

    UAL)

    G_moti

    on

    $mom_sys_linear_code 1 Linear Move

    $mom_sys_rapid_code 0 Rapid Move

    $mom_sys_circle_code(CLW) 2

    Circular

    Interpolation

    CLW

    $mom_sys_circle_code(CCLW) 3

    Circular

    Interpolation

    CCLW

    $mom_sys_circle_code($mom_arc_direct

    ion)

    $mom_sys_circle_code(CL

    W)

    Circular

    Interpolation

    (CLW/CCLW)

    $mom_sys_cycle_breakchip_code 73 Break Chip

    $mom_sys_cycle_off 80 Cycle Off

    $mom_sys_cycle_drill_code 81 Drill

    $mom_sys_cycle_drill_dwell_code 82 Drill Dwell

    $mom_sys_cycle_drill_deep_code 83 Drill Deep

    $mom_sys_cycle_tap_code 84 Tap

    $mom_sys_cycle_bore_code 85 Bore

    $mom_sys_cycle_bore_drag_code 86 Bore Drag

    $mom_sys_cycle_bore_dwell_code 89 Bore Dwell

    $mom_sys_cycle_bore_no_drag_code 76 No Drag

    $mom_sys_cycle_bore_back_code 87 Bore Back

    $mom_sys_cycle_bore_manual_code 88 Bore Manual

    $mom_sys_cycle_start_code 79

    Cycle Start

    Code

    $mom_sys_cycle_reps_code x

    Cycle Code

    Representative

    G_mod

    e

    $mom_sys_output_code(ABSOLUTE) 90 Absolute Mode

    $mom_sys_output_code(INCREMENTA

    L) 91

    Incremental

    Mode

    $mom_sys_output_code($mom_output_

    mode)

    $mom_sys_output_code(AB

    SOLUTE)

    Absolute/Incre

    mental Mode

    G

    $mom_prefun

    Pre Function

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 22

    $mom_sys_delay_code(SECONDS) 4

    Delay in

    Seconds

    $mom_sys_delay_code(REVOLUTIONS

    ) 4

    Delay in

    Revloutions

    $mom_sys_delay_code($mom_delay_mo

    de)

    $mom_sys_delay_code(SEC

    ONDS)

    Delay

    (Seconds/Revo

    lutions)

    $mom_sys_spindle_max_rpm_code 54

    Spindle Max

    RPM

    $mom_sys_reset_code 92

    Absolute

    Position Reset

    $mom_sys_unit_code(IN) 70

    Output Unit

    (Inch)

    $mom_sys_unit_code(MM) 71

    Output Unit

    (Metric)

    $mom_sys_unit_code($mom_output_unit

    ) $mom_sys_unit_code(IN)

    Output Unit

    (Inch/Metric)

    $mom_sys_return_code 28 Return Home

    X

    $mom_pos(0)

    Coordinate

    $mom_cycle_feed_to_pos(0)

    Cycle Feed X

    $mom_cycle_rapid_to_pos(0)

    Rapid X

    Position in

    Cycle

    $mom_cycle_retract_to_pos(0)

    Retract X

    Position in

    Cycle

    $mom_cycle_clearance_to_pos(0)

    Clearance X

    Position in

    Cycle

    $mom_tool_x_offset

    Tool X Offset

    $mom_sys_home_pos(0) 0

    Return Home

    X

    Y

    $mom_pos(1)

    Coordinate

    $mom_cycle_feed_to_pos(1)

    Cycle Feed Y

    $mom_cycle_rapid_to_pos(1)

    Rapid Y

    Position in

    Cycle

    $mom_cycle_retract_to_pos(1)

    Retract Y

    Position in

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 23

    Cycle

    $mom_cycle_clearance_to_pos(1)

    Clearance Y

    Position in

    Cycle

    $mom_tool_y_offset

    Tool Y Offset

    $mom_sys_home_pos(1) 0

    Return Home

    Y

    Z

    $mom_pos(2)

    Coordinate

    $mom_cycle_feed_to_pos(2)

    Cycle Feed Z

    $mom_cycle_rapid_to(2)

    Rapid Z

    Position in

    Cycle

    $mom_cycle_retract_to_pos(2)

    Retract

    Position in

    Cycle

    $mom_cycle_clearance_to_pos(2)

    Clearance Z

    Position in

    Cycle

    $mom_tool_z_offset

    Tool Z Offset

    $mom_sys_home_pos(2) 0

    Return Home

    Z

    fourth_

    axis

    $mom_pos(3)

    4th Axis

    $mom_pos(4)

    5th Axis

    $mom_out_angle_pos(0)

    4th Axis Angle

    $mom_out_angle_pos(1)

    5th Axis Angle

    fifth_ax

    is

    $mom_pos(3)

    4th Axis

    $mom_pos(4)

    5th Axis

    $mom_out_angle_pos(0)

    4th Axis Angle

    $mom_out_angle_pos(1)

    5th Axis Angle

    I

    $mom_pos_arc_center(0)-

    $mom_prev_pos(0)

    Start of Arc to

    Center X-Axis

    J

    $mom_pos_arc_center(1)-

    Start of Arc to

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 24

    $mom_prev_pos(1) Center Y-Axis

    K

    $mom_pos_arc_center(2)-

    $mom_prev_pos(2)

    Start of Arc to

    Center Z-Axis

    R

    $mom_cycle_rapid_to_pos($mom_cycle_

    spindle_axis)

    Rapid Position

    in Cycle

    $mom_arc_radius

    Arc Radius

    F

    $feed

    Feed Rate

    $mom_cycle_feed_rate

    Cycle Feed

    Rate

    S

    $mom_spindle_speed

    Spindle Speed

    $mom_spindle_maximum_rpm

    Spindle Max

    RPM

    T

    $mom_tool_number

    Tool Select

    $mom_next_tool_number

    Tool Pre-

    Select

    D

    $mom_cutcom_adjust_register 1

    Tool Radius

    Compensation

    H

    $mom_tool_adjust_register 1

    Tool Adjust

    Register

    $mom_sys_zero 0

    Cancel Tool

    Adjust

    dwell

    $mom_delay_value

    Programmed

    Dwell

    cycle_d

    well

    $mom_cycle_delay

    Delay For

    Cycle Dwell

    P_cutco

    m

    $mom_p_cutcom_code

    Cutcom

    K_cycl

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 25

    e

    $mom_cycle_retract_to_pos($mom_cycle

    _spindle_axis)

    Retract

    Position in

    Cycle

    cycle_st

    ep1

    $mom_cycle_step2

    Step Incr

    Modifier

    cycle_st

    ep

    $mom_cycle_step1

    Step Incr

    Value

    Q_cutc

    om

    $mom_q_cutcom_code

    Cutcom

    E

    $mom_thread_increment

    Thread

    Increment

    M_spin

    dle

    $mom_sys_spindle_direction_code(CLW

    ) 3

    CLW Spindle

    Direction

    $mom_sys_spindle_direction_code(CCL

    W) 4

    CCLW Spindle

    Direction

    $mom_sys_spindle_direction_code($mo

    m_spindle_direction)

    $mom_sys_spindle_directio

    n_code(CLW)

    Spindle

    Direction

    (CLW/CCLW)

    $mom_sys_spindle_direction_code(OFF) 5 Spindle Off

    $mom_sys_spindle_range_code($mom_s

    pindle_range) Spindle Range

    M_cool

    ant

    $mom_sys_coolant_code(MIST) 7 Coolant Mist

    $mom_sys_coolant_code(ON) 8 Coolant On

    $mom_sys_coolant_code(FLOOD) 8 Coolant Flood

    $mom_sys_coolant_code(TAP) 8 Coolant Tap

    $mom_sys_coolant_code($mom_coolant

    _status)

    $mom_sys_coolant_code(F

    LOOD)

    Coolant Code

    (FLOOD/MIS

    T/ON..)

    $mom_sys_coolant_code(OFF) 9 Coolant Off

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 26

    M

    $mom_sys_optional_stop_code 1 Optional Stop

    $mom_auxfun

    Aux Function

    $mom_sys_program_stop_code 0 Stop Program

    $mom_sys_end_of_program_code 2

    End Of

    program

    $mom_sys_rewind_code 30

    Rewind

    Program

    $mom_sys_tool_change_code 6 Tool Change

    N

    $mom_seqnum

    Sequence

    Number

    Improve postprocessing performance of Fanuc style posts

    This example shows how to improve postprocessing performance of Fanuc style posts for four-

    axis and five-axis machines.

    1. Open a 4-axis or 5-axis post. 2. On the Program & Tool Path tab, click the Custom Command tab. 3. Click Import. 4. Select the POSTBUILD/pblib/custom_command/pb_cmd_activate_turbo_mode.tcl file

    and click Open.

    5. In the Import Custom commands from dialog box, click OK to import the command. 6. Click the Program tab. 7. In the Program Sequence Tree, select Program Start Sequence. 8. From the block list, select PB_CMD_activate_Fanuc_turbo_mode. 9. Click Add Block and drag the command to the Start of Program marker.

    When you activate turbo mode, the turbo variables ^POS4 and ^POS5 represent the fourth and

    fifth axis positions.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 27

    The machining cycle type maps the Sinumerik option VARI to the MOM variable

    mom_turn_cycle97_machining_type.

    Programming Notes

    ROP and APP are always zero in the template.

    The MOM procedure MOM_load_lathe_thread_cycle_params supports cycle97 events in your

    postprocessor when the Machine Cycle option is specified.

    This procedure:

    Returns 1 if the Machine Cycle option is specified and all variables are set successfully.

    Returns 0 otherwise.

    Call the procedure MOM_skip_handler_to_event to skip event handling until an event or motion

    type that you specify is encountered during processing.

    The following variables are available if you create similar user-defined threading cycles:

    mom_lathe_thread_clearance_start

    mom_lathe_thread_clearance_end

    mom_lathe_thread_root_line_start

    mom_lathe_thread_root_line_end

    Why should I use it?

    The post created by Post Builder using the Siemens 840D option has increased support for

    Siemens controllers.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 28

    On the shop floor, the machine operator can adjust a single line of code, for example to change

    the correct finishing allowance for the contour. To make the same change with conventional

    output, you must recalculate many lines of code using NX Post.

    Where do I find it?

    Application Manufacturing

    Prerequisite Create or edit a turning operation of a type listed in the preceding

    article.

    Location in dialog

    box Machine ControlMotion OutputMachine Cycle

    Application Post Builder

    Prerequisite Create or edit a SIEMENS SinumeriK_840D_lathe post.

    Location in dialog

    box

    Program & Tool PathCustom CommandPB_CMD_map_cycle97_param

    Adding CAM attributes for shop documentation in the post

    What is it?

    You can now use a Tcl command to set an attribute on a CAM program or operation. You can

    read these attributes in a shop documentation template file.

    In Post Builder, the Tcl syntax for the command is

    MOM_set_attribute .

    The attribute information array has predefined indices, VALUE, TYPE, and CATEGORY. You

    must set the value (VALUE) to the value of the attribute, and the type (TYPE) to the NX

    attribute type, typically "String". Optionally, you can set an attribute category (CATEGORY).

    The shop documentation template format has not changed. To read an attribute, the format is

    ${mom_attr_[]}, where

    is PROGRAMVIEW or OPER

    is the same as the attribute name that you assign in Tcl

    [] is an optional attribute category

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 29

    In the shop documentation template file, use program attributes in the title section or in the table

    section. Use operation attributes only in the table section.

    A post created the attribute category POSTPROCESSOR_ADDED, two attributes, and values

    for the two attributes.

    Why should I use it?

    You no longer have to create attributes for shop documentation manually. Your post processor

    can add any values that it can obtain from MOM variables or calculate in Tcl.

    Where do I find it?

    Tcl code

    Application Post Builder

    Shop Documentation Templates

    Application Excel

    Post Builder Custom Commands

    In this NX A to Z article, we are going to talk about writing custom commands in Post Builder.

    Custom commands allow you to get just about whatever you want in your machine code file. We

    all know that the graphical tools within Post Builder provide a great way to configure the

    standard components of a postprocessor, but what about the non-standard stuff that is what custom commands are for. For an introduction to Post Builder, click here.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 30

    TCL

    Postprocessors written for NX are written in a language called TCL (Tool Command Language).

    TCL is a scripting language, meaning that it is not compiled, and its syntax resembles C. TCL is a fairly straightforward language; however, its syntax can be troublesome. The link below is a very good resource for learning TCL; however, the best method for writing TCL is to copy it

    from an existing custom command that implements the same function you are trying to

    implement and then change the variables and expressions as required. For example, if you are

    trying to write and ifelse loop, just find one in an existing custom command and change it as required to suit your desired functionality. This will help to eliminate a lot of the headaches due

    to syntax errors.

    http://tmml.sourceforge.net/doc/tcl/index.html

    Manufacturing Output Manager (MOM)

    Before you write custom commands, you first need to understand how NX communicates with

    your postprocessor. When you postprocess a program from with NX, NX starts a program called

    NX Post. The primary component of NX Post is the Manufacturing Output Manager (MOM).

    MOM is described in the NX Help Documentation as follows:

    The Manufacturing Output Manager (MOM) is the central core of the NX Post postprocessor

    module. MOM converts tool paths from model files into manufacturing output (machine code) by

    adding the required functions and data as described below:

    The Event Generator reads through the tool path data, extracts events and their

    associated variable information, then passes the events to MOM for processing.

    MOM applies kinematics to the output then passes the event with its associated data to

    the Event Handler.

    The Event Handler creates the event, processes it to determine the actions required, then

    returns the data to MOM.

    MOM reads the Definition File to determine how to format the output for the machine

    tool control.

    MOM writes the formatted output to the specified Output File as machine code.

    So, essentially, MOM reads the tool path in NX and then feeds the tool path through the

    postprocessor to generate the machine code.

    In order to write custom commands, you have to intercept the information that MOM is sending

    to the postprocessor and then manipulate it however you want and then send it to the machine

    code file.

    All of the information that MOM sends is in the form of MOM variables; furthermore, there are

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 31

    built-in commands available for you to use in your custom command and these are called MOM

    commands. You can see all of these variables and built-in commands and their descriptions by

    clicking on the Utilities menu in Post Builder and select Browse MOM Variables. You will see

    the window shown below.

    The built-in commands start with an uppercase MOM and the variables with lowercase mom.

    There are way too many built-in commands and variables to go through them. The approach that

    we will use is to set out to do something specific with our postprocessor and then used the MOM

    Variables browser to find the variables and built-in commands we need.

    So the next step is to open our postprocessor and select the Custom Commands tab as shown

    below.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 32

    This is a postprocessor that comes with NX for a 5-axis table table mill. Most of the custom

    commands that you see in the list are created by default when you create a new postprocessor.

    Some are used by default in certain parts of the program and the rest are available should you

    need them.

    For example, the custom command shown below, PB_CMD_tool_change_force_addresses is put

    into the tool change event by default when a new post is created. It uses the MOM_force built-in

    command to force the output of the tool length compensation data.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 33

    Custom commands like PB_CMD_clamp_fourth_axis are driven by machine control events

    in NX and do not appear in any tool path events. Custom commands like

    PB_CMD_nurbs_initialize are not used by default and must be placed in an event marker after

    the post has been created if they are to be used.

    There is also a library of custom commands available to be imported into a postprocessor. If you

    click Import you will see the list shown below.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 34

    There a lot of custom commands available and they are described in the Documentation under

    Manufacturing->Post Builder->Program and Tool Path->Custom Command->Custom

    Command Library.

    So enough about all the custom commands that are already done, lets write one of our own. It is

    just a simple custom command to put name of the program at the start of the machine code file.

    In Post Builder, click Create on the Custom Command tab and Post Builder will create a copy of

    whatever custom command you have selected as shown below.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 35

    So delete all the code and rename the custom command PB_CMD_program_name. Now we

    need a variable that comes from NX with the name of the program and a built in command that

    will output the name to the machine code file. If you open the MOM Variables Brower and

    search program name, you will see that mom_group_name is the variable that we want and if you

    set the search category to MOM Command and search for output, you will see that

    MOM_output_literal is the build in command that we want.

    So in our Custom command, we type

    global mom_group_name

    MOM_output_literal Program Name: $mom_group_name

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 36

    The first line is a variable declaration. We are declaring the variable mom_group_name and the

    global statement indicates the scope of the variable. The global scope is the entire MOM process,

    meaning that if there is already a variable with the name mom_group_name that exists anywhere

    in the MOM process, we will be accessing that variable. It also means that if we change the

    variable, it will be changed for the entire MOM process until it is changed again by MOM. So

    essentially we are grabbing the mom_group_name variable from MOM and writing it out the

    machine code file. The $ in the second line is a syntax character it indicates that the word that

    follows is a variable name and substitutes the variables value into the output.

    This is shown below

    Then we place this custom command in the Program Start Sequence as shown below

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 37

    Then post a program and this is what you get

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 38

    Thats it. Remember, your best bet is to find an existing custom command that does something

    similar to what you want and start changing it to get what you want. Well talk about debugging

    custom commands in a future article.

    Introduction to Post Builder

    Continuing with the CAM theme, I am going to introduce Post Builder in this NX A to Z article.

    A postprocessor is probably the first customization that everyone does when they get NX CAM,

    simply because without a good postprocessor, your CAM programs are useless. Fortunately, NX

    comes with a graphical postprocessor editing tool called Post Builder. Furthermore, there are

    hundreds of postprocessors available between those that come with NX and those that are

    available for download from GTAC.

    The Post Builder Interface

    If you go to the folder in the Start->All Programs->UGS NX 7.5->Manufacturing Tools and

    click on Post Builder, you will see a command prompt pop up and go through some licensing

    stuff and then if you have a valid license, you will see the window below come up after

    PostBuilder has loaded.

    From here you can create a new postprocessor or open an existing one for editing. A

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 39

    postprocessor is a combination of three files, the tcl file that contains the logic for the post, the

    def file that contains the format definitions and the pui file that contains the information used by

    Post Builder to display the postprocessor through the graphical interface. The pui file is the one

    you select when opening a postprocessor. Shown below are the files for some of the

    postprocessors that come with NX.

    As you can see, there are some generic posts as well as some machine/controller specific posts.

    Since we are not going to be getting into any specific type of postprocessor, I will choose to

    create a new 3 axis mill postprocessor and use that to introduce Post Builder. So, click New and

    you will see the dialog below.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 40

    Give your post a name and a description and click OK and Post Builder will start as shown

    below.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 41

    The Post Builder interface is set up using tabs. As you can see, the main tabs are Machine Tool,

    Program & Tool Path, NC Data Definitions, Output Settings, and Virtual NC Controller. I will

    go through each of them briefly.

    The Machine Tool tab is used for specifying the parameters and configuration of your machine.

    Axis limits, feed rates, home position and for 4 and 5 axis mills, you specify the rotary axis

    labels and configuration on this tab.

    The Program & Tool Path tab is where the meat of the postprocessor is. This is where you

    specify the NC blocks that make up each section of your program. As you can see, there is a

    subset of tabs for the Program & Tool Path tab. The first is the Program tab and is shown below.

    The Program tab is where you arrange the blocks for each section of your program. In the figure

    below, you would select a block from the drop-down that says New Block and then you would

    drag it where you want in the list of blocks that make up the Start of Program section. Each item

    in the tree view on the left presents more sections of the program where you can add blocks.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 42

    The G Codes and M Codes tabs allow you to specify which codes control which functions on

    your machine. The G Codes tab is shown below and the M Codes tab is the same.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 43

    The Word Summary tab shows the definitions and the formatting for each word in the

    postprocessor. It provides a means for quickly reviewing all of the words in the postprocessor. It

    isnt a good idea to make changes to the formatting on this tab because the format of each word is determined by its format definition, which you define on the N/C Data Definitions tab. If you

    start changing to format for a word on the Word Summary tab, you will see other words change

    as well because they have the same format definition, but the only way to know what format

    definition is assigned to each word is through the N/C Data Definitions tab.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 44

    You use the Word Sequencing tab to specify the order in which words are arranged in the blocks.

    Most machines require the words to be in a specific order and you control this through the Word

    Sequencing tab. The Word Sequencing tab is shown below.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 45

    The Custom Command tab is used for writing code to do things that are not typically part of a

    post processor. Post Builder is built on a scripting language called TCL and you can write TCL

    scripts to do just about anything with Post Builder. There are quite a few custom commands that

    come with Post Builder that you can import into a postpocessor for things like a tool list or

    enabling helical outputs, etc.

    The linked posts tab is used for selecting other posts that you need to link to the post you are

    working on. This is primarily when you have a mill turn machine so that you can link a mill post

    with a lathe post this is how you create the postprocessor for a mill turn machine. Because the machine has different sets of kinematics, it requires multiple postprocessors.

    The Macro tab is used for creating and storing expressions that can be used throughout the

    postprocessor.

    The N/C Data Definitions tab is where you define the blocks and words and their formats. The

    Block tab is shown below. You create blocks by putting dragging words from the Add Word drop

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 46

    down. You can assign a name to the block in the tree view on the left and then you can add the

    block to different sections of your program from the Program & Tool Path tab.

    The Word tab is where you assign the format, the limiting values and the modality to the words.

    The Word tab is shown below

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 47

    The Format tab is where you define the formats for the words. Things like the number of digits

    and whether or not to include leading or trailing zeros for numeric formats. The Format tab is

    shown below.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 48

    The Other Data Elements tab is used to define things like the sequence numbering, the operator

    message start and end characters and you can also specify a custom user defined events file you

    have one. The Other Data Elements tab is shown below.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 49

    The Output Settings tab has two sub-tabs. The Listing File tab allows you to specify whether or

    not you want a listing file generated with the NC program and set some options for the listing

    file. The Other Options tab allows you to specify the file extension for the postprocessor and a

    few other things. One thing of note is the Review Tool. Activating the Review Tool is a very

    good way to debug your postprocessor when you are not getting the output you need. The Post

    Files Preview tab allows you to see your postprocessor files before and after the changes you

    have made. The Other Options tab is shown below.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 50

    The Virtial N/C Controller thab is used for creating files that are used for running a

    postprocessor driven machine tool simulation. You first select to Create the Virtual N/C

    Controller and the you specify the paramters and options needed to simulate how your machine

    functions. The Virtual N/C Controller Configuration tab is shown below.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 51

    That is Post Builder in a nutshell. Stay tuned for more articles on how to actually write

    postprocessors.

    Dave Holland

    Creating a 5-Axis Mill Postprocessor

    In this NX A to Z article, we are essentially going to talk about what the differences are between

    a typical 3 axis mill postprocessor and a 5 axis mill postprocessor. We are going to use the

    generic 5-axis table-table postprocessor that comes with NX.

    Machine Configuration

    So, fire up Post Builder and open m5actt.ui. This is one of the postprocessors that comes with

    NX and if you installed NX in the default directory, it will be in C:\Program Files\UGS\NX

    7.5\MACH\resource\postprocessor. The m5actt stands for mill, 5-axis, A and C are the rotational

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 52

    axes and it is a table-table machine.

    The General Parameters page doesnt have anything specific to a 5-axis machine, so we will start with the Fourth Axis page. By the way, you decide the type of machine (table-table, head-table,

    etc.) when you create the postprocessor.

    On the Fourth Axis page, other than the standard rotary axis settings, the important setting is the

    Machine Zero To 4th Axis Center. Typically, this is set to 0, 0, 0 and the G54 (or whatever offset

    youre using) on the machine is located where the rotational axes intersect (keep in mind the Home Position on the General Parameters page will not be zero in this case). So if you have an

    A, C table-table machine, then G54 correlates to the point where the A and C axes of rotation

    intersect. The axes of rotation will not intersect perfectly, and most machines specify the distance

    between the axes of rotation and you put this number in the 4th Axis Center to 5th Axis Center

    setting on the Fifth Axis page as shown below. You will only have one value, so if your 4th axis

    rotates about X and your 5th axis rotates about Z, then you would put the 4th axis to 5th axis

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 53

    distance in Y.

    The last thing that you have to do configuration wise is specify the axis leaders and the planes of

    rotation. You do this by clicking Configure on the Fourth Axis or Fifth Axis page (both buttons

    bring up the same dialog) and setting the configuration options as shown below.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 54

    One thing to note, if one of your axes does not rotate in one of the principal planes, you would

    select Other in the Plane of Rotation menu and then punch in the IJK components for the plane

    normal.

    Program Settings

    For the most part, all you have to change in the program is add the 4th and 5th axis leaders to the

    blocks where you want them to move. So if you have a block in the Program Start Sequence that

    homes everything, makes sure the A and C axes are in the block. Obviously, you also need the

    rotary axes in the Linear Move and Rapid Move blocks as shown below.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 55

    In the Machine Control section of the Program, you need to set up the Feedrates. So click on

    Feedrates and youll see the dialog below. Typically, youll use IPM for the Linear Only moves and FRN for everything else. You use FRN (inverse time federate) because if you use IPM or

    DPM and the move contains both linear and rotary movement, then the speed will be tied to

    either the rotary or linear axes and you will not get the desired surface speed not only that, but the surface speed could potentially change during the ratio of linear movement to rotary

    movement changes. Using FRN ensures a constant surface speed.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 56

    One last thing unique to a 4 or 5 axis post is the clamp/unclamp commands. These are not

    included in the list of standard M codes and therefore are Custom Commands. So if you look at

    the Custom Commands, youll see Clamp Unclamp for each rotary axis. Often times, the Unclamp command is required by the machine in order to move a rotary axis while cutting. You

    just need to check the Custom Commands to make sure the M codes are right.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 57

    That's it. Have fun.

    Creating a Mill-Turn Postprocessor Part 1

    This is the first in a series of articles on creating a Mill Turn postprocessor. In this article, I will

    go through creating the postprocessors and configuring the Mill Turn NX CAM template file. In

    future articles, I will address customizing the postprocessor.

    Mill-Turn CAM Template

    The first thing that we need to do is set up the NX CAM Configuration file and the NX CAM

    template part. Refer to Creating a Custom NX Cam Configuration File and Creating a Custom

    CAM Template for instructions on how to do this. The only additional thing you need to do in

    you NX CAM Template part is assign the different postprocessors to the different methods in

    your NX CAM file. So for our example, we are going to have 3 postprocessors, one lathe and

    two mills. Therefore, at the very least, we need three methods in or NX CAM file; however, you

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 58

    would probably have more because you have would rough, semi-finish and finish methods for

    both milling and turning as well as methods for Polar coordinates and XYZC coordinates

    potentially.

    As always, the easiest way to customize NX CAM is to copy the default file into the appropriate

    directory in your custom CAM directory and then change it. So, copy MillTurn_Exp.prt from the

    default template_part directory and put in your custom template_part directory, rename it to

    whatever you want and add it to your custom CAM configuration file. Then open it and select

    the Method view for the Operation Navigator it should look like what you see below.

    As you can see, there are both Mill methods (which include the drill methods) and lathe methods.

    These methods include settings such as tolerances, stock and feedrates just like any other

    methods; however, they also include Start Events that alert the postprocessor as to which

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 59

    postprocessor each operation needs to use. So you create all your CAM operations and assign

    them to the appropriate method groups and then before each operation, NX alerts the

    postprocessor as to what type of operation is coming next and which postprocessor is needed.

    Right click on one of the methods and go to Object and then Click Start Events and you should

    see a screen like the one below. I chose a Lathe method, so the head name passed with the event

    is TURN. This tells the postprocessor that it needs to be using the postprocessor associated with

    TURN. For the milling methods, the head names that we need are xhead and zhead (these

    correspond with the default postprocessor that we will be looking at). This particular CAM

    template is intended for a machine that only has milling capabilities in the Z axis; therefore, we

    are going to need to add/edit the milling methods.

    So, copy all of the milling methods and then rename them so that half of them have ZHEAD on

    the end and the other half have XHEAD on the end. Then you need to edit the start event for

    each of them and put in the appropriate head name. You can also delete the Live Tooling Mode

    event because we are looking at a machine with only one turret. The Start Events for one of the

    ZHEAD method is shown.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 60

    Thats it for the CAM template. Now you can create a CAM file with your template and start putting in turning and milling ops and all you have to do is make sure they are in the right

    method and the right MCS (depending on how you set up the coordinate systems on the

    machine).

    Mill-Turn Postprocessor

    Now lets look at the postprocessor. Again, we will start with a postprocessor that is supplied with NX and take a look at how it works with the CAM template. If you take a look in default

    postprocessor directory, you will see a few mill turn postprocessors. Some are generic (they just

    say millturn) and some are machine specific (like the Mori NL1500Y). We are going to look at

    millturn_4axis_mill, so open up Postprocessor Builder and select Open and then browse to the

    default postprocessor directory and select the millturn_4axis_mill postprocessor and you should

    see the screen below.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 61

    So, essentially, this is a 4 axis mill postprocessor. The only difference is on this screen, you have

    the option of specifying whether this is a Simple Mill-Turn or an XZC Mill, you specify whether

    or not the machine can position the tool in the Y-axis and whether or not your machine can take

    Cartesian coordinates. For this particular postprocessor, we have an Initial Spindle Axis of Z and

    the Default Coordinate mode is Polar and the Machine Mode is XZC Mill. If your machine is

    essentially a lathe with live tooling, then you could select Simple Mill-Turn and choose

    lathe_tool_tip for the lathe postprocessor and then the postprocessor uses the operation type to

    switch between your mill postprocessor and your lathe postprocessor, so you dont need the Start

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 62

    Events in the Methods in the NX CAM template part; however, because we are also going to

    configure a postprocessor for milling with tools perpendicular to the spindle, we need to check

    XZC Mill and link 3 postprocessors together.

    In milling mode, an XYZC Mill-Turn machine is just a XYZ Mill with a 4th axis mounted on the

    table, so if you click Rotary Axis in the tree view, you see the same options that you would for a

    4 axis mill. The options set below are typical.

    Because we did not select the Simple Mill-Turn option, we need to go to the Linked

    Postprocessors tab on the Program & Tool Path tab and specify the lathe postprocessor that we

    want to use as well as the postprocessor that will be used for milling perpendicular to the lathe

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 63

    spindle axis. This is shown below. Whenever you have linked postprocessors, one postprocessor

    is the master postprocessor. The master postprocessor is the postprocessor that is used for the

    Start of Program sequence and is also the only postprocessor that has linked postprocessors

    specified. So the millturn_4axis_mll postprocessor is the master postprocessor and the

    lathe_tool_tip and millturn_side_spindle postprocessors are the linked postprocessors

    The lathe_tool_tip postprocessor is just a basic lathe postprocessor. Remember, the Start of

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 64

    Program and End of Program event sequences are taken from the master postprocessor, which in

    this case is the millturn_4axis_mill postprocessor. The few settings on the Machine Tool General Parameters tab and the linked postprocessors are all that set this postprocessor apart

    from any other 4 axis mill postprocessor.

    Lets take a quick look at the millturn_side_spindle postprocessor. As you can see, the settings are the same as those for the millturn_4axis_mill postprocessor, except the Initial Spindle Axis is

    now +X and the Position in Y-Axis setting is no longer greyed out. If your machine can position

    in Y, then check this box.

    Other than that, this postprocessor is just a 4 axis mill postprocessor. It does not have any linked

    postprocessors, because only the master postprocessor has linked postprocessors.

    So, NX essentially comes with enough postprocessors and CAM templates to cover the majority

    of mill-turn machines out there, you may just have to do a little tweaking to get what you want.

  • NX 10.0 POST BUIDER

    Bin son:KS.Phan Vn T Page 65

    The millturn_3axis_mill postprocessor covers a simple lathe with live tooling where the tooling

    axis is Z only. The millturn_4axis_mill postprocessor covers a mill-turn machine like we have

    been talking about here. The millturn_baxis_5axis postprocessor covers a mill-turn machine with

    a milling head that rotates in the XZ plane. This postprocessor is simply a 5 axis milling

    postprocessor that is linked to a lathe postprocessor. Then, if you have multiple spindles and

    multiple turrets, you just link additional postprocessors to the master for all the different sets of

    kinematics.

    Next time, we will take a closer look at the postprocessors that we talked about here and

    customize them a little.