⧉ All Products Control Emulator V27

Table of Contents

  • Copyright
  • Using this manual
  • Control Emulator: General Information
    • About Control Emulator
      • Types of Machines Supported
    • About QUEST and CERUN
    • About the Icam Portal
  • QUEST: Control Emulator Development
    • QUEST
      • Starting QUEST
        • Starting QUEST from the Desktop
        • Starting QUEST from a Command Prompt
        • Importing Control Emulators
        • Creating a Database Listing
      • QUEST Inputs and Outputs
        • The Icam Database
        • Exported/Imported Control Emulator
        • Dedicated Control Emulators
        • Basic Control Emulators
        • The QUEST Listing
          • HTML Listing Format
          • Standard Listing Format
      • Using QUEST
        • The QUEST Interface
        • Creating a New Control Emulator
        • Control Emulator Definition
          • Creating a CE linked to a Post-Processor
          • Creating a CE based on a Post-Processor
          • Creating a CE from scratch
          • Specifying a Pre-Processor
        • Questionnaire Chapters and Sections
        • Saving and Generating your work
        • Testing your Control Emulator
        • Modifying an Existing Control Emulator
        • Wrapping Up
      • The Icam Database
        • Control Emulator File Name Conventions
        • The Database Navigator
          • Databases
          • Control Emulators
      • Control Emulator Customization
        • Code Customization
          • Modifying Code Identifiers
          • Creating Custom Codes
          • Deleting Custom Codes
        • Data Customization
          • Modifying Data Identifiers
          • Creating Custom Data Identifiers
          • Deleting Custom Data Identifiers
        • Tape Editor
        • Startup/Shutdown Macros
          • Startup/Shutdown Macro Types
            • Declaration Macro
            • Machine Startup/Shutdown Macros
            • Program Startup/Shutdown Macros
            • Subprogram Startup/Shutdown Macros
            • Pre-Processor Startup/Shutdown Macros
            • Block Startup/Shutdown Macros
          • Create or Modify Startup/Shutdown Macros
          • The Macro Editor
            • Compiling and Saving Macros
          • Delete or Disable Startup/Shutdown Macros
        • Event Macros
          • Event Macro Types
            • Motion Event Macros
            • Cycle Event Macros
            • Tool Event Macros
            • Diagnostic Event Macro
            • Pre-Processor Identification Macros
          • Create or Modify Event Macros
          • The Event Macro Editor
          • Delete or Disable Event Macros
        • Code Macros
          • Create Code Macros
            • The Code Macro Editor
            • Code Macros Match Order
            • Modify Code Macro Matching Conditions
            • Delete or Disable Code Macros
        • Data Macros
          • Create Data Macros
            • The Data Macro Editor
            • Data Macros Match Order
            • Modify Data Macro Matching Conditions
            • Delete or Disable Data Macros
        • User Function Macros
          • Create User Function Macro
          • The User Function Macro Editor
          • Delete or Disable User Function Macros
          • Export User Function Macros
        • The Dialog Editor
          • The Dialog Template Editor
        • File Storage
      • Control Emulator Processing
        • CERUN Startup Processing
          • Normal CE
          • Multi-Kernel CE
        • CERUN Main Processing Loop
        • CERUN Code Processing Loop
        • CERUN Shutdown Processing
    • Control Emulator Macros
      • The Macro Language
        • Fundamentals of the Macro Language
          • Basic Macro Syntax
          • Macro Data Types
          • Macro Variables
          • Explicit Type Declaration (DECLAR)
            • Variable Scope
            • Variable Type
            • Variable Name
            • Variable Array
            • Variable Assignment
            • Variable Default
          • Operators
            • Numeric, String and Sequence Operators
            • Assignment Operators
            • Logical Operators
          • Detecting Data Type Mismatching
        • Function Calls
          • Built-in Functions
          • External Functions
          • User Function Macros
            • Function Declaration
            • Function Definition
            • Function Name
            • Function Parameters
            • Function Body
        • Flow Control in a Macro
          • The IF Block
          • The CASE Statement
          • The WHILE Loop
          • The REPEAT Loop
          • The DO Loop
          • Exiting Loops (EXIT)
          • Unconditional Jumps (JUMPTO)
          • Exiting a Macro (TERMAC)
          • Ending a Macro (ENDMAC)
        • Macro Invocation
          • Enable/Disable Macro Matching (MATCH)
          • Outputting the Identifier or Event (OUTPUT)
        • Text File I/O from a Macro
          • Opening a Text File (OPEN)
          • Closing a Text File (CLOSE)
          • Writing to a Text File (WRITE)
          • Reading from a Text File (READ)
          • Reading from a String Value (READ)
        • Other Macro Commands
          • Outputting Error Messages (ERROR)
          • Calling other programs (SYSTEM)
      • Control Emulator Macro Commands
        • The EXEC Command
        • The LPRINT Command
        • The PPRINT Command
        • The TAPERD Command
        • The TAPEWT Command
        • The SEARCH Command
        • The RSTMODAL Command
        • The SAVMODAL Command
      • String Formatting
        • Output String Format
          • Numeric Output Format
          • Time Output Format
          • String Output Format
          • Minor Word Output Format
          • Major Word Output Format
          • Logical Output Format
          • Tab Output Format
          • Wildcard Output Format
          • Register Index Output Formats
          • Predefined Register Output Format
          • Current Predefined Register Value
          • ASCII Value Output Format
        • Input String Format
          • Space Input Format Character
          • Exclamation Input Format Character
          • Numeric Input Format
          • Time Input Format
          • String Input Format
          • Minor Word Input Format
          • Major Word Input Format
          • Logical Input Format
          • Tab Input Format
          • Skip Character Input Format
          • Wildcard Input Format
    • Macro System Variables
      • Variable Summary
        • Canned cycle variables
        • Composite control emulator variables
        • Constants
        • Control emulator variables
        • Conversion factor variables
        • Coolant feed rate and spindle variables
        • Cutter compensation variables
        • Error message variables
        • Lathe variables
        • Machine and Workpiece coordinate variables
        • Machining time variables
        • Macro variables
        • MCD/Tape variables
        • Miscellaneous variables
        • Motion related variables
        • Multi-kernel variables
        • Operation variables
        • Subprogram variables
        • Tooling variables
      • Variables Defining Constants
      • Machine & Workpiece Coordinate Variables
      • Motion-Related Variables
      • Macro Variables
      • Conversion Factor Variables
      • Coolant, Feed Rate and Spindle Variables
      • Cutter Compensation Variables
      • Operation Variables
      • Tooling Variables
      • Lathe Variables
      • Automated Canned Cycle Variables
        • Drill Cycle Variables
        • Thread Cycle Variables
      • MCD/Tape Variables
      • Machining Time Variables
      • Control Emulator Definition Variables
      • Error Message Variables
      • Multi-Kernel Control Emulator Variables
      • Composite Control Emulator Variables
      • Subprogram Variables
      • Miscellaneous Variables
    • Macro Functions
      • Function Summary
      • Mathematical Functions
      • Numeric Functions
      • Geometric Functions
      • Vector Functions
      • Matrix Functions
      • Conditional Functions
      • Conversion Functions
      • Character and Sequence Functions
      • Command Line Functions
      • File and Directory Functions
      • Control Emulator Functions
      • DELMIA Functions
      • Other Functions
  • CERUN: The Control-Emulator
    • CERUN with Virtual Machine
      • Starting CERUN
        • Starting CERUN from an Extractor
        • Starting CERUN from the Desktop
        • Starting CERUN from the Command Prompt
        • Starting PSE from a Command Prompt
        • CERUN Return Codes
        • The Launch Panel
          • CERUN Tab
          • VM Tab
          • Preferences Tab
          • Options Dialog
          • DB Manager
          • JOB Button
      • CERUN Inputs and Outputs
        • Input MCD File
          • Subprograms
          • Segmented Programs
        • Output Verification Listing
          • Program Identification
          • Program Listing
          • Program Summary
            • Tooling Summary
            • Tool Flute Length Summary
            • Tool Travel Summary
            • Machining Time Summary
            • Diagnostic Summary
        • Output Log File
        • Output Review File
      • Using CERUN with Virtual Machine
        • Diagnostics
        • Tracing
        • Simulation
        • Debugging
        • Menus
          • File Menu
          • Run Menu
          • View Menu
          • Debug Menu
          • CERUN Menu
          • Simulation Menu
            • Simulation»Virtual Machine
              • Camera panning
              • Camera rotation
              • Camera roll
              • Camera origin and attachment
              • Camera viewpoint
              • To summarize
            • Simulation»Controller
              • Simulation»Controller: Axes
              • Simulation»Controller: Fixture Compensation
              • Simulation»Controller: Tool Compensation
              • Simulation»Controller: Time Line
              • Simulation»Controller: Code Groups
              • Simulation»Controller: MDI
              • Simulation»Controller: Opskip
            • Simulation»Manager
            • Simulation»Mode
              • Simulation»Mode»Camera
              • Simulation»Mode»Selection
              • Simulation»Mode»Measurement
              • Simulation»Mode»Pause Material Removal
              • Simulation»Mode»Pause Gouge Detection
            • Simulation»Parts/Fixtures (Ctrl Alt P)
            • Simulation»Tools/Holders/Heads (Ctrl Alt T)
              • Tools
              • Holders
              • Heads
            • Simulation»Camera
              • Simulation»Camera»Fit (Ctrl Space)
              • Simulation»Camera»Center (Ctrl Shift Space)
              • Simulation»Camera»Pivot (Ctrl P) (Ctrl Shift P)
              • Simulation»Camera»Attach
              • Simulation»Camera»Perspective
              • Simulation»Camera»Front
              • Simulation»Camera»Back
              • Simulation»Camera»Top
              • Simulation»Camera»Bottom
              • Simulation»Camera»Left
              • Simulation»Camera»Right
              • Simulation»Camera»Speed (Ctrl +, Ctrl –)
              • Simulation»Camera»View Angle (Shift +, Shift –)
              • Simulation»Camera»Load (Ctrl 0–9)
              • Simulation»Camera»Save (Ctrl Alt 0–9)
              • Simulation»Camera»Reset
            • Simulation»Show
              • Simulation»Show»Wireframe
              • Simulation»Show»Tool Path (Ctrl T)
              • Simulation»Show»Tool Vector
              • Simulation»Show»Tool Path as Overlay (Ctrl Shift T)
              • Simulation»Show»Filters
              • Simulation»Show»Cross Section
              • Simulation»Show»XY Plane Grid
              • Simulation»Show»YZ Plane Grid
              • Simulation»Show»ZX Plane Grid
              • Simulation»Show»Axes Marker
              • Simulation»Show»Kinematics
              • Simulation»Show»Workpiece Reference
              • Simulation»Show»Tool Reference
              • Simulation»Show»Safety Zones
              • Simulation»Show»Workpiece Coords (Ctrl W)
              • Simulation»Show»Display
              • Simulation»Show»Next Display (Ctrl D)
              • Simulation»Show»Previous Display (Ctrl Shift D)
            • Simulation»Measure
            • Simulation»Annotation
            • Simulation»Selection
              • Simulation»Selection»Hide in View (Ctrl B)
              • Simulation»Selection»Hide in All Views
              • Simulation»Selection»Show All/Rehide (Ctrl Alt B)
              • Simulation»Selection»Show All/Rehide in All Views
              • Simulation»Selection»Invert Hide State (Ctrl Shift B)
            • Simulation»Grid (Ctrl Alt G)
            • Simulation»Lights (Ctrl Alt L)
            • Simulation»Material (Ctrl Alt M)
            • Simulation»Display (Ctrl Alt D)
            • Simulation»Chip and Split (Ctrl Alt C)
            • Simulation»Compare (Ctrl Alt Q)
            • Simulation»Options (Ctrl Alt O)
              • Time Line Options
              • Tool Path Options
              • MRS Options
              • Tolerance Options
              • Miscellaneous Options
            • Simulation»Open Setup
            • Simulation»Save Setup
          • Tools Menu
          • Window Menu
          • Help Menu
    • CERUN with DELMIA
      • Setup CERUN
      • MCD Based Simulation with CATIA V5
        • Machining and Simulation Setup
        • Part Operation Settings
        • Post-Processing with GENER
        • MCD File Selection Override
        • Tool and Workpiece Compensation Settings
          • Cutter Compensation Panel
          • Origin Compensation Panel
        • Using CERUN with CATIA
      • MCD Based Simulation with 3DEXPERIENCE
        • Machining and Simulation Setup
        • Part Operation Settings
        • Post-Processing with GENER
        • MCD File Selection Override
        • Tool and Workpiece Compensation Settings
          • Cutter Compensation Management for Simulation
          • Define Workpiece Compensation
        • Using CERUN with 3DEXPERIENCE
    • Diagnostic Messages
      • General Information
      • Modifying Diagnostic Messages
      • Error File
  • Glossary
  • Appendix
    • Character Set
    • Code Identifiers
    • Data Identifiers
    • Reserved Words
    • Control Emulator Macro Samples
      • Macro Example #1
      • Macro Example #2
  • Index
Control Emulator V27
  • ⧉
  • QUEST: Control Emulator Development
  • Macro System Variables
  • Motion-Related Variables

Motion-Related Variables

The $AXES Variable

\textbf{{\char36}AXES}

String showing active axes

Type: String, Read-only

The $AXES variable displays the currently active axes in the form of a character string containing 6 characters. At any one time, CERUN will allow a maximum of 3 linear axes, 2 rotary axes and 1 additional extending or co-linear axis to be controlled. Therefore the maximum number of active axes is 6.

The characters displayed in the $AXES string are one letter abbreviations representing the axis names. Any of the axes supported by CERUN may be represented. The abbreviations are as follows:

Axes Names

Character

Axis name

X

X-axis (primary X-axis)

Y

Y-axis (primary Y-axis)

Z

Z-axis (primary Z-axis)

U

U-axis (secondary X-axis)

V

V-axis (secondary Y-axis)

W

W-axis (secondary Z-axis)

E

Extending axis

a

A'-axis table

b

B'-axis table

c

C'-axis table (or C-axis on lathe)

A

A-axis head

B

B-axis head

C

C-axis head

N

Primary nutating axis

n

Secondary nutating axis

The first three characters of $AXES display active linear axes (note that these may be XYZ primary or UVW secondary linear axes). The fourth and fifth characters display active rotary axes (including nutating axes). The sixth location is reserved for the quill (extending) axis or a co-linear axis. A “*” will be shown for any $AXES location for which there is no corresponding active axis. For example, the value of $AXES for a 3-axis mill will be “XYZ***” because the machine has neither rotary, extending or co-linear axes.

On machines where axes will be activated and deactivated, the $AXES string is useful in writing motion event macros. It can be used to determine the location in the $P2 machine coordinate sequence that applies to a given axis. (Note $P2 contains machine coordinates for active axes only). To determine if a B'-axis table is active or not, the following could be coded in a motion macro.

$$ %L01 = axis index to $P2 sequence
%L01=$FINDEX($AXES,'b')
$$ If B'-axis is active, set %L02
IF/%L01.GE.1.AND.%L01.LE.6
  $$ %L02=B'-axis machine coordinate
  %L02=$P2(%L01)
ENDOF/IF

If the $FINDEX function returns 0 (see “Character and Sequence Functions” for a description of the $FINDEX function), the axis for which the index was requested is not active and therefore it’s value will not be found in the $P2 sequence. For the case above, the $BTM macro system variable could be used to determine the location of the B'-axis.

The $AXESC2P Variable

\textbf{{\char36}AXESC2P}

String showing axes controlled by C2P interpolation

Type: String, Read-only

The $AXESC2P variable identifies the C2P (i.e., polar interpolation) axes in the form of a character string containing 2 characters. The characters are one letter abbreviations representing the axis names as shown in the “Axes Names” table. This string will be blank when C2P interpolation is not active.

The $C2PMCH Variable

\textbf{{\char36}C2PMCH}

C2P interpolation status ($TRUE or $FALSE)

Type: Logical, Read-only

The $C2PMCH variable will be set $TRUE when C2P (Cartesian to Polar Programming) interpolation mode is active on the CNC and $FALSE when C2P interpolation is not active on the CNC.

The $CHSIZ Variable

\textbf{{\char36}CHSIZ}

Number of available kernel channels

Type: Numeric, Read-only

The $CHSIZ variable indicates the number of kernel channels. It will have a value of 2 for a merging lathe and a value of 1 for all other machine types.

The $CI Variable

\textbf{{\char36}CI}

Current active kernel channel

Type: Numeric, Read-only

The $CI variable indicates the current active channel. It will have a value of 2 when processing the side head of a merging lathe and a value of 1 at all other times.

The $LCS Variable

\textbf{{\char36}LCS}

LCS programmed status ($TRUE or $FALSE)

Type: Logical, Read/Write

The $LCS variable will be set $TRUE when LCS (Local Coordinate System) transformation is activated and $FALSE when LCS is deactivated. The $LCS variable can be set from within a macro to change the mode.

The $LCSANG Variable

\textbf{{\char36}LCSANG}

LCS rotation angle parameter

Type: Numeric, Read-only

The $LCSANG variable indicates the current LCS rotation angle for CNC machines that use the “Axis” form of 3D rotation.

The $LCSCEN Variable

\textbf{{\char36}LCSCEN}

LCS rotation or scale center parameters

Type: Sequence, Read-only

The $LCSCEN variable indicates the current LCS {x,y,z} center of rotation or scaling.

The $LCSM Variable

\textbf{{\char36}LCSM}

Local coordinate system machine status ($TRUE or $FALSE)

Type: Logical, Read-only

The $LCSM variable indicates the current LCS activation state on the machine. It will be $TRUE when any form of LCS transformation is active on the machine and will be $FALSE otherwise.

The $LCSMIR Variable

\textbf{{\char36}LCSMIR}

LCS mirror parameters

Type: Sequence, Read-only

The $LCSMIR variable indicates the current LCS {x,y,z} mirror parameters. A parameter value of 1 indicates that mirroring is in effect; a parameter value of 0 (zero) indicates no mirroring.

The $LCSMTN Variable

\textbf{{\char36}LCSMTN}

Effect of LCS on machine rotary axes (–1-3)

Type: Numeric, Read/Write

The $LCSMTN variable indicates if and how LCS affects the rotary axes of the machine when LCS is activated. If the value is –1, then LCS is not capable of moving the rotary axes and attempting to set this variable to any other value will result in a diagnostic.

–1:

LCS generated motions are not available – adjust frame only

 0:

no motion – adjust frame only

 1:

rotary-only motion

 2:

rotary motion around tool-tip (i.e., RTCP motion)

 3:

method 1 or 2 depending on current RTCP state

The $LCSMX Variable

\textbf{{\char36}LCSMX}

Current LCS transformation matrix

Type: Sequence, Read-only

The $LCSMX variable contains a sequence of 12 parameters defining the LCS transformation matrix (see “Matrix Functions” for a description of the matrix parameters).

The $LCSORD Variable

\textbf{{\char36}LCSORD}

String identifying $LCSROT values

Type: String, Read-only

This string variable identifies the contents of the $LCSROT sequence variable. When $LCSROT contains the ijk vector of the LCS axis of rotation, then $LCSORD will be the string “IJK”. When $LCSROT contains a sequence of angles rotating in some order around the X, Y and Z axes, then $LCSROT will be a 2 or 3-character string “xxx” where each character “x” in the string will be one of the letters A, B or C representing rotation about the X, Y or Z axes respectively.

The $LCSROT Variable

\textbf{{\char36}LCSROT}

LCS rotation parameters

Type: Sequence, Read-only

The $LCSROT variable indicates the current LCS {i,j,k} axis of rotation for CNC machines that use the “Axis” form of 3D rotation. Otherwise this variable contains 3 rotation values based on the form of LCS rotation being used.

The $LCSSCA Variable

\textbf{{\char36}LCSSCA}

LCS scale parameters

Type: Sequence, Read-only

The $LCSSCA variable indicates the current LCS {x,y,z} scale parameters.

The $LCSTRA Variable

\textbf{{\char36}LCSTRA}

LCS translation parameters

Type: Sequence, Read-only

The $LCSTRA variable indicates the current LCS {x,y,z} translation amounts.

The $PLMODE Variable

\textbf{{\char36}PLMODE}

Plane mode. (<1:? 1:XY 2:ZX 3:YZ)

Type: Numeric, Read/Write

The $PLMODE variable contains the current plane mode in effect for cutter compensation, circular interpolation and cycles. If the value is less than one (1) then the mode is unknown.

The $PNMODE Variable

\textbf{{\char36}PNMODE}

Positioning mode. (<0:? 0:Absolute 1:Incremental)

Type: Numeric, Read/Write

The $PNMODE variable contains the current absolute or incremental positioning mode of the machine. If the value is less than zero (0) then the mode is unknown.

The $RAPID Variable

\textbf{{\char36}RAPID}

RAPID flag ($TRUE if in RAPID mode)

Type: Logical, Read/Write

The $RAPID variable indicates whether or not the next motion will be at rapid.

The $ROBCFGM Variable

\textbf{{\char36}ROBCFGM}\textbf{(}\mathit{index}\textbf{)}

Robot shoulder, elbow and wrist configuration

Type: Minor Word, Read/Write

The $ROBCFGM array variable sets a preference, where available, between the different possible robot shoulder, elbow and wrist configurations. The preference is defined using a keyword, as follows:

$ROBCFGM(1)

RIGHT or LEFT

$ROBCFGM(2)

DOWN or UP

$ROBCFGM(3)

FRONT or REAR

The $ROBCFGN Variable

\textbf{{\char36}ROBCFGN}\textbf{(}\mathit{index}\textbf{)}

Robot shoulder, elbow and wrist configuration

Type: Numeric, Read/Write

The $ROBCFGN array variable sets a preference, where available, between the different possible robot shoulder, elbow and wrist configurations. The preference is defined using a numeric value, as follows:

$ROBCFGN(1)

0:RIGHT or 1:LEFT

$ROBCFGN(2)

0:DOWN or 1:UP

$ROBCFGN(3)

0:FRONT or 1:REAR

The $SKIPCOD Variable

\textbf{{\char36}SKIPCOD}

Skip-code function status (0:off, 1:active)

Type: Numeric, Read/Write

The $SKIPCOD variable indicates the current probe “skip code” status. A value of 0 indicates that skip code processing is not active; a value of 1 indicates the function is active. When active and Virtual Machine simulation has a probe enabled, a probe touch event stops further axis motion for the current block.

The $SKIPERR Variable

\textbf{{\char36}SKIPERR}

Skip-code function error (0:none, 1:touch, 2:miss)

Type: Numeric, Read-only

The $SKIPERR variable indicates the probe “skip code” state recorded at the end of the last motion. A value of 0 indicates no error. When active and Virtual Machine simulation is enabled, a value of 1 indicates a touch event occurred and a value of 2 indicates that a touch event did not occur.

The $TCP Variable

\textbf{{\char36}TCP}

RTCP status ($TRUE or $FALSE)

Type: Logical, Read/Write

The $TCP variable will be set $TRUE when RTCP (Rotating Tool Center-point Programming) is activated and $FALSE when RTCP is deactivated. The $TCP variable can be set from within a macro to change the mode.

The $TCPFMT Variable

\textbf{{\char36}TCPFMT}

RTCP format (0:None, 1:Axes, n:Other)

Type: Numeric, Read/Write

The $TCPFMT variable defines how rotary information is interpreted when RTCP is active. The default format is defined in QUEST and can be controlled using the CODE_RTCP_ORIENT_* codes (if available). You can also set the $TCPFMT variable to change the format “n”, as follows:

1:

Input true rotary axes values

2:

Input machine tool axis vector

3:

Input tool-tip and tool-top points (dual curve) to define angle

4:

Input RPY (roll-pitch-yaw) angle

5:

Input Euler angles

6:

Input custom virtual axes as defined by QUEST

The $TCPSET Variable

\textbf{{\char36}TCPSET}

RTCP method (1-2)

Type: Numeric, Read/Write

The $TCPSET variable indicates and can set the RTCP method on machines where there are multiple RTCP methods defined (QUEST Control Description / Advanced 5D Machining / RTCP question #100.1).

The $TCPSIM and $TCPSIMR Variables

\textbf{{\char36}TCPSIM}

RTCP feed interpolation (0:Standard, 1:Pole, 2:TTO, 3:None)

Type: Numeric, Read/Write

\textbf{{\char36}TCPSIMR}

RTCP rapid positioning (0:Standard, 1:Pole, 2:TTO, 3:None)

Type: Numeric, Read/Write

The $TCPSIM variable defines how CERUN (and Virtual Machine if used) will interpolate feed motions while in RTCP mode. The $TCPSIMR variable defines how rapid motions are interpolated while in RTCP mode. The default setting is defined in QUEST.

0:

Full linearization

1:

Apply singularity cone (Siemens 840D) not available at present

2:

Shortest rotary solution with tool tip linearization (Fanuc G43.4)

3:

Shortest rotary solution with no linearization (Fanuc G43.1)

Previous Next

© Copyright 2026, CGTech.