You are on page 1of 445

KUKA Sim Pro 3.

0 Help

HOW IT WORKS

USER INTERFACE

TASKS

DOCUMENTS

REFERENCE GUIDE

Version: 21 August, 2017


What's New
KUKA Sim Pro 3.0 introduces a new set of features and controls for running simulations, programming robots, modeling components and
drafting technical drawings.
CONTENTS HIDE
USER INTERFACE
RENDERING
IMPORT AND EXPORT
TOOLS AND VISUAL AIDS
TECHNICAL DRAWINGS
ROBOTICS
DEVELOPMENT

User Interface
The UI has been redesigned to streamline your experience and improve workflows.
Quick Access Toolbar (QAT) for adding and customizing your own tray of commands.
Ribbon for accessing different views of the UI and controlling the context of a scene.
Docking panels for utilizing screen space and dynamically displaying content.
Mini toolbar for quickly executing commands and speeding up the creation of layouts.
Tooltips and context-sensitive help for getting descriptions and accessing helpful articles about commands and menu items.
Task panes for accessing additional options and short how-to guides for an activated command.

Rendering
The rendering of simulated environments has been significantly improved and become more manageable.
Shader-based rendering is now supported with improved lighting, shadows and reflection of surfaces.
Visualization and appearance settings are now accessible from the Ribbon to quickly toggle rendering modes and quality.

Import and Export


The import and export capabilities are continually upgraded to support a wide variety of CAD files and solutions.
Print-ready 3D views and 2D drawings for creating presentable, portable solutions.
Data analysis and cleanup of CAD files for testing, correcting and simplifying geometry issues.
Preset and custom lists of import and export settings for building components and layouts using CAD files.

Tools and Visual Aids


Tools and visual aids have been redesigned to boost work rate and feedback associated with actions.
Simplified navigation and selection using a mouse, touch surface and keyboard shortcuts.
All-in-one manipulator for moving, rotating, snapping and aligning selected objects.
Automatic Plug and Play for quickly adding and connecting components to selected components.
Connection editors and wires for visualizing remote connections between components and the I/O of robots.
Snap and align shortcuts for quickly moving and aligning a selection or end effector using three points of reference.
X-Ray/Ghost rendering for previewing the teaching of robot positions and the movement of selected objects.

Technical Drawings
Floor plans and other CAD files can now be imported, exported and created in a 2D drawing world and saved with a layout.
Templates for scaling, printing and documenting drawings.
Automatic drawing features for generating scalable 2D line drawings of the 3D world.
Automatic annotation and billing of parts lists for quickly annotating drawings.

Robotics
The controls for programming robots have been redesigned to improve work flows and offline programming capabilities as well as support
the use of virtual robot controllers (VRC).
All-in-one manipulator for teaching robot positions and joint configurations for external joints and end-of-arm tools.
Controller Map panel for working with robot controller data and VRC connections.
Jog panel for configuring a selected robot in the 3D world and providing feedback on joint motions.
Job Map panel for reading, writing and simulating robot programs.
Enhanced collision detection and limit tests for offline programming.
Environment calibration and synchronization of machine data for accurate robot teaching and development of turnkey solutions.
Motion path visualization and teaching for generating a sequence of robot positions along seams, edges and bisectors using
topology and curve data.
Safety zones for visualizing the workspace of robots, end-of-arm tools and other equipment.

Development
Developers can now create extensions and scripts using Python 2.7 and the .NET Framework.
64-bit version of KUKA Sim Pro 3.0 to support different platforms and operating systems.
Continuing development of APIs and IntelliSense to help you create your own applications and extensions.
Local and world-wide community of developers and resources to support simple and comprehensive solutions.
Supported CAD Files
A supported CAD file is a file format that can be imported or exported in KUKA Sim Pro 3.0.
Name Version Extension Import Export
3D Studio All .3ds ✔ ✔
ACIS Up to 27 .sat, .sab ✔

Autodesk Inventor Up to 2018 .ipt, .iam ✔


Autodesk RealDWG AutoCAD 2000-2013 .dwg, .dxf ✔ ✔

CATIA V4 Up to 4.2.5 .session, .dlv, .exp ✔


CATIA V5 V5-6 R2017 (R27) .CATDrawing, .CATPart, ✔
.CATShape, .cgr
CATIA V6 2011 to 2013 .3dxml ✔

Creo Elements/Pro 19.0, Up to .asm, .neu, .prt, .xas, .xpr ✔


Parametric 4.0
I-deas Up to 13.x (NX5) and NX I- .mf1, .arc, .unv, .pkg ✔
deas 6
IFC2x 2 to 4 .ifc, .iczip ✔

IGES 5.1 to 5.3 .igs, .iges ✔

Igrip/Quest/VNC All .pdb ✔ ✔


JT Up to 10.0 .jt ✔

Parasolid Up to 30 .x_b, .x_t, .xmt, .xmt_txt ✔

PRC All .prc ✔

Robface All .rf ✔

Rhino 4 to 5 .3dm ✔

Solid Edge 19 to 20 and ST to ST9 .asm, .par, .pwd, .psm ✔

SolidWorks Up to 2017 .sldasm, .sldprt ✔


STEP Up to AP 203 E1/E2, AP .stp, .step ✔
214 and AP 242
Stereo Lithography (ASCII All .stl ✔ ✔
and Binary)
U3D ECMA-363 1st, 2nd and .u3d ✔
3rd editions
Unigraphics (Siemens PLM 11.0 up to NX 11.0 .u3d ✔
software NX)
VDA-FS 1.0 and 2.0 .vda ✔
VRML 1.0 and 2.0 .wrl, .vrml ✔

Wavefront All .obj ✔ ✔


Shortcuts
CONTENTS HIDE
SIMPLE
NAVIGATION
OBJECT MANIPULATION
INTERACTIVE PICKING
ROBOT TEACHING
GEOMETRY EDITING
PYTHON SCRIPT EDITOR

Simple
Action Function
CTRL+C Copies a selected object to the clipboard.
CTRL+N Clears the 3D world layout.
CTRL+O Opens a file as a layout in 3D world.
CTRL+S Saves the current layout to existing or new file.
CTRL+V Pastes the content of clipboard to the active area.
CTRL+ALT+J Prints product version information to Output panel.

Navigation
Action Function
CTRL+F Fill views with all components in 3D world.
Point at object in 3D world, hold down SHIFT, and then right-click Centers view on point of object in 3D world, that is sets the center
of interest (COI) of camera.
Point to 3D world, hold down right mouse button, and then drag the Orbits the camera.
pointer
Point to 3D world, hold down left and right mouse buttons, and then Pans the camera.
drag the pointer
Point to 3D world, rotate mouse wheel forward/backward Zooms in/out the camera.
-or-
Point to 3D world, hold down SHIFT and the right mouse button, and
then drag the pointer up/down

Object Manipulation
Action Function
Hold down CTRL, and then left-click an object in 3D world Adds or removes an object from current selection.
Point to 3D world, hold down CTRL and the left mouse button, and Draws a selection box or path for selecting objects in 3D world.
then drag the pointer
Hold down CTRL, and then double-click a component in 3D world Duplicates a component, thereby creating a copy of it in 3D world.
Hold down SHIFT, point to geometry of selected object in 3D world, Aligns a selected object using one to three vectors. Alignment
and then drag the pointer to align geometry point (red torus), and vectors are indicated by yellow arrows and with the head of each
then release SHIFT vector a colored torus. Dragging the head of a vector allows you to
realign the object but will undo any following alignments. For
-and- example, dragging the green torus will cancel the alignment to blue
torus but not that of the red torus.
Hold down SHIFT, point to geometry of same object, and then drag torus but not that of the red torus.
the pointer to align geometry along a vector (green torus), and then Note: Shortcut uses 30 pixel threshold, so you may need to move
release SHIFT pointer a bit to execute action.
-and-
Hold down SHIFT, point to geometry of same object, and then drag
the pointer to align geometry along another vector (blue torus), and
then release SHIFT

While dragging an arrow handle of manipulator for a selected object Snaps a selected object to same position of geometry in one of three
in 3D world, hold down CTRL, and then point to geometry to snap axes. For example, floor object can be snapped to same height of
axis to that position elevated object in Z-axis.
While dragging torus (origin) of manipulator for a selected object, Snaps object to geometry centers, for example edge midpoints and
hold down SHIFT and hover over geometry face centers.
While dragging torus (origin) of manipulator for a selected object, Allows object to be moved freely in 3D world without snapping to
hold down CTRL other objects.

Interactive Picking
Action Function
While taking a measurement, hold down CTRL and hover over Picks center point of geometry, for example edge midpoints and face
geometry centers.
While snapping a selected object, hold down CTRL and hover over Picks center point of geometry, for example edge midpoints and face
geometry centers.

Robot Teaching
Action Function
When using curve selection tools, hold down SHIFT to trim curve Trims path to selected point, thereby removing any following points
while teaching a robot path from path and trimming its length. For example, curve with length of
200mm is selected, and then curve point at 100mm is selected to
trim curve to that point.
When using curve selection tools, hold down CTRL to remove curve Removes a curve segment from path. For example, four edges are
segment while teaching a robot path selected, and then one edge is removed from path leaving three
curve segments.
When using curve selection tools, hold down ALT to flip curve Flips the normal of curve segment points, which can be verified by
normal while teaching a robot path visualizing curve points of path.

Geometry Editing
Action Function
While dragging a feature to another feature or node in the Retains the 3D position of feature relative to its parent. Without
Component Graph panel, hold down SHIFT SHIFT the position of feature would stay the same in 3D world.

Python Script Editor


Action Function
F9 Compiles code.
TAB Indents selection.
CTRL+0 Resets font size to default setting.
CTRL+D Duplicates line of code.
CTRL+F Finds matching words/phrases in code.
-or-
CTRL+I

CTRL+J Displays a drop-down menu for inserting snippet.


CTRL+L Removes line of code.
CTRL+P Prints code.
CTRL+S Compiles code.
CTRL+Z Undo last action.
Hold down CTRL, and then rotate the mouse wheel Increases/decreases font size of code.
forward/backward
-or-
CTRL+MINUS SIGN/PLUS SIGN

CTRL+SPACEBAR Displays an auto-completion drop-down menu for inserting code.


SHIFT+TAB Unindents selection.
System Requirements
In order for KUKA Sim Pro 3.0 to run properly, verify your device meets the following specifications.

Minimum Specifications
CPU of i5 Intel or equivalent processor
RAM of 4GB
HDD with 1GB of available space
Graphics driver (newest generation) with integrated HD440 or similar
Graphics display resolution of at least 1280 x 1024
Mouse with three buttons (left, middle, right)
Operating system of Windows 7 to Windows 10 64-bit version
Important: Your device and network must allow traffic from KUKA Sim Pro 3.0 software, thereby you may need to modify firewall settings.

Recommended Specifications
CPU of i7 Intel or equivalent processor
RAM of 8GB or more
HDD with 2GB of available space
Graphics driver (professional graphics card) equivalent to Nvidia Quadro or AMD FirePRO with at least 2GB dedicated memory
Graphics display resolution of 1920 x 1080 Full HD or higher
Mouse with three buttons (left, middle, right)
Operating system of Windows 7 to Windows 10 64-bit version
Installation
Your guide for installing KUKA Sim Pro 3.0 on a device.

Install
1. Download and run the installer for KUKA Sim Pro 3.0.
2. On the Welcome screen, click Next.
3. On the Installation Folder screen, accept or change the location for storing the KUKA Sim Pro 3.0 program files, and then click Next.
4. On the License Agreement screen, read and accept the agreement, and then click Next.
5. On the Installation Successful screen, click Finish.

Uninstall
1. Depending on your device and version of Windows, from the Control Panel, access the Uninstall or change a program screen.
2. In the list view of programs, find and select your version of KUKA Sim Pro 3.0, and then click Uninstall.
3. On the Uninstall KUKA Sim Pro 3.0 screen, click Next.
4. On the License Deactivation screen, choose whether or not you want to deactivate standalone licenses that are active on your device,
and then click Next.
5. On the Uninstallation Successful screen, click Finish.
Licensing
Your guide for licensing the use of KUKA Sim Pro 3.0 on your device.
CONTENTS HIDE
FIRST-TIME USE
SUBSEQUENT USE
DEACTIVATION
ADDRESS CHANGE
BORROWING

First-Time Use
The first time you run KUKA Sim Pro 3.0 you will be prompted to provide a standalone product key or address to a license server.
Important: Your device and network must allow traffic from KUKA Sim Pro 3.0 software, thereby you may need to modify firewall settings.

Standalone License
A standalone license is a 16-digit product key that can be used to run KUKA Sim Pro 3.0 on your device. The license must be validated and
activated prior to its use.
1. Run KUKA Sim Pro 3.0.
2. On the Welcome screen, click Next.
3. On the License type screen, click I have a standalone product key, and then click Next.
4. On the Standalone license screen, provide your 16-digit product key, and then click Next.
5. If there is an error or issue, follow the steps given on screen.
6. On the Registration screen, do one of the following:
To register an account, which requires an active Internet connection, provide an email address and password, and then click
Register. If you encounter issues during registration, follow the steps given on screen.
To not register an account, click Skip.
7. Click Finish to complete licensing.

Floating License
A floating license is a 16-digit product key contained on a network license server that can be used to run KUKA Sim Pro 3.0 on your device.
You would need to connect to a local network license server and have user rights in order to borrow an available license that has been
activated by the server's administrator.
1. Run KUKA Sim Pro 3.0.
2. On the Welcome screen, click Next.
3. On the License type screen, click My organization is using network floating license server, and then click Next.
4. On the Floating license server settings screen, provide the hostname/IP address and port number for your organization's local license
server, and then click Next.
5. If there is an error or issue, follow the steps given on screen.
6. Click Finish to complete licensing.

Trial License
You can request a 14-day trial license, which requires a valid email address and active Internet connection.
1. Run KUKA Sim Pro 3.0.
2. On the Welcome screen, click Next.
3. On the License type screen, click I want to use a 14-day trial license.
4. On the Requesting trial key screen, provide your email address, and then click Submit.
5. On the Standalone license screen, provide the 16-digit product key you received by email, and then click Next.
6. If there is an error or issue, follow the steps given on screen.
7. On the Registration screen, do one of the following:
To register an account, which requires an active Internet connection, provide an email address and password, and then click
Register. If you encounter issues during registration, follow the steps given on screen.
To not register an account, click Skip.
8. Click Finish to complete licensing.

Subsequent Use
The activation guide of KUKA Sim Pro 3.0 will always prompt you if you need to handle any licensing issues. For example, evaluation licenses
have a trial-period and will eventually need to be upgraded or extended for a longer period of use.
1. Run KUKA Sim Pro 3.0.
2. If you are prompted to handle a licensing issue, follow the steps given on screen.

Deactivation
You can deactivate a standalone license for use on a different machine based on your license agreement.
1. Click the File tab, and then on the Navigation pane, click Info, and then click License.
2. In your product key settings, click Deactivate.
3. On the Deactivate screen, click Deactivate.
4. If your license was successfully deactivated, on the Deactivation status screen, do one of the following:
To complete deactivation, click Close.
To configure a new license, click Configure.
5. Follow the remaining steps given on screen.

Address Change
You can manually change the address to a local license server used for running KUKA Sim Pro 3.0.
1. Click the File tab, and then on the Navigation pane, click Info, and then click License.
2. In your floating license settings, click Change.

3. Follow the remaining steps given on screen.

Borrowing
You can check out an available license from a local license server for a set amount of days to work offline, and then check back in the
license.
1. Click the File tab, and then on the Navigation pane, click Info, and then click License.
2. In your borrowing options, do one of the following:
To check out a license, set the number of days you want for checking out a license, and then click Borrow license from server.

To return a license, click Return license to server.


Network Deployment
A command line interface can be used to deploy KUKA Sim Pro 3.0 on computers connected to a network.

Options
Name Parameters Description
Normal Mode None The installer interacts with the user and
installs 3rd-party libraries (.NET, DirectX and
SQL Server) if required on the machine.
Example
<Installer Name>.exe

Silent Mode Silent Similar to Normal and Auto Update modes


without requiring interactions from user. Any
KUKA Sim Pro 3.0 version running on a device
will be terminated silently. During
installation, a standard dialog box will be
displayed, thereby allowing a user to cancel
setup.
Example
<Installer Name>.exe Silent

Silent Mode with config file /S, [ IniFile ] Similar to Silent mode but no screens or
dialogs are shown to user.
Example
<Installer Name>.exe /S
An INI file can be passed as an optional
argument for implementing custom
configurations. You must give the absolute
path of the INI file, and the file should be
formatted as follows:
<Setup Values>
%AppFolder%=C:\Program
Files\<Product Name>
Example
C:\<Installer Name>.exe
/S:"C:\setupvars.ini"
Note: /S accepts absolute paths only.

Uninstall Silent Mode /U, /S Uninstalls KUKA Sim Pro 3.0 silently from a
device in which the /U parameter is
responsible for passing the absolute path to
the uninstall.xml file located in program's
Uninstall folder.
Example
C:\Program Files\<Company
Name>\<Product Name>\uninstall.exe
/U:"C:\Program Files\<Company
Name>\<Product
Name>\Uninstall\uninstall.xml" /S
Navigation
A short guide on how to navigate the 3D and drawing worlds.
CONTENTS HIDE
CAMERA
VIEW SELECTOR
3D MOUSE

Camera
The camera of the 3D and drawing worlds can be interacted with by using a mouse.

Rotation
Right mouse button (RMB) will rotate the camera but only in the 3D world. Why? The drawing world is a two-dimensional environment.

Panning
Left and right mouse buttons (LMB+RMB) will pan the camera along the horizontal and vertical axes of the viewport. What is a viewport? A
viewport is the screen/window displaying a simulated environment like the 3D world.

Zooming
To zoom the camera, you can rotate a mouse wheel or hold down SHIFT and the right mouse button (SHIFT+RMB). The step size or zoom
factor can be changed in the Backstage view under General options.

By default, the camera will zoom through objects, including its center of interest. If you do not want the camera to zoom through its center of
interest, you can change the zoom mode in the Backstage view under General options.

Center Of Interest
To focus/center the camera, you can hold down CTRL and right-click an object in a simulated environment.
View Selector
Your point of view in the 3D world is indicated by a floating origin and View Selector in the upper and lower left corners of the viewport.

Floating Origin
The floating origin represents the XYZ axes of the World coordinate system.

Standard Views
The View Selector represents six standard views joined together to form an interactive navigation control. A standard view will be highlighted
if it resembles your current 3D world view.

Top and Down views share the same square: one click for Top and double-click for Down. In Top view, each click will rotate the camera 45
degrees.

Other Views
The inner and outer edges of a standard view can be used to select a view adjacent to two sides.

The corners of a standard view can be used to select a view adjacent to three sides.
3D Mouse
A 3D mouse (SpaceMouse) can be used to navigate the 3D world. You can enable a SpaceMouse and customize it in the Backstage view
under General options. When using a SpaceMouse, a blue dot may appear in the viewport to indicate the camera's center of interest.
Selection
You can select objects in the 3D and drawing worlds by using a mouse and other tools.
CONTENTS HIDE
DIRECT SELECTION
SELECT COMMANDS
PANELS

Direct Selection
Left mouse button (LMB) will directly select an object based on the context of a scene.

Press and hold CTRL to add/remove an object from the current selection.

Select Commands
Most tabs on the Ribbon show the Manipulation group, which has a set of Select commands for drawing selection areas with the left mouse
button (LMB) and indirectly selecting objects.

Components
In Layout view, you can select components.
Robots
In Robot view, you can select robot positions. You may also use the Jog command to directly select a robot controller.

Features
In Modeling view, you can select features of a component.

Tip: You can double-click a feature to select its node.


Layout Items
In Drawing view, you can select layout items, for example dimensions, annotations, drawings and drawing templates.

Panels
Panels can be used to select objects based on the context of a scene.

Components
In Layout view, you can use the Cell Graph panel to select components.

Robots
In Robot view, you can use the Controller Map panel to select a robot controller and its data. You may also use the Job Map panel to select a
robot and statements in the robot's program.
Modeling
In Modeling view, you can use the Component Graph panel to select the nodes, properties, behaviors and features of a component.

Drawings
In Drawing view, if you are using a drawing template, you can use the template's parts list/bill of materials to select drawings and line sets
representing components.
Visualization
The 3D world toolbar allows you to affect the visuals of the viewport.

1. Fill View
2. Headlight
3. Camera Projection
4. Rendering
5. Frame Visibility
6. View Editor

CONTENTS HIDE
FILL VIEW
HEADLIGHT
CAMERA PROJECTION
RENDERING
FRAME VISIBILITY
VIEW EDITOR
FULL-SCREEN MODE

Fill View
You can fill your view with all components or those that are selected in the 3D world. Viewing everything allows you to know the full extent
of the current layout and quickly center your view in the 3D world.

Viewing a selection allows you to focus on what is currently being manipulated in the 3D world.
Headlight
You can toggle the use of a directional light from the camera to highlight the surfaces and edges of component geometry. Generally, you
would use this when Rendering mode is set to Face edges shaded in order to improve edge detection when teaching a robot.

Camera Projection
You can switch the projection mode of the 3D world camera from perspective to orthographic. By default, the 3D world camera uses
perspective projection to show depth based on how far objects are from the camera.

However, orthographic projection is often used to create drawings and model components.

Rendering
You can define the render mode and quality of objects displayed in the 3D world. The following render modes are available:
Wireframe All edges shaded
Face edges shaded X-ray shaded

Shaded Material shaded

Realistic shaded Realistic edge shaded

Frame Visibility
You can turn on/off the visibility of all specific types of Frames features in the 3D world.
Robot Bases

Robot Tools
Robot World Frames

Robot Positions
There are additional display options for robot positions, for example you can show/hide position labels, axes and center points.

Frame Features

View Editor
The View Editor allows you to create, edit, select and save 3D world views with a layout.
Create View

Rename View
Select and Use View

Update View

Delete View

Save View
Save the current layout of the 3D world. Views will be automatically saved with the layout and become available whenever the layout is open
in the 3D world.

Full-screen Mode
If at any time you want to switch back and forth from the 3D world's full-screen mode, press F11 or the Function key+F11.
Building a Layout
When you run KUKA Sim Pro 3.0 a new empty layout is automatically opened in the 3D world.

Empty layout with floor and grid

In the layout, you can add and edit components to form a configuration.

Editing the properties of a selected component

You may also import CAD files as new components in a layout. One option is to drag and drop CAD files to quickly import them as
components.
Another option is to use an Import tool to analyze CAD files and customize how they are imported as components.

Generally, components are added from the eCatalog panel to the 3D world layout.
Displayed item in a collection linked to sources being dragged into the 3D world

When a component is selected, you may manipulate it as well as edit its properties. When two or more components are selected, you can
manipulate all of the selected components as well as edit any matching properties that can have the same value. For example, components
cannot have the same name, but they can have the same PDFExportLevel mode.

When you save a layout, you have the option of including components in the layout file. Why? Components and layouts are archive files.
Including components increases the file size of a layout but allows you to share the components with users who may or may not have access
to the components of that layout.
By default, a layout references a component by its VCID, a unique key for identifying and loading the component in the 3D world. The VCIDs
of components along with other items are saved in a layout. This includes any content in the drawing world as well as the configuration for
components (location, property values, connections).
Running a Simulation
The controls for running a simulation are positioned at the top-middle section of the 3D world. These controls allow you to customize the
simulation speed and runtime.

When you run a simulation, components in a layout may perform one or more tasks. For example, a robot may execute its program and a
conveyor system may move and route components along paths.

When you reset a simulation, the simulation returns to its initial state, so any tasks performed during the simulation are, in most cases,
undone. For example, components created during a simulation would be removed from the 3D world, and a robot would reset to the initial
joint configuration the robot had at the start of the simulation.
If you want to record a simulation, you have the option of exporting a simulation as a 3D PDF or video. The recording can start/stop at any
moment during a simulation.

Every component has a PDFExportLevel property which defines how the component's geometry is exported to a 3D PDF.
Teaching a Robot
If you want to teach a robot in the 3D world, click the Program tab to access the Robot view. The Controller Map panel will list all available
robot controllers in the layout including the data of each controller.

If you want to interact with a robot and teach positions:


On the Ribbon, go to the Manipulation group, and then click the Jog command. This allows you to select a robot controller in the 3D
world, jog a robot's joints, and use a manipulator to move the robot in relation to its tool center point (TCP).

When the Jog command is active, you can use the Jog panel to configure a robot as well as edit settings for the robot's manipulator. For
example, the Jog panel allows you to define the active TCP in a robot as well as snap filters for detecting and snapping a TCP to types of
locations in the 3D world.
Note: The Snap and Align commands work the same as they do in Layout view, except that you are snapping the current robot's active TCP.

If you want to access and edit a robot program, use the Job Map panel. Statements in a robot program are nested in routines. Every robot has
a Main routine that can be used to execute statements and call subroutines.

If a statement is a motion type statement, the Quick Simulation Slider in the Job Map panel can be used to motion a robot to the next
statement's position in the 3D world. To do this, you would need to first select a statement preceding a motion statement. If a motion
statement is followed by another motion statement, you can use the slider or a shortcut to run a robot through that set of motions which are
scaled according to the length of the slider.
If you want to import/export robot and machine data, you can use the contextual Import and Export tabs on the Ribbon, which are only
displayed in the Robot view.

If you want to add, edit and synchronize base, tool and Home position data for a robot, do one of the following:
In the Controller Map panel, right-click a Bases, Tools, or Home positions element, and then click its shortcut to access an editor.

In the editor, items to the left of ← column allow you to directly edit item data. Items to the right of ← column are reserved for values
that you either load from a .DAT file or manually enter and then sync to items on the left side of the editor.
Clicking a ← will sync both left and right items to each other. If an item is highlighted red, the item is out of sync or its current value
does not match the value of its right side counterpart.
Use the Controller Map panel to select a base frame, tool frame or Home position, and then use the Properties panel to edit its
properties.

If you want to use a virtual robot controller:


1. In the Controller Map panel, select a VRC element.

2. Use the contextual VRC tab to connect your virtual robot controller to the robot in the 3D world. You will need to boot the VRC and run
the simulation in order for the VRC to control the robot.
The program of a robot in the 3D world is automatically saved with a layout.
If you want to export a robot program:
Use the contextual Export tab on the Ribbon to export certain types of data or click the Generate Job command.

You may use the Controller Map panel to access files associated with a robot program.
1. In the Controller Map panel, select the element for a robot's job.
2. Use the Properties panel to read/write files associated with the robot's program and project.
Modeling a Component
The Modeling view allows you to model existing components as well as create new components.

In some cases, you would import a CAD file that you want to model as a component.

In other cases, you would use commands on the Ribbon to create a component and new geometry.
If you are importing CAD files, we highly recommend you clean up and simplify the geometry of the CAD file. For example, a CAD file with a
large data count and internal parts should be avoided to help reduce file size and memory consumption as well as boost performance.
Generally, you would simplify geometry in the editor you used to create the CAD file. However, import settings and other options in the
Modeling view can be used to analyze and import the CAD file using standard practices.

Generally, an imported CAD file is contained in one component with a single node, which is referred to as the component's root node. The
data structure of a component is a tree, so every component has a root node.
If a component needs to have movable parts or a kinematic structure, you would need to create new nodes in the component.

These types of nodes are referred to as links, and each link contains properties for defining an offset, pivot point, joint type and degrees of
freedom. That is, a link defines its own mechanism for movement.
After you create the required nodes in a component, you would need to move geometry into those nodes. Geometry that you import or create
in the Modeling view are contained in features.
If you need to regroup geometry in a feature, that is move some geometry into a new or different feature:
On the Ribbon, in the Geometry group, click the Tools arrow, and then use Feature Tools.

If you want to place a feature in a different node:


1. In the Component Graph panel, Component Node Tree pane, select the node containing the feature you want to place elsewhere in
the component.
2. In the Node Feature Tree pane, drag the target feature into the target node listed in the Component Node Tree pane.
Tip: When moving a node or feature in the Component Graph panel, you can hold down SHIFT to retain its 3D world position.
Once you have the defined the nodes of a component and regrouped its features, you might want to create properties in the component.
Component properties are contained in a component's root node and can be used to control the values of other properties in the component
as well as make the component parametric.

Properties you create in a component will be listed in the Layout view, Properties panel unless you make a property invisible.
That is, a component property has its own set of properties, which you can read/write in a Property task pane.
In the Component Graph panel, Component Node Tree pane, select a property to display its properties in the Property task pane.

If you want a component to perform tasks before or during a simulation, create behaviors.
Some behaviors need to reference features and other behaviors to accomplish tasks. For example, a One Way Path references Frame
features to define and calculate its path.

Behaviors can also connect to behaviors in other components. For example, a One to One Interface allows you to connect a component to a
One to One Interface in another component granted the interfaces are compatible.
If you want to write code for a component, you can use a Python Script behavior. A Python Script allows you to use Python API as well as other
libraries and modules available in stackless Python 2.7. Python Scripts can be used to write logic for a component before or during a
simulation as well as to design features, manipulate the 3D world and develop add-ons.

To save a component:
On the Ribbon, in the Component group, click Save.
Creating a Drawing
A drawing is a view of the current layout in the 3D world represented as sets of lines.

In the Drawing view, you can create new drawings manually or automatically.
On the Ribbon, in the Create View group, do one of the following:
To manually create a drawing, click Select. You would then be prompted to select an area in the 3D world to render as a drawing.

To automatically create a drawing using a standard orthographic view, click an available View option.
Every drawing has a Scale property, which you can read/write in the Properties panel. If you want to control the scale of drawings, import a
drawing template. By using a drawing template, you are able to create a print-ready technical drawing as well as a parts list/bill of materials.
Every component has a set of BOM properties that are used to populate a bill of materials table in a template.

If you want to add dimensions and annotations to a drawing:


On the Ribbon, use commands in the Dimension and Annotation groups.

Everything in the drawing world is a layout item that has its own set of properties. What is a layout item? A layout item is a visual object that
is not a component and is saved in a layout. This means your drawings, annotations and dimensions are generated every time you load the
layout in the 3D world.
You cannot save a drawing separately from a layout. You can, however, print and export drawings.
Simulation Controls
The Simulation controls at the top of the 3D world allow you to start, stop, reset, record and customize a simulation.

1. Settings
2. Reset
3. Play/Pause
4. Speed
5. Decrease Speed
6. Speed Slider
7. Increase Speed
8. Record 3D PDF
9. Record Video
10. Record Animation

CONTENTS HIDE
SETTINGS
SPEED
RESET

Settings
Simulation settings allow you to customize the execution of a simulation.
Name Description
Custom Allows you to define a simulation run time previously set to run at
infinity.
Repeat Turns on/off the looping of a simulation with a defined runtime or
end.
Reset Resets warm up time to zero.
Save State Saves the current location and configuration of all components in 3D
world. By default, this is automatically done at the start of a
simulation in order to reset components to their initial simulation
state.
Simulation Level Indicates the global accuracy setting for simulating component
movements.
Default
Accuracy is defined by component.
Detailed
Simulates component movements as accurate as possible, thereby
simulating full range of motion for component.
Balanced
Simulates component movements in a way that is balanced with
performance of simulation, thereby component may move from point
to point without simulating unnecessary joint motions.
Fast
Simulates component movements as quickly as possible, thereby
component may snap to joint configuration or jump from point to
point.

Simulation Mode Defines the time mode of the simulation.


Real Time
The speed of simulation is scaled to operate in real time, for
example one second in simulation is one second in real time. In real
time mode, you can use a scale factor to speed up or slow down the
simulation, thereby allowing you to sync simulation with real world
device.
Virtual Time
The speed of simulation is dependent on computer speed, thereby
allowing simulation to run as fast as possible. In virtual time mode,
you can use a step size to define a virtual frame rate for rendering
the 3D world. For example, a step size of 0.3 would render a frame
every 0.3 seconds of simulation runtime.

Simulation Run Time Defines the runtime of simulation.


Warm Up Time Defines a point in time to start simulation, thereby a certain amount
of time has already elapsed in simulation before it begins playing in
the 3D world.

Speed
The speed of a simulation can run in virtual time or be set to advance in real time and emulate real-time motion planner. For analyzing cycle
times, use either KUKA OfficeLite or KUKA.OfficePC.

Reset
When you reset a simulation, the layout of the 3D world returns to its initial state.
Components reset to their initial or saved state at the start of a simulation. That means dynamic components created during a
simulation would be removed from the layout. A static component would return to its saved location and have the same hierarchy and
connections it had at the start.
Joints and other axes of components with kinematics would return to the values they had at the start.
Base and tool frames would be restored to their initial positions at the start. That means the effects of setting base and tool frames
during a simulation would be undone.
Signals and robot variables would reset to default values, which is information not stored in a saved state.
Your view of the 3D world would remain and is not stored in a saved state.
Help Tab
The Help tab displays commands for accessing product documentation, online support and social media.

Help and Reference


Name Description
Help Opens the KUKA Sim Pro 3.0 Help file.
Python API Opens the Python API reference guide.
.NET API Opens the .NET API reference guide.
Python 2.7 Opens the official Python 2.7.1 documentation.
Note: KUKA Sim Pro 3.0 uses a stackless version of Python 2.7 and
some modules might not be currently implemented nor supported.

Online Support Material


Name Description
Academy Opens the Visual Components Academy page.

Forum Opens the Visual Components Forum page.


Community Opens the Visual Components Community page.
Blog Opens the Visual Components Blog page.

Social Media
Name Description
YouTube Opens the KUKA Robot Group YouTube page.
Facebook Opens the KUKA Robotics Facebook page.
LinkedIn Opens the KUKA Robotics LinkedIn page.
Twitter Opens the KUKA Roboter GmbH Twitter page.
Backstage
The Backstage view allows you to open and save files as well as edit preferences.

1. Navigation Pane
2. Sections
3. Screen
4. Confirm Options

CONTENTS HIDE
ACCESS
CONTEXT
COMMANDS

Access
To access the Backstage view:
Click the File tab.

Context
The context of the Backstage view depends on the item you select in the Navigation pane.
You can:
Open and save layouts.
Print content shown in the 3D world and drawing world.
Edit and save preferences for selections, navigation, rendering and the language of the user interface.
Edit the system of measurement for units and quantities.
Commands
The following commands are shown in the Navigation pane when you click the File tab.
Name Description
Clear All Clears the 3D world of all components and opened layouts.
Exit Closes KUKA Sim Pro 3.0.
Info Shows product and license information as well as the metadata of
the current layout in 3D world.
Open Opens a native or supported type of file as a layout in the 3D world.
Options Displays a set of options/preferences for configuring KUKA Sim Pro
3.0.
Print Previews and prints either the view of the 3D world or a selected
area of the drawing world.
Save Saves changes made to the current layout in 3D world to an existing
file.
Save As Saves the current layout in the 3D world as a new file.
Drawing
The Drawing view allows you to draft, design, export and print technical drawings.

1. Drawing Template
2. Drawing (View)
3. Dimension
4. Manipulator
5. Annotation
6. Bill of Materials
7. Properties Panel

CONTENTS HIDE
ACCESS
PANELS
CONTEXT
COMMANDS

Access
To access the Drawing view:
Click the Drawing tab.

Panels
The Drawing view shows, by default, the following panels:
Properties for reading and writing properties of selected objects in the drawing world. This includes layout items such as annotations,
dimensions, and orthographic drawings.
Context
The context of the Drawing view is technical drawing.
You can:
Import drawing templates and prepare print-ready documents.
Create drawings of the 3D world manually and automatically using standard orthographic views.
Scale, re-size and notate drawings using annotations, dimensions and bills of materials.
Export drawings as vector graphics and CAD files.

Commands
By default, the following commands are shown in the Ribbon when you click the Drawing tab.
Name Description
Always Snap Turns on/off the automatic snapping of a selected object along an
axis or plane at intervals when using the manipulator.
Angular Creates a new dimension measuring the angle between two points.
Automatic Size Turns on/off the automatic calculation of intervals for snapping a
selected object along an axis or plane when using the manipulator.
Back Creates a new back side drawing of layout in the 3D world.
Balloon Creates a new balloon annotation anchored to a point.
Bottom Creates a new bottom side drawing of layout in the 3D world.
Clear Removes everything from the drawing world.
Copy Copies the current selection to the clipboard.
Create Creates a bill of materials for all or selected drawings in a bill of
materials table.
(BOM) Delete Deletes a selected drawing from a bill of materials table.
(Clipboard) Delete Deletes the current selection.
(Export) Drawing Exports the geometry of all or selected drawings to a new supported
file.
(Print) Drawing Allows all or a selected area of the drawing world to be printed in a
print-friendly format.
Front Creates a new front side drawing of layout in the 3D world.
Left Creates a new left side drawing of layout in the 3D world.
Linear Creates a new dimension measuring the distance between two
points.
Load Template Imports a template for scaling new drawings and generating a bill of
materials table in print-friendly format.
Move Allows a selected object to be moved along an axis or plane, rotated
around an axis, and snapped and aligned to a point in 2D world.
Paste Adds the contents of clipboard to active area or field of workspace
depending on data type.
Rectangle Creates a new rectangle annotation anchored to a point.
Restore Windows Restores the workspace of current view to its default setting.
Right Creates a new right side drawing of layout in the 3D world.
Select Allows an area of 3D world to be selected, and then created as a
new drawing based on 3D world view.
Show Displays a list of panels that can be shown/hidden from the current
view of workspace.
Size Defines the interval for snapping a selected object along an axis or
plane when using the manipulator.
Text Creates a new text annotation that is a note anchored to drawing
world.
Top Creates a new top side drawing of layout in the 3D world.
Layout
The Layout view allows you to build layouts in the 3D world using components.

1. Cell Graph Panel


2. eCatalog Panel
3. Selected Component
4. Manipulator
5. Property Tabs
6. Properties Panel

CONTENTS HIDE
ACCESS
PANELS
CONTEXT
COMMANDS

Access
To access the Layout view:
Click the Home tab.

Panels
The Layout view shows, by default, the following panels:
eCatalog for browsing connected sources of files and adding them to a layout.
Cell Graph for listing, selecting and editing components in a layout.
Properties for reading and writing properties of selected components in a layout.
Context
The context of the Layout view is layout configuration.
You can:
Open, save and create new layouts.
Add, select, edit and manipulate components.
Run and record simulations as 3D PDFs.
Visualize and render components in different environment settings.
Export components and layouts as images and CAD files.

Commands
By default, the following commands are shown in the Ribbon when you click the Home tab.
Name Description
Align Aligns a selected component using two points. Additional options
are displayed in a task pane.
Settings
Align position, orientation or both and in what axis.
Snap Type
Define the type of point to select in the 3D world.

Always Snap Turns on/off the automatic snapping of a selected component along
an axis or plane at intervals when using the manipulator.
Attach Attaches a selected component to a node of another component,
thereby forming a new parent-child hierarchy in the layout.
Automatic Size Turns on/off the automatic calculation of intervals for snapping a
selected component along an axis or plane when using the
manipulator.
Copy Copies the current selection to the clipboard.
Delete Deletes the current selection.
Detach Detaches a selected component from a node of another component,
thereby removing a parent-child hierarchy from the layout.
(Import) Geometry Imports the geometry of a supported file. Additional options are
displayed in a task pane.
Uri
Location of file.
Tessellation quality
Define level of detail for rendering geometry using triangles.
Include
Define what to include with geometry.
Material Creation Rule
Define rule for mapping the materials of geometry with those in your
materials libraries.
Feature Tree
Define what hierarchy to use for geometry.
Organize geometry
Define how to group geometry.
Up axis
Define axis for aligning top and bottom of geometry.
Minimum hole diameter
Define tolerance for removing holes in geometry.
Minimum geometry diameter
Define tolerance for not importing set of geometry based on its
minimum bounding box.
Healing tolerance
Connect points, lines and edges of geometry within a tolerance in
order to cleanup errors.
Units
Convert units of file based on current Unit Family setting.

(Export) Geometry Exports the geometry of all or selected components to a new


supported file.
Group Adds selected components to a new group.
Image Allows the 3D world view within a border to be captured, and then
exported as a new file or copied to the clipboard. Additional options
are displayed in a task pane.
Resolution
Define image resolution and size of border in 3D world.
File Format
Define image as a new file or copy to clipboard.
Render mode
Adjust the render mode of 3D world.
Export
Capture area of 3D world view within border.

Interact Allows the pointer to jog joints and other interactive properties of
components in one or more degrees of freedom in the 3D world.
Interfaces Turns on/off the visibility of a connection editor for a selected
component that can wire remote connections to other components.
Note: A selected component must have an abstract interface,
otherwise its editor will not appear in 3D world. Other components
must have compatible interfaces for their editors to appear in the 3D
world.

Measure Measures the distance and/or angle between two points in 3D


world. Additional options are displayed in a task pane.
Mode
Measure distance, angle or both.
Settings
Define how to visualize a measurement and in which coordinate
system to base measured values.
Snap Type
Define type of point to select in 3D world.
Tip: The results of a measurement are sent to Output panel.

(Manipulation) Move Allows a selected component to be moved along an axis or plane,


rotated around an axis, and snapped and aligned to a point in 3D
world.
(Origin) Move Allows the point of origin in active component to be moved in 3D
world. Additional options are displayed in a task pane.
Apply
Save the new position and orientation of origin.

Paste Adds the contents of clipboard to active area or field of workspace


depending on data type.
PnP Allows the pointer to plug selected components into other
components to form physical connections.
Note: A selected component must have an interface, otherwise it
cannot be plugged into any component. Other components must
have compatible interfaces, otherwise selected components will not
plug into them. Components that are plugged into one another may
or may not be attached to one another.

Restore Windows Restores the workspace of current view to its default setting.
Select Allows for direct and indirect selection of components in the 3D
world using listed commands.
Rectangular selection
Select by drawing a selection box.
Free-form selection
Select by drawing a selection path to form a closed loop.
Select all
Selects all components.
Invert selection
Forms a new selection of every component not in current selection.

Show Displays a list of panels that can be shown/hidden from the current
view of workspace.
Signals Turns on/off the visibility of a connection editor for a selected
component that can wire signals to other components.
Note: A selected component must have a digital (Boolean) signal,
otherwise its editor will not appear in 3D world. Other components
must have digital (Boolean) signals for their editors to appear in the
3D world.

Size Defines the interval for snapping a selected object along an axis or
plane when using the manipulator.
(Origin) Snap Allows the point of origin in selected component to be snapped to a
location in 3D world by using one to three points. Additional options
are displayed in a task pane.
Mode
Snap to one point, the midpoint of two points, or the center of an arc
made by three points.
Settings
Affect position, orientation or both and in what axis.
Snap Type
Define the type of point to select in the 3D world.
Apply
Save the new position and/or orientation of origin.

(Tools) Snap Allows a selected component to be snapped to a location in 3D


world by using one to three points. Additional options are displayed
in a task pane.
Mode
Snap to one point, the midpoint of two points, or the center of an arc
made by three points.
Settings
Affect position, orientation or both and in what axis.
Snap Type
Define the type of point to select in the 3D world.

Statistics Launches a dashboard for configuring charts and reporting data


collected during a simulation.
Ungroup Removes selected components from one or more groups, and then
deletes those groups.
Modeling
The Modeling view allows you to model new and existing components.

1. Component Graph Panel


2. Component Node Tree
3. Node Feature Tree
4. Manipulator
5. Visual Node Structure
6. Selected Feature
7. Properties Panel

CONTENTS HIDE
ACCESS
PANELS
CONTEXT
COMMANDS

Access
To access the Modeling view:
Click the Modeling tab.

Panels
The Modeling view shows, by default, the following panels:
Component Graph for viewing and editing the data structure of a selected component. The panel itself consists of two panes. The top
pane (Component Node Tree) shows the node structure of a component as well as the component's properties and behaviors. The
bottom pane (Node Feature Tree) shows the feature structure of a selected node in a component, which can include primitives,
imported geometry from CAD files, physics elements, and operations that transform and manipulate other features.
Properties for reading and writing properties of selected objects in a component. This includes nodes, behaviors and features.
Component properties are objects with their own set of properties listed in a Property task pane.

Context
The context of the Modeling view is component modeling.
You can:
Create, edit and link nodes to form a kinematic chain of joints.
Create and connect behaviors to perform and simulate internal and external tasks and actions.
Contain, create and manipulate CAD geometry and topology in features. This includes data analysis, clean up, regrouping and
simplification of geometry in CAD files for use in small, medium and large layouts.
Create and reference component properties to control and limit the value of other properties within a component.
Use mathematical equations and expressions to define properties and make a component parametric.
Create static and kinematic objects as well as entities for simulating physics. This includes restitution, rigidity and elasticity.
Use Python 2.7 and API to implement scripts for defining component features, logic as well as the automation of tasks, actions and
event handling.

Commands
By default, the following commands are shown in the Ribbon when you click the Modeling tab.
Name Description
Align Aligns a selected object using two points. Additional options are
displayed in a task pane.
Settings
Align position, orientation or both and in what axis.
Snap Type
Define the type of point to select in the 3D world.

Always Snap Turns on/off the automatic snapping of a selected object along an
axis or plane at intervals when using the manipulator.
Automatic Size Turns on/off the automatic calculation of intervals for snapping a
selected object along an axis or plane when using the manipulator.
Behaviors Displays a list of behaviors that can be created in a selected node.
Copy Copies the current selection to the clipboard.
Create Link Creates a new child node in a selected node.
Delete Deletes the current selection.
Features Displays a list of features that can be created in a selected node.
Geometry Imports the geometry of a supported file. Additional options are
displayed in a task pane.
Uri
Location of file.
Tessellation quality
Define level of detail for rendering geometry using triangles.
Include
Define what to include with geometry.
Material Creation Rule
Define rule for mapping the materials of geometry with those in your
materials libraries.
Feature Tree
Define what hierarchy to use for geometry.
Organize geometry
Define how to group geometry.
Up axis
Define axis for aligning top and bottom of geometry.
Minimum hole diameter
Define tolerance for removing holes in geometry.
Minimum geometry diameter
Define tolerance for not importing set of geometry based on its
minimum bounding box.
Healing tolerance
Connect points, lines and edges of geometry within a tolerance in
order to cleanup errors.
Units
Convert units of file based on current Unit Family setting.

Hierarchy Allows a selected object and its hierarchy to be moved together


when using the manipulator.
Interact Allows the pointer to jog joints and other interactive properties of
objects in one or more degrees of freedom in the 3D world.
Measure Measures the distance and/or angle between two points in 3D
world. Additional options are displayed in a task pane.
Mode
Measure distance, angle or both.
Settings
Define how to visualize a measurement and in which coordinate
system to base measured values.
Snap Type
Define type of point to select in 3D world.
Tip: The results of a measurement are sent to Output panel.

(Manipulation) Move Allows a selected object to be moved along an axis or plane, rotated
around an axis, and snapped and aligned to a point in 3D world.
(Origin) Move Allows the point of origin in active component to be moved in 3D
world. Additional options are displayed in a task pane.
Apply
Save the new position and orientation of origin.

New Creates a new component in the 3D world.


Paste Adds the contents of clipboard to active area or field of workspace
depending on data type.
Properties Displays a list of properties that can be created in the root node of
active component.
Restore Windows Restores the workspace of current view to its default setting.
Save Saves the active component to an existing file, otherwise a new file.
Save As Saves the active component to a new file.
Select Allows for direct and indirect selection of features in the 3D world
using listed commands.
Rectangular selection
Select by drawing a selection box.
Free-form selection
Select by drawing a selection path to form a closed loop.
Select all
Selects all features in the active component.
Invert selection
Forms a new selection of every feature not in current selection.

Selected Allows a selected object not its hierarchy to be moved when using
the manipulator.
(Structure) Show Turns on/off the visual node structure of an active component in 3D
world, including joint offsets and degrees of freedom.
(Windows) Show Displays a list of panels that can be shown/hidden from the current
view of workspace.
Size Defines the interval for snapping a selected object along an axis or
plane when using the manipulator.
(Origin) Snap Allows the point of origin in active component to be snapped to a
location in 3D world by using one to three points. Additional options
are displayed in a task pane.
Mode
Snap to one point, the midpoint of two points, or the center of an arc
made by three points.
Settings
Affect position, orientation or both and in what axis.
Snap Type
Define the type of point to select in the 3D world.
Apply
Save the new position and/or orientation of origin.

(Tools) Snap Allows a selected object to be snapped to a location in 3D world by


using one to three points. Additional options are displayed in a task
pane.
Mode
Snap to one point, the midpoint of two points, or the center of an arc
made by three points.
Settings
Affect position, orientation or both and in what axis.
Snap Type
Define the type of point to select in the 3D world.

Tools Displays a list of tools for editing nodes, features and geometry.
Split
Allows geometry in a node to be selected in 3D world, and then
moved to a new Geometry feature. The selection can either be of
geometry sets, faces or individual faces and must be contained in
Geometry features.
Invert
Allows geometry in a node to be selected in the 3D world, and then
inverted to face a different direction. The selection can either be of
geometry sets, faces or individual faces and must be contained in
Geometry features.
Merge
Moves selected geometry in a node into one feature. The selection
must be contained in Geometry features. The first selected
Geometry feature will be merged with other selected features, and
those features will be deleted.
Merge faces
Merges points in selected faces.
Collapse
Collapses a selected feature and its hierarchy into a new Geometry
feature.
Slice
Allows geometry in a selected feature to be sliced into a new
Geometry feature by using a plane. When slicing, a point is picked in
the 3D world and settings are used to define a plane at that point.
Plane intersection with the geometry of a selected feature is
indicated by thick red lines.
Select Identical
Allows geometry to be selected in the 3D world, and then
automatically selects identical geometry.
Remove Holes
Allows geometry to be selected in the 3D world, and then
automatically removes holes and gaps based on a criteria by
tessellating surfaces.
Component
Extracts a selected node/feature and its hierarchy from the active
component, and then forms a new component. Selected nodes will
become child nodes of a new component, whereas selected features
will be contained in the root node of a new component.
Link
Extracts a selected feature and its hierarchy from the active
component, and then forms a new node. If features are contained in
the same node, a new node will be formed at that level in the node
hierarchy or as a child of the root node. If features are contained in
different nodes, a new node will be formed at the upper most level
in the node hierarchy or as a child of the root node.
Decimate
Reduces the data count of selected features by merging and
removing vertices based on a criteria. This is a clean up operation
that will try to preserve the topology of geometry, eliminate
redundant vertices, and patch gaps and cracks by forming new
faces.
Cylindrify
Converts selected geometry into cylinders.
Blockify
Converts selected geometry into blocks.
Assign
Sets, clears or inspects the materials of features. This can also be
used to add and edit items in your materials libraries.
Add Decal
Allows geometry to be copied and used for visualizing a decal that is
loaded from a source geometry file.
Mapping
Allows texture coordinates to be assigned to geometry.

Wizards Displays a list of wizards for executing automatic operations.


Action Script
Models a selected component to support the signaling of actions
using I/O. The logic for I/O signal actions is defined in a Python
Script labeled ActionScript and can be configured in the Actions
Configuration section listed in the Properties panel for a selected
component.
End Effector
Models a selected component as an end-of-arm tool (EOAT) or
external axis that can be physically and remotely connected to
robots using signals and interfaces.
IO-Control
Models the joints of a selected component, that are assigned to a
controller,to be driven to a set value by using signal events. Three
Real properties will be created for each joint to define its open,
closed and current value. Three Boolean signals will be created to
trigger and define the value a joint should be driven to by its
controller. The signal labeled [Joint_Name]ActionSignal acts as
a trigger condition for a Python Script created and paired with a
controller. When a joint action signal is set to 0 or 1, the script will
notify its paired controller to move that joint to its open (0) or closed
(1) value, for example grasp and release actions of grippers and
clamps. Multiple controllers and scripts can be used to move joints
independent of one another in a process. The other two signals
created for a joint can indicate if the joint is in an open or closed
state.
Positioner
Models a selected component with at least one joint assigned to a
controller to act as a workpiece or robot positioner. A workpiece
positioner will support the physical connection of components and
export of its joint values for remote connections. A robot positioner
will support the physical connection of robots and export of its joint
values.
Conveyor
Models a selected component as a conveyor for moving components
along a path. The path can be defined by existing Frame features or
auto-generated along the top face of the component bound box.
Interfaces can be auto-generated to support the physical transfer of
components to and from other components. Otherwise, the input
and output ports of the path can be defined by existing flow type
behaviors. Another option is the ability to auto-generate a
Component Creator at the beginning of the path and connect its
output to the input of the path.
Robot
The Robot view allows you to teach and manipulate robots in the 3D world.
1. Job Map Panel
2. Controller Map Panel
3. Contextual Robot Tools Tabs
4. Interactive Joint
5. Robot Positions
6. Manipulator
7. Connected External Kinematics Component
8. Properties Panel
9. Jog Panel

CONTENTS HIDE
ACCESS
PANELS
CONTEXT
COMMANDS

Access
To access the Robot view:
Click the Program tab.

Panels
The Robot view shows, by default, the following panels:
Controller Map for listing, selecting and editing the data of robot controllers in a layout. This includes VRC (virtual robot controller)
connections as well as the import, export and synchronization of robot controller data.
Job Map for reading, writing and editing the programs of robots and other components in a layout.
Jog for teaching a selected robot in a layout.
Properties for reading and writing properties of selected objects in a layout. This includes components, robot controller data, and
robot actions such as motion statements.
Context
The context of the Robot view is robot programming.
You can:
Teach positions, paths and other actions to a selected robot and any external joint.
Read, write and edit robot programs and controller data.
Perform offline programming, collision detection, limit testing, calibration and optimization.
Visualize and edit robot IO using wire connections.
Select, edit and manipulate robot positions.
Access a contextual Robot Tools tab group on the Ribbon for handling VRC connections and the import/export of data.

Commands
Program
By default, the following commands are shown in the Ribbon when you click the Program tab.
Name Description
Align Aligns a selected object using two points. Additional options are
displayed in a task pane.
Settings
Align position, orientation or both and in what axis.
Snap Type
Define the type of point to select in the 3D world.

Always Snap Turns on/off the automatic snapping of a selected object along an
axis or plane at intervals when using the manipulator.
Automatic Size Turns on/off the automatic calculation of intervals for snapping a
selected object along an axis or plane when using the manipulator.
Color Highlights Highlights node in 3D world exceeding its limits.
Connecting Lines Turns on/off the display of lines in the 3D world that connect and
show the order of points to be reached by a selected robot when
executing its Main routine, including calls to subroutines.
Copy Copies the current selection to the clipboard.
Delete Deletes the current selection.
Detectors Displays a list of options and tools for managing collision tests.
Detect collision
Detect first or all collisions.
Collision Tolerance
Detect collision at impact or within a distance tolerance.
Show Minimum Distance
If using collision tolerance, show/hide the shortest distance
between objects in a detected collision.
Selection vs World
Detect if selected component collides with any other component in
3D world.
Create detector
Creates a new collision detector. Additional options are displayed in
a task pane, which can be accessed by clicking a listed detector.
Click a component in 3D world, and then use Mini toolbar or task
pane to add component to either list A or B in detector. In task pane,
use A and B tabs and node check boxes to include/exclude nodes
from detector.
Note: Select the check box of listed detector to use the detector in
collision test.

Detectors Active Turns on/off all detectors in collision test.


Environment Calibration Displays an editor for fitting components onto base and tool frames
in robots.
Name
Name of component in layout.
TouchUp
Update location of EnvCalib frame in component or create EnvCalib
frame in component at root node origin. An update will fit EnvCalib
frame onto base/tool frame but not move rest of component,
thereby creating EnvCalib offset.
Robot
Robot used for calibration. Leave empty to use selected robot or
choose other robot in 3D world.
Fitting onto
Base or tool frame of robot used for calibrating component.
Right arrow
Fit component onto base/tool frame of robot by its EnvCalib frame.
Filter components
Only list components with EnvCalib frames.
Clockwise arrow
Refresh.

Exchange Robots Allows the active robot to be exchanged with a robot selected in the
3D world, thereby the robots swap positions and programs.
Additional options are displayed in a task pane.
Apply
Exchange a selected robot highlighted green with the active robot.

Interfaces Turns on/off the visibility of a connection editor for a selected


component that can wire remote connections to other components.
For a selected robot, the editor can be used to connect external
axes, which should be wired in an order that is how the amplifiers of
the robot are configured in the real world.
Note: A selected component must have an abstract interface,
otherwise its editor will not appear in 3D world. Other components
must have compatible interfaces for their editors to appear in the 3D
world.

Jog Allows the pointer to jog and interact with the joints of robots and
other components in 3D world as well as directly select a robot, and
then use manipulator to teach robot.
Note: The origin of manipulator depends on robot configuration in
the Jog panel. For example, if a tool frame is used as a moveable
TCP, manipulator will be at origin of tool coordinate system, the tool
frame will move with the manipulator, and the location of tool frame
will be referenced as the point and orientation for defining robot
positions relative to robot/base coordinate system.

Joint Turns on/off joint limits for robots and other components in 3D
world.
Measure Measures the distance and/or angle between two points in 3D
world. Additional options are displayed in a task pane.
Mode
Measure distance, angle or both.
Settings
Define how to visualize a measurement and in which coordinate
system to base measured values.
Snap Type
Define type of point to select in 3D world.
Tip: The results of a measurement are sent to Output panel.

Message Panel Output Sends info on exceeded limit to Output panel.


Move Allows a selected object to be moved along an axis or plane, rotated
around an axis, and snapped and aligned to a point in 3D world.
Move Robot World Frame Allows the Robot World frame of a selected robot to manipulated in
3D world.
Paste Adds the contents of clipboard to active area or field of workspace
depending on data type.
Restore Windows Restores the workspace of current view to its default setting.
Select Allows for direct and indirect selection of robot positions in the 3D
world using listed commands.
Rectangular selection
Select by drawing a selection box.
Free-form selection
Select by drawing a selection path to form a closed loop.
Select all
Selects all robot positions.
Invert selection
Forms a new selection of every robot position not in current
selection.

Show Displays a list of panels that can be shown/hidden from the current
view of workspace.
Signals Turns on/off the visibility of a connection editor for a selected robot
that can wire inputs and outputs to signals in other components.
Note: A selected robot must have a digital I/O space (Boolean
Signal Maps), otherwise its editor will not appear in 3D world (same
requirement for other robots). Other components must have digital
(Boolean) signals for their editors to appear in the 3D world.

Size Defines the interval for snapping a selected object along an axis or
plane when using the manipulator.
Snap Allows a selected object or arm/TCP of a selected robot to be
snapped to a location in 3D world by using one to three points.
Additional options are displayed in a task pane.
Mode
Snap to one point, the midpoint of two points, or the center of an arc
made by three points.
Settings
Affect position, orientation or both and in what axis.
Snap Type
Define the type of point to select in the 3D world.

Stop at limits Stop a running simulation when an object exceeds any of its limits.
Stop on collision Stops a running simulation when there is a detected collision.
To Reference Locks robot positions to referenced coordinate system, thereby
positions move with robot/parent in 3D world.
To World Locks robot positions to 3D world, thereby positions do not move
with robot/parent.
Traces Turns on/off the visibility of traced motion paths for a selected robot
in 3D world.

VRC
By default, the following commands are shown in the Ribbon when you click the contextual VRC tab.
Name Description
Boot Boots a connected VRC with a given configuration for the current
robot cell.
Connect Connects to a virtual machine running KUKA OfficeLite matching a
given host name or IP address.
Connecting Lines Turns on/off the display of lines in the 3D world that connect and
show the order of points to be reached by a selected robot when
executing its Main routine, including calls to subroutines.
Disconnect Disconnects from a virtual machine running KUKA OfficeLite with an
additional option to exit VRC and shutdown virtual machine.
Generate and load Job Generates the job of a selected robot, and then loads that job in a
connected VRC.
Jog Allows the pointer to jog and interact with the joints of robots and
other components in 3D world as well as directly select a robot, and
then use manipulator to teach robot.
Note: The origin of manipulator depends on robot configuration in
the Jog panel. For example, if a tool frame is used as a moveable
TCP, manipulator will be at origin of tool coordinate system, the tool
frame will move with the manipulator, and the location of tool frame
will be referenced as the point and orientation for defining robot
positions relative to robot/base coordinate system.

Load Loads a program in connected VRC.


Move Allows a selected object to be moved along an axis or plane, rotated
around an axis, and snapped and aligned to a point in 3D world.
Record Records the actions of a selected robot in a subroutine labeled KRC
Recording when executing program loaded in connected VRC.
Note: This can be used to record digital inputs and outputs and
motion-to-motion actions by robot, which are generated as a
sequence of linear motion type statements.

Select Allows for direct and indirect selection of robot positions in the 3D
world using listed commands.
Rectangular selection
Select by drawing a selection box.
Free-form selection
Select by drawing a selection path to form a closed loop.
Select all
Selects all robot positions.
Invert selection
Forms a new selection of every robot position not in current
selection.

Unload Closes a loaded program in connected VRC.

Import
By default, the following commands are shown in the Ribbon when you click the contextual Import tab.
Name Description
Import Krl Loads a KRL program in a selected robot with the option of clearing
the current program or loading the KRL program as a subroutine.
Additional options are displayed in a task pane.
File Name
Path to .SRC file of KRL program.
Note: Only one .SRC file is read in. Folders and archive.zip files
cannot be read in. Calls to routines in other files will not be
recognized and those files will not be imported. Unrecognized
statements in program will be imported as expert code/USERKRL
statement. Statements nested inside a FOLD statement will not be
recognized. The SerialNr property of a selected robot, if not set to
zero, can be used to verify if generated KRL code can be run on the
selected robot.
Software version templates
Version of KRL program. The CodeGenTemplatesVersion property of
selected robot defines its code template.
Load Main into sub routine
Import KRL program as subroutine of current program in selected
robot.
Load
Import the .SRC file.
Important: A KRL program might make references to global
variables. Therefore, it is recommended to first import tools and
bases from a $CONFIG.DAT file, and then import global variables
from a $CONFIG.DAT file, and finally import KRL program.

Import Safety Zone Loads safety zone data (cell, workspaces, tools and parameters)
from an existing XML file in a selected robot.
Load bases Allows base frames in a selected robot to be edited and synced with
data loaded from a $CONFIG.DAT file. After file is loaded, an editor
is displayed with the left-side columns showing current base frame
data and the right-side columns showing loaded data.
Maximum number of bases
Define amount of base frames in robot.
Name
Name of base frame in robot and sync status. Red means current
base frame data is out-of-sync with loaded data. That is, left-side
base frame fields do not match right-side fields.
Node
Node that base frame is attached to in 3D world. Click field to set
additional properties.
Ext Tool
Set base frame to act and be used a tool frame.
Description
Describe base frame and leave notes.
XYZ
Position values of base frame in parent coordinate system.
ABC
Rotational values of base frame in parent coordinate system.
Left arrow
Sets base frame data to equal load data.
Folder
Load a different $CONFIG.DAT file.
Copy
Copies base frame data to the clipboard.
Note: When editing Node field, a red-colored option means to avoid
using that node; green means node is a child node of another node;
and no color means node is a fixed, for example root node of
component, and should only be used with fixed base frames. Use
the Keep world position check box to retain the location of base
frame in 3D world when it is attached to a different node, otherwise
base frame inherits node offset.

Load homepos Allows Home positions in a selected robot to be edited and synced
with data loaded from a $CONFIG.DAT file. After the file is loaded,
an editor is displayed with the left-side columns showing current
Home position data and the right-side columns showing loaded
data.
Name
Name of Home position and sync status. Red means current Home
position data is out-of-sync with loaded data. That is, left-side Home
position fields do not match right-side fields.
TouchUp
Sets Home position data to match current posture/joint
configuration of robot. That is, left-side Home position fields are set
to equal joint property values of robot in 3D world.
Jointn to JointN
Joint values of Home position, including values for external axes.
Left arrow
Sets Home position data to equal loaded data.
Folder
Load a different $CONFIG.DAT file.
Copy
Copies Home position data to the clipboard.
Load Job Map Loads a program in a selected robot.
Load tools Allows tools frames in a selected robot to be edited and synced with
data loaded from a $CONFIG.DAT file. After file is loaded, an editor
is displayed with the left-side columns showing current tool frame
data and the right-side columns showing loaded data.
Maximum number of tools
Define amount of tools frames in robot.
Name
Name of tool frame in robot and sync status. Red means current tool
frame data is out-of-sync with loaded data. That is, left-side tool
frame fields do not match right-side fields.
Int base
Set tool frame to act and be used as a base frame.
Description
Describe tool frame and leave notes.
XYZ
Position values of tool frame in parent coordinate system.
ABC
Rotational values of tool frame in parent coordinate system.
Left arrow
Sets tool frame data to equal load data.
Folder
Load a different $CONFIG.DAT file.
Copy
Copies tool frame data to the clipboard.

Export
By default, the following commands are shown in the Ribbon when you click the contextual Export tab.
Name Description
Export Safety Zone Saves safety zone data (cell, workspaces, tools and parameters) of a
selected robot as a new XML file.
Generate Code Generates the program of a selected robot as new .SRC and .DAT
files.
Generate config.dat Generates the configuration data of a selected robot as a new
$CONFIG.DAT file.
Generate Job Generates the job of a selected robot as new files, including .SRC,
.DAT and .JOB files for program and $CONFIG.DAT and
$MACHINE.DAT files for robot cell. If connected to VRC and no
program is loaded, generated job is loaded in VRC.
Note: The Job Map of a selected robot is saved as an XML file.
Cell Graph
The Cell Graph panel provides an outline of the current layout in 3D world and options for selecting and editing listed items.

1. Show/Hide Invisible Components in 3D World


2. Type of Component
3. Selected Components
4. Component Name
5. Lock Editing for Component Type
6. Visibility for Component Type
7. Lock Editing and Visibility for Component
Component Graph
The Component Graph panel provides an outline of a selected component in the 3D world, including component nodes, behaviors, properties
and features.

1. Search Box for Component Node Tree


2. Expand Options for Component Node Tree
3. Root Node of Selected Component
4. Component Properties
5. Node Behaviors
6. Child Node (Link) and Joint
7. Search Box for Node Feature Tree
8. Expand Options for Node Feature Tree
9. Feature Tree
10. Frame Feature
11. Node Feature Tree pane
12. Subfeature of Operation
13. Operation Type Feature
14. Root Feature of Active Node
15. Component Node Tree pane
16. Behavior Sub-element Item
17. Behavior Sub-element
18. Selected Item in Component
19. Filters of Component Node Tree

CONTENTS HIDE
COMPONENT NODE TREE
NODE FEATURE TREE
PROPERTY EDITING
Component Node Tree
The structure of a component is a tree containing nodes. At the top of the tree is the root node of a component, which contains component
properties. Other nodes are linked together and formed under the root node. Each node contains its own collection of behaviors, which are
listed with a node in the tree. Some behaviors have sub-elements that perform special actions or contain other elements. For example, some
behaviors have ports that allow the internal and external transfer of components between behaviors, whereas other behaviors have
containers for other types of data. With the exception of the root node, each node defines its own joint, offset and mechanism for movement
using the Properties panel.

Component properties can be referenced within the scope of a component to assign values and write expressions. This allows you to make
the geometry of a node and other properties parametric. Behavior properties that have unique names can also be referenced by using this
syntax, <BehaviorName>::<BehaviorProperty>. Additional joint properties are added to a node when its joint is assigned to a controller.

When the node structure of a component is visualized in the 3D world, a node offset and its degree of freedom is shown as a rig that forms
the skeleton of a component. A node is made interactive by its joint properties, so when the joint of a node is defined you can use the
Interact command to jog and interact with that joint.
Nodes in a component can be attached to one another by dragging a node onto another node in the Component Node Tree pane. This will
move the node and its hierarchy, including behaviors and features.
Tip: When moving a node or feature in the Component Graph panel, you can hold down SHIFT to retain its 3D world position.
The geometry of a selected node will be highlighted blue in the 3D world. Generally, the node structure of a component is defined before
splitting and moving geometry into those nodes. Another approach is to use extraction for forming new nodes with selected geometry.

Note: The Move mode of the Modeling view will not affect the attachment of nodes to different nodes. Move mode is used for controlling
whether or not the hierarchy of a selected object moves with the object in the 3D world.
Behaviors in a component can reference and connect to one another and do not need to be contained in the same node. Some behaviors are
used to add functionality to another behavior or need to be used with other behaviors in order to perform tasks. For example, sensors can be
connected to a path and use signals to notify other behaviors when triggered by a component moving on that path.
If you want to connect behaviors in a component to behaviors in another component, use interfaces. An interface is a type of connector that
can connect to one or many other connectors. In order to form a connection between two interfaces, they must be compatible and have
available ports. That is, the section and fields of the interfaces must match up with one another and support the connection. A section is like
an electrical plug and its fields are like the pins of that plug. Any number of sections can be used to support different types of connections.
The order and types of fields used in a section are important since they define the logic of the connector. For example, you can connect the
output of a path in one component to the input of a path in a different component. If you were to do this internally, you would use the port
sub-elements of flow type behaviors.

For components to physically connect to one another, their interfaces must plug into one another at a point in both components, which is
defined by the SectionFrame property of each interface. For components to remotely connect to one another, their interfaces must be
abstract or virtual, which is defined by the IsAbstract property of each interface.
Note: The PnP command is used for handling the plug and play of components, for example a conveyor line and end-of-arm tool mounted on
a robot. The Show Interfaces command is used for displaying connection editors that can wire up abstract interfaces, for example external
axis components and digital signals remotely connected to a robot.
Node Feature Tree
The geometry of a node is a tree containing features. At the top of the tree is the root feature of a node. Other features can be linked
together and formed under the root feature. That is, each feature in a tree is evaluated, and then passed to its parent until finally reaching
the root feature of a node. This is how an operation type feature is applied: its subfeatures are evaluted, and then affected by the operation,
and finally passed to the parent of the operation type feature.
Feature tree evaluation is an important modeling concept and is illustrated in the following example. A Block feature is added to a node,
transformed along the X-axis, and then transformed around the Z-axis relative to the operation, thereby using a radius and angle to
manipulate the location of the Block. Next, the Block is cloned along the X-axis of an operation, and then extruded along the Y-axis of
another operation. Finally, the Node Origin frame and hierarchy the Block belongs to is passed to the Root feature of its node.

Primitive type features are simple shapes, whereas a Geometry feature is a container of either collapsed or imported geometry. Any type of
feature can be collapsed into and formed as a Geometry feature. In this form, geometry can be edited directly and regrouped into different
Geometry features. The geometry of a selected feature and its subfeatures are highlighted green and olive respectively in the 3D world.

A feature can be moved to a different node in a component by dragging the feature from the Node Feature Tree pane onto a node listed in
the Component Node Tree pane. This will move the feature and its hierarchy to the node. By default, a feature will retain its location, but you
can press and hold SHIFT when dragging a feature in order for the offset of a node to affect the feature's location. Likewise, features and
nodes can be extracted to form new nodes and components.
Note: The Move mode of the Modeling view will not affect the movement of features to different nodes. Move mode is used for controlling
whether or not the hierarchy of a selected object moves with the object in the 3D world.

Property Editing
When you select a property in the Component Node Tree, a Property task pane is displayed and is used to edit that property. Depending on
the type of property, you can set constraints by using a dash (-) for a min and max range, a semi-colon (;) for a set of values, and a line break
for each string of characters. The name of property can be used to generate a property tab in the Component Properties panel. The syntax is
<tabname::propertyname> and the tab will be displayed if at least one property using that tab name is visible and not hidden in a
component.
Component properties can be referenced within the scope of a component to assign values and write expressions. This allows you to make
the geometry of a node and other properties parametric. Depending on the type of property, you can assign a quantity and unit prefix to a
property, which will automatically be based on the global Unit Family setting.

In some cases, you may want to form your own units or calculations using Expression properties, which are generally hidden and/or
referenced in a read-only property that can display the calculated value of the expression.
Controller Graph
The Controller Graph panel provides an outline of robots in the current layout of 3D world and options for handling robot and machine data as
well as a virtual robot controller (VRC) connection.

1. KUKA System Software Version


2. # of Axes Connected to Robot from External Kinematics Component
3. Name of Robot
4. Base Frames of Robot
5. Tool Frames of Robot
6. Home Positions of Robot
7. Robot Variables
8. Job/Program of Robot
9. VRC Connection and Status
10. Positions Loaded from VRC Program
11. Safety Zone Components of Robot
12. Global Safety Parameters Component

CONTENTS HIDE
EXTERNAL AXES
SYNCHRONIZING DATA
ROBOT VARIABLES
PROJECT FILES
VIRTUAL ROBOT CONTROLLER
SAFETY ZONES

External Axes
When a robot is connected to components that extend its area of reachability or provide additional axes of movement, those components and
their imported joints are listed with the robot in the Controller Map panel.

Synchronizing Data
You can use the Import tab or shortcuts to synchronize the current data of base and tool frames as well as Home positions in a robot.

The editor for each type of object contains a table of data. The left-side columns show the current data of an object and the right-side
columns show loaded data from a opened file or data entered manually in each field. The name of an object will be highlighted red to
indicate if at least one of its fields/cells is out-of-sync with content in the right-side columns. In order to sync data, the cells can be changed
manually or automatically synced by using an arrow that splits the left- and right-side columns in the editor.
Depending on the type of object, the editor will display different field names/properties that are specific to that object.
Node field will be displayed for base frames and you can click the field to set which node the base frame is attached to in the layout.
Clear-colored options mean a node is fixed. Green-colored options mean a node is a child node and might move. Red-colored options
should be avoided.

Ext Tool field will be displayed for base frames and allows you to set the base frame to act as a tool frame/TCP.
Int Base field will be displayed for tool frames and allows you to set the tool frame to act as a base frame/base coordinate system.
Touchup field will be displayed for Home positions and allows you to quickly set the Home position to equal the current joint
configuration of the robot in 3D world.
Home positions editor does not use XYZ position and ABC orientation fields rather joint fields for a robot and any external joints, for
example A1 to A6 and E1 to E6.

Robot Variables
Robot variables allow you to handle implicit and explicit variables for assigning values. Implicit variables are automatically created when you
add statements to a robot program, but are not listed with a robot in the Controller Map panel. Instead, you need to use the Manage Robot
variables shortcut made available for a KSS element to access implicit variables.

The Variables dialog allows you to edit variables and types, but should only be done for specific reasons or to load corrected data.
Explicit variables can be created by using the Add variable shortcut made available for the Variables element.

When adding a variable, you need to define the scope, type and name of the variable. The scope of a variable determines its use in a robot
program, for example a counter variable used only in Main routine to control a loop.

After a variable is added, you can set its value by using an Add Set Variable statement in a robot program and use the variable in other
statements.

Project Files
The job of a robot is its program and is a part of the overall project of the robot. The properties of a robot job allow you to define details
about the project as well as the location for generating the Job Map XML file and source code of the program.
Virtual Robot Controller
A virtual robot controller (VRC) can be connected to a robot in the simulation world. The state of a VRC connection is shown in the Controller
Map panel and its status is shown in the Properties panel. When using a VRC, the configuration and machine data of a robot and its program
can be loaded to and from a VRC.

If you want to control a robot or run it through a loaded program, run the simulation in the 3D world. In some cases, you may want to jog the
robot using the VRC or modify its program run mode setting. In other cases, you may want to reset a simulation, and then use the Jog
command to teach a robot and create positions.

Safety Zones
Safety Zone components can be created for a robot and listed with it in the Controller Map panel. You can right-click a Safety Zone element,
and then use shortcuts to create, delete, import and export safety zone components.
Most types of safety zones are visual components and rendered in the 3D world as transparent shapes defined by corner points and other
properties. A global Safety Parameters component is not visual rather a set of properties and is automatically created for a robot when you
add at least one other type of safety zone component.
eCatalog
The eCatalog panel allows you manage connected sources of files and load those files in the 3D world.

1. System Collection for All Linked Files


2. System Source for Public Documents
3. System Source for My Documents
4. System Collection for Usage History
5. Smart Collection
6. Smart Collection Groups
7. Collection Group
8. Collection
9. Source
10. Collection Filters
11. Collections Pane
12. Collections Vertical Expander
13. Display Area
14. Number of Listed Items
15. Selected Item
16. Display Options
17. Sorting Options
18. Search Box
19. Edit Sources Button

CONTENTS HIDE
SOURCES
SMART COLLECTIONS
DETAILS VIEW
METADATA

Sources
At the top-left corner of the Collections pane is an Edit Sources button for accessing a Sources editor. This allows you add and edit local and
remote sources of files linked to the eCatalog panel.
Name Description
Source Name Name of source. Its check box turns on/off the use of the source.
Double-click the field to edit the nickname of source.
Provider Publisher of source.
Keep local copy Turns on/off the download and storage of remote source files as
local copies on device.
Visible Turns on/off the listing of the source in the Collections pane.
Location Indicates if source is local or remote.
Options Allows the directory of a local copy to be changed or deleted from
device.
Remove Removes the source from eCatalog panel.
Add New Source Allows a new source to be added to eCatalog panel.

Synchronization
The eCatalog panel is synchronized with sources using the Task Scheduler of Windows operating system. By default, this task is scheduled to
occur once per day.

Smart Collections
A smart collection allows you to create and save a custom search for files in sources linked to the eCatalog panel. In the Collections pane,
double-click a listed smart collection to access its editor.
Name Description
Name Defines the name of smart collection.
Filters Defines an ordered list of search conditions used to select which
items are linked to smart collection.
Field
Field name of data item in condition.
Criteria
Comparison operator of condition.
Example
Value or text compared to field in condition.
Plus Sign
Add a new condition.
Minus Sign
Remove condition.
Logical
Join or exclude condition.

Group by Groups matching items by one or more fields in ascending order.


N matching items Indicates the number of items linked to smart collection based on
search conditions.
Save Saves an existing smart collection or creates a new one.
Cancel Cancels the operation of editing a smart collection or adding a new
one.

Details View
Details View is a display option for the eCatalog panel that allows you to list items in a tabular format using file metadata. Column headers
can be dragged ahead or after one another to rearrange the view. Cell values can be copied and edited if the listed item is a local file.
An Edit Columns shortcut can be used to choose which metadata properties are used and listed as column headers in the view.

Name Description
Available Columns Lists available metadata properties for displaying items.
Right arrow Add a selected item in Available Columns to Selected Columns.
Left arrow Remove a selected item in Selected Columns.
Selected Columns Lists metadata properties used in Details View.
Up arrow Moves the order of a selected item up one level in Selected
Columns.
Down arrow Moves the order of a selected item down one level in Selected
Columns.

Metadata
The metadata of an item displayed in the eCatalog panel can be viewed as well as edited by using a View/Edit Metadata shortcut. If an item
is a local file, you can edit and add metadata properties and tags of that item. Otherwise, the loaded dialog will indicate if an item is read-
only.
Name Description
Main Fields Lists the metadata properties of an item. An empty field is used to
add a new property and value.
Tags Lists the tags/keywords of an item. An empty field is used to add a
new tag.
Job Map
The Job Map panel allows you to view and edit a robot program, preview motions and program other types of components using RSL
statements.

1. Statements Toolbar
2. Selected Robot Program
3. Main Routine
4. Folder Statement
5. Nested Statement
6. Motion Type Statement
7. Circular Motion Statement (Auxiliary Point and End Point)
8. Quick Simulation Slider
9. Selected Statement
10. Available Program

CONTENTS HIDE
STATEMENTS TOOLBAR
QUICK SIMULATION SLIDER
PROGRAM

Statements Toolbar
When a robot program is selected in the Job Map panel, the Statements toolbar will display commands for adding application statements to
the program.
Name Description
$IN Waits for a digital signal connected to a robot input to reach a
specific value.
$OUT Sets the value of a digital signal connected to a robot output or
signals an action in the robot.
Assign variable Sets the value of a robot variable or property.
Call-Subroutine Executes a specified subroutine in program.
CIRC Executes a circular motion defined by two positions, which are the
auxiliary and end points of motion.
COMMENT Leaves a comment in program.
FOLDER Executes a group of statements.
HALT Stops the execution of a program.
IF Defines an if-then-else condition for executing one group of
statements if the condition is True or another group of statements if
the condition is False.
LIN Executes a linear motion to a position based on current
configuration.
PATH Allows a path of motion statements to be created and executed for
selected curves in the 3D world. Additional options are displayed in
a task pane.
Pick
Define the type of points that can be selected in the 3D world.
Auto Expand
Set options for automatic curve selection.
Curve Offset
Define offset for points in relation to selected curves.
Point Density
Set options for generating path points.
Motion Parameters
Define robot configuration for path, visualize points along selected
curves, and reverse the order of point in path.
Generate
Create motion statements for points in path.

PTP Executes a point-to-point motion to a position by interpolating joint


values.
PTPHome Executes a Home position available in robot.
Set Base Sets the properties of a base frame in robot.
Set Tool Sets the properties of a tool frame in robot.
Subroutine Creates a new subroutine in program.
USERKRL Executes a custom statement defined by KRL code.
WAIT Delays the execution of program.
WHILE Defines a condition for executing a group of statements in a loop.
TouchUp the PTP or LIN point Updates the properties of a motion statement for a selected robot
position.

When a program is selected for a component other than a robot in the Job Map panel, the Statements toolbar will display commands for
adding RSL statements to the program. Generally, this is used for fixtures, clamps and servo type components.
Name Description
Call routine Executes a subroutine in program.
Delay Delays the execution of program.
Digital output Sets the value of a digital signal connected to a robot output or
signals an action in the robot.
Halt Stops the execution of a program.
Joint motion Executes a point-to-point motion to a position by interpolating joint
values.
Linear Executes a linear motion to a position based on current
configuration.
Print Sends feedback to be printed in the Output panel.
Routine Creates a new subroutine in program.
Set base Sets the properties of a base frame in robot.
Set tool Sets the properties of a tool frame in robot.
Wait for digital input Waits for a digital signal connected to a robot input to reach a
specific value.

Quick Simulation Slider


At the bottom of the Job Map panel is a Quick Simulation Slider. Use the arrows of the slider to go back or forward one statement at a time.
Drag the slider to simulate the motion of a robot to the position of its next statement. If a selected statement is a FOLD or contains nested
statements, the motion of the robot will be calculated based on each statement's position and scaled to simulate the posturing of the robot
to reach the next statement.
Program
The program of a robot is its job and is saved with the robot in a layout. The contextual Robot Tools tabs in the Ribbon can be used to load
and unload a different program in the robot as well as import and export KRL code for the project and job.

Programs can be loaded to and from a connected VRC, thereby allowing you to simulate real robot programs and work cells. When importing
a KRL program, unrecognized commands/statements will be generated as USERKRL statements.
If you need to rearrange statements in a program, drag and drop a statement before or after another statement. The place where you are
inserting a statement is shown by a line that will also indicate at what level you are inserting a statement.

When running a simulation, the current statement being executed in a robot program is indicated by an arrow in the right-side of the Job Map
panel.
Jog
The Jog panel is used with the Jog command to allow you to manipulate, configure and teach a robot in the 3D world.

1. Name of Selected Robot


2. Position Values of TCP/End of Arm
3. Orientation Values of TCP/End of Arm
4. Configuration of Robot and Manipulator
5. Joints of Selected Robot
6. Connected External Joints
7. Snap Options for Manipulator
8. Min and Max Values Reached by Joint in Current State
9. Min and Max Range of Joint
10. Joint Value
11. Increment Joint Value
12. Select Active Base/Tool in 3D World
13. Coordinate System

Manipulator
The manipulator of a robot allows you to jog a robot and teach positions using base and tool frames. A base frame acts as a fixed point in
space for simplifying robot positions. Generally, base frames are located at a Robot World Frame, which is either at the bottom or belly of a
robot. In some cases, base frames can be attached to nodes in other components. For example, base frames can be attached to pallets,
workpieces and nodes in an external kinematics component connected to a robot.

A tool frame acts as a tool center point (TCP) and for teaching robot positions. Generally, tool frames are located at the flange node/mount
plate of a robot or at the center point and tip of a mounted tool. In most cases, a tool frame is used as the origin of the manipulator, which
can then be used to move both the robot and tool frame in the 3D world. The large arrows of the manipulator will reference the active
coordinate system in the Jog panel, while the smaller arrows will reference the tool coordinate system.
One method of teaching a position is to reference a base coordinate system and calculate the distance to the active tool frame and its
orientation. In those cases, the manipulator moves a robot and active tool frame to that position. A base frame is the parent of that position,
so moving the base frame would in turn move that and any other position attached to it. If you were to select a robot position in the 3D world
or in the Job Map panel, the robot would snap to that position.
Tip: Use the Lock Positions To World command to not have robot positions move in the 3D world when you change the location of a robot,
base frame or any other object referenced by those positions. Use the Select command to select a robot position and not have its owning
robot snap to that position.

In some cases, a tool frame can be attached to nodes in other components and used as an external TCP. For example, you can attach a tool
frame to a stationary tool, thereby a robot orients itself around a fixed point in space. In some cases, the roles of base and tool frames would
be switched, so that a tool frame is used as a BASE and a base frame is used as a TCP. As a result, a robot position would inherit the
orientation of a base frame.
When snapping the manipulator, the Approach Axis property of the robot defines how to orient the robot based on the orientation of the
active tool frame. For example, a common orientation for a tool frame is to point down along its positive Z-axis direction.

Generally, you would change the approach axis of a robot to get different results.

When you try to move the manipulator to a point that is unreachable by a robot, an error will be displayed in the 3D world and point back to
the origin of the manipulator.

Likewise, an unreachable robot position in the 3D world will be highlighted red.


Output
The Output panel prints feedback on events, commands and other actions.
Properties
The Properties panel allows you to edit the properties of a selected object.

1. Position Values
2. Orientation Values
3. Property Tabs
4. Property
5. Property Section
6. Name of Object
7. Coordinate System
8. Lock Editing

CONTENTS HIDE
CONTEXT
COORDINATE SYSTEM
COMMON PROPERTIES

Context
In some cases, the name of the Properties panel might be prefixed to indicate the object type of the current selection.

Coordinate System
The position and orientation of an object is based on the active coordinate system in the scene.
The position of an object is defined in XYZ coordinate axes. Each axis button can be clicked to reset its value to zero or edited directly by
clicking its field. The orientation of an object is defined by using roll, pitch and yaw values. The A button is for rotations around the Z-axis.
The B button is for rotations around the Y-axis. The C button is for rotations around the X-axis.
Name Description
World Global coordinate system with fixed origin. Use this for global
positioning of selected object in 3D world and drawing world.
Parent Coordinate system of an object that the selected object is attached
to in a scene. The parent-child relationship of a selected object
determines its parent coordinate system. An object can only have
one parent.
Note: By default, components are attached to the 3D world, thereby
World and Parent coordinate systems are the same. A component
can be attached to a node of another component, thereby the
location of that component can be determined relative to its parent
node origin. This means when the parent node moves, the child
components move with it to maintain their relative location to the
parent origin.

Object Coordinate system of a selected object with an origin relative to its


current state. That is, a selected object can be moved relative to its
current location.

Common Properties
When two or more objects are selected, the Properties panel will display the selection count, the location of the last selected object, and
properties that are common in all selected objects. This allows you to edit the properties of multiple objects.
A property field is marked <multiple values> to indicate that the property has a different value in one or more selected objects. In this
case, the property may or may not need to have a unique value. For example, components must have unique names, so you should avoid
editing the Name property.
Every component has a set of common properties that are created with the component at the time of creation.
Name Description
Name Name of component.
Material Material of the component and any of its child nodes and features
which do not have an assigned material.
Visible Turns on/off the visibility of the component.
PDF ExportLevel Defines how the geometry of the component is exported to a 3D PDF
file.
BOM Turns on/off the inclusion of the component in a bill of materials
table.
BOMname Defines the name of the component in a bill of materials table.
BOMdescription Defines the description of the component in a bill of materials table.
Category Defines the Type metadata property of the component.
Simulation Level Indicates the accuracy setting for simulating component
movements.
Default
Accuracy is defined by simulation.
Detailed
Simulates component movements as accurate as possible, thereby
simulating full range of motion for component.
Balanced
Simulates component movements in a way that is balanced with
performance of simulation, thereby component may move from point
to point without simulating unnecessary joint motions.
Fast
Simulates component movements as quickly as possible, thereby
component may snap to joint configuration or jump from point to
point.

BackfaceMode Defines how the geometry of component not facing the 3D world
camera is rendered in a scene.
Adding Collections and Sources to Groups
Collections and sources can be grouped with one another in a collection group.
1. In the eCatalog panel, access the Collections view.
2. Find the collections and/or sources you want to group, and then drag them into a collection group.
Adding a Collection Group
You can add a collection group in the eCatalog panel.
1. In the eCatalog panel, access the Collections view.
2. Click the PLUS SIGN, and then click Add Collection Group.
Deleting a Collection Group
You may delete a collection group to separate all of its members.
1. In the eCatalog panel, access the Collections view.
2. Right-click the collection group you want to delete, and then click Delete.
Removing Collections and Sources from Groups
You can separate grouped collections and sources by removing them from a collection group.
1. In the eCatalog panel, access the Collections view.
2. Expand a collection group to see its members.
3. Drag the members you want to remove from the group into another collection or source.
Adding a Collection
You can add a new empty collection in the eCatalog panel.
1. In the eCatalog panel, access the Collections view.
2. Click the PLUS SIGN, and then click Add Collection.
Adding Items to Collections
You may add any displayed item in the eCatalog panel to a collection.
1. In the eCatalog panel, access the Collections view.
2. Click a collection or source to display its items.
3. In the Display area, drag the items you want to add to a collection into that collection.
Deleting a Collection
You may delete a collection from the eCatalog panel.
1. In the eCatalog panel, access the Collections view.
2. Right-click the collection you want to delete, and then click Delete.
Removing Items from Collections
You need to use a shortcut to remove items from a collection.
1. In the eCatalog panel, access the Collections view.
2. Click a collection to display its items.
3. In the Display area, select the items you want to remove.
4. Right-click the selection, and then click Remove.
Filtering Items
You can filter items based on their type and file format.
1. In the eCatalog panel, click a collection or source.
2. At the bottom of the eCatalog panel, do one of the following:
To filter items that are native files, select the Components and/or Layouts check boxes.
To filter items that are supported files, select the Files check box.
Searching for Items
You can search for items using keywords that are closely associated with an item's metadata, for example tags.
1. In the eCatalog panel, click a collection or source.
2. In the Display area, Search box, type one or more keywords to find items.
Sorting Items
You can sort items in order based on one or more available options.
1. In the eCatalog panel, click a collection or source.
2. In the Display area, click Sort and then click a desired sorting option.
Viewing and Editing Metadata
Every item contains metadata which you can view and edit in the eCatalog panel.
1. In the eCatalog panel, click a collection or source.
2. In the Display area, right-click an item, and then do one of the following:
If the item is from a remote source or a supported file, click View Metadata.
If the item is from a local source and not a supported file, click Edit Metadata.
3. If the item is from a local source, do one or all of the following:
To add a property, under Main Fields, click the Add property/empty field, and then type the name and value you want to assign
to that property.
To edit a property, under Main Fields, find the property you want to edit, and then click the property's Value field, and then type
or paste a new value.
To remove an added property, under Main Fields, find the property you want to remove, and then click the property's Name field,
and then clear the field.
To add a tag, under Tags, click the Add tag field, and then type or paste a tag.
To edit a tag, under Tags, find the tag you want to edit, and then click the tag's field, and then type or paste a new value.
To remove an added tag, under Tags, find the tag you want to remove, and then click the tag's field, and then clear the field.
Viewing Items
Items can be viewed using one or more display modes.
1. In the eCatalog panel, click a collection or source.
2. In the Display area, click View, and then move the slider to change the display mode.

Details mode
In Details mode, items are viewed in a tabular format with column headers indicating the metadata properties of items.
You can:
Drag a column header before or after another column to an area indicated by two blue arrows.
Click a column header to sort items.
Right-click a column or cell, and then click Edit Columns to open an editor for listing and arranging columns.
Right-click a cell, and then click Copy Value.
Deleting a Local Copy
The contents of a folder containing a local copy can be deleted by using the eCatalog panel.
1. In the eCatalog panel, access the Collections view.
2. Click the PLUS SIGN, and then click Edit Sources.
3. In Sources, find the remote source you want to edit.
4. To the right of the Location column for the remote source, click Options.
5. In Options, click Delete.
Forcing the Update of Local Copies
A local copy is automatically synced with its source when there is an active connection. This means new files added to a remote source
would be automatically checked for and downloaded by the eCatalog panel. In some cases, you may want to force update a local copy with
its source if there was a connection issue.
1. In the eCatalog panel, access the Collections view.
2. Click the PLUS SIGN, and then click Edit Sources.
3. In Sources, find the remote source you want to edit.
4. Clear the source's Keep local copy check box, and then select the check box again.
Mapping Local Folder to Remote Source
A local copy is automatically downloaded to a preset location in your device. You can redefine the location by mapping a different folder to a
remote source.
1. In the eCatalog panel, access the Collections view.
2. Click the PLUS SIGN, and then click Edit Sources.
3. In Sources, find the remote source you want to edit.
4. To the right of the Location column for the remote source, click Options.
5. In Options, click Change folder.
6. In Browse For Folder, do one of the following:
To use an existing folder, browse to the folder that you want to contain the local copy.
To use a new folder, browse to the location where you want to contain the local copy, and then click Make New Folder.
7. Click OK.
Adding a Smart Collection
You can add a new smart collection in the eCatalog panel.
1. In the eCatalog panel, access the Collections view.
2. Click the PLUS SIGN, and then click Add Smart Collection.
3. In the middle of New Smart Collection, use the drop-down menus to define the first filter condition, for example Collection Is All
Models.
4. Do one or all of the following:
To add another filter, click the PLUS SIGN and then use the drop-down menus to define the new logical filter condition, for
example And Type Is Conveyors.
To define a group, at the bottom of New Smart Collection, use the drop-down to define the group, for example Manufacturer
will group matching items by manufacturer.
To add a subgroup, at the bottom of New Smart Collection, click the PLUS SIGN, and then use the drop-down menu to define
the new subgroup.
5. Click Save.
Deleting a Smart Collection
You may delete a smart collection from the eCatalog panel.
1. In the eCatalog panel, access the Collections view.
2. Right-click the smart collection you want to delete, and then click Delete.
Editing Smart Collections
You can edit the properties of a smart collection.
1. In the eCatalog panel, access the Collections view.
2. Double-click the smart collection you want to edit in order to access its editor.
3. In New Smart Collection, edit one or more properties, and then click Save.
Adding a Local Source
You can link a local folder of files to the eCatalog panel.
1. In the eCatalog panel, access the Collections view.
2. Click the PLUS SIGN, and then click Edit Sources.
3. In Sources, click Add New Source.
4. In Add Source, click Select Local Folder.
5. In Browse For Folder, do one of the following:
To use an existing folder, browse to the folder you want to add as a source.
To use a new folder, browse to the location where you want to create a folder, and then click Make New Folder.
6. Click OK.
Adding a Remote Source
You can link a remote source of files to the eCatalog panel. Generally, a remote source is an HTML file with XML tags for retrieving data from
an online library or database.
1. In the eCatalog panel, access the Collections view.
2. Click the PLUS SIGN, and then click Edit Sources.
3. In Sources, click Add New Source.
4. In the URL box, type or paste the full path of the remote source.
5. Click OK.
Note: In some cases, you may be able to add a remote source but cannot access it because of Internet security settings on your device or
network, for example a web proxy or firewall restriction. Generally, these issues are resolved by alleviating HTTPS restrictions imposed on
your device. Explanation: The eCatalog panel acts like a web browser.
Forcing the Update of Sources
Sources are automatically synced with the eCatalog panel but can be refreshed to force an update. In most cases, you force an update when
there is a connection error between a remote source and the eCatalog panel.
1. In the eCatalog panel, access the Collections view.
2. Right-click the source you want to update, and then click Refresh.
Removing Sources
You may remove a source from the eCatalog panel.
1. In the eCatalog panel, access the Collections view.
2. Click the PLUS SIGN, and then click Edit Sources.
3. In Sources, find the listed source you want to remove form the eCatalog panel.
4. In the far right field of the listed source, click Remove.
Showing Sources
You may edit the visibility of a source in the eCatalog panel.
1. In the eCatalog panel, access the Collections view.
2. Click the PLUS SIGN, and then click Edit Sources.
3. In Sources, find the listed source you want to edit.
4. In the Visible column, do one of the following:
To hide a source, clear the source's Visible check box.
To enable a source, select the source's Visible check box.
Using Sources
You may edit the use of a source linked to the eCatalog panel.
1. In the eCatalog panel, access the Collections view.
2. Click the PLUS SIGN, and then click Edit Sources.
3. In Sources, find the listed source you want to edit.
4. In the Source Name column, do one of the following:
To disable a source, clear the check box next to the source's name.
To enable a source, select the check box next to the source's name.
Adding Components
Components can be added to the current layout of the 3D world.
When you add a component:
The component is automatically selected in the 3D world.
The component's properties are displayed in the Properties panel.
The PnP command is enabled to allow you to move and connect the component with other components.
The initial location of an added component can be the origin of the 3D world or a location relative to the pointer when you drag a component
into the 3D world.
Generally, you add components from the eCatalog panel to the 3D world.
1. In the eCatalog panel, click a collection or source.
2. At the bottom of the eCatalog panel, select the Components check box to display items that are components.
3. In the Display area, select one or more components.
4. Do one of the following:
To add one component to the 3D world origin, double-click the item. In this case, if the added component and a selection in the
3D world have matching physical interfaces, they will be automatically plugged into one another. That is, physically connected to
one another.
To add more than one component to the 3D world origin, right-click a selected item, and then click Open.
To add components to a location of your choice, drag a selected item into the 3D world.
Align Components
A selected component can be aligned based on the position and/or orientation of two points in the 3D world.
1. In the 3D world, select the components you want to align.
2. On the Home tab, in the Tools group, click Align.
3. In the Align task pane, edit one or more settings for picking the first point of alignment.
4. In the 3D world, click a location.
5. In the Align task pane, edit one or more settings for picking the second point of alignment.
6. In the 3D world, point to a location to preview the effect the Align action will have on your selection.
7. Click the location to align the selected component.
8. Do one or more of the following:
If you want to exit the Align command, press ESC or in the Align task pane, click Close.
If you want to undo the effect of an Align action, on the QAT, click Undo.
If you want to redo the effect of an undone Align action, on the QAT, click Redo.
Attaching Components
A component can be attached to a node in another component to form a parent-child relationship. That allows components to move and
affect one another in the 3D world. For example, a tool mounted on the end of a robot's arm will move with the robot because the tool is
attached to the flange node/mount plate of the robot. That is, some components are designed to automatically attach to one another when
forming physical connection like end-of-arm tools and detachable conveyor sensors.
When you select a component, a blue arrow will indicate if and what component the selection is attached to in the 3D world. If a component
is not attached to a node in another component, the component is attached to the 3D world (simulation root node).
When you are attaching a selection, a red bounding box is used to indicate the node of a component being pointed at in the 3D world.
1. In the 3D world, select the components that you want to attach to other components.
2. On the Home tab, in the Hierarchy group, click Attach.
3. In the 3D world, point to the node of a component that you want to attach the selection to, and then click the node.
Note: Attaching a component does not snap or plug it into another component. You are forming a hierarchy in which edits to a parent affect
components attached to it. For example, deleting a parent would also delete components attached to it.
Editing Component Properties
The Properties panel allows you to edit the location and properties of a selected component in the 3D world.
If a selected component contains two or more sets of properties, each set will appear as a tab in the Properties panel.
1. In the 3D world, select a component.
2. In the Properties panel, edit one or more available properties. If a component contains tabs of properties, click a tab to display its
properties, and then edit them.
If two or more components are selected, you can edit any properties common to the selected components as long as the property's value is
not unique. For example, components in the 3D world cannot have the same name.
Editing Origin of Components
The origin of a component can be snapped and moved to a different location in the 3D world.
Snapping allows you to pick a new location for a component's origin.
1. In the 3D world, select the component you want to edit.
2. On the Home tab, in the Origin group, click Snap.
3. In the Set Origin task pane, edit one or more settings.
4. In the 3D world, depending on the Mode setting, click one or more locations.
5. In the Set Origin task pane, click Apply to confirm the new location of the selected component's origin.
Moving allows you to use a manipulator to define a new location for a component's origin.
1. In the 3D world, select the component you want to edit.
2. On the Home tab, in the Origin group, click Move.
3. In the 3D world, use the handles of the manipulator to move the origin of a selected component.
4. In the Move Origin task pane, click Apply to confirm the new location of the selected component's origin.
Exporting Geometry of Components
The geometry of one of more selected components can be exported as a new, supported type of file.
1. In the 3D world, select the components you want to export.
2. On the Home tab, in the Export group, click Geometry.
3. In the Export Layout task pane, under Components to export, click Selected.
4. In the File Format list, click a supported file format of your choice.
5. Click Export, and then save the file.
Grouping components
Grouping allows you to quickly select and edit groups of components in the 3D world.
CONTENTS HIDE
ADD GROUP
SELECT GROUP
SELECT COMPONENTS IN GROUP
NEST GROUP
REMOVE GROUP

Add Group
A component can belong to one or more groups.
1. In the 3D world, select the components you want to add to a new group.
2. On the Home tab, in the Clipboard group, click Group.

Select Group
Selecting a component in a group would select all other components grouped with that component.
In the 3D world, select a component in the group you want to select in the 3D world.

Select Components in Group


You can select and edit one or more components in a group.
1. In the 3D world, select the group of a component.
2. Directly select a component in the active group.

Nest Group
Groups are hierarchal and can be nested with one another.
1. In the 3D world, select a group of components.
2. Add another component to the current selection.
3. On the Home tab, in the Clipboard group, click Group.
In this case, the original group of components is parent to a new subgroup formed with the other component. If you add a component in one
group to another group, the component belongs to two separate groups.

Remove Group
Components can be removed from one or more groups.
1. In the 3D world, select a component to select its groups.
2. On the Home tab, in the Clipboard group, click Ungroup.
If the selected component belonged to two or more separate groups, you would ungroup all components in those groups. If the selected
component belonged to a subgroup, you would remove the subgroup but not the parent group.
Note: If you ungroup components, you are deleting groups not components.
Importing Geometry as New Components
A CAD file can be imported as a new component in the 3D world.
Before you import a CAD file, you should clean up the geometry of the file in a CAD editor. Import settings in KUKA Sim Pro 3.0 can be used to
clean up and fix certain issues with imported CAD files.
1. On the Home tab, in the Import group, click Geometry.
2. In the Open dialog, select and open the file you want to import as a component.
3. In the Import model task pane, do one or more of the following:
To define the level of detail for the file's geometry, adjust the Tessellation quality slider.
To include/exclude types of data in the file, under Include, select/clear a data type's check box.
To simplify the structure of the file's model, under Feature Tree, select the preferred option. If Full is selected, an attempt will
be made to match the structure of the model when viewed in its native CAD editor. If Full is not selected, the structure of the
new component may differ from the original model.
To define how to group the file's geometry, under Organize geometry, select the preferred option.
To orient the top and bottom of the file's model, under Up axis, select the preferred axis and direction.
To connect points, lines and edges in the file's geometry, in Healing tolerance, set a distance value. Generally, this setting is
used as a cleanup tool for fixing holes, cracks and gaps that occur on the faces of solid objects. If the distance value is zero,
cleanup is disabled. If the distance value is greater than zero, vertices that neighbor one another, and are within a range set by
the distance value, might be connected to one another by generating a new line.
To handle unit conversion for scaling purposes, in Units, select the unit of measurement used in the file. If Default is selected, it
is assumed the unit of measurement is the same as the one currently used in KUKA Sim Pro 3.0.
4. Click Analyze to preview the data count of the file.
5. Click Import.
Technical: A CAD file is first converted to a PRC file format, and then read in order to create the structure of one or more new components.
Interacting with Parts of Components
Interactive parts of components can be moved in the 3D world based on each part's degrees of freedom (DOF) and limits. For example, some
robots have joints that may be rotated around and/or moved along an axis within a range of minimum and maximum values. In that case,
interacting with one joint in a robot may move some of its other joints because of the nodes of the robot are linked together in its component
structure.
1. On the Home tab, in the Manipulation group, turn on Interact.
2. In the 3D world, point to a part of a component you want to interact with.
3. Once the pointer becomes a hand icon, drag the pointer to jog/move the interactive part.
4. Do one of more of the following:
To undo the effect of an interaction, press CTRL+Z or on the QAT, click Undo.
To redo the effect of an undone interaction, press CTRL+Y or on the QAT, click Redo.
To reset components to their initial state, on the Simulation controls, click Reset.
To save the current state of components, either start the simulation or on the Simulation controls, click the Settings arrow, and
then click Save State.
Measuring Components
Measurements can be taken to evaluate the distance and/or angle between two points in the 3D world.
The approximated value of a measurement is controlled by a Display accuracy setting that affects how many digits are displayed to the right
of a decimal point.
1. Click the File tab, and then on the Navigation pane, click Options, and then click Display.
2. Under Dimensions and Annotations, in the Display accuracy box, type the amount of digits you want to display to the right of a
decimal point for a measurement.
3. Click OK.
A measurement can show both the distance and angle between two points.
1. On the Home tab, in the Tools group, click Measure.
2. In the Measure task pane, edit one or more settings for picking the first point of measurement.
3. In the 3D world, click a point.
4. In the Measure task pane, edit one or more settings for picking the second point of measurement.
5. In the 3D world, point to a location to preview the measurement.
6. Click the point to show the results in the 3D world and print them in the Output panel.
7. If you want to exit the Measure command, press ESC or in the Measure task pane, click Close.
Moving and Rotating Components
The location of a component in the 3D world is defined by coordinate values (XYZ) and degrees of rotation (ABC) in a coordinate system.
Important: Degrees of rotation in KUKA Sim Pro 3.0 uses an ABC format which refers to the ZYX coordinate axes in that order. That is, ABC
stands for Yaw, Pitch and Roll.
There are three available coordinate systems in the 3D world:
World is a global coordinate system with a fixed origin.
Parent references the object coordinate system of a selected component's parent. If a component is not attached to a node in another
component, the parent of a selected component is the 3D world (simulation root node). In that case, both the World and Parent
coordinate systems would have the same origin.
Object references a selected component's coordinate system. That is, the location of a component is relative to its own origin.
If two or more components are selected in the 3D world, the last component added to the selection is referenced as the selection's location
in the active coordinate system.
1. In the 3D world, select the components you want to relocate.
2. In the Properties panel, do one of the following:
To edit the position of a selection, in the XYZ boxes, type or paste distance values.
To edit the orientation of a selection, in the ABC boxes, type or paste degree values.
Tip: In the Properties panel, you can click XYZABC labels to reset their values to zero.
A manipulator can be used to define the position and orientation of selected components in the 3D world.
1. On the Home tab, in the Manipulation group, click Move.
2. In the 3D world, select the components you want to move.
3. On the manipulator, do one or all of the following:
To move the selection along an axis, drag an axis arrow in a positive or negative direction.
To rotate the selection around an axis, drag an axis ring in a clockwise or counter-clockwise direction.
To move the selection in a plane defined by two axes, drag a plane.
To snap the selection to another component's surface, drag the torus/origin of the manipulator.
Tip: Use Grid Snap commands to move selected components along an axis or plane at automatic or defined intervals. You can position the
pointer along an axis or ring to increment the movement or rotation of a selected component.
Plugging in Components
The PnP command allows you to plug components into one another at physical interfaces.
When you select a component:
Available physical interfaces are marked by arrows highlighted yellow and located at Frame features in the component.
Connected physical interfaces are marked by arrows highlighted green and located on or next to other components.
Available physical interfaces in a component will guide you to matching interfaces when you drag the component near other components. For
example, green arrows will point from an available interface to any nearby matching interfaces. If there are two or more matching interfaces,
the largest green arrow will point to the closest available connection. When matching interfaces are moved close enough to one another,
components will snap together and form a physical connection.
1. On the Home tab, in the Manipulation group, click PnP.
2. In the 3D world, point to the component you want to plug into other components.
3. Drag the component near other components until one or more green arrows point from the component to locations at nearby
components.
If you need to rotate the component in place, select the component, and then drag the manipulator in a clockwise or counter-
clockwise direction. Generally, you need to rotate a component to have its interfaces within an acceptable angle of approach to
matching interfaces.
4. Continue dragging the component in the direction of one of the green arrows until the component snaps to another component.
5. If you need to unplug the component, drag the component away from nearby components.
Remotely Connecting Components
Components with abstract interfaces can be remotely connected to one another in the 3D world by using connection editors.
In an editor, abstract interfaces are listed as ports and a wire shows a remote connection between one or more ports in editors for other
components.
Dragging a port away from its connection editor displays a wire. This wire can be moved to nodes in other components highlighted yellow or
to ports in other editors. When you drag a wire into a highlighted node, the wire attaches itself automatically to a matching interface and the
node will be highlighted green. When you drag a wire to a port in another editor, a check mark will show if you can attach the wire to that
port.
1. On the Home tab, in the Show group, select the Interfaces check box to show connection editors based on the selected component in
the 3D world.
2. In the 3D world, select the component that you want to remotely connect to other components.
Important: If a selected component does not have any abstract interfaces, no connection editors will be shown in the 3D world.
3. If you want to remotely connect a selected component to a specific port in another component, click the unfold button (>>) of the other
component to expand its editor.
4. In the selected component's editor, point to the port of a listed abstract interface that you want to remotely wire to another editor.
5. Once the pointer becomes a hand icon, drag the port away from the editor to show a wire and highlight any nodes of other components
in the 3D world with matching interfaces.
6. Do one of the following:
To automatically wire up a remote connection with another component, continue dragging the wire until it is inside a yellow
highlighted node of another component.
To wire up a specific remote connection, continue dragging the wire to a port in another editor until a check mark appears to
show a matching interface.
7. If you want to remove the remote connection, point to the wire to show a Cut icon, and then click the Cut icon to cut the wire.
Reporting Statistics
The Statistics dashboard allows you to report statistics collected from components during a simulation.
CONTENTS HIDE
ACCESS DASHBOARD
CREATE NEW CHART
PLOT DATA
VIEW DATA
PRINT CHART
EXPORT DATA

Access Dashboard
On the Home tab, in the Statistics group, click Statistics.

Controls
At the top of the Statistics dashboard is a set of tabs with each tab displaying its own grid of tiles. Each tile can contain a chart. A chart plots
a data series or the values of a property in a component. A data series can contain data from multiple components that have a common
property. A chart can plot more than one data series and have its own sampling interval. A sampling interval defines how often the value of a
data series is plotted in a chart. By default, all charts use a global sampling interval.
The toolbar of the Statistics dashboard contains the following controls.
Add line chart - Adds a line chart to a selected tile.
Add area chart - Adds an area chart to a selected tile.
Add bar chart - Adds a bar chart to a selected tile.
Add pie chart - Adds a pie chart to a selected tile.
Expand chart - Maximizes the size of a selected tile.
Trash can - Deletes a chart from a selected tile.
Interval - Defines the global sampling interval (in seconds) for all charts in the dashboard.
Print chart - Prints the chart of a selected tile.
Export to Excel - Exports chart data to an Excel file.
Export to CSV - Export chart data to a CSV file.
Layout - Defines the grid layout of the active tab.

Create New Chart


1. Access the Statistics dashboard, and then select or create a new tab.
2. In the grid, click a tile to select it. If the tile is empty, you will be adding a new chart. If the tile already contains a chart, you will be
resetting the properties of that chart.
3. In the toolbar above the grid, click the type of chart you want to add to the selected tile. By default, a new chart is selected for you and
contains at least one empty data series.
4. In the Properties panel, under Data Series, set Components to reference one or more components in the 3D world, and then set
Property to reference a property in the list of components whose value you want to plot in the chart.

Properties
A chart contains the following properties.
Name - Defines the name of the chart.
Legend Visibility - Displays the legend of the chart and its data series.
Title Visibility - Displays the title of the chart.
Sampling Interval - Defines the sampling interval of the chart for plotting its data series. A -1 value means the chart uses the global
sampling interval.
Type - Defines the chart type.
Data Series - A set of properties for adding and editing data series in the chart.
Add Series - Creates a new data series.
Index - Indicates the order of the data series in the chart with additional options for the deleting, collapsing and expanding the
data series.
Name - Defines the name of the data series.
Components - Defines a list of one or more components in the 3D world referenced by the data series.
Property - Defines which property in the list of components whose value is reported by the data series.
Thickness - Defines the display thickness of the data series in the chart.

Plot Data
A chart will plot data when you run a simulation based on its sampling interval. If you reset and run a new simulation, data from the previous
simulation will be cleared from all charts in the Statistics dashboard.
Note: A chart is a layout item, so charts can be saved with a layout. This does not include plotted data.

View Data
You can read, zoom in or out, pan and focus on data displayed in a chart. These actions, of course, depend on the chart type.
1. Access the Statistics dashboard, and then select a tab containing charts.
2. Do one or more of the following:
To read the value of a data series in a chart, point at the data series to display a label.
To zoom in or out on a chart, point at the chart, and then rotate the mouse wheel forward to zoom in or backward to zoom out.
To pan a chart, use the scroll bar of chart. If no scroll bar is displayed, zoom in on the chart.
To focus on a range of data in a chart, point at the beginning or end of the range in the chart, and then drag the pointer to select
and view that data.

Print Chart
You can print a chart.
1. Access the Statistics dashboard, and then select a tab containing charts.
2. In the grid, do one of the following:
To print one chart, select that chart.
To print all charts including empty tiles, do not select any tile or click the tab again to clear your selection.
3. On the toolbar above the grid, click Print chart.
4. In the Print Preview, make any necessary adjustments, and then click either Print or Export to XPS.

Export Data
Data plotted in charts can be exported to an Excel or CSV file.
1. Access the Statistics dashboard.
2. On the toolbar above the grid, do one of the following:
To export data to an Excel file, click Export to Excel, and then save the file.
To export data to a CSV file, click Export to CSV, and then save the file.
Selecting Components
A selection in the 3D world is highlighted by Silhouette and Fill colors.
In the 3D world, you can:
Click any component to select it.
Hold down CTRL and click components to add or remove them from a selection.
Click an empty space in the 3D world to clear a selection.
When you click a component in the 3D world a Mini toolbar will briefly appear and contain options for performing quick actions.
Selecting Components in a List
The Cell Graph panel can be used to select components, control the visibility of components, and lock components from being edited. In the
Cell Graph panel, components in the 3D world are listed and sorted by name and grouped by type, which you can define by editing the
Category property of a component.
1. In the Cell Graph panel, find a type of component that you want to view and edit.
2. Expand the type's section, and then turn on its Visibility to make all components of that type visible in the 3D world.
3. Under the expanded type, click a component to select it in the 3D world.
4. On the Home tab, in the View group, click Selected to fill your view with the selected component in the 3D world.
Tip: You can use the SHIFT and CTRL keys to select multiple items in the Cell Graph panel.
Selecting Components in an Area
The Select command allows you to make area selections in the 3D world and disable other modes that may move or otherwise alter
components. When using area selection, components must occupy a significant amount of space in the drawn region, otherwise they will not
be selected.
1. On the Home tab, in the Manipulation group, click the Select arrow, and then do one of the following:
To draw a selection box, click Rectangular selection.
To draw a selection path that forms into a closed loop, click Free-form selection.
2. In the 3D world, point to an area near the components you want to select.
3. Drag the pointer to draw either a selection box or selection path around the components.
Tip: Press CTRL+A to select every component in the 3D world.
Snapping Components
A selected component can be snapped to a location relative to other components in the 3D world.
1. In the 3D world, select the components you want to relocate.
2. On the Home tab, in the Tools group, click Snap.
3. In the Component Snap task pane, under the Mode section, do one of the following:
To snap a selection to a picked location, click 1 Point.
To snap a selection to a location halfway between two picked locations, click 2 Point.
To snap a selection to a location at an equal radius from three picked locations, click 3 Point - Arc Center.
4. Under the Settings section, do one or more of the following:
To snap a selection to the position of a location, select the Set Position check box.
To snap a selection to the same orientation of a location, select the Set Orientation check box.
To define the axis of alignment for snapping a selection to a location, click the Align Axis arrow, and then click the axis and
direction you want to use.
To preview the position and/or orientation of a selection at a location, select the Preview check box.
5. Under the Snap Type section, do one of the following:
To snap a selection to a point of reference, click Frame.
To snap a selection to a point on an edge and/or face, click either Edge, Face or Edge & Face.
To snap a selection to the origin of a component, click Origin.
To snap a selection to a corner point in a component's bounding box, click Bound.
Important: If you are selecting two or more locations, you can change the Snap Type setting before picking each location.
6. In the 3D world, point to a location to preview the effect the Snap action will have on your selection.
7. Depending on the Mode setting, click one or more locations. The Snap command will automatically close itself once you complete the
entire action or click an empty space in the 3D world or press ESC.
8. Do one or more of the following:
If you want to cancel the Snap command, press ESC or in the Component Snap task pane, click Cancel.
If you want to undo the effect of a Snap action, on the QAT, click Undo.
If you want to redo the effect of an undone Snap action, on the QAT, click Redo.
Connectivity
The Connectivity add-on allows you to connect a programmable logic controller (PLC) or server to KUKA Sim Pro 3.0 and transport data over
that connection. As a result, you can read and write the variables of components in a 3D world simulation over a network.
For up-to-date information, workflows, guides and troubleshooting, check the forum.
CONTENTS
TERMINOLOGY
ENABLING CONNECTIVITY FEATURE
ACCESSING CONNECTIVITY FEATURE
CONNECTING TO A TWINCAT PLC
CONNECTING TO AN OPC UA SERVER
PAIRING VARIABLES
SUPPORTED DATA TYPES
Terminology
Please be aware of the following terms and their context:
Simulation. Refers to either to the simulation of 3D world or the KUKA Sim Pro 3.0 product itself.
Server. Refers to either a PLC or server.
Simulation PC. The device running KUKA Sim Pro 3.0.
Server PC. The device running a PLC/server.
Simulation variable. A property or signal of a component in the 3D world.
Server variable. A variable in a PLC/server.
Variable pair. The connection between a simulation variable and a server variable.
Plugin. A protocol adapter used by KUKA Sim Pro 3.0 to connect to a PLC/server and transport data.
Connection. A connection between KUKA Sim Pro 3.0 and a PLC/server. This is sometimes referred to as a plugin connection.
Variable group. A collection of variable pairs specific to a plugin connection. Grouping is used to allow different sets of variable pairs
to have different update modes, transmission directions and active state.
Update time. The total time it takes to update the value of a variable pair in a plugin connection.
Plugin time. The amount time it takes the plugin to handle an update to a variable pair.
Configuration. The configuration of all plugin connections and their variable groups, including variable pairs. A configuration is saved
with a layout and can be imported/exported separately using the Configuration group.
Enabling Connectivity Feature
The Connectivity feature can be turned on/off using a backstage option.
1. Click the File tab, and then on the Navigation pane, click Options.
2. Click Add On, and then in Connectivity, do one of the following:
To enable the feature, click Enable.
To disable the feature, click Disable.
3. Restart KUKA Sim Pro 3.0.
Accessing Connectivity Feature
The Connectivity feature and its commands can be accessed from a Connectivity tab that appears above the Ribbon. If the Connectivity tab is
not visible, you either need to enable the feature or restart KUKA Sim Pro 3.0.
CONTENTS HIDE
COMMANDS
PANELS

Commands
Name Description
Add Group Adds and lists a new variable group with a selected connection.
Add Server Adds a new connection for a selected plugin.
Add Variables Opens an editor for connecting simulation variables to server
variables.
Clear Removes all connections for each plugin.
Disconnect Disconnects KUKA Sim Pro 3.0 from a selected connection.
Edit Connection Displays options in a task pane for editing or troubleshooting a
selected connection.
Export Exports the configuration of all connections in an XML format.
Import Imports an XML or CFG file that defines the configuration of one or
more connections.
Reconnect Attempts to reconnect KUKA Sim Pro 3.0 to a selected connection.
(Server) Remove Removes a selected connection.
(Variable) Remove Removes a selected variable group.
Restore Windows Restores the workspace of current view to its default setting.
Show Displays a list of panels that can be shown/hidden from the current
view of workspace.
Show Variables Shows a panel for managing the connection between simulation and
server variables.

Panels
Connectivity Configuration
The Connectivity Configuration panel allows you to manage connections for supported plugins. The structure of content in the Connectivity
panel is as follows:
Level 1 - Plugin. This refers to a communication protocol supported by KUKA Sim Pro 3.0 used for connecting a PLC or server. Currently,
you can establish connections using Beckhoff ADS and OPC UA protocols. If you are using Beckhoff ADS, you must either install a
TC1000 package or have a full TwinCAT 3 installation on the device running KUKA Sim Pro 3.0. Otherwise, you will not be able to
establish a connection to a TwinCAT 2/3 PLC. In most cases, the ADS libraries are installed with a PLC, so a workaround is to run KUKA
Sim Pro 3.0 and the TwinCAT PLC on the same device.
Level 2 - Connection. This is an added connection for a PLC or server using a plugin. Listed with every connection is a button that you
can use to turn on/off the connection.
Level 3 - Variable Group. This a group of variables for a connection that allows you to pair (map) variables of components in the 3D
world to variables of a PLC/server on the other side of the connection. Listed with every variable group is a data flow arrow, an update
mode indicator, and a button for turning on/off the variable group. A data flow arrow is set by the Transmission direction property of a
variable group and can be Simulation to server (right arrow, sends out simulation variable values) or Server to simulation (left arrow,
reads in server variable value). The update mode indicator is set by the Update mode property of a variable group and can be cyclic
(updates data using time set by Cyclic update interval property of variable group) or event-based (updates data when there is a change
in value for a variable in the group). By default, every new connection has two variable groups for reading in and sending out variable
values.
Connected Variables
The Connected Variables panel allows you to manage and debug issues related to the pairing of simulation and server variables in all
connections. The top and middle sections of the Connected Variables panel contain a table related to paired variables. The bottom section of
the Connected Variables panel contains two sets of controls on opposing ends.

Variable Pair Table


The table contains column headers which are split into two fields. The first field is the column header name, and the second field contains
column filtering and sorting options.
Structure. Lists a connection with its variable groups and paired variables. By default, the name of a variable pair is the name of its
simulation variable. You can click a variable pair field to edit its name.
Simulation variable. The id of a paired simulation variable, which is defined by the level of the variable in its component's hierarchy.
An id may contain up to four parts and uses a dot separator. The first part of an id is a component name, which is colored red and
always included in the id. A DOF name, which is colored green, may follow and is used to identify joint properties. A behavior or signal
name is colored green. A property name is colored blue.
Simulation type. The data type of a paired simulation variable, which is indicated by an icon.
Simulation value. The current value of a paired simulation variable. Real values are shown with maximum precision, and the field of a
Boolean value is highlighted with either a TRUE or FALSE value.
Prepared value. The value you want to assign a paired simulation variable. All prepared values are assigned at once using the Write
Prepared Values command or its shortcut, which you can access by right-clicking anywhere in the table. In some cases, you would
assign prepared values to debug the behavior of a simulation.
Latest value. The most recent value of a paired simulation variable based on the last successful sync with its server variable
counterpart. For server to simulation, the value is the result of a conversion to the simulation variable's data type. For simulation to
server, the value is converted to a .NET data type that is the closest match to the server variable's data type. The current and latest
value of a paired simulation variable may differ in two ways. First, the current value can update faster than a value set to or received
from a connection. Second, the value conversion between integer, double and float data types may reduce precision.
Status. Any error associated with the variable pair. You can point at an error to get a short description about the error.
Server variable. The id of a paired server variable in a readable format, which depends on the plugin of the connection. For example,
an OPC UA connection would show the variable node name and any array index value (Example[0]) if the variable node is found on the
main OPC UA server. For a Beckhoff ADS connection, a variable name would be its full textual id.
Server type. The data type of a paired server variable using terminology specific to the PLC or server connection. This is provided in
order to id potential value conversion errors.

Performance Statistics
The left-side set of controls are indicators for performance statistics, which include:
Average update time. The average amount of time it took to process an update for a variable pair.
Average plugin time. The average amount of time it took the plugin to process an update for a variable pair.
Max update time. The maximum amount of time it took to process an update for a variable pair.
Max plugin time. The maximum amount of time it took the plugin to process an update for a variable pair.
Pairs with errors. The number of variable pairs with an error status. This value will never exceed the total number of variable pairs you
have for your current session.
Errors on this run. The total number of errors that occurred in current or last simulation.
Update time covers the entire process of changing a simulation variable to confirmation from a PLC/server that the value was written for that
update. Time may start from each tick in a cyclic update timer or a value change event received by the simulation from a PLC/server.
Note: An event-based update from server to simulation would not include the latency or communication delay in the server, data transfer
over the network, and inside the library used by KUKA Sim Pro 3.0 for implementing the plugin connection.
Plugin time is a subset of total update time and only includes the time spent by the plugin itself. Generally, plugin time is closer to the
communication delay KUKA Sim Pro 3.0 has with a PLC/server. Plugin time excludes the delays from synchronization with a simulation thread,
for examples spikes from rendering the 3D world that would pause all other processes.
Technical: Statistics are calculated at 10Hz, but variables may update at 1000Hz. Each update operation for a variable pair is tracked
separately and includes timing information. For example, you may get 1000 times the total number of variable pairs worth of timing data
each second. The calculation itself uses the latest available timing values for each variable pair. Some variable pairs may have gone through
several updates in between each statistics update, while others none, which is why only the latest value is stored and used in averages.

Variable Pair Options


The right-side set of controls are commands manipulating variable pairs listed in the table.
Add Variable Pairs. Same as Add Variables command listed in the Ribbon.
Write Prepared Values. Sets the current value of a variable pair to its prepared value. This is done for all variable pairs.
Move Variables. Allows you to move selected variable pairs to another connection that has the same plugin.
Delete Selected. Permanently removes selected variable pairs from a connection. This deletes the connection between two variables
not the variables themselves.
Update Selected. Updates the variable pairs of a selected variable group.
Connecting to a TwinCAT PLC
The Beckhoff ADS plugin allows you to connect a running Beckhoff TwinCAT PLC version 2 or 3 with a loaded program.
Important: Make sure you have installed the necessary ADS components to your device and properly configured the PLC before doing this
workflow.
CONTENTS HIDE
STEP 1. ADD SERVER
STEP 2. VERIFY NETWORK CONNECTION
STEP 3. ACTIVATE CONNECTION

Step 1. Add server


You can manually add a new PLC connection, import a configuration file or load a layout with a configured PLC connection.

New Configuration
Click the Connectivity tab, and then in the Connectivity Configuration panel, do one of the following:
Right-click the Beckhoff ADS plugin, and then click Add Server.
Click the Beckhoff ADS plugin, and then on the Connectivity tab, in the Server group, click Add server.

Import Configuration
1. On the Connectivity tab, in the Configuration group, click Import.
2. Import the XML or CFG file for your PLC connection.

Load Configuration
1. Load a layout in the 3D world that has already been configured for a PLC connection.
2. Click the Connectivity tab, and then in the Connectivity Configuration panel, verify the connection is listed under the Beckhoff ADS
plugin.

Step 2. Verify Network Connection


1. (Optional but recommended) Open the Command Prompt or terminal of your device, and then ping the network addresses of the
devices running KUKA Sim Pro 3.0 and the PLC.
If you are running a PLC and KUKA Sim Pro 3.0 on the same computer, do a local test of 127.0.0.1.
If you are running a PLC and KUKA Sim Pro 3.0 on different computers or using a PLC dedicated device, you should have already
configured the route of the PLC using the Beckhoff AMS router system, and this needs to be done on both devices. Test by
pinging the network addresses of the devices and the routes.
2. Click the Connectivity tab, and then in the Connectivity Configuration panel, under Beckhoff ADS, right-click your PLC connection,
and then click Edit Connection.
Note: Every time you execute the Edit Connection command, the Beckhoff ADS plugin automatically scans common ports on your local
machine to find ADS ports for PLC connections, and then lists them in the Edit Connection task pane. For example, the plugin would check
TwinCAT 2 ports {801,811,821,831} and TwinCAT 3 ports 851 to 860. This discovery only works for PLCs running on your local machine.
3. In the Edit Connection task pane, under Server Address, set AMS Net ID and ADS port, and then click Test Connection.

Step 3. Activate Connection


If you have successfully added and verified a connection to a PLC, you are now ready to activate the connection.
1. Click the Connectivity tab, and then in the Connectivity Configuration panel, under Beckhoff ADS, click your PLC connection.
2. Do one of the following:
To activate the connection, click the greyed out Power button of that connection, and then in the Properties panel, under Server
Capabilities, verify Connected is set to True.
To deactivate the connection, click the green-colored Power button of that connection, and then in the Properties panel, under
Server Capabilities, verify Connected is set to False.
Connecting to an OPC UA Server
The OPC UA plugin allows you to connect a running OPC UA server.
CONTENTS HIDE
STEP 1. ADD SERVER
STEP 2. VERIFY NETWORK CONNECTION
STEP 3. ACTIVATE CONNECTION

Step 1. Add server


You can manually add a new server connection, import a configuration file or load a layout with a configured server connection. In all cases,
the OPC UA plugin implements an OPC UA client, which can then connect to your main OPC UA server.

New Configuration
Click the Connectivity tab, and then in the Connectivity Configuration panel, do one of the following:
Right-click the OPC UA plugin, and then click Add Server.
Click the OPC UA plugin, and then on the Connectivity tab, in the Server group, click Add server.

Import Configuration
1. On the Connectivity tab, in the Configuration group, click Import.
2. Import the XML for your server connection.

Load Configuration
1. Load a layout in the 3D world that has already been configured for a server connection.
2. Click the Connectivity tab, and then in the Connectivity Configuration panel, verify the connection is listed under the OPC UA plugin.

Step 2. Verify Network Connection


1. (Optional but recommended) Open the Command Prompt or terminal of your device, and then ping the network addresses of the
devices running KUKA Sim Pro 3.0 and the OPC UA server.
In all cases, test the connection addresses provided by your OPC UA server.
2. Click the Connectivity tab, and then in the Connectivity Configuration panel, under OPC UA, right-click your server connection, and
then click Edit Connection.
3. In the Edit Connection task pane, do all of the following:
To define the main OPC UA server address, under Connection, set Server address.
To use the best endpoint for secure messaging and encryption, under Connection, select the Use secure endpoint check box.
This, of course, depends on the security profile of your devices. A secure connection would require both the client and main OPC
UA servers to be configured with valid X.509 certificates and able to accept each other's certificates.
To provide login authentication for the server connection, under Authentication, click Username, and then set Username and
Password. You can select the Save password check box to insecurely store the password in the configuration file of your
connection.
To provide certificate authentication for the server connection, under Authentication, click Certificate, and then set User
private key file to the URI of your PFX file, and then set Password. You can select the Save password check box to insecurely
store the password, not the key file, in the configuration file of your connection.
To test the connection, click Test Connection.

Step 3. Activate Connection


If you have successfully added and verified a server connection, you are now ready to activate the connection.
1. Click the Connectivity tab, and then in the Connectivity Configuration panel, under OPC UA, click your server connection.
2. Do one of the following:
To activate the connection, click the greyed out Power button of that connection, and then in the Properties panel, under Server
Capabilities, verify Connected is set to True.
To deactivate the connection, click the green-colored Power button of that connection, and then in the Properties panel, under
Server Capabilities, verify Connected is set to False.
Pairing Variables
A variable group in a plugin connection is used to pair simulation variables with server variables. This means the value of a property or signal
in a component can be linked to the value of a variable available in a connected PLC or server.
1. Do one of the following:
Click the Connectivity tab, and then in the Connectivity Configuration panel, find and expand your connection, and then right-
click the desired variable group, and then click Add Variables.
Click the Connectivity tab, and then in the Connectivity Configuration panel, find and expand your connection, and then click
the desired variable group. Finally, on the Connectivity tab, in the Variable Group, click Add Variables.
In the Connected Variables panel, Structure column, find and expand your connection, and then click the desired variable
group, and then click Add Variables.
2. In the Create Variable Pairs editor, do one or more of the following:
To only show variables of selected components, select the Only selected components check box.
To show the properties of a component, select the Component properties check box.
To show the properties of behaviors in a component, select the Behaviour properties check box.
To show the signals of a component, select the Signals check box.
To sort simulation and/or server variables, click a column header name.
To filter simulation variables and/or server variables, directly below a column header name, use the filtering options.
3. Next, use the left-/simulation-side table to select a simulation variable, and then use the right-/server-side table to select a server
variable that is compatible with the selected simulation variable or vice versa.
4. Finally, click Pair Selected to pair the selected simulation and server variables. If you want to want to pair one simulation variable with
many server variables, you would need to add each pair one by one.
Notes:
In the server-side table, you can verify the data type of a server variable based on its icon or refer to its Data Type and Server Type
fields. The icon would indicate a match to one of four supported data types in the simulation. The Data Type field would show the
closest match to a .NET built-in type, excluding objects, for the PLC/server connection. The Server Type field would show the concrete
data type using PLC or OPC UA terminology.
See Supported data types for more information.
Supported Data Types
The plugin connection of a variable group controls what types of variables you can pair with components in the 3D world.
CONTENTS HIDE
BECKHOFF TWINCAT
OPC UA STANDARD

Beckhoff TwinCAT
ADS Type IEC61131-3 Type .NET Type
BIT BOOL System.Boolean
INT16 INT System.Int16
INT32 DINT System.Int32
INT64 LINT System.Int64
INT8 SINT System.SByte
REAL32 REAL System.Single
REAL64 LREAL System.Double
REAL80 None System.Double (truncated to 64 bits)
STRING STRING System.String
1-byte (8 bits) per character ANSI string
UINT16 UINT System.UInt16
UINT32 UDINT System.UInt32
UINT64 ULINT System.UInt64
UINT8 USINT System.Byte
WSTRING WSTRING System.String
UTF-16 (Unicode) 2-bytes per character

Notes:
Some unsupported data types, for example TIME and ARRAY, may have their own set of variables, which may be supported and able to
pair with simulation variables.

OPC UA Standard
OPC UA Type .NET Type
Boolean System.Boolean
Byte System.Byte
Double System.Double
Float System.Single
Int16 System.Int16
Int32 System.Int32
Int64 System.Int64
Integer System.Int32
SByte System.SByte
String System.String
LocalizedText System.String (uses default language)
UInt16 System.UInt16
UInt32 System.UInt32
UInt64 System.UInt64
UInteger System.UInt32
Notes:
If you want to connect a variable in an array, the server needs to support random access reading and writing of individual indexes in a
static array. The OPC UA plugin cannot be used to read/write an entire array. Refer to OPC UA Standard documentation for more
information.
Creating a Dimension
A dimension allows you to visualize distances and angles between lines, points and edges in drawings.
1. On the Drawing tab, in the Dimension group, do one of the following:
To create a dimension for measuring the angle between two points, click Angular.
To create a dimension for measuring the distance between two points, click Linear.
2. In the drawing world, select two points that define the dimension, and then define a reference point for calculating the measured
value. If you need to select different types of points, use the Dimension task pane to adjust the active Snap Type setting.
3. If you do not want to create more dimensions, either click an empty space in the drawing world, press ESC or in the Dimension task
pane, click Close.
4. If you need to edit a dimension, you can directly select and interact with the dimension's elements as well as edit the dimension in the
Properties panel.
Tip: You can select two or more dimensions, and then in the Properties panel, edit common properties for styling. If you are using a template,
dimension properties of the template can be used to predefine the height, arrow thickness and other aspects of dimensions you create after
setting those values.
Creating a Drawing
A drawing is a projection of components in the 3D world using 2D line sets. Generally, you can auto-generate drawings for a layout in the 3D
world using standard views.
1. On the Drawing tab, in the Create View group, do one of the following:
To create a top view drawing, click Top.
To create a bottom view drawing, click Bottom.
To create a left view drawing, click Left.
To create a right view drawing, click Right.
To create a front view drawing, click Front.
To create a back view drawing, click Back.
If you need to manually create a drawing, click New Drawing. This displays the 3D world and enables area selection. In the 3D
world, adjust the view as needed, and then drag the pointer to select an area to capture and generate as a new drawing.
2. In the Properties panel, do any of the following:
Define the Scale of the drawing.
Define the LayerName of the drawing. If the name of the layer does not exist in the drawing world, it will be automatically
created in the scene.
3. In the drawing world, use the manipulator and/or Properties panel to define the location of the drawing.
Note: Standard views are sometimes referred to as sides, example front side, right side and top side drawing views.
Creating a Drawing Template
An existing drawing template can be used as a guide for developing new ones. Another option is to add/remove files from the folder
containing your application's drawing templates.
This workflow assumes you have access to the Modeling tab.
1. Open a new empty layout.
2. Add a drawing template to the 3D world. That is, do not import a drawing template in the drawing world.
3. On the Modeling tab, in the Component Graph panel, select the template's root node, and then expand its feature tree.
In the template's Node Feature Tree, the Geometry feature contains most of the geometry defining the template's paper size. For example,
an A4 template would have an approximate height of 297 {mm} and width of 209 {mm}. Most of the other features relate to text field
properties and functionality needed for generating a bill of materials (parts list).
In the root node's Behaviors collection, the PythonScript defines the template's logic for scaling new drawings and updating text fields. The
PartListInterface is needed in order to auto-generate a bill of materials based on drawings attached to the template.
4. Save the drawing template as a new component with valid metadata. That is, do not use the same metadata as the original template.
Depending on the permissions of your user account, you may need to save the component in one location, and then move it to the
Drawing Template folder located in the same directory as the program files of your version of KUKA Sim Pro 3.0.
5. Restart KUKA Sim Pro 3.0, and then verify your template is available and works properly in the Drawing View.
Tip: The geometry of a template can be exported as a .DXF file, and then used in a vector artwork type software to design new drawing
templates.
Creating an Annotation
An annotation allows you to create a visual callout or markup for explaining one or more elements of a drawing.
1. On the Drawing tab, do one of the following:
To create a rectangle-shaped annotation, in the Annotations group, click Rectangle.
To create a circle-shaped annotation, in the Annotations group, click Balloon.
To create a note, in the Annotations group, click Text.
To generate a set of balloon annotations and bill of materials table to markup drawings in a template, in the BOM group, click
Create.
2. If you did not auto-generate annotations, select an anchor point on a drawing for the annotation followed by the location to place the
annotation's label. If you need to select different types of locations, use the Annotation task pane to adjust the active Snap Type
setting. If you are creating a note, the text is anchored to the drawing world.
3. If you do not want to create more annotations, either click an empty space in the drawing world, press ESC or in the Annotation task
pane, click Close.
4. If you need to edit an annotation, you can directly select and interact with the annotation's anchor point and label as well as edit the
dimension in the Properties panel.
Tip: You can select two or more annotations, and then in the Properties panel, edit their outline and indication styles. For example, you can
change a balloon annotation to function as a rectangular annotation. If you are using a template, annotation properties of the template can
be used to predefine the height, spacing and other aspects of annotations you create after setting those values.
Exporting a Drawing
Drawings can be exported as a new, supported type of file.
1. If you want to export a specific set of drawings, directly select the drawings in the drawing world; otherwise, go onto the next step. You
can hold down CTRL to add/remove a drawing from a selection
2. On the Drawing tab, in the Export group, click Drawing.
3. In the Export drawing task pane, do all of the following:
To export selected drawings, in Components to export, click Selected.
To export all drawings, in Components to export, click All.
Define the File Format for the exported drawing(s).
4. Click Export, and then define the file name and location for saving the exported file. Afterward, a File Explorer will open to both
confirm and show where the file was saved on your device.
Finding a Drawing Template
Drawing templates used by KUKA Sim Pro 3.0 are contained in a Drawing Templates folder located in the same directory as your KUKA Sim
Pro 3.0 program files.
Importing a Drawing Template
A drawing template allows you to scale drawings, generate a bill of materials (BOM), and export a print-ready document or CAD file for your
drawings.
1. On the Drawing tab, in the Drawing group, click Load Template.
2. In the Template Import task pane, Template list, select a template, and then click Import.
3. In the drawing world, click the template to select it.
4. In the Properties panel, do one or more of the following:
Define the Title of the template.
Define the Scale of the template.
Note: In some cases, an imported template may be referred to as a sheet.
Printing a Drawing
A drawing can be exported to produce a print-ready document. Generally, a template is used to print one or more drawings as a sheet.
1. If do not want to use a template for printing, select the drawings you want to print in the drawing world.
2. On the Drawing tab, in the Print group, click Drawing.
3. In Print Preview, do all of the following:
Define if the selected drawing should be scaled to fit the paper's size and orientation, otherwise click the Area selection check
box to custom-select an area of the drawing to place in the document.
Define the Printer to receive the print task. The printer itself can be used to generate a drawing as a PDF or send it as a
fax/email attachment.
Define the Page Orientation and Paper Size of the document.
4. Do one of the following:
To save the sheet as an XPS document, click Export to XPS.
To print the sheet, click Print.
To cancel and exit the Print command, in the Navigation pane, click Go Back.
Closing a Layout
A layout is always open in the 3D world. That means closing one layout in the 3D world opens a new empty layout in the 3D world.
1. Click the File tab, and then on the Navigation pane, click New.
2. In the prompt, do one of the following:
Click Don't Save to not save and close the current layout in the 3D world.
Click Save to save and close the current layout in the 3D world.
Exporting Geometry of Layouts
The geometry of an entire layout can be exported as a supported file type.
1. On the Home tab, in the Export group, click Geometry.
2. In the Export Layout task pane, under Components to export, click All.
3. In the File Format list, click a supported file format of your choice.
4. Click Export, and then save the file.
Opening a Layout
A layout is a VCMX file that allows you to save your work in the 3D and drawing worlds. Layouts are always opened in the 3D world and
contain references to components, layout items and settings for a scene. A layout is an archive file, so when you open a layout its contents
are extracted and/or downloaded to your device.
1. In the eCatalog panel, click a collection or source.
2. At the bottom of the eCatalog panel, select the Layouts check box to display items that are layouts.
3. Find the layout you want to open, and then drag that layout into the 3D world.
Tip: You can press CTRL+O to access options for opening a layout from a recent location or elsewhere on your device.
Opening a New Layout
When you start KUKA Sim Pro 3.0 a new empty layout is opened automatically in the 3D world. If you want to clear and remove everything in
the 3D world layout:
Click the File tab, and then on the Navigation pane, click Clear All.
Tip: You can press CTRL+N to clear the 3D world.
Saving a Layout
A layout allows you to save the location, connections and property values of components in the 3D world. A layout also stores your view of a
scene and any layout items in the 3D world and drawing area.
1. In the 3D world, adjust the view to define the preview image of the layout for when it is displayed in the eCatalog panel.
2. Click the File tab, and then on the Navigation pane, click Save As.
3. Save the file.
Add and Edit Base Frames
A base frame is a coordinate system used by a robot and other types of components to simplify locations in an area. That is, you can use a
base frame as a local coordinate system for defining the position and orientation of objects.
1. In the 3D world, select a component.
2. Click the Modeling tab, and then in the Component Graph panel, Component Node Tree, select the Behaviors check box, and then
in the Search box, type bases. This will display and expand all behaviors in the selected component that have a Bases collection, which
is a sub-element of a behavior listed with it in the Component Node Tree .
3. In the Component Node Tree, do one of the following:
To create a new base frame, right-click the Bases sub-element that you want to add a new frame to, and then click Add base
frame.
To edit a base frame, expand the Bases sub-element containing the frame you want to edit, and then select that base frame. You
can edit a base frame the same way you would other objects by using the manipulator in the 3D world and Properties panel.
To rename a base frame, expand the Bases sub-element containing the frame you want to rename, and then click that frame
twice, and then in the given field, type the new name.
Add and Edit Tool Frames
A tool frame is a point of reference used by robots and other types of components for positioning objects. Generally, a tool frame is used
with a manipulator to jog a robot and teach positions in relation to a base coordinate system (active base frame in robot configuration). In
those cases, a robot uses a tool frame as a tool center point (TCP).
1. In the 3D world, select a component.
2. Click the Modeling tab, and then in the Component Graph panel, Component Node Tree, select the Behaviors check box, and then
in the Search box, type tools. This will display and expand all behaviors in the selected component that have a Tools collection, which
is a sub-element of a behavior listed with it in the Component Node Tree .
3. In the Component Node Tree, do one of the following:
To create a new tool frame, right-click the Tools sub-element that you want to add a new frame to, and then click Add tool
frame.
To edit a tool frame, expand the Tools sub-element containing the frame you want to edit, and then select that tool frame. You
can edit a tool frame the same way you would other objects by using the manipulator in the 3D world and Properties panel.
To rename a tool frame, expand the Tools sub-element containing the frame you want to rename, and then click that frame
twice, and then in the given field, type the new name.
Assigning a Joint to a Controller
The joint of a node can be assigned to a Robot or Servo Controller behavior, thereby the motion of that joint can be driven by a controller.
1. In the 3D world, select a component.
2. Click the Modeling tab, and then in the Component Graph panel, Component Node Tree, search for the controller type behavior you
want to assign joints to, and then select that behavior.
3. In the Properties panel, select the Joints (expand) button, and then do one of the following:
To pick a joint, in the Joints box, click the Pick button, and then in the 3D world, click the node of that joint.
To add a joint, in the Joints box, click the PLUS SIGN button, and then in Add 'Joints' items, find and select that joint. If the joint
is highlighted, the joint has already been added to the controller's Joints property.
To change the order of an added joint, in the Joints box, point to that joint, and then on the right of that field use the Up and
Down arrows.
To remove an added joint, in the Joints box, point to that joint, and then on the right of that field click the Trashcan.
After a joint is assigned to a controller, the joint will inherit properties that need to be defined in order for the joint to be driven by the
controller.
4. In the Component Graph panel, Component Node Tree, clear the Behaviors and Properties check boxes. This means only the nodes
of the component will be shown in the tree.
5. In Component Node Tree, select a node whose joint you assigned to a controller, and then in the Properties panel, do all of the
following:
In order for the joint to have motion, set the Max Speed, Max Acceleration and Max Deceleration properties.
Collapsing Features
Collapsing allows you to merge a selected feature and its child features into a single Geometry feature. This, of course, would remove the
hierarchy of the collapsed features.
1. Select a feature. You can select multiple features, but this will not merge the selected features rather collapse each feature based on
its hierarchy in the Node Feature Tree.
2. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Feature Tools, click Collapse features.
Creating a New Component
A new component can be created at the 3D world origin. In most cases, you should add at least one feature to a component after its creation.
1. On the Modeling tab, in the Component group, click New.
2. (Optional) In the Geometry group, click the Features arrow, and then under Other, click Frame. This creates a visual point of
reference for the component origin.
Creating a New Behavior
A behavior is an action or set of actions that a component can perform before or during a simulation.
1. Either create or select a component in the 3D world.
2. Click the Modeling tab, and then in the Component Graph panel, Component Node Tree, select a node. This defines the node
containing any new behavior you are about to create in the component.
3. On the Modeling tab, in the Behavior group, click the Behavior arrow, and then click the type of behavior you want to create in the
component.
Creating a New Feature
Geometry in a component is formed into sets which are grouped in features. Not all features contain geometry or act as primitive shapes.
Some features perform operations on other features, while other types of features generate data related to the 3D world.
Features are contained in nodes and have their own tree structure. In the Component Graph panel, the top pane shows the Component Node
Tree and the bottom pane shows the Node Feature Tree. This means the Node Feature Tree only shows the features of a node selected in the
Component Node Tree.
1. Either create or select a component in the 3D world.
2. Click the Modeling tab, and then in the Component Graph panel, Component Node Tree, select a node. This defines the node
containing any new feature you are about to create in the component.
3. On the Modeling tab, in the Geometry group, click the Features arrow, and then click the type of feature you want to create in the
selected node.
Creating a New Property
A property is a variable of a component that can be referenced by other objects in that component. Properties of this scope are contained in
the root node of a component.
1. Either create or select a component in the 3D world.
2. On the Modeling tab, in the Property group, click the Property arrow, and then click the type of property you want to create in the
component.
Creating a New Node
A link is a node added to a component's structure and is mainly used to define joints and other mechanisms of movement in a component.
1. Either create or select a component in the 3D world.
2. Click the Modeling tab, and then in the Component Graph panel, Component Node Tree, select a node. This defines the parent of
any new node that you are about to create in the component.
3. On the Modeling tab, in the Structure group, click Create Link.
Decimating Geometry
Decimation allows you to simplify the tessellation of geometry in features by merging edges and eliminating redundant vertices. The
operation will try to merge all points within a max error tolerance to reach a desired quality, and then print the results in the Output panel.
1. Select one or more features in a component.
2. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Simplify, click Decimate.
3. In the Decimate task pane, do all of the following:
Define the Max error or a tolerance for merging points.
Define the Quality or desired data count for the selected features.
4. Click Decimate.
Defining a Joint Offset
The Move command, other tools and properties can be used to define the Offset property of a selected node and its joint.
1. In the 3D world, select a component.
2. Click the Modeling tab, and then in the Component Graph panel, Component Node Tree, select a node other than the root node.
3. Do one of the following:
To define the offset of node using a manipulator, on the Modeling tab, in the Manipulation group, click Move, and then use the
manipulator in the 3D world the same way as if moving a component. In this case, the manipulator shows the joint axis of a node
as an arrow pointing from the origin of the manipulator.
To snap the offset of node to a location, on the Modeling tab, in the Tools group, click Snap, and then snap the offset the same
way as if snapping a component. In this case, the offset is shown as a coordinate axes that you can preview in the 3D world.
To align the offset of node, on the Modeling tab, in the Tools group, click Align, and then align the offset the same way as if
aligning a component.
To define the offset of node by using an expression, in the Properties panel, click the Offset property field, and then write an
expression. In this case, component and behavior properties can be used to make the node offset parametric.
Editing Node Feature Tree
The feature tree of a selected node can be edited using a mouse and quick commands.
CONTENTS HIDE
MOVING
EXPLODING
GROUPING
REMOVING

Moving
You can drag and drop features to different depths and levels in the same or other node feature trees. By default, a feature will update its 3D
world position based on the location of its node and parent feature. Otherwise, you can hold down SHIFT to have a feature retain its 3D world
position when moved elsewhere in a tree.
1. Select the feature you want to move in the tree.
2. Do one of the following:
To move a feature before or after another feature, drag the feature immediately before or after a feature until the insert line
shows the correct level and insertion point in the tree.
To nest a feature inside another feature, drag the feature onto a feature.
To move a feature to another node, drag the feature from the Node Feature Tree pane onto a node in the Component Node Tree
pane.
To move a feature one level closer to its root feature, right-click the selected feature, and then click Move Up in Tree.

Exploding
The Explode command allows you to split a selected feature either by geometry sets or mesh connectivity to form multiple new features
nested inside a new Transform feature. This is helpful if you want to quickly split the solid shapes of imported geometry into new Geometry
features. You can immediately undo the explosion by collapsing the new Transform feature.
Right-click the feature you want to explode in the tree, and then click Explode.

Grouping
The Group command allows you to nest selected features with the same parent inside a new Transform feature. This is helpful if you want to
quickly group and transform specific geometry.
1. Select the features you want to group in the tree. Remember that the features need to have the same parent feature.
2. Right-click a selected feature, and then click Group.
The Group Main Level command allows you to nest all features directly attached to root feature inside a new Transform feature. That is,
everything under root feature in tree is shifted down one level and moved under a new Transform feature. This is helpful if you want to
simplify the main level of the node feature tree to consist of the root and one subfeature tree. For example, you might need to offset all
geometry at the feature level as opposed to editing a node offset.
Right-click any feature in the tree, and then click Group Main Level.

Removing
The Remove Empty command allows you to cleanup and remove all features in tree that are Geometry features containing no geometry or
operation type features having no subfeatures.
Right-click any feature in the tree, and then click Remove Empty.
Extracting Geometry into New Component
Extraction allows you to regroup selected features/links into new components. Generally, extraction is used when parts and assemblies in an
imported CAD file were not formed into separate components.
1. Select one or more features/links in a component.
2. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Extract, click Component.
Extracting Geometry into New Node
Extraction allows you to regroup selected features into new nodes. Generally, the extraction of features to new links is used to speed up the
modeling process of an imported CAD file as a component with movable parts. That is, the tasks of creating nodes and moving geometry to
and from nodes are merged into one command.
1. Select one or more features in a component.
2. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Extract, click Link.
Interacting with a Joint
In previous product versions, you needed to use a Jog Info behavior to make the joint of a node interactive. Now, the joint properties of a
node are used to automatically make a joint interactive if a Jog Info behavior is not available for that joint. In all cases, a Jog Info behavior
will take precedence in defining the degree of freedom for interacting with a joint.
The following is a basic walkthrough:
1. In the 3D world, create a new component.
2. In the new component, create a new link, and then set the Type property of that new node to anything other than Fixed.
3. In the new node, create a Block feature.
4. On the Modeling tab, in the Manipulation group, click Interact.
5. In the 3D world, interact with the Block feature.
Inverting Geometry
The geometry of a feature can be inverted to face opposite its normal direction. Geometry must be contained in a Geometry feature in order
to be inverted, otherwise you would first need to collapse a feature before inverting its geometry.
1. Select the root node of a component.
2. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Feature Tools, click Invert.
3. In the Invert feature task pane, Invert level list, do one of the following to define the mode for selecting and regrouping geometry:
To select all geometry grouped together in a geometry set, click Set. This will include all lines, points, edges and faces in a
selected geometry set.
To select faces that constitute a defined surface, click Faces. This will include planar and non-planar faces based on the
geometry's topology.
To select one or more faces, click Face. This will only include faces that you directly select and exclude adjacent, neighboring
faces that do not share the same vertices as the selection.
4. In the 3D world, directly select the geometry you want to invert. In this context, you can hold down CTRL to add/remove geometry from
a selection as well as change the setting in the Split feature task pane if the filter is encompassing too much or too little geometry.
5. In the Invert feature task pane, click Invert.
Note: The ShowBackfaces property of a Geometry feature can be used to show/hide geometry not facing the 3D world camera. For example,
you may want to invert the geometry of factory walls to view the inside of a factory from the outside and only render walls when viewing a
factory from the inside.
Materials
CONTENTS
MATERIAL PROPERTIES
MATERIAL INHERITANCE
PICKING MATERIAL
CLEARING MATERIAL
ASSIGNING MATERIAL
SEARCHING FOR MATERIAL
DISPLAYING MATERIALS
SELECTING MATERIALS
SETTING MATERIALS
DELETING MATERIALS FROM LAYOUT
ADDING NEW MATERIALS
ADDING MATERIAL TO USER LIBRARY
REMOVING MATERIAL FROM USER LIBRARY
ADDING A DECAL
ASSIGNING TEXTURE COORDINATES
Material Properties
A material has the following set of properties.
Show material preview in 3D World - Turns on/off a preview of the material in the 3D world.
Name - Defines the name of the material.
Color - Defines the color of the material.
Texture and Texture Blend - Defines the texture of the material.
Roughness - Defines how smooth/coarse the material appears when applied to a surface.
Metallic - Defines the roughness of the material.
Opacity - Defines the opacity of the material.
Clear Coat - A set of properties for visualizing a clear coat of paint or varnish, thereby affecting the shininess and smoothness of
material.
Bump Map - A set of properties for visualizing bumps or elevations on material.
Material Inheritance
A material can be assigned to a geometry set, feature, link and component. Any geometry set or feature that does not have an assigned
material will inherit the material of its parent feature or node. Generally, a node inherits the material of its root node/component. In some
cases, the material of a node is defined by a command, action or Python script. For example, the geometry of a node can be colored red
whenever the joint of that node exceeds its limits. Generally, an object with no material reference is highlighted orange in the 3D world.
A material is grouped according to its use and availability.
Layout - A material being used by an object in the 3D world, which may include materials from user and system libraries. If a layout
material is not from a user or system library, the material is only available in the current layout of the 3D world. In those cases, you can
edit the material and add it to a user library.
User - A material in a user library. A user material can be edited and is always available. By default, all materials in a user library are
saved to a file in the My Materials folder of your KUKA Sim Pro 3.0 documents.
Library - A read-only material in a system library. A library material is always available, but it cannot be edited nor added to a user
library.
Picking Material
You can pick the material assigned to an objet in the 3D world.
1. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Assign.
2. In the Assign material task pane, expand Mode, and then select Pick.
3. In the 3D world, click an object to pick its material, which will then be displayed in the Materials section of the Assign material task
pane.
Example. Pick material of face
Clearing Material
You can clear the material assigned to an object in the 3D world. After you clear the material, the object would inherit a material from either
another feature, link or component.
1. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Assign.
2. In the Assign material task pane, do all of the following:
Expand Mode, and then select Clear.
Expand Set material for, and then select a type of object.
3. In the 3D world, click an object to clear its material.
Example. Clear blue material from face
Assigning Material
You can assign a material to an object in the 3D world.
1. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Assign.
2. In the Assign material task pane, do all of the following:
Expand Mode, and then select Assign.
Expand Set material for, and then select a type of object.
Expand Materials, and then find and select a material.
3. In the 3D world, click an object to assign it the selected material.
Example. Assign material to face
Searching for Material
You can search for a material that is either being used in a layout, defined as a user material or available in a library.
1. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Assign.
2. In the Assign material task pane, expand Materials, and then in the Search box, type a keyword and press ENTER.
Example. Search for blue materials
Displaying Materials
You can display available materials as either a list or grid.
1. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Assign.
2. In the Assign material task pane, expand Materials, and then do one of the following:
To list materials, click the List icon.
To show a grid of materials, click the Grid icon.
Example. Display materials as a grid
Selecting Materials
You can select a material being used by more than one object in the 3D world. This is similar to picking, but you are selecting the material of
multiple objects.
1. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Assign.
2. In the Assign material task pane, expand Materials, and then right-click a material, and then click Select All Using. Objects with that
material will be outlined in the 3D world, but understand you are selecting a material not an object.
Example. Select every blue material
Setting Material
You can set the material of one or more objects in the 3D world. This is similar to assigning, but you are setting the material of multiple
objects.
1. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Assign.
2. In the Assign material task pane, expand Materials, and then find a material.
3. Right-click the material, and then click Select All Using.
4. Right-click another material, and then click Set Selected. Objects with the selected material will be assigned the other material.
Example. Change selected material of faces to pink
Deleting Materials from Layout
You can delete a material from objects in the 3D world. This is similar to clearing, but you are removing the material of multiple objects.
1. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Assign.
2. In the Assign material task pane, expand Materials, and then find a material.
3. Right-click the material, and then click Delete from layout. This clears the material of all objects using that material. If the material is
not stored in a user or system library, the material would be removed and no longer available in the layout.
Example. Delete pink material from objects in 3D world
Adding New Materials
You can add a new material and assign it to objects in the current layout of the 3D world or save the material in your user library.
1. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Assign.
2. In the Assign material task pane, expand Materials, and then do one of the following:
To add a new layout material, click the Layout tab, and then click Add new.
To add a new user material, click the User tab, and then click Add new.
3. In the Edit Material task pane, define the properties of the material, and then click Done.
Example. Add a new layout material
Adding Material to User Library
You can add a material to a user library. The material must be available in the current layout of the 3D world and not already stored in user
and system libraries. The material is saved in a Materials.xml file stored in the My Materials folder of your KUKA Sim Pro 3.0 documents.
1. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Assign.
2. In the Assign material task pane, expand Materials, and then find a layout material.
3. Right-click the material, and then click Add to User Library.
Example. Add a layout material to user library
Removing Material from User Library
You can remove a material stored in a user library. This does not delete a material from a layout.
1. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Assign.
2. In the Assign material task pane, expand Materials, and then click the User tab, and then find a material.
3. Right-click the material, and then click Remove from User Library.
Example. Remove a material from user library
Adding a Decal
A decal can be added to a component by using geometry to preform a shape with texture coordinates. The added shape is contained in a new
Geometry feature, which you should assign a material. In most cases, the material of a decal has a texture file, for example an image that
can be mapped to a surface.
1. In the 3D world, select a component.
2. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Add Decal.
3. In the Add Decal task pane, set Width and Height to change the size of the decal preview.
4. Move the decal preview to the desired location on the component, for example one area of its surface.

5. In the Add Decal task pane, set U Tiling, V Tiling and Offset to the desired values, and then click Decal.

6. If you need to make changes to the decal, for example its UV tiling, edit the decal preview and generate a new decal, and then delete
the Geometry feature of the old decal.
7. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Assign.
8. Use the Assign material task pane to assign a material to your decal in the 3D world.
Assigning Texture Coordinates
Texture coordinates can be assigned to geometry by using a mapping tool for spherical, cylindrical and planar projections. This allows you to
map the texture of material to objects in the 3D world.
1. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Material, click Mapping.
2. In the Texture Mapping task pane, do all of the following:
Under Mode, select a type of projection.
Under Set Texture Mapping For, select the type of object you want to assign texture coordinates.
3. In the 3D world, click an object to assign it texture coordinates. If the current material of the object does not have a texture, a
temporary texture will be displayed and projected on the object in the 3D world. In any case, you should be able to visualize how a
texture will be applied to the surface of a selected object based on its material.
4. Do one or more of the following:
To move the projection on the selected object, either use the Move tool in the 3D world or edit the location in the Texture
Mapping task pane. In either case, you are moving the projection not the object.

To edit the size of the projection, in the Texture Mapping task pane, under Projection Setting, set Width and Height. This
defines the size of the UV space before tiling the texture.

To edit the scale of each tile in the projection, in the Texture Mapping task pane, under Projection Setting, set U Tiling and V
Tiling. The scale of each tile is related to the size of its UV space, for example Width/U Tiling and Height/V Tiling.
5. In the Texture Mapping task pane, do one of the following:
To confirm the mapping and save all changes, click Close.
To cancel the mapping and undo all changes, click Cancel.
To make changes to the current mapping, go back to Step 2.
To assign texture coordinates to other objects, go back to Step 2 and then select a different object.
Example. Mapping texture to surface with one UV tile

Example. Mapping texture to surface with multiple UV tiles

Example. Mapping texture to surface with smaller UV space and multiple UV tiles
Example. Mapping texture with bumps to surface
Merging Faces
Points in faces can be merged together to form smoother surfaces.
1. On the Modeling tab, in the Geometry group, click the Tools arrow, and then click Merge faces.
2. In the 3D world, select a geometry set.
3. In the Merge faces task pane, set Tolerance to the desired radius for detecting neighboring points, and then click Merge.
The process involves assigning a tolerance value that defines a radius for a point on an open edge to find and match itself with a point on
another face.

Two requirements is the edges of the two points must be going in opposite directions of one another and belong to the same feature.

If an edge has more than one neighboring edge, the edge will be skipped and the faces will not merge at those edges. Generally, this process
is done to clean up degenerate and non-manifold geometry, for example fixing cracks and holes on surfaces.
Merging Features
Merging allows you move geometry in different Geometry features into a single Geometry feature.
1. Select the Geometry features you want to merge together in a component.
2. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Feature Tools, click Merge.
Selecting Behaviors in a Component
You need to use the Component Graph panel to select behaviors in a component.
1. In the 3D world, select a component or one of its features.
2. If you did not select a feature, click the Modeling tab, and then in the Component Graph panel, Component Node Tree, expand one
or more nodes.
3. If behaviors are not listed below nodes, select the Behaviors check box.
4. Expand one or more Behaviors lists to find the behavior you want to select, and then select the behavior. An alternative is to search for
a behavior by name using the Search box.
Selecting Features in a Component
The context of a scene when modeling a component allows you to directly select the features of any component in the 3D world. In some
cases, you cannot directly select a feature if it does not occupy any space and visually represent geometry in the 3D world. For example,
features that perform operations would need to be selected using the Component Graph panel.
1. Click the Modeling tab.
2. Do one of the following:
To directly select a feature, in the 3D world, click a point on a component or a visible frame type feature.
To select one or more features in an area, in the Manipulation group, click Select, and then use one or more Select options to
select features as you would a component.
To select features that perform operations, in the Component Graph panel, select the node containing the feature you want to
select, and then in the Node Feature Tree, select that feature.
Selecting Nodes in a Component
You can use the Component Graph panel to select nodes in a component. It is helpful to use the Move command for showing the offset and
joint axis of a selected node in the 3D world, whereas the Structure Show command can be used to show the kinematic structure of the entire
component.
1. In the 3D world, select a component or one of its features.
2. If you did not select a feature, click the Modeling tab, and then in the Component Graph panel, Component Node Tree, do one of
the following:
To select the root node, select the first element at the top of the tree.
To select a child node, expand one or more parent nodes to find the node you want to select, and then select that node. An
alternative is to search for a child node by name using the Search box.
Selecting Properties in a Component
You need to use the Component Graph panel to select properties in a component. When a property is selected, its properties will be
displayed in a Property task pane. Otherwise, any visible properties of a component can be read and edited in the Properties panel when you
select a component or its root node.
1. In the 3D world, select a component or one of its features.
2. If you did not select a feature, click the Modeling tab, and then in the Component Graph panel, Component Node Tree, expand the
root node.
3. If properties are not listed below the root node, select the Properties check box.
4. Expand the Properties list to find the property you want to select, and then click that property. An alternative is to search for a
property by name using the Search box.
Simplifying Geometry
The geometry of a feature can be simplified to reduce its data count and visualize its maximum volume.
1. Select one or more features in a component.
2. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Simplify, do one of the following:
To form geometry into blocks, click Blockify.
To form geometry into cylinders, click Cylindrify.
Slicing Geometry
The geometry of a feature can be cut and split into new Geometry features.
1. Select one of more features in a component.
2. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Feature Tools, click Slice.
3. In the Slice task pane, define a Snap Type. This determines the type of location you can select in the 3D world for defining a cutting
plane.
4. In the 3D world, select a location to define your cutting plane.
5. If the cutting plane is not suitable, in the Slice task pane, do one or more of the following:
Define a Plane Offset which will offset the plane in its Z-axis.
Mirror or invert the plane by selecting the Flip Offset check box.
Target edges in the same plane by selecting the Slice Coplanar check box.
Adjust the Snap Type, and then re-select a location to define a cutting plane.
6. If the cutting plane and slicing markers in the 3D world are acceptable, in the Slice task pane, click Slice.
Note: If geometry is sliced from a primitive type feature, that feature will be collapsed to form a Geometry feature.
Splitting Features
Splitting allows you to regroup geometry in features into new features. Geometry must be contained in a Geometry feature in order to be
split, otherwise you would first need to collapse a feature before splitting its geometry.
1. Select the root node of a component.
2. On the Modeling tab, in the Geometry group, click the Tools arrow, and then under Feature Tools, click Split.
3. In the Split feature task pane, Split level list, do one of the following to define the mode for selecting and regrouping geometry:
To select all geometry grouped together in a geometry set, click Set. This will include all lines, points, edges and faces in a
selected geometry set.
To select faces that constitute a defined surface, click Faces. This will include planar and non-planar faces based on the
geometry's topology.
To select one or more faces, click Face. This will only include faces that you directly select and exclude adjacent, neighboring
faces that do not share the same vertices as the selection.
4. In the 3D world, directly select the geometry you want to move into a new feature. In this context, you can hold down CTRL to
add/remove geometry from a selection as well as change the setting in the Split feature task pane if the filter is encompassing too
much or too little geometry.
5. In the Split feature task pane, click Split. This regroups the selected geometry into a new feature.
Searching Component Data
At the top of each pane in the Component Graph panel are tools for searching and filtering data in a selected component.
1. In the 3D world, select a component.
2. Click the Modeling tab, and then in the Component Graph panel, do one of the following:
To collapse everything in a tree, click the Collapse (MINUS SIGN) button.
To expand everything in a tree, click the Expand (PLUS SIGN) button.
To search for items in a tree, use the Search box. The Search box in the Component Node Tree can be used to search for nodes,
behaviors and properties. The Search box in the Node Feature Tree can be used to search for features in a selected node.
To show/hide all behaviors in the Component Node Tree, use the Behaviors check box.
To show/hide all properties in the Component Node Tree, use the Properties check box.
Saving a Component
A component can be saved in order to be loaded and used in any layout opened in the 3D world.
1. Select the component you want to save in the 3D world.
2. On the Modeling tab, in the Component group, do one of the following:
To save a component to its existing file, click Save.
To save a component as a new file, click Save As., and then save the file.
Transferring Components to Other Behaviors
Behaviors that support material flow can be connected to transfer components within a component by editing the properties of connectors.
1. In the 3D world, select a component.
2. Click the Modeling tab, and then in the Component Graph panel, Component Node Tree, find the behavior that you want to use for
transferring components.
3. Do one of the following:
If the behavior has a visible connector, expand the behavior, and then select the appropriate connector. For example, if you want
to transfer in components, select a connector labeled Input or verify in the Properties panel that the selected connector's Input
property is enabled. Note that if a connector is already linked to another connector you will be replacing or editing that
connection.
If you want to create a new connector in the behavior for handling the transfer, select and right-click the behavior, and then click
Add Connector (If the Add Connector shortcut was not available, the behavior is either limited to its current set of connectors or
cannot be used in this case). Next, select the added connector, and then in the Properties panel, enable the needed properties.
For example, if you want to transfer out components, enable the connector's Output property. Note that certain behaviors, such
as Component Container, should only be used to transfer in and store components. In most of those cases, a Python Script is
used for handling how components are retrieved from storage and transferred elsewhere.
4. In the Properties panel, do all of the following:
In Connection, click the behavior that you want to include in the transfer. You cannot include a behavior that is not listed as a
choice.
In Port, click the connector of the behavior referenced in Connection that you want to use for the transfer.
Transferring Components to Other Components
Behaviors that support material flow can be connected to transfer components from one component to another component by using interface
type behaviors.
1. In the 3D world, select a component.
2. Click the Modeling tab, and then do one of the following:
To use an existing interface, in the Component Graph panel, Component Node Tree, select the interface you want to use for
transferring components. Note that in most cases an interface needs to be disconnected in order to be edited.
To create a new interface, on the Modeling tab, in the Behavior group, click the Behavior arrow, and then under Interface, click
the type of interface you want to use for transferring components.
3. In the Properties panel, depending on the type of interface, do one of the following:
To use an existing section, expand the section you want or need to use in the interface. For example, in a One to Many Interface
behavior you will need to use its only section.
To add a new section (only applies to One to One Interface behavior), click Add new section.
4. In the chosen section, do one of the following:
To use an existing Flow field, expand the Flow field you want to use in the section.
To add a new Flow field, click Add new field, and then click Flow.
5. In the chosen Flow field, do all of the following:
In Container, click the behavior you want to use with the interface.
In Port, click the connector of the behavior referenced in Container that you want to use for the transfer.
6. Make any other necessary adjustments to the interface.
Physics World
In KUKA Sim Pro 3.0 there is simulation world and physics world in the 3D environment. This coexistence allows components to act
independently of physical forces. In addition, components can move in and out of the simulation world and into the physics world. Generally,
this occurs when components are attached to or contained by a physical object, for example Physics Path behaviors.

Simulating Physics
The effects of physics world is disabled when you are not running a simulation. Therefore, a simulation must be running in order to activate
physics and the forces that affect physical objects and properties in the 3D environment. The effects that physics have had on physical
objects are undone when you reset a simulation. For example, static components would reset to their initial state at the start of the
simulation.
Physics simulated in KUKA Sim Pro 3.0 should not be inferred as realistic rather approximations that attempt to render real-world conditions
and outcomes. The physics engine used in KUKA Sim Pro 3.0 is Nvidia PhysX.

Rigid Bodies
If a node in a component has a Physics Entity behavior, you can define how that node relates to the simulation and physics worlds by editing
its Physics Type property.
Name Description
#In Physics The node and its geometry are contained in the physics world.
In this mode, the force of gravity will affect the node. For example, a
component will fall based on the direction of gravity.

#Out of Physics The node and its geometry are contained in the simulation world.
Generally, this mode is used to disable the effects of physics may
have on a component and any of its nodes.

#Kinematic The node and its geometry are contained in the physics world and
disregard internal forces. That is, the force of gravity will not affect
the node.
Generally, this mode is used when a node and its joint are driven by
a controller or pneumatics system.

#In Container The node and its geometry are a part of the physics world and can
be monitored as objects in containers.
While the effects of this mode are similar to #In Physics, the benefit
is to allow the system of the 3D environment to recognize the
transition of physical objects into and out of containers.
In some cases, you may want to avoid the tracking of components as
they transition from one container to the next during a simulation. In
other cases, you may want to optimize the physics of a component
and its nodes for material handling, transportation and other cases
suitable for containment and tracking efforts.
Cables in Physics Worlds
KUKA Sim Pro 3.0 supports the use of pulleys, wires and other types of objects which are implemented as a Physics Cable behavior.

Geometry
Every cable is generated with its own set of geometry. The geometry of a cable consists of capsules which expand, shrink and duplicate
based on the length and forces applied to the cable. Note that the geometry of a cable is not listed in the Node Feature Tree of the
Component Graph panel. Rather, the geometry is automatically generated based on the cable's properties and its pins.

Pins
Every cable is generated with its own set of pins which act as the ends of a cable. Each pin is a node containing its own Physics Joint and a
special type of interface with an Attachment field for connecting the ends of the cable to other structures. Pins are listed in the Component
Node Tree of the Component Graph panel with the exception of each pin's interface.
Note: You can create an interface type behavior with an Attachment field, but it cannot be used as the end point of a Physics Cable behavior.

Interaction & Connection


Being nodes, the pins of a cable are interactive in the 3D world. The origin of each pin is rendered as a torus with an arrow pointing in the
positive Z-axis direction of the object's coordinate system. Generally, these arrows are used to indicate the direction of tensions associated
with the cable.
Interacting with a pin will affect the geometry of its cable since you are affecting the cable's length and shape. Each pin can be freely placed
at any point in the 3D world as well as snapped to any object, thereby attaching the pin to that object's node. When a pin is attached to a
node, a physical connection is formed using the Attachment field of the pin's interface. In such cases, the end of the cable will move with the
node its pin is attached to in 3D world during a simulation.
Colliders in Physics World
Colliders are objects that can react to physical objects during a simulation. Each collider is a shell that encompasses the geometry of a
feature in a component. Every feature, including the root feature of a node, has its own Collider property.
Name Description
Undefined The collider is not defined for the feature.
#None The collider is disabled and not created for the feature.
#Box The collider is active and its shape is the bounding box of the
feature.
#Boxes The collider is active and its shape is a set of bounding boxes for
each geometry set in the feature and its subfeature tree.
Generally, this mode is only available in the root feature of a node.

#Precise The collider is active and its shape is a triangular mesh


encompassing the feature.

The root feature of a node can be used to override or force the inheritance of a collider in all features of that node. In any case, a node must
be a physical object in order for its colliders to work during a simulation. That is, a node must have at least one Physics Entity behavior which
defines the node's physical properties.
Note: If a node does not have a Physics Entity behavior and a collider is set to a mode other than Undefined or #None, a Physics Entity
behavior will be automatically created in that node.
Collisions in Physics World
A collision can occur between any physical object that has a collider and a Physics Entity behavior. The properties of a Physics Entity
behavior can be used to include/exclude a node from colliding with other nodes in the physics world.
Name Description
Collision Group Defines which group the entity belongs to in the physics world.
This affects all colliders in the node containing the entity.
Colliders in the same group will collide with one another, whereas
colliders in a different group will not collide in the physics world. For
example, colliders in the same Controller Group can be made to
pass through one another and ignore the physical effects they might
exert on one another.
For example, you might want a worker to operate a vehicle without
simulating a collision between those two objects. In that case, the
physics of the worker and vehicle can coexist but ignore collisions
with one another in order for the actions in the simulation world to
be completed.
Joints in Physics World
KUKA Sim Pro 3.0 supports the use of D6 joints which are implemented as a Physics Joint behavior. These types of joints can have custom
definitions and support multiple degrees of freedom.
1. In the 3D world, select a component.
2. On the Modeling tab, in the Component Graph panel, Component Node Tree, select the node that you want to contain the Physics
Joint. This is important since the node's offset directly impacts the effects of a Physics Joint.
3. On the Modeling tab, in the Behavior group, click the Behavior arrow, and then under Physics, click Joint.
The properties of the Physics Joint define the effects of physics on the joint and its impact on the component's kinematic structure.
Name Description
Attached to Defines the node that joint is attached to in component.
In some cases, this would be the parent of the node containing the
joint. For example, a Physics Joint in the node of the second axis for
a robot could be attached to the node of the first axis.
In other cases, your joint definition will determine which node joint
should attach itself to in a component.

Constraints A set of properties for customizing the joint. That is, constraints for
translations and rotations in the axes of a coordinate system.
Each property can be assigned its own constraint.
#Free
Does not constrain movement.
#Limited
Attempts to limit movement.
#Locked
Attempts to restrict all movement.

Breakage A set of properties for defining the integrity of joint.


Drive Settings A set of advanced properties for customizing the physics of joint and
its degrees of freedom.
Paths in Physics World
The movement and flow of components with physical properties can be accomplished by using a Physics Path behavior. This allows you to
apply contact forces to components moving along paths. For example, you can push, divert, divide, drop, and accumulate components in one
or more lanes.
There are some restrictions:
A Physics Path cannot accept components which do not have a Physics Entity behavior.
A Physics Path must be paired with a Physics Entity behavior which has its Physics Type property set to #Kinematic.
A component with a Physics Entity behavior entering a Physics Path should have its Physics Type property set to #In Physics.
Any feature that could potentially come into contact with a component on a Physics Path should have a defined Collider property. Otherwise,
a component will either fall through the path or pass through solid objects.
In some cases, you can set the Collider property of the root feature belonging to the same node as a Physics Path to #Boxes. Generally, #Box
mode will work but encompass too much space, offset components, and possibly make any pushing feature ineffective. In addition, #Precise
mode will work but the bounciness of components and deflection of elevations and depressions in node geometry could produce unrealistic
results.
Important: If the Collider property of a root feature is defined, that mode will be inherited by its subfeatures.
In other cases, you can set the Collider property of each feature that forms the plane and/or solid shapes of a Physics Path and its pushing
features. Generally, #Box mode will provide an adaptable solution since you can define padding for the bound box. Padding helps transition
components to and from path edges and in between other objects that should have some elasticity. If you want to use #Precise mode, be
cautious of gaps, holes and the angle tolerance of faces in feature's geometry.
1. In the 3D world, select a component.
2. On the Modeling tab, in the Component Graph panel, Component Node Tree, select the node that you want to contain the Physics
Path.
3. On the Modeling tab, in the Behavior group, click the Behavior arrow, and then under Physics, click Path.
4. In the Properties panel, do one or more of the following:
To define waypoints of the path, click the Path (expand) button, and then click the PLUS SIGN. Next, in Add 'Path' items, find
and select each Frame feature you want to reference as a waypoint in the path, and then click Close. If you need to, use the
arrows in the Path property to reorder the added Frame features.
To define pushing objects of the path, click the PushingFeatures (expand) button, and then click the PLUS SIGN. Next, in Add
'PushingFeatures' items, find and select each feature you want to potentially collide with components on the path, and then
click Close.
Calibrating Components in an Environment
Environment calibration allows you to automatically snap and align components in a layout using the base and tool frames of robots.
1. Click the Program tab, and then select a robot.
2. On the Program tab, in the Tools and Utilities group, click Environment calibration.
3. In the Environment calibration editor, do one or more of the following:
To update or create an EnvCalib frame in a component to be used as a calibrated position, to the right of the Name column for a
listed item, click Touch Up. A component must have a Frame feature labeled "EnvCalib" in order to be calibrated in a layout.
To use the data of a different robot for calibrating components, in the Robot column for a listed item, set the cell to reference a
robot in the 3D world. By default, the data of a selected robot is used for calibrating components.
To use a base or tool frame in a robot as the position for calibrating components, in the Fitting onto column for a listed item, set
the cell to reference a base or tool frame in a robot. The data itself is from a selected robot or a robot referenced by the item in
the Robot column.
To calibrate a component, in the → column for a listed item, click →. The component will be snapped to and aligned with the
frame referenced in the Fitting onto column by using the EnvCalib frame of the component. You can calibrate all listed items by
click the → column header.
To only list components that have EnvCalib frame, select the Filter components check box.
Call Subroutines in Robot Program
In order for a subroutine to be executed, it needs to be called by either the Main routine or another subroutine that is executed in a robot
program.
1. Click the Program tab, and then in the Job Map panel, click the tab of a robot to access its program.
2. In the program, select the subroutine that you want to use to call another subroutine.
3. On the Statements toolbar, click Add Call-Subroutine.
4. In the Properties panel, set Routine to the subroutine you want to be called by that statement.
Connecting External Axes
A robot can be remotely connected to external kinematic components, for example workpiece positioners, using abstract interfaces.
When an external kinematics component is wired to a robot, the component will be listed with the robot in the Controller Graph panel. The
element of that component will indicate how many of its joints are connected to the robot. Likewise, the properties of the robot and
properties for motion type statements in the robot program will indicate external joint/axis values.
The workflow for connecting external axes to a robot is similar to remotely connecting components.
1. On the Home tab, in the Show group, select the Interfaces check box.
2. In the 3D world, select a robot.
3. On the editor of the selected robot, drag the port for importing joints away from the editor to create a wire, and then drag that wire to
either a yellow highlighted node of an external kinematics component or a compatible port on another connection editor. In either
case, a successful connection results in a node in the external kinematics component being highlighted green and a wire connecting
both editors via ports.
Note: The order of remote connections for a robot should be the same for how its amplifiers are wired in the real world. For example, the
linear axis of a track could be E1, whereas E2 and E3 would the first and second axes of a connected workpiece positioner.
Connecting Robot to VRC
The Robot view allows you to access a contextual VRC tab on the Ribbon for managing the connection between a robot in the 3D world with
a virtual robot controller (VRC).
CONTENTS HIDE
1. ESTABLISH CONNECTION
2. INITIALIZE CONTROLLER
3. LOAD AND SIMULATE PROGRAM
4. TEACH ROBOT

1. Establish Connection
The status of a VRC connection can be verified by referring to the VRC element listed with a robot in the Controller Map panel or by selecting
the VRC element of a robot and viewing its properties.
1. Run KUKA OfficeLite.
2. Ensure the device running KUKA Sim Pro 3.0 can connect to the virtual machine. That is, enable your virtual machine network adapters.
4. In KUKA Sim Pro 3.0, click the Program tab, and then select a robot.
5. On the VRC tab, in the Connection group, click Connect.
6. In Connect... dialog, enter the IP address or computer name of the server running KUKA OfficeLite, and then click Connect.

2. Initialize Controller
The KUKA Robot Controller (KRC) in KUKA OfficeLite should have a valid configuration for a connected robot in the 3D world. An alternative is
to cold-start the controller, and then manually set up the configuration.
1. On the VRC tab, in the Connection group, click Boot.
2. In Select Configuration for... dialog, choose a valid configuration for the selected robot, and then click OK.

3. Load and Simulate Program


A program can be loaded in the VRC, and then simulated by a connected robot. Positions imported from a loaded program will be listed with
a VRC element in the Controller Map panel and displayed in the 3D world.
1. On the VRC tab, in the Program group, do one of the following:
To create and load a new program using the current project and job of the selected robot, click Generate and load Job, and then
in the prompt, click the appropriate action to complete setup.
To load a program in the KRC, click Load.
2. In Select Program for... dialog, do one of the following:
If you want to use the current job of the selected robot and its program is either not available or up-to-date in the KRC, click
Cancel, and then go back to Step 1.
To use a program on file in the KRC, select the program you want to use, and then click OK.
3. If you want to record the KRC actions of the robot in its program, on the VRC tab, in the Program group, select the Record check box.
4. Run the simulation.
5. If the program loaded in the KRC is not executed, on the virtual teach pendant either click the Start key or Start backwards key.

4. Teach Robot
A VRC can be used to manually jog the joints of a connected robot and teach and touch up positions while running a simulation.
1. Either unload or stop a program in the KRC.
2. On the virtual teach pendant, set the Operation mode to either T1 or T2 to enable the Jog keys.
3. Run the simulation. You can now use the virtual teach pendant to jog and move the robot in the 3D world.
Note: After you are done programming a robot, stop or reset a simulation, export any needed project data, and then disconnect the robot
from the VRC.
Connecting Signals to Robot I/O
The signal editor of a robot can be used to connect signals in other components as inputs and outputs.
When wiring inputs and outputs, the signal editor of a robot allows you to change the input/output port for a connected signal. That is, you
do not have to disconnect a signal in order to change the input/output port the signal is connected to in a robot.
1. On the Program tab, in the Show group, select the Signals check box. This turns on the visibility of signal editors based on the
selection in the 3D world.
2. In the 3D world, select a robot to display its signal editor and the editors of other components with compatible signals.
3. Expand the signal editor of another component, and then drag the port of a signal to display a wire for connecting that signal to the
robot.
4. Continue dragging the wire, and then do one of the following:
To read in the value of that signal as an input, drag the wire to the In [+] port of the robot signal editor.
To write the value of that signal as an output, drag the wire to the Out [+] port of the robot signal editor.
5. On the robot signal editor, next to the input or output that is wired to a signal, click the Edit button.
6. In the dialog, set Change for Signal to the signal in the robot you want to use for the connection, and then click Change.
7. If you want to remove the connection, in the 3D world point to the wire to display a Cut option, and then click the Cut.
Creating Explicit Variables
You can add variables to a robot and use them in a robot program. These variables are explicitly defined and are listed with a robot in the
Controller Graph panel.
Each explicit variable has a scope that defines the access and use of the variable in a robot program. A Global scope allows the variable to
be used in any routine. A Main scope allows the variable to be used in the Main routine. A subroutine name allows the variable to be used in
a subroutine of that name.
The data type of an explicit variable is either Boolean, Integer or Real. The data type of an explicit variable cannot be Structures (myStruct.x),
System variables ($pos_act), Enumerations (#myEnum), nor pointers/references to implicit robot variables (&P1).
The name of an explicit variable can be 23 characters long(A-Z, a-z, 0-9, _) and must start with a letter and not contain any special
characters. Explicit variable names are case-insensitive, for example an explicit variable named p1 is recognized as P1.
1. Click the Program tab.
2. In the Controller Graph panel, right-click the Variables element of a robot, and then click Add variable.
3. In the Add variable window, do all of the following:
To define the scope of the variable, set Routine to the desired option.
To define the data type of the variable, set Variable Type to the desired option.
To define the name of the variable, set Name to the desired value.
To not create the variable, click Cancel.
To create the variable, click OK.
Creating Safety Zones
A safety zone acts as a visual space and barrier for safely handling robots and other equipment.
A set of safety parameters is automatically added to a robot whenever you add at least one safety zone. These parameters are used
internally by the robot and do not render any type of object in the 3D world.
1. Click the Program tab, and then select a robot.
2. In the Controller Graph panel, within the selected robot group, right-click a Safety Zone element, and then do one of the following:
To create a safety zone for the entire robot cell, click Add Safety Cell. A robot can only have one safety cell, which is rendered
transparent orange with up to 10 corner points.
To create a safety zone for the robot work area, click Add Safety Workspace. A robot can have up to 16 different safety
workspaces, which are rendered transparent green or red depending on the proximity of each workspace to the robot. A
workspace can rendered as a volume space using Cartesian coordinates or axes.
To create a safety zone for a robot's end-of-arm tool, click Add Safety Tool. A robot can have up to 16 different safety tools.
Each safety tool can visualize between one and six volume spaces using spheres, which are rendered transparent yellow.
To import safety zone data, click Import Safety Zone.
To export safety zone data, click Export Safety Zone.
To delete a safety zone, click Delete. You may also right-click Safety Zone, and then click Delete to remove all safety zone items.
Creating Statements in Robot Program
A statement is a command executed by a robot in its program.
Statements in a robot program are contained in subroutines and executed in order one after the other. Explicit variables and other properties
of a robot, including I/O ports, can be used to define statements and conditions for program execution.
1. Click the Program tab, and then in the Job Map panel, click the tab of a robot to access its program.
2. In the program, create or select a subroutine to contain statements.
3. At the top of the Job Map panel, do one of the following:
To update a selected PTP, LIN or PTPHome statement in the robot program, click Touch Up.
To motion the robot to one of its Home positions, click Add PTPHOME, and then define the Home position of robot to call using
that statement.
To create a point-to-point motion to the current position of robot, click Add PTP.
To create a linear motion to the current position of robot, click Add LIN.
To create a circular motion defined by two points (auxiliary and end) based on current position of robot, click Add CIRC.
To read in a KUKA Robot Language (KRL) program, click Add USERKRL. This can be used to edit and write KRL code for a
statement as well as use data from a SRC file with some limitations: commands nested in a folder are unrecognizable;
unrecognizable commands are imported as expert code; and only one SRC file can be read, so calls to subroutines in other files
are unrecognizable.
To leave a comment, click Add COMMENT, and then define the comment for that statement.
To delay the execution of a subroutine, click Add WAIT, and then define the delay in seconds for that statement.
To wait for an input signal to have specific value, click Add $IN, and then define the value and port number to wait for in that
statement.
To set the value of an output signal, click Add $OUT, and then define the state and port number to set for that statement.
To stop the execution of a subroutine, click Add HALT, and then define if that statement will reset the simulation.
To create a container for grouping statements, click Add FOLDER, and then define if statements nested in the FOLD will be
executed as normal or treated as comments.
To create a new subroutine, click Add Subroutine, and then if the subroutine should be treated as a separate file.
To call a subroutine, click Add Call-Subroutine, and then define the subroutine called by that statement.
To update a tool frame during a simulation, click Add Set Tool, and then define values for a tool frame set by that statement.
To update a base frame during a simulation, click Add Set Base, and then define values for a base frame set by that statement.
To generate a path of positions along an edge or curve, click Add Path. This displays a Select Curve task pane for picking and
editing a path of points, for example seams in a workpiece. Generated points are linear motion statements and nested in a Path
statement.
To create a conditional statement, click Add IF, and then define the condition for executing statements nested in THEN or ELSE
group of that statement.
To create a loop, click Add WHILE, and then define the condition for executing statements nested in that loop.
To set the value of robot variable or property in the robot program, click Add Assign variable, and then define the value of a
program property or variable set by that statement.
Create Subroutines in Robot Program
A subroutine contains a sequence of statements that can be executed by a robot. Subroutines need to be called in the Main routine of a robot
program either directly or by another subroutine in order to be executed during a simulation.
1. Click the Program tab, and then in the Job Map panel, click the tab of a robot to access its program.
2. In Statements toolbar, click Add Subroutine.
Customizing Statements Toolbar
At the top of the Job Map panel is a Statements toolbar which be edited to show/hide commands for adding statements to a selected
program.
1. Click the File tab, and then on the Navigation pane, click Options, and then click Toolbar.
2. In Visibility, do one of the following:
To edit commands for adding statements to a robot program, expand Applications. Next, either select the check box of a
command to show the command or clear the check box of a command to hide the command.
To hide all commands for adding statements to a robot program, clear the Applications check box.
To show all commands for adding statements to a robot program, select the Applications check box.
To edit commands for adding RSL statements, expand RSL. Next, either select the check box of a command to show the
command or clear the check box of a command to hide the command.
To hide all commands for adding RSL statements, clear the RSL check box.
To show all commands for adding RSL statements, select the RSL check box.
3. Do one of the following:
To save your changes, click OK.
To cancel your changes, click Cancel.
Detecting Collisions
Collisions between a robot and other components can be detected in the 3D world using global settings and detectors.
A detector is a collision test between two lists, A and B, with each list containing nodes. The geometry of nodes in list A is compared to the
geometry of nodes in list B in order to detect a collision. The scope of a detector can be one, multiple or all components in the 3D world.
A default collision test/detector is Selection vs World. This allows you to compare a selected component to all other components in the 3D
world. The selection will automatically include any child components, for example selecting a robot with a mounted tool would include the
tool component in that detector.
In some cases, you may want a child component or node to be excluded from a collision test. In such cases, you will need to create a new
detector and possibly disable other collision tests. When creating a new detector, nodes in list A will be highlighted green and nodes in list B
will be highlighted blue.
A simulation does not need to be running in order to detect a collision. For example, you can detect collisions while teaching a robot. When a
collision occurs, the geometry of the colliding nodes in the 3D world are colored yellow. When running a simulation, it is important to note
that the speed of a simulation can affect the rate at which collisions are detected in the 3D world.
1. On the Program tab, in the Collision Detection group, select the Detectors Active check box to enable collision detection.
2. Click the Detectors arrow, and then do one or more of the following:
To track only the first detected collision, under Option, set Detect collision to First. By default, all detected collisions will be
tracked during a simulation.
To define a minimum distance tolerance for collisions, under Option, in the Collision Tolerance box, type or paste a distance
value. In this case, a collision can be detected before it occurs by using a safety distance. By default, zero tolerance is used to
detect collisions at impact.
To show the minimum distance for a detected collision using a tolerance, under Option, select the Show Minimum Distance
check box. This will show the shortest distance between the geometry of two nodes in a collision test.
To detect collisions between a selected component and all other components in the 3D world, under Detector, select the
Selection vs World check box, and then select the component in the 3D world that you want to compare to all other
components. This will remain valid as long as that component remains selected in the 3D world since the detector tests selected
components against all other components.
To create a new detector, under Detector, click Create detector. Next, in the Detector properties task pane, do all of the
following:
To define the name of the detector, set the Name property. This will be the label of the detector in the GUI.
To turn on/off the detector, select/clear the Active check box.
To add or remove components from the detector, do one of the following:
To use quick commands, in the 3D world, click a component to include in the detector, and then on the Mini toolbar,
click the desired option: A to add component to list A; B to add component to list B, Trash can to remove component
from the detector.
To add a component to a list, in the 3D world, click a component to include in the detector. Next, in the Detector
properties task pane, click A tab for list A or B tab for list B. Finally, click Add Section.
To remove a component from a list, in the 3D world, click the tab of the list containing the component you want to
remove from the detector. Next, in the list, point to the root node of the component, and then click the Trash can.
To include/exclude nodes of a component in the detector, click the tab of the list containing the component. Next, in the
list, find the component and expand its node hierarchy. Finally, do one of the following:
To include a node, select the node's check box.
To exclude a node, clear the node's check box.
To turn on/off a detector, under Detector, do one of the following:
To activate a detector, select the detector's check box.
To deactivate a detector, clear the detector's check box.
To delete a detector, under Detector, point to the detector you want to delete, and then click the Trash can.
Note: A collision detector is a type of layout item and can be saved with a layout.
Edit Base and Tool Frames
The Move command and other tools can be used to edit robot base and tool frames.
1. Click the Program tab, and then in either the Controller Map or Jog panel, select the base or tool frame you want to edit. In this case,
the Move command is automatically enabled and a manipulator in the 3D world shows the location of the selected frame.
2. Do one or more the following:
To snap a base or tool frame to a location in the 3D world, on the Program tab, in the Tools group, click Snap and then snap the
selected frame as you would a component.
To move a base or tool frame in the 3D world, use the manipulator and/or the Properties panel to move the selected frame as
you would a component. In this case, the Object coordinate system can be used to access base and tool coordinate systems.
To attach a base or tool frame to a node, in the Properties panel, click the Node button, and then in the 3D world, attach the
selected frame to a node as you would a component.
To define the interpolation of a base or tool frame for motion targeting, in the Properties panel, set the InterpolationMode
property to the preferred option. In this case, you are defining the parent coordinate system for motion targeting and whether a
frame used as a tool center point is stationary or movable. If a base or tool frame does not have an InterpolationMode setting
that references itself or equals #NONE, you are essentially using an external tool configuration.
Technical: The AttachedKinematic property of a base frame verifies if the base frame is attached to a component with its own kinematics
system. For example, some turn units and workpiece positioners have their own set of kinematics. A component of that type would need to
be connected to a robot in order for the robot controller to calculate base frame data using the flange node of that component.
Edit Controller Data
Items listed in the Controller Map panel can be edited using the Properties panel. If you are selecting a robot, select the robot as a
component to edit its properties. Otherwise, select the robot and its controller to edit its configuration in the Jog panel.
1. Click the Program tab, and then In the Controller Map panel, select the element you want to edit.
2. In the Properties panel, edit one or more properties.
Some properties might be automatically added to components that need to support the import and export of machine data or programming
with a virtual robot controller (VRC). Generally, a component is modeled to have machine data properties which are kept hidden from an end
user. If machine data properties need to be added to a component, they will be visible and listed in the Properties panel as long as the
component remains connected to a robot.
Important: Moving a robot as a component or any base and tool frames may affect the location of positions in the program of that robot.
Therefore, consider using the Lock Positions To World command to retain the position of motion statements in the 3D world.
Editing Implicit Variables
A robot can have implicit variables, which are STRUCT complex data types written in a DAT file. Global implicit variables are loaded from a
global DAT file, whereas local implicit variables are created when you add statements to a robot program.
1. Click the Program tab,
2. In the Controller Graph panel, right-click the KSS element of a robot, and then click Manage Robot Variables.
3. In the Variables window, do one of the following:
To edit the value of a variable, click the Value cell of variable.
To copy the value of variables, select one or more variables, and then click Copy to Clipboard.
To load global variables, click Load, and then open a DAT file containing the needed variables.
To delete global variables, select one or more variables, and then click Delete.
Edit Path Statements
The properties of a Path statement and reference points can be used to edit the motion statements of a path.
1. Click the Program tab, and then in the Job Map panel, click the tab of a robot to access its program.
2. In the program, expand a subroutine to list its statements.
3. In the subroutine, expand the Path statement you want to edit.
4. Do one of the following:
To replace all positions, click the Path statement, and then in the Properties panel, click Select Curve. Next, use the Select
Curve task pane to select curves and generate new robot positions for the path.
To reverse all positions, click the Path statement, and then in the Properties panel, click Reverse.
To lock/unlock an axis in all positions, click the Path statement, and then in the Properties panel, LockAxis property, click the
axis you want to lock or choose None to unlock all axes based in the position's coordinate system.
To mark a position as a fixed point and reference for modifying other positions, click the position, and then in the Properties
panel, select the ReferencePoint check box.
To unmark a position as a reference point, do one of the following:
To directly unmark a position, click the position, and then in the Properties panel, clear the ReferencePoint check box.
To automatically unmark all positions, click the Path statement, and then in the Properties panel, click Clear Reference
Points.
To adjust the orientation of positions, do all of the following:
Mark one or more positions in the path as reference points, and then make any necessary edits to those points. For
example, you can touch up the orientation of a position marked as a reference point.
Technical: If you use more than one reference point, adjustments to other positions will be blended based on the curve
index of reference points and the LockAxis and Interpolation properties of the Path statement. For example, positions
between reference points would be a blend of those limits, whereas other positions might inherit a percentage of a
reference point orientation.
Click the Path statement, and then in the Properties panel, make any necessary edits to properties, and then click Apply
Smoothing. Generally, you would edit the LockAxis property to achieve the desired tool center point orientation. In such
cases, you might adjust the rotation of a reference point around the Y-axis, lock the Y-axis in the path, and then apply
smoothing to update the Z-axis of path positions.
To apply a nozzle offset to positions, for example a welding path, do all of the following:
Mark at least two positions in the path as reference points, and then make any necessary edits to those points. Generally,
you would mark the start and end positions of a weld seam or an edge/curve that requires a tool tip offset.
Click the Path statement, and then in the Properties panel, set the NozzleOffset property to desired value, and then click
Apply Nozzle Offset.
Editing Robot Origin
The origin of the robot relative to the Robot World Frame (RWF) is defined by a RobRoot property in a robot. Generally, you edit the robot
origin when a robot is mounted on a pedestal in the 3D world.
1. In the 3D world, select a robot as a component.
2. Click the Program tab, and then in the Properties panel, Default tab, edit the RobRoot property.
Edit Robot Positions
The location of linear, point-to-point and circular robot positions in a program can be edited using the Move and Jog commands and other
tools.
1. Click the Program tab, and then do one or more of the following:
In the 3D world, select the robot positions you want to edit. For example, you can use the Free-form selection command to draw
a selection path around visible robot positions. A robot position is visible if it references a base frame and tool frame in a robot
and the global Frame Visibility setting for robot positions is turned on in 3D world.
In the Job Map panel, select the statement of a robot position that you want to edit.
2. On the Program tab, in the Manipulation group, do one of the following:
To edit the location of one or more robot positions, click Move. This does not allow you to interact with robot joints. That is, you
would need to manually edit any external joint values for a robot position in the Properties panel.
To edit the location and joint values of a robot position, click Jog.
3. Do one or more of the following:
To snap a robot position to a location in the 3D world, on the Program tab, in the Tools group, click Snap, and then snap the
selected position as you would a component.
If you enabled the Move command, use the manipulator and/or the Properties panel to move the selected position as you
would a component. In this case, the Object and Parent coordinate systems can be used to edit the location of a robot position
relative to itself and its parent, for example a robot position in relation to its base coordinate system.
If you enabled the Jog command, use the manipulator and/or the Jog panel to edit the configuration of the robot, and then do
one of the following:
To update the selected statement, in the Job Map panel, Statements toolbar, click Touch Up or right-click the statement,
and then click Touch Up Point.
If you need to update points in a circular motion, right-click the statement, and then either click Touch Up Auxiliary Point
or Touch Up End Point.
Edit Statements in a Robot Program
Statements in a robot program can be edited using the Properties panel.
1. Click the Program tab, and then in the Job Map panel, click the tab of a robot to access its program.
2. In the program, expand a subroutine to list its statements.
3. In the subroutine, select the statement you want to edit.
4. Do one or more of the following:
To edit the properties of a selected statement, in the Properties panel, edit one or more properties.
To copy and paste a selected statement, right-click the statement, and then click Duplicate. You can use Copy and Paste
shortcuts to duplicate a statement in the same or different program.
To delete a selected statement, right-click the statement, and then click Delete.
To delete all statements and subroutines, right-click the statement, and then click Initialize jobmap, and then in the prompt,
click Yes.
To convert a statement that is a linear or point-to-point motion to a different motion type, right-click the statement, and then
depending on the motion type click either Convert LIN to PTP or Convert PTP to LIN.
To set the joint turn distance for a point-to-point motion to be as small as possible from the previous point to the current point,
right-click the statement, and then do one of the following:
To affect the selected statement, click Set PTP axes 3-6 closest to previous point.
To affect the selected statement and any subsequent point-to-point motion statements, click Set PTP axes 3-6 closest to
previous point for this and all following PTP points.
To execute the selected statement, click Run to End.
To execute all statements from the beginning of the program until reaching the selected statement, click Run to Start.
Exchanging Robots
A robot can be exchanged with another robot in the 3D world to switch locations and programs. When exchanging robots, a compatible robot
will be highlighted yellow in the 3D world to indicate it can be exchanged with the selected robot.
1. In the 3D world, select a robot.
2. On the Program tab, in the Tools and Utilities group, click Exchange Robots.
3. In the 3D world, click a compatible robot that you want to exchange with the selected robot. The highlight color of a compatible robot
that you click will change from yellow to green to confirm that robot will be exchanged with the selected robot.
4. In the Exchange Robots task pane, click Apply.
Exporting Project Data
When you click the Program tab, a contextual Export tab is displayed to allow the exporting of project data for a selected robot.
Project data includes the JOB file of robot program, $config.dat and $machine.dat files, SRC and DAT files for project, and an HTM file for
project info. When exporting Home positions, the axis values of each position is commented out in KRL code.
A KRL program is generated using a code template that is defined by the CodeGenTemplatesVersion property of a robot. For example, you
can generate code for a KRC4 controller with KSS 8.2 and KSS 8.3.
The properties of the Main program in robot define where and how generated code is written to in a file. This allows an expert user with
administrator rights to modify a code template for how code should be generated and saved to file. Templates are located in the directory of
KUKA Sim Pro 3.0 program files.

The SerialNr property can be used to check if generated KRL code can executed by the current robot. Otherwise, set SerialNr to zero.
1. Click the Program tab, and then select a robot in the 3D world.
2. Click the Export tab, and then do one of the following:
To export the project files of a selected robot, click Generate Job. If you are prompted to overwrite existing files, follow each
prompt to save each file.
To export the configuration of a selected robot, click Generate config.dat, and then save the file.
To export the KRL source code for a project, click Generate Code, and then save the file.
To export safety zone data, click Export Safety Zone. If you prompted to verify exported safety zone information with a safety
officer, follow the prompt, and then save the file.
Going through Robot Motions
The Quick Simulation Slider at the bottom of the Job Map panel allows you to go to the next or previous statement of the current statement in
a robot program. If the next statement is a motion type statement, you can use the slider to simulate the motion of the robot to that position.
If the next statement is a FOLD or PATH, the slider will motion the robot through each motion type statement nested in that next statement.
1. Click the Program tab, and then in the Job Map panel, select a robot program.
2. On the Quick Simulation slider, do one of the following:
To go to the previous statement, click the left arrow.
To go to the next statement, click the right arrow.
To simulate the motion of the robot to the position of the next statement, drag the slider from the left to the right.
To simulate the motion of the robot back to the position of its current statement, drag the slider from the right to the left.
Importing KRL Program
When you click the Program tab, a contextual Import tab is displayed to allow the loading of a KRL program.
There are limitations when importing a KRL program.
Statements nested in a FOLD are not recognized, and unrecognized statements are imported as expert code (USERKRL statement).
Only one SRC file is imported, so calls to routines in different files will not be recognized nor will those files be imported by the
command.
You can import files but not folders nor archive.zip files.
A KRL program can contain points referencing global variables, but you must import those variables before importing the KRL program.
Therefore, it is recommend to first import a $config.dat file for tool and base frames, and then import a $config.dat file for needed global
variables, and finally import a KRL program.
1. Click the Program tab, and then select a robot in the 3D world.
2. Click the Import tab, and then click Import Krl.
3. In the Import Krl task pane, do all of the following:
To select a KRL program, click the File Name (browse) button, and then select a SRC file containing the needed program.
In Software version templates, select the appropriate option.
If you want to import the Main routine in the KRL program as a subroutine, select the Load Main into sub routine check box;
otherwise clear the check box.
4. Click Load.
Importing Project Data
When you click the Program tab, a contextual Import tab is displayed to allow the loading of project data for a selected robot. This includes
loading a different robot program in a selected robot.
1. Click the Program tab, and then select a robot in the 3D world.
2. Click the Import tab, and then do one of the following:
To import and load a job map XML file saved by KUKA.Applications PC in KUKA.Sim 2.2 version, click Load Job Map. In the
prompt, click Yes to clear the current program of a selected robot, and then open a JobMap.xml file containing the needed
program.
To import safety zone data, click Import Safety Zone, and then open an XML file containing the needed safety zone data.
Importing Robot Data
When you click the Program tab, a contextual Import tab is displayed to allow the loading and synchronization of robot data. During
synchronization, you can use the manipulator in the 3D world to edit a selected base/tool item in the editor or jog the joints of selected robot
to touch up Home positions.
1. Click the Program tab, and then select a robot in the 3D world.
2. Click the Import tab, and then do one of the following:
To import tool frame data, click Load tools. Next, open a $config.dat file containing the needed tool data. Finally, in Tools
editor, sync tool data rows that are highlighted red.
To import base frame data, click Load bases. Next, open a $config.dat file containing the needed base data. Finally, in Bases
editor, sync base data rows that are highlighted red.
To import Home positions, click Load homepos. Next, open a $config.dat file containing the needed Home position data. Finally,
in Home positions editor, sync Home position data rows that are highlighted red.
Limiting a Robot and its Joints
A limit is a constraint or barrier that can be used to restrict a robot in its space. Generally, when you are programming a robot, limits are used
to detect and show potential errors.
1. On the Program tab, in the Limits group, do one or more of the following:
To limit joints to their range of movement, select the Joint check box.
2. Click the Settings arrow, and then do one or more of the following:
To highlight exceeded limits, select the Color Highlight check box. In this case, a node in a robot will be highlighted red if the
joint of that node exceeds its limits.
To stop a simulation when a limit is reached or exceeded, select the Stop at limits check box.
To print feedback in the Output panel when a limit is reached or exceeded, select the Message Panel Output check box.
Lock Robot Positions
A global setting can be used to lock the location of all motion targets in the 3D world. That is, a motion target can retain its location if you
move its parent, for example a robot or base frame.
On the Program tab, in the Lock Positions group, do one of the following:
To lock motion targets to the 3D world, click To World.
To unlock motion targets from the 3D world, click To Reference.
Mapping Signals to Actions in Robot
Robot I/O can be mapped to base and tool frames in order to perform tool-specific actions. For example, you can use an $OUT statement to
signal grasp and release actions, tracing, and the mount and dismount of tool components. Note that in all cases digital (Boolean) signals
are used to signal actions with a True or False value.
1. In the 3D world, select a robot as a component.
2. In the Properties panel, expand the Actions Configuration section.
3. Under Signal Actions, do all of the following:
In Output, click the signal of the robot you want to use for signaling an action. Most robot components have an Action Script
behavior which automatically maps signals 1 to 48 to tool frames and signals 49 to 80 to base frames. That means there are
predefined signal actions that you can use without having to configure new ones. In most cases, signals 1 to 16 signal grasp and
release actions, signals 17 to 32 signal tracing actions, and signals 33 to 48 signal mount and dismount tool actions. Generally,
you would not need to use base frames, so using signal 50 onwards would not cause a problem. Otherwise, you can use signal
100 onwards which in either case makes it easier to find and reference which signals are being used for actions.
In On True, click the action you want to execute when the signal value is True. This will display a section of options for the
selected action.
In On False, click the action you want to execute when the signal value is False. This will display a section of options for the
selected action.
4. Do any of the following that applies to the On True action you selected in Step 3:
If the action is Grasp, define the tool frame and detection area to use for grasping components. The detection area is a volume
area defined using XYZ coordinates in the tool frame's coordinate system. This allows the robot to know what components can
and should not be grasped in the 3D world.
If the action is Trace On, define the material and tool frame to use for tracing the robot's motion path. Next, define whether or
not you want to attach traced line sets to the 3D world (simulation root node) or the node of a component. Generally, traced line
sets are attached to the 3D world since a robot might be moved during a simulation, for example robots mounted on tracks.
If the action is Mount Tool, define the tool frame, detection area and interface to use for mounting tool components. Note that
the interface used must be compatible with an interface in a tool component, otherwise the tool component will not mount to the
robot.
5. Do any of the following that applies to the On False action you selected in Step 4:
If the action is Release, set the GravityDirection property to be the distance from the bottom of a grasped component's bound
box to a container that the component can be attached to in the 3D world. If no container is found, the component is released
and attached to the 3D world (simulation root node).
If the action is Trace Off, define which tool frame should have its tracing disabled.
If the action is Unmount Tool, set the GravityDirection property to be the distance from the bottom of a tool component's
bound box to a container that the tool component can be attached to in the 3D world. If no container is found, the component is
released and attached to the 3D world (simulation root node). Next, define which interface the tool component is unplugged
from in the robot. If the tool component is locked from editing, you will not be able to dismount the tool from the robot.
6. In the robot program, add an $OUT statement to signal the action. For example, set signal 17 to True to turn on tracing, and then use
another $OUT statement to turn off tracing.
Tip: If you want to use an imported tool frame, we recommend moving one of the robot tool frames to the imported tool frame location. That
would allow you to avoid reconfiguring actions as well as cases where the imported tool frame is not available in the robot.
Painting
The Paint add-on allows you to prepare, simulate and analyze the results of paint processes using a robot and paint gun.
CONTENTS HIDE
ENABLE ADD-ON
ACCESS PAINT VIEW
PREPARE COMPONENTS
DEFINE VISUALIZATION OF PAINT
MEASURE PAINT THICKNESS
REMOVE PAINT
PAINT DISTRIBUTION AND SIMULATION

Enable Add-on
The Paint add-on can be turned on/off using a backstage option.
1. Click the File tab, and then on the Navigation pane, click Options.
2. Click Add On, and then in Paint, do one of the following:
To enable the add-on, click Enable.
To disable the add-on, click Disable.

Access Paint View


The Paint add-on and its commands can be accessed from a contextual Paint tab that appears when you are programming a robot.
Click the Program tab, and then under Paint Tools, click the Paint tab.

Prepare Components
If you want to paint a component, you need to prepare its geometry, material and surface for painting.

Level Of Detail
The geometry of a component can be tessellated to a desired level of detail for applying paint.
1. On the Paint tab, in the Prepare Geometry group, click Prepare Components for Painting.
2. In the 3D world, directly select the component(s) you want to paint during a simulation.
3. In the Prepare for Painting task pane, set Max Edge Length to the desired value, and then click Prepare Selected Components.

Coating
The material of a prepared component is defined by a color map that assigns materials to geometry based on paint thickness. Generally, a
prepared component has no paint, so its material is the material mapped to a paint thickness of zero.
1. On the Paint tab, in the Show Paint group, click Edit Color Maps.
2. In the Color Maps Editor task pane, Map table, find the row with a paint thickness of 0, and then set its Color field to the desired
material.

Masking
Any surface area of a prepared component that is covered by another component will not be painted with some exceptions. The level of
detail in a prepared component can affect paint bleeding in which the edges of masked areas are not clean and contain some paint.
Generally, this occurs when the edge length of component geometry is too long. Some paint guns might not support ambient occlusion, so
masked areas would still be painted.

Define Visualization of Paint


During a simulation, a paint gun will dynamically add texture coordinates to the geometry of prepared components. These coordinates are
used to define the thickness of paint on surfaces. That means you can change the visualization of paint before and after it has been rendered
in the 3D world.
Color Mapping
There are two modes for visualizing paint on surfaces. One mode is to use a gradient of colors mapped to paint thickness values. This would
blend colors and visualize the application of paint like in the real world. Another mode is to use colors mapped to intervals of paint thickness
values. This would allow you to clearly delimit paint thickness on surfaces. For example, a surface area with a paint thickness value of X
could be assigned a material of Y according to these rules: X<=0, Y is white; 0<X<=0.5, Y is blue; and 0.5<X<=1, Y is red.
1. On the Paint tab, in the Show Paint group, click Edit Color Maps.
2. In the Color Maps Editor task pane, set Map to one of the following:
To define settings for visualizing paint with a color gradient, click Color paint visualization.
To define settings for visualizing paint with a color interval, click Thickness paint visualization.
3. In the Map table, do one or more of the following:
To edit a mapping, find the row you want to edit, and then edit the fields of that row.
To delete a mapping, find the row you want to remove, and then in the Paint Thickness field, click the Trash icon.
To add a mapping, edit the last row of the table. Every valid row must have a defined paint thickness value.

Rendering
The rendering of the 3D world will affect the visualization of paint but not its color. You can toggle between different color modes at any time
and show/hide paint on surfaces.
On the Paint tab, in the Show Paint group, do one of the following:
To not show any paint, select None.
To show paint using a color gradient, select Color.
To show paint using a color interval, select Thickness.

Measure Paint Thickness


A Paint Thickness tool can be used to measure and record the thickness of paint at any surface point of a painted component. By default,
paint thickness is measured in microns or micrometers (μm).
1. On the Paint tab, in the Measure group, click Paint Thickness.
2. In the 3D world, do one of the following:
To display a measurement, point at a painted surface.
To record a measurement, click a point on a painted surface. This adds a temporary annotation for that point of measurement.

Remove Paint
Paint can be removed from a component. That is, you can remove texture coordinates added to component geometry by a paint gun.
On the Paint tab, in the Remove Paint group, do one of the following:
If you want to remove paint from a selected component, click Selected. You would need to first select the component in the 3D
world, and then use the Selected command to remove the paint.
If you want to remove paint from all components in the 3D world, click All. Remember, this only affects components that were
prepared for painting.
If you want to automatically remove all paint when you reset a simulation, select the Remove on Reset check box.
If you do not want to remove any paint when you reset a simulation, clear the Remove on Reset check box.

Paint Distribution and Simulation


A paint gun is a component that can add paint to components during a simulation. Generally, all paint guns have somewhat similar
properties. Refer to this section as needed when using any paint gun.

Simulation Properties
Some properties of a paint gun define how often painting is updated in the 3D world during a simulation. Other properties define the
minimum and maximum distances for paint to be rendered given the distance of gun nozzle from a surface.
Refresh Rate - The frequency (Hz) of calculating paint distribution during a simulation. A higher frequency yields a more detailed
simulation, yet slower rendering of paint distribution. Generally, this was an issue in previous product versions, so newer paint gun
models might not have this property.
Spray Min Distance - The minimum distance at which paint is distributed on a surface. In most cases, a Frame feature is used to show
this distance in the 3D world.
Spray Max Distance - The maximum distance at which paint is distributed. In most cases, a Frame feature is used to show this
distance in the 3D world. Paint is distributed on surfaces within the defined min and max spray distances.

Calibration Properties
A paint gun is calibrated to know its a normal distribution of paint using certain properties. Older versions of paint guns required you to
perform calibration, but now calibration is handled for you. In most cases, it is assumed a paint gun has a symmetric cone-like shape
representing the profile or area of its paint distribution.
Gun Efficiency - The overall transfer efficiency of paint by the paint gun. A smaller value means less paint is transferred to a surface
with respect to time. The unit of this property might be a percentage or scale, for example 50% or 0.5.
Spray Distance - The distance of the pain gun nozzle from a surface in a robot program. That is, how far the nozzle is from a surface
when painting with a robot. Generally, you would already know this distance when teaching a robot or the nominal spraying distance of
the paint gun.
Depending on the version of your paint gun, paint is thickest at the mean and less thick for each deviation. Also, a profile distance value may
correspond to a thickness value (in microns). Two profiles can be used for non-symmetric or skewed distribution.

A circular thickness pattern is generated using profiles X and Y, which emanate from the center of the circle. The distance values determine
the spread and radius of the pattern. The thickness values determine the deposition of paint based on the direction of the radius, for example
when a paint gun sweeps across a surface.

A mean offset and standard deviation are calculated for profiles X and Y to properly project the path of paint droplets from their source to a
surface. As a result, both affect the distribution of paint for a calculated pattern.

Newer versions of paint guns may allow you to map distance values to a loaded profile image.

Calculated Properties
Some properties of a paint gun can be used to fine tune the distribution of paint.
Flow Rate - The volume of paint per second (cm^3/s) based on the paint profile and the linear speed and efficiency of the paint gun.
Spray Diameter X and Spray Diameter Y - The diameter of the spray cone based on X and Y profiles. For example, one profile can be
used for symmetric, normal distribution of paint. So if the X value is 160mm, the spray diameter is 320mm.
Max Display Thickness - Scales the thickness of paint color being used based on paint profile.
Mean Offset - An offset from the center of paint gun in the direction of its radius, which affects the normal distribution of paint. This
affects the paint distribution of a sweep and relates to the arc paint travels from the paint gun to a surface.
Programming Other Components
RSL statements can be used to program a component that has Servo Controller behavior paired with a Robot Executor behavior. For example,
you can program turn tables, tracks and other types of machines that use servos to drive joints. The Jog command and other options can be
used to select and interact with the joints of a programmable component.
1. Click the Program tab.
2. In the Job Map panel, do one of the following:
To select the program of a component, click a tab labeled with the name of that component.
If the program of a component is not listed as a tab, the component cannot be programmed and needs to be remodeled to
support RSL programming.
3. If the Statements toolbar is not showing commands for adding RSL statements, do one of the following:
If the Statements toolbar is showing commands for adding statements, you have selected a robot program and need to go back
to Step 2.
If the Statements toolbar is not showing any commands for adding statements, you may need to customize the Statements
toolbar to show RSL commands and repeat Step 2 before going on to Step 4.
4. In the Statements toolbar, do one of the following:
To add a point-to-point motion, click Add Rsl joint motion statement.
To add a linear motion, click Add Rsl linear motion statement.
To add a subroutine, click Add Rsl routine.
To add a call to a subroutine, click Add Rsl call routine statement.
To print a message to the Output panel, click Add Rsl print statement.
To add a delay of execution, click Add Rsl delay statement.
To set the value of an output port, click Add Rsl digital output statement.
To wait for an input port to have a specific value, click Add Rsl wait for digital input statement.
To edit a base frame during a simulation, click Add Rsl set base statement.
To edit a tool frame during a simulation, click Add Rsl set tool statement.
To halt and/or reset a simulation, click Add Rsl halt statement.
Select a Robot and its Data
A robot and its data can be selected like any other component in the 3D world.
You need to use the Jog command to select and manipulate a robot in the 3D world. Otherwise, the Select and Move commands will select
and move the robot as a component. A component is recognized as a robot if it has a Robot Controller behavior, Robot Executor behavior, and
a kinematics type behavior, for example Python Kinematics.
In the Controller Map panel, an available robot in the 3D world is listed as a nested group. The first level in a robot group is the controller
used for programming the robot offline, for example KSS 8.3. The next level in the group is the robot listed by name followed by its Bases,
Tools, Home Positions, Project (My_Job) and Safety Zones. Any component that exports data and/or is connected to a robot as an external
joint is listed in the robot's group, for example tracks and workpiece positioners.
1. Click the Program tab.
2. In the Controller Map panel, do one of the following:
To select a robot, click the element of a robot.
To select a base frame, expand a Bases element, and then click a base frame.
To select a tool center point, expand a Tools, element, and then click a tool frame.
To select a home position, expand a Home positions element, and then click a Home position.
To select a robot variable, expand a Variables element, and then click a variable.
To select a safety zone, expand a Safety Zone element, and then click a safety zone.
In the Jog panel, the Robot section displays configuration data and the Joints section displays joint data including external axes connected to
the robot.
1. On the Program tab, in the Manipulation group, click Jog.
2. In the 3D world, click a robot.
3. In the Jog panel, Robot section, to the right of Base or Tool property, click a Socket to select the current object of that property.
4. In the Properties panel, use the Name drop-down menu to select a different base or tool frame.
Selecting Statements in a Robot Program
The Job Map panel is used to view a robot program as well as create and edit statements in subroutines. In the Job Map panel, a robot
program is contained in a tab labeled with the robot name. In each tab, the Main routine of a robot program is listed first followed by
additional subroutines. In each subroutine, is a sequence of one or more statements that are executed in order. The Quick Simulation Slider
at the bottom of the panel can be used to motion or cycle a robot through a sequence of statements without having to run a simulation.
1. Click the Program tab, and then in the Job Map panel, click the tab of a robot to access its program.
2. In the program, expand a subroutine to list its statements.
3. In the subroutine, do one of the following:
To directly select a statement, click a statement.
To select a nested statement, expand the parent element of a statement, and then click the nested statement.
To select either an auxiliary or end point in a circular motion statement, click the statement, and then use the Name label in the
Properties panel to select the needed statement.
Tip: Positions in a robot program can be selected like any other component in the 3D world. You can use the Select command to prevent a
robot from motioning to a selected robot position.
Sweeping Geometry
A robot can send an output signal in its program that triggers the sweeping of geometry. By default, signal 81 in a robot is mapped to
perform this action.
CONTENTS HIDE
SWEPT VOLUME
CONFIGURE ACTION
SIMULATE ACTION

Swept Volume
Sweeping is a process that encases geometry in a convex hull to create a profile. That profile or volume of geometry can then be generated
repeatedly from the beginning and end of its motion path to visual its displacement.
If a profile does not move, you would create its geometry at each iteration in the same space. If the profile moves, you would create its
geometry at each iteration along its motion path in a different space.

Methods
The method for generating swept volume determines its precision.
Lofting is good for movements requiring small changes.
Hull from Hulls supports all types of movements but yields a higher data count.
Hull from Silhouettes is a balance of the other two methods and supports simple and complex movements.

Storage
In all cases, you should contain swept volume in a node that does not move during a simulation. Otherwise, the movement of that node
would affect the swept volume. The node can be in either:
The signaling robot.
Another component detected by the signaling robot using a tool frame.
A new component that is generated the first time you simulate the action.
Swept volume can be stored permanently in a component or removed from the 3D world when you reset a simulation.

Configure Action
1. In the 3D world, select a robot.
2. In the Properties panel, expand the Actions Configuration section.
3. Under Signal Actions, do one of the following:
To configure a new action, set Output to be any signal greater than 81, and then set OnTrue to Swept Volume On.
To configure an existing action, set Output to 81 or a signal you have already configured to perform a sweep.
4. Under Swept Volume On, do all of the following:
To define the method to use for generating swept volume, set SweptMethod to the desired option.
To define the geometry and profile of the sweep, set SweptGeometry to include nodes containing the desired geometry. You
can include any node in the 3D world, but you will first need to expand SweptGeometry, and then use either the Pick button to
directly select a node in the 3D world or the Add button to select a node from a list. The order of nodes listed in SweptGeometry
has no effect on the action.
To define the material of swept volume, set Material to the desired option. If no material is selected, the default material is
yellow. It is not possible for the action to use multiple materials given its current implementation, but you can do this using API,
see vcSweptVolume for more information.
To define the mode for containing swept volume, set AttachTo to the desired option.
If Node, set TargetNode to be the node you want to contain the swept volume.
If Closest, define which tool frame in the robot you want to use and what detection area you want to generate from the
tool frame's coordinate system to detect a nearby node. This option will exclude all nodes of the robot.
If New Component, the component will be added to the 3D world the first time you simulate the action. If you are not
storing swept volume, you can use the Cell Graph panel to select the added component.
5. Under Swept Volume Off, do one of the following:
To store swept volume, select the StoreGeometry check box. Swept volume generated by this action will not be removed from
the 3D world when you reset a simulation.
To not store swept volume, clear the StoreGeometry check box. Swept volume generated by this action will be removed from
the 3D world when you reset a simulation.

Simulate Action
1. Click the Program tab, and then use the Jog command to select a robot in the 3D world.
2. In the Program Editor panel, select a routine, and then add a Set Binary Output statement.
3. In the Statement Properties panel, do all of the following:
Set OutputPort to the signal in the robot configured for a swept volume action.
Set OutputValue to True to turn on swept volume when the statement is executed in the program. In most cases, the action
should be configured this way so that a True value turns on swept volume and a False value turns off swept volume.
4. In the Program Editor panel, rearrange the statement signaling the action as needed in the routine. For example, you may want the
action to be triggered before the robot motions to certain positions.
5. Repeat steps 2 to 4, but this time set OutputValue to False to turn off swept volume, and you may want to arrange the statement
signaling the action to be after the robot motions to certain positions but before other positions you do not want to include in the
swept volume.
6. Run the simulation to generate the swept volume, and then reset the simulation.
Synchronizing Robot Data
In some cases, the preferred method for editing base and tool frames is to use an editor. The editor allows you to manually select and edit
robot data in the 3D world, load files for syncing data, and copy tabular data to the clipboard. The units for coordinate and rotational values
is millimeters (mm) and degrees.
When editing tool frames, they are assumed to be attached to the flange node of a selected robot or an external kinematics component. The
Int base column in the editor allows you to set a tool frame to be used as a base frame, thereby setting its InterpolationMode to #BASE.
When editing base frames, the Node drop-down menu in the editor will highlight incompatible choices as red, highlight compatible child
nodes of external kinematic structures as green, and not highlight free-standing nodes which should only be used with fixed base frames. An
Ext Tool column in the editor allows you to set a base frame to be used as a tool frame, thereby setting its InterpolationMode to #TCP.
1. Click the Program tab, and then in the Controller Map panel, do one of the following:
To edit base frames, right-click Bases, and then click Synchronize robot bases.
To edit tool frames, right-click Tools, and then click Synchronize robot tools.
2. In the Configuration editor, do one or more of the following:
To edit base/tool data directly, edit the columns to the left of the ← column. Because the editor is used for syncing data, any
changes you make will highlight the item red to indicate its data is out of sync (green indicates the data is in sync). Unless you
are using .DAT file to directly manage base/tool data, you may ignore out-of-sync issues.
To edit base/tool data using a file or table, either open a $config.dat file or edit the columns to the right of the ← column. After
you have loaded or inputted the data, click ← for each item you want to sync. That is, data from the right side is copied to
corresponding cells on the left side. Be careful when using the ← column header since this will sync data for each and every cell
in all listed items, which cannot be undone.
To add or remove base/tool frames, in Maximum number of bases/tools, set the number to be higher or lower.
Tip: You can use an editor to edit, import and export Home positions. In that editor, a TouchUp column allows you to use the current posture
of the robot for updating Home positions.
Teaching a Path of Positions
The Add PATH command allows you to add and edit robot positions along the curves and bisectors of geometry. Robot positions generated by
the Add PATH command are continuous linear motions and nested with a Path statement in a robot program.
The tool push direction is the positive X-axis of an active tool's coordinate system in a robot configuration.
1. Click the Program tab.
2. In the Job Map panel, click the tab of the robot you want to program, and then select the routine you want to contain a Path statement,
and then in Statements toolbar, click Add Path.
3. In the Select Curve task pane, do one or more of the following:
In order to select geometry, in the Pick section, enable Edge and/or Curve.
To define the expansion of a path along selected curves, in the Auto Expand section, make any needed edits to those
properties. Generally, you need to fine tune these properties in order to select valid curves. For example, you may want the path
to be continuous and round corners except those at or above a 90 degree threshold.
To offset path positions, in the Curve Offset section, make any needed edits to those properties. A curve point has the following
orientation: X-axis points along the curve, Y-axis points perpendicular to the XY plane, and the Z-axis points perpendicular to the
curve surface. The orientation of a path position is calculated using the orientation of a curve point and the Motion Parameters
properties.
To affect the visualization and number of path positions, in the Point Density section, make any needed edits to those
properties. The Chordal and Angular Deviation properties can be used to affect the precision of path. The Max Distance property
can be used to generate more or less points based on curve segment length.
To define the configuration of the robot and order of execution for path positions, in the Motion Parameters section, make any
needed edits to those properties. With the exception of the Reverse property, most of these properties are applied after you
generate a path since they are used to generate motion statements not curve points. The Visualize Choices check box can be
used to always show selected curve points regardless of the 3D world camera location. Otherwise, curve points are rendered as
coordinate axes and are show/hidden based on the 3D world camera location in order to reveal more or less detail without
obstructing your view.
4. In the 3D world, point to the edge or curve you want to generate as a path. An explanation on visual feedback: coordinate axes will
appear at a calculated point in the curve; a yellow line is a preview of the path; black spheres represent curve points; and a note
indicates information related to topology and curve data.
5. Do one of the following:
If the yellow highlighted path is acceptable, click the edge or curve. The highlight color will change from yellow to purple.
If the yellow highlighted path is not acceptable, do one of the following:
To edit curve selection and path properties, go back to Step 3. Generally, you only need to do this when you are creating a
continuous path. Regardless, you can use the Select Curve task pane to edit a path after you have selected a curve.
To select a different edge or curve, go back to Step 4. If you are have difficulty selecting an edge or curve, turn on the
camera's Headlight. If the orientation of the path is an issue, adjust the pointer until the coordinate axes of the curve point
are acceptable.
To select a curve then edit its path, click the edge or curve, and then go on to Step 6.
6. Do one of the following:
To undo a curve selection, press the Backspace key.
To trim a path, hold down SHIFT and then point to the location on the path where you want to trim, and then click that location.
This can only be done using the start and end points of a curve.
To edit a path, in the Select Curve task pane, edit one or more properties. The path will be automatically updated in the 3D
world.
To continue selecting curves, do one or more of the following:
To use the start or end point of a selected curve, hover over the point, and then once the yellow highlighted path is
acceptable, click that point.
To use a point that connects two selected curves, hover over the point, and then once the yellow highlighted path is
acceptable, click that point. In this case, the overall path might change in which path segments are removed and
reconfigured.
To freely select another curve, repeat Steps 4 and 5 with some insight. The point where the new curve will connect to the
path will be highlighted yellow. If the new curve shares a point with the path, this may reconfigure the entire path.
Otherwise, a connecting line (dashed line) marks where the path continues from the end point of one curve to the start
point of another curve.
7. In the Select Curve task pane, click Generate.
Teaching Positions using Align Options
The Jog command allows you to align a robot as well as end-of-arm tools and grasped components.
1. On the Program tab, in the Manipulation group, click Jog.
2. Select the robot you want to program.
3. In the Jog panel, Robot section, do all of the following:
In Base, click the base frame you want to reference.
In Tool, click the tool frame (tool center point) you want to reference.
In Coordinates, click the coordinate system you want to reference.
4. On the Program tab, in the Tools group, click Align, and then align the robot as you would a component. In this case, you are aligning
the point of reference for a robot, for example a tool frame, in order to configure robot joints.
5. In the Job Map panel, Statements toolbar, create a statement for the type of motion that you want to use for the current position of
robot.
Teaching Positions using Joint Values
The Jog command and the Jog panel are used to teach a robot positions as well as configure the robot's joints. This includes external joints
connected to the robot.
1. On the Program tab, in the Manipulation group, click Jog.
2. Select the robot you want to program.
3. In the Jog panel, Robot section, do all of the following:
In Base, click the base frame you want to reference.
In Tool, click the tool frame (tool center point) you want to reference.
In Coordinates, click the coordinate system you want to reference.
In Configuration, click an available joint configuration that you want to use or reference.
In ExternalTCP, click True if you need to use an external tool configuration, for example a tool frame in a component that will not
move; otherwise leave the setting at False. Generally, some base and tool frames are designed specifically for an external tcp
configuration. In those cases, the value of ExternalTCP would automatically update to reflect the intended use of the configured
base frame and/or tool frame.
4. In the Joints section, edit one or more joint properties. A slider is used to show the current value and soft limits for each joint in a
robot.
5. In the Job Map panel, Statements toolbar, create a statement for the type of motion that you want to use for the current position of
robot. Generally, you would create a PTP statement or PTPHome statement to define a new Home position for the active robot.
Teaching Positions using Snap Options
The Jog command allows you to use a manipulator for teaching robots positions. At the origin of the manipulator is a magenta colored torus
(ring) which allows you to move and snap a robot to points on other components.
1. On the Program tab, in the Manipulation group, click Jog.
2. Select the robot you want to program.
3. In the Jog panel, Robot section, do all of the following:
In Base, click the base frame you want to reference.
In Tool, click the tool frame (tool center point) you want to reference.
In Coordinates, click the coordinate system you want to reference.
4. In the Snap Options section, do one of the following:
To snap a robot to a point on an edge, click Edge.
To snap a robot to a point on a face, click Face.
To snap a robot to either an edge or face, click Edge & Face.
To snap a robot to a point of reference, for example a robot position or Frame feature, click Frame.
To snap a robot to the origin of a component, click Origin.
To snap a robot to a corner point of a minimum bounding box for a node, click Bound.
To snap a robot to a bisector of component geometry, click Bisector.
5. In the Snap Options section, do one or more of the following:
To maintain the current orientation of a robot and limit changes its joint configuration, clear the Set Orientation check box.
To adjust the orientation of a robot, select the Set Orientation check box, and then in the Robot section, set Approach Axis to
the preferred axis of alignment. Generally, the Z-axis of the active TCP aligns with the surface normal of a target location.
6. In the 3D world, on the manipulator, point inside the torus until it expands.
7. Drag pointer to move the robot to a desired location based on your snap options. During this operation, the robot and/or its mounted
tool will use X-ray rendering to not obstruct your view of other objects in the scene. More importantly, you are moving the robot not
previewing its location as if you were using the Snap or Align command. If the torus is dragged outside the reach of a robot's arm, a red
arrow will point back to the active TCP in the robot to indicate the location is not reachable. If the torus is dragged within reach of a
robot arm, the location itself will provide feedback on its surface type, for example a point along an edge or bisector of two faces.
8. In the Jog panel, do one or more of the following:
In Configuration, click the preferred joint configuration for the current position of robot.
In the Joints section, edit one or more joint properties.
9. In the Job Map panel, Statements toolbar, create a statement for the type of motion that you want to use for the current position of
robot.
Tip: If the Jog command is enabled, you can use the "Snap" and "Align" commands to use different snap modes and preview robot positions.
You can also use a shortcut to snap and align the robot just as you would when moving a component. This is often used to align components
that are being grasped by an end-of-arm tool.
Using Explicit Variables
An explicit robot variable can be used to write expressions for assigning values to properties in a robot program and logical IF and WHILE
statements.
1. Click the Program tab, and then in the Job Map panel, select a robot program.
2. In the Statements toolbar, do one of the following:
To set the value of a robot property or variable, click Add Assign variable.
To use a conditional IF statement, click Add IF.
To use a WHILE loop statement, click Add WHILE.
3. Do one of the following:
If you clicked Add Assign variable, in the Properties panel, set TargetProperty to the name of the property, and then in
Condition, define an expression that when evaluated returns the new value to assign to the TargetProperty.
If you clicked Add IF, in the Properties panel, Condition box, define an expression that when evaluated returns either a True or
False value. If the returned value is True, the IF statement will execute statements nested in THEN. If the returned value is False,
the IF statement will execute statements nested in ELSE.
If you clicked Add WHILE, in the Job Map panel, click the added WHILE statement. Next, in the Properties panel, Condition box,
define an expression that when evaluated returns a True or False values. If the returned value is True, the WHILE statement will
execute its nested statements and loop back. If the returned value is False, the WHILE statement will not execute its nested
statements nor loop back, and complete its execution.
4. In the Statements toolbar, click Add Assign variable.
Visualizing Robot Motion Paths
The path of a robot to and from motion targets can be visualized in the 3D world.
On the Program tab, in the Show group, do one or more of the following:
To show the direction and path between motion targets, select the Connecting Lines check box. In this case, you can visualize
and parse through motion targets in a robot program with/without the visibility of robot positions.
To show the tracing of robot motions during a simulation, select the Traces check box. In this case, a robot must execute an
$OUT statement in its program to turn on/off tracing. For example, signals 17 to 32 in most robots are mapped to the first 16 tool
frames in its data, which are used for tracing motion paths. The traced lines are drawn from whichever tool frame is mapped to a
signal that has been set to True. That is, a signal action in a robot turns on/off tracing, and the Show Traces command
shows/hides traced motion paths in the 3D world.
Exporting Simulation as Image
A simulation can be exported as an image to capture the scene in the 3D world. When exporting images, a red boundary will appear in the 3D
world to indicate the area of your view that can be captured and saved as an image.
1. On the Home tab, in the Export group, click Image.
2. In the 3D world, adjust the camera so that the area you want to capture is within the red boundary.
3. In the Export Image task pane, do all of the following:
Define the Resolution for the captured image, including its orientation and size.
Define a File Format or Clipboard option for the captured image.
Define the Render Mode for the captured image.
Click Export, and then define the file name and location for saving the captured image.
4. To stop exporting images, in the Export Image task pane, click Close.
Note: The View Selector, simulation controls, and selection highlights are layers that are not included in exported images.
Printing Simulation as Images
A simulation can be printed or saved in a print-friendly format. When printing an image, the size and view of the 3D world are used to
generate a scalable, vector graphic.
1. Do one or more of the following:
Drag the boundaries of the 3D world to edit its screen size.
Edit your view of the 3D world. This action may or may not need to be repeated in order print the desired scene in the 3D world.
2. Click the File tab, and then on the Navigation pane, click Print.
3. In the Print Preview area, do one of the following:
To print your view of the 3D world, click 3D View.
To print your view of the drawing world, click Current Drawing.
4. In Printer, click your preferred printer or click Printer Settings to add and/or define a new printer.
5. In Page Orientation, click your preferred page orientation.
6. In Paper Size, click your preferred page size.
7. Do one of the following:
To export the preview image as an XPS document, click Export to XPS.
To print the preview image, click Print.
Recording Simulation as 3D PDF
If you record a simulation, the animated actions and movements of components are recorded. If you do not want to record animations, you
can stop a simulation, and then export a component or layout as a static PDF. Another option is to print and export images of the 3D world.
1. In the 3D world, on the Simulation controls, click PDF.
2. In the Export to PDF task pane, do all of the following:
Define a Template and Frame rate for the recording.
Define a Title for the PDF template.
Click Start Recording, and then define a file name and location for saving the recording.
3. To stop recording a simulation, click an option on the Simulation controls or in the Export to PDF task pane.
Recording Simulation As Animation
A simulation can be recorded as an animation and exported to a VCAX file. This allows you to view and playback the simulation with a mobile
viewer or experience the simulation in virtual reality. A recording captures the actions and movements of components during a simulation.
1. In the 3D world, on the Simulation controls, click Export to Animation.
2. In the Export to Animation task pane, do all of the following:
Define a Frame rate for the recording.
Click Start Recording, and then define a file name and location for saving the recording.
3. To stop recording a simulation, click an option on the Simulation controls or in the Export to Animation task pane.
Recording Simulation as Video
If you record a simulation, the animated actions and movements of components are recorded and saved to file. If you do not want to record
animations, you can stop a simulation, and then export a component or layout as a static PDF. Another option is to print and export images of
the 3D world.
1. In the 3D world, on the Simulation controls, click Video.
2. In the 3D world, adjust the camera so that what you want to record is within the displayed red boundary.
3. In the Export to Video task pane, define the Resolution, Frame rate, Video format and Quality to use for the recording, and then
click Start Recording.
4. In Save As dialog, define the file name and location for saving the recording.
5. To stop recording, click an option on the Simulation controls or in the Export to Video task pane.
Tip: You can adjust your view of the 3D world while recording a video, thereby allowing camera movements to be recorded on video. For
example, you may use a Fly Camera component to move through a layout and record various stages of manufacturing and simulated
processes.
Repeating a Simulation
A simulation can be repeated to loop back and repeat simulated processes.
1. In the 3D world, on the Simulation controls, click Settings.
2. Select the Repeat check box.
Running a Simulation
At the top center of the 3D world are simulation controls that allow you to run and record a simulation as a 3D PDF and video. During a
simulation, components may move and perform tasks. For example, some components can create other components and robots may execute
their programs. Once you reset a simulation, components in the 3D world return to their initial state at the start of the simulation. For
example, created components (dynamic components) would be removed from the 3D world and the joints of a robot would reset to their
initial values.
In the 3D world, on the Simulation controls, do one of the following:
To start or stop a simulation, click Play.
To reset a simulation, click Reset.
To speed up a simulation, click the PLUS SIGN or move the slider to the right.
To slow down a simulation, click the MINUS SIGN or move the slider to the left.
To reset the speed of the simulation, click the middle thumb on the slider.
Using a Runtime
A runtime allows you to define how long execute a simulation in the 3D world.
1. In the 3D world, on the Simulation controls, click Settings.
2. In Simulation Run Time, do one of the following:
To remove a time restriction for a simulation, click the Infinity symbol.
To define a time restriction for a simulation, click Custom, and then type and/or use the Up and Down arrows in each cell to set
the desired time value.
Using a Warm Up Time
A warm up time allows you start a simulation after at certain amount of time has elapsed in the 3D world. This allows you to start a
simulation before, after or during a process.
1. In the 3D world, on the Simulation controls, click Settings.
2. In Warm Up Time, do one of the following:
To reset the warm up time to zero, click Reset.
To define at what point in time you want to start a simulation, type and/or use the Up and Down arrows in each cell to set the
desired time value.
Defining Units and Quantities
A system of measurement for units and quantities in KUKA Sim Pro 3.0 is defined as a unit family. Within each unit family are unit groups
containing units. Every unit is defined by a quantity that is either a scalar (magnitude) or vector (magnitude and direction).
KUKA Sim Pro 3.0 supports multiple systems of measurement, but only one unit family can be active at a time. Generally, you should use the
system of measurement common to your field of work or region.
1. Click the File tab, and then on the Navigation pane, click Options.
2. In General options, under Personalize, in the Units list, click an available unit family.
In all cases, components and layouts are saved internally using the metric system, and then automatically converted to display the correct
values based on your Unit preference. In cases where you are importing a CAD file, there is a Units setting that can be used to automatically
handle unit conversion for that file.
Editing Options
An option is a setting that you can edit and save as a preference for KUKA Sim Pro 3.0.
1. Click the File tab, and then on the Navigation pane, click Options.
2. Click the section of options you want to edit, and then edit one or more available options.
3. Do one of the following:
To save all changes, click OK.
To cancel all changes, either click Cancel or on the Navigation pane, click Go Back.
Cloning Selected Objects
Selected objects in a simulated environment can be cloned to quickly create a duplicate or perform a copy-paste action.
1. In the simulated environment, do one of the following:
To clone one object, click the object you want to clone.
To clone two or more objects, hold down CTRL and click each object you want to clone.
2. On the Mini toolbar, click Clone.
Note: If the selection is a component, the duplicate may be automatically plugged into the original component if they have matching
interfaces and a logical connection. For example, if the original component has too many logical connections, the clone will be pasted at an
offset from the original component.
Copying and Pasting a Selection
Selected objects can be added to the clipboard, and then pasted as new content. In most cases, content pasted from the clipboard is always
added at an offset from the original content.
1. In the scene, select the objects you want to add to the clipboard.
2. To copy the selection, do one of the following.
Press CTRL+C.
On the Ribbon, In the Clipboard group, click Copy.
3. To paste the copied selection, click anywhere in the scene, and then do one of the following:
Press CTRL+V.
On the Ribbon, in the Clipboard group, click Paste.
Deleting a Selection
Certain types of objects and data can be permanently removed from a scene.
1. In the scene, select the objects you want to delete.
2. Do one of the following:
Press DELETE.
On the Ribbon, in the Clipboard group, click Delete.
Docking a Panel
You can dock a panel in an area indicated by the docking manager. This can be done for any panel that is pinned to or floating freely of the
main window. That is, panels unpinned or hidden must first be shown and then pinned before they can be docked elsewhere in the
workspace. If a panel belongs to a tab group, docking any panel in the group would dock the entire group unless you drag the tab header of a
panel in the group.
1. Point to the title bar or tab header of the panel you want to move.
2. Drag the panel to an available area indicated by the docking manager.
Note: An area in the main window is sometimes referred to as a pane.
Grouping Panels
Panels can be grouped with one another if they are docked in the same area.
1. Point to the title bar or tab header of the panel you want to group.
2. Drag the panel to the same area of another panel that is indicated by the docking manager.
Hiding Panels
A docked panel has a pushpin that allows you to hide the panel if the focus is elsewhere in the workspace. This allows you to free up screen
space in the main window.
1. View a panel.
2. On the title bar of the panel, do one of the following:
To not hide a panel, click the pushpin to make it face downward as if pinning the panel to the screen.
To hide a panel, click the pushpin to make it face sideways to allow the panel to slide in and out of view.
Viewing Panels
A panel can be viewed depending on its group assignment, visibility and the overall context of a scene. For example, some panels appear
automatically based on the active tab in the Ribbon or a selected item/command in the workspace.
1. Point to a panel.
2. Do one of the following:
To view a panel in a tab group, click the tab header of the panel.
To view a collapsed panel, point to the tab header of the panel.
To show a panel not visible in the workspace, on the Ribbon, in the Windows group, click the Show arrow, and then click the
listed panel you want to show in order to add a check mark.
Restoring Panels
You can restore the initial layout of panels in the workspace.
On the Ribbon, in the Windows group, click Restore Layout.
Adding Commands to the QAT
You can add commands on the Ribbon to the QAT.
1. On the Ribbon, find the command or group you want to add to the QAT.
2. Right-click the command or group, and then click Add to Quick Access Toolbar.
Customizing the QAT
You can control the availability of standard commands on the QAT and its location in the workspace.
1. At the top left of the main window, click the Customize Quick Access Toolbar arrow.
2. Do one or all of the following:
To make a command available, point to a command that is not marked, and then click the command.
To make a command unavailable, point to a command that is marked, and then click the command.
To change the location of the QAT, depending on the current location of the QAT, click Show Below the Ribbon or Show Above
the Ribbon.
Removing Commands from the QAT
You can remove commands from the QAT that you have added from the Ribbon.
1. On the QAT, point to the command or group you want to remove. If a command belongs to a group on the QAT, you would need to
remove the entire group.
2. Right-click the command or group, and then click Remove from Quick Access Toolbar.
Components
A component is an object that occupies space in the 3D world and has a unique VCID.
CONTENTS HIDE
COMPONENT STRUCTURE
MANIPULATION
CONTAINMENT
FILE STRUCTURE

Component Structure
The structure of a component is a tree consisting of nodes. Each node contains a set of behaviors and features. The root node contains its
own set of properties and is the origin of a component. Each node linked to the root node has its own offset and joint, which defines the
range of motion and degrees of freedom for that node. Behaviors in different nodes can be connected to and referenced by one another.
Features in nodes form a hierarchy and can be nested with one another to perform operations that manipulate the geometry of a feature and
the object itself.
Name Description
Node Container and building block of component. Every component has at
least one node, its root.
A node attached to another node in a component is also known as a
link.
Note: A component with movable parts may have multiple nodes
linked together to form a kinematic chain, for example the nodes of
an articulated robot. Components attached to one another in a
layout are linked together by their nodes, for example the root node
of an EOAT component attached to a node in a robot.

Property Variable and attribute of component.


Behavior Action or task that can be performed by component.
Feature Visual representation of geometry and other data in component.

Manipulation
A component is the sum of its parts. Each part can be described as a component or object composing the whole component. The concept of
manipulating objects is important to understand when building a layout with components, modeling a component with nodes and features,
programming a robot to reach positions based on a tool center point, and designing drawings with views, annotations and dimensions.

Containment
A component can be described as a set of containers for storing objects. The concept of containing objects is important to understand when
attaching components to one another in a layout, modeling the nodes of a component to move in relation to one another or evaluating the
features of nodes to render geometry, signaling a robot to grasp and release components, and creating a bill of materials based of the items
of a drawing.

File Structure
A component is a native archive file of KUKA Sim Pro 3.0 with a .vcmx file extension. Every component contains at least four files.
component.rsc contains the data needed by KUKA Sim Pro 3.0 to generate the component.
component.dat contains the component's metadata, which includes the component's VCID.
component_preview_icon.tga is the image displayed when you preview the component in the eCatalog panel.
component_icon.tga is the icon representing the component in the eCatalog panel.
Behaviors
A behavior performs a task in a component. Behaviors are contained in nodes but may be referenced and connected to other behaviors in a
component or in other components. For example, signals can be connected to sensors, sensors can be connected to paths, and paths in other
components can be connected to one another using interfaces.
Some components have behaviors with visible properties that can be edited in the Properties panel.

Types
Name Description
Interfaces Connects behaviors in a component to behaviors in other
components.
Kinematics Defines the kinematic properties of components.
Material Flow Transfers components logically to and from other behaviors and
nodes.
Miscellaneous Provides a means for handling specific use cases, for example
scripting and notes.
Physics Implements the effects of physics world on components.
Robotics Controls assigned joints to a robot or servo and manages the
execution its program.
Sensors Detects components in defined areas or points of intersection.
Signals Sends and receives different types of signals.
Interfaces
An interface type behavior is used to physically or remotely connect components.
CONTENTS HIDE
TYPES
FORMING CONNECTIONS

Types
Name Description
One to One Interface Allows a component to connect with another component.
One to Many Interface Allows a component to connect with two or more components.

Forming Connections
In some cases, an interface is used to connect behaviors in one component to those in other components.

Part transferred from feeder to conveyor using an interface

In other cases, an interface is used to attach/detach component nodes, for example mounting a tool on the end of a robot arm and a
detachable sensor on a conveyor path.

Tool plugged into robot and attached to robot mount plate node

For physical connections, use the PnP command to plug and play components with compatible interfaces, which are located at Frame
features and indicated by arrows in the 3D world.
For remote connections, enable the Interfaces toggle and use the connection editors of components to wire abstract interfaces to one
another in the 3D world.
Kinematics
A kinematics type behavior is used to define the forward and/or inverse kinematics of a component and its node structure, for example
robots.
CONTENTS HIDE
TYPES
ASSIGNMENT

Types
Name Description
Articulated Kinematics Defines the kinematics of articulated robots, for example six-axis
robots.
Cartesian Kinematics Defines the kinematics of linear robots, for example three-axis
robots, with additional support for three-axis wrist movement.
Delta Kinematics Defines the kinematics of delta type robots.
Parallelogram Kinematics Defines the kinematics of parallelogram type robots.
Python Kinematics Defines custom kinematics for components using scripts.
Scara Kinematics Defines the kinematics of SCARA type robots.

Assignment
In all cases, a kinematics type behavior must be assigned to a Robot Controller behavior in order to be used when solving kinematic
equations.

The use of a kinematics type behavior does not remove the need to properly define the joints of a component.
Material Flow
A flow type behavior is used to transfer components from one behavior to another and/or contain components.
CONTENTS HIDE
TYPES
CONNECTORS
FLOW SCRIPTING
CONTAINMENT

Types
Name Description
Capacity Controller Controls the capacity of one or more behaviors that can contain
components.
Component Container Stores any number of components based on its capacity.
Component Creator Creates components dynamically during a simulation.
Component Flow Proxy Transfers in and out components arriving from one or more custom
ports.
One Way Path Moves components forward along a path.
Routing Rule Transfers in and out components based on a hierarchy of rules.
Two Way Path Moves components forward and/or backward along a path.

Connectors
Flow type behaviors have ports, which are connectors that support the transfer of components within a component and to other components.

The properties of a connector are used to form a logical connection between its behavior and another behavior with a matching connector,
for example Input to Output and Output to Input.
Name Description
Name Defines the name of connector.
Input Defines if the connector transfers in components.
Output Defines if the connector transfers out components.
Physical Defines if the connector is abstract or physical.
CapacityTest Defines the type of capacity test to perform when transferring
components to another connector.
Connection Defines the behavior connected to the connector.
Port Defines which connector in Connection is linked to the connector.

For internal transfers, use the Component Graph panel to select a port, and then edit the transfer by using the Properties panel.

For external transfers, use interface type behaviors.

Flow Scripting
In some cases, you may need to use scripting to define routing rules and logic for handling dynamic connections, for example a conveyor with
multiple entry and exit points. In other cases, scripting is needed to grab and release components from static containers, for example the
storage and retrieval of component from racks.

Script for cycling components to different output paths

Some flow type behaviors can move components along paths, which are defined by using Frame features.
Frame features used by paths of diverter conveyor and feeder

Containment
Other flow type behaviors cannot physically move components and can either receive components or handle the transfer of components.
Miscellaneous
A miscellaneous type behavior can vary in its use and function.

Types
Name Description
Action Container Provides a logical container for actions that can be performed by
resource clients, brokers and providers using scripting.
Document Link Stores links to files and other types of documents.
Jog Info Defines an interactive property or part of a component.
Note Provides a container of free-form text.
Python Script Defines a script for manipulating components, commands and the
application.
Statistics Collects statistics from one or more behaviors.
Transport Protocol Defines a protocol for transferring components using resources and
scripting.
Vehicle Provides the functionality to implement a component as a moving
vehicle using scripting.
Physics
A physics type behavior is used to implement functionality that is affected by physical forces.
CONTENTS HIDE
TYPES
ACTING FORCES

Types
Name Description
Physics Cable Defines a cable and spring that can be anchored/pinned to nodes
and stretched based on its physical properties.
Physics Entity Defines a node as a rigid body, thereby supporting the Collider
property of node features and other physics type behaviors.
Physics Joint Defines a D6 joint in a node that can be fixed, rotated and/or
translated along XYZ axes.
Physics Path Moves components with physical behaviors along a path with
additional support for pushing features, for example geometry used
as a diverter.

Acting Forces
Generally, a component requires at least one Physics Entity behavior to support the use of colliders with features and define a node as a rigid
body. When you set the Collider property of a feature, a Physics Entity behavior will be automatically created if one does not exist in the
same node as that feature.
Robotics
A robotics type behavior is used to teach and execute robot programs.
CONTENTS HIDE
TYPES
BASE AND TCP
PROGRAM EXECUTION
NODE HIERARCHY
JOINT ASSIGNMENT
I/O AND SIGNAL MAPPING

Types
Name Description
Base Container Provides a logical container for adding and editing Frame features
used as base frames, which act as a base coordinate system.
Robot Controller Defines a robot and its configuration, for example its kinematics,
joints, speed and acceleration.
Robot Executor Provides a logical container and executor for a robot program.
Servo Controller Defines a servo and its configuration, for example its joints, speed
and acceleration.
Tool Container Provides a logical container for adding and editing Frame features
used as tool frames, which act as a tool center point (TCP).

Base and TCP


When working with base and tool frames, you need to use the Component Graph panel and shortcuts to edit the Bases and Tools elements of
some robotics type behaviors. Generally, you do not need to use Base and Tool Containers in a component that has a Robot Controller since
that behavior has its own base and tool frame collections.

Program Execution
When modeling a robot, you should use a Robot Controller and pair it with a Robot Executor in order to teach, edit and simulate the robot's
program.

This does not remove the need to properly define the joints and node structure of a component.

Node Hierarchy
The Show Structure command can be used to show the node/link structure of a robot and its degrees of freedom. The location of each node is
visualized as a colored ring: black is root node, yellow is an available node, and green is a selected node. The node offsets are visualized as
a cyan colored bones pointing from a parent node to each of its child nodes. The joint axis of each node is visualized as a colored arrow: red
is X-axis, green is Y-axis, and blue is Z-axis.

In some cases, a selected node may have a custom type joint or parametric offset, so interactive manipulation of the node is limited or
disabled.

Joint Assignment
Joints are defined in nodes, and then assigned to a Robot Controller. Additional properties are automatically added to a joint when it is
assigned to and driven by either a Robot or Servo Controller. When defining a joint, you may want to reference the kinematic properties used
by a Robot Controller as well as other properties in a component. For example, vector properties are often used to define the
magnitude/length of joint offsets.
Tips:
The joint definition of a node is used to make it interactive in the 3D world, thereby eliminating the need to use a Jog Info behavior.
In most cases, you should refer to the data sheet of a robot when modeling it as a component. This also speeds up the process of
knowing what properties to create and use within the scope of a component. Generally, you would hide/encapsulate properties that
should not be made visible or edited by a user in the Properties panel.
Other components for similar robots can be used as templates for building new robots. In such cases, you would import a CAD file,
place the new geometry in the template and then delete the old geometry, adjust the joint definitions as well as other behaviors and
properties in the template, test, and then save your work as a new component.
When a robot needs to import/export joints, use interface type behaviors.

I/O and Signal Mapping


The I/O of a robot is defined by using Boolean Signal Map behaviors that are listened to and referenced by a Robot Executor. Generally, the
inputs and outputs of a robot are each given about 4097 ports depending on the real-world robot model.

For connecting signals to robot I/O ports, enable the Signals toggle and use the connection editors of robots and other components to wire
signals to one another.
For signaling actions in a robot, for example grasp and release actions, use Set Binary Output statements in a robot program to write the
value of I/O signals mapped to the first 16 tool frames of a Robot Controller.
Signals 1 to 16 are predefined to signal grasp and release actions.
Signals 17 to 32 are predefined to signal tracing of robot motions to and from robot positions.
Signals 33 to 48 are predefined to signal tool mount and dismount actions in which a tool component is attached to a node in a robot.
In order for action signals to work, a robot must have an Action Script behavior. Generally, you do not need to edit action signals rather edit
the location of mapped tool frames and add the needed statements to a robot program. In all cases, you will never need to manually edit the
Script property of an Action Script behavior, and it is recommended to only use the Action Configuration editor in the Properties panel.

Note: Signals 1 to 48 in most robot components are reserved for action signals. Therefore, it is recommended to use signals 50 onward for
connecting signals in other components. Base frames can be mapped to action signals.
Sensors
A sensor type behavior is used to detect components.
CONTENTS HIDE
TYPES
AREA OF DETECTION
SIGNALING DETECTION

Types
Name Description
Component Path Sensor Detects a component moving on a path.
Process Point Sensor Detects a component moving on a path, and then can either stop the
path or detected component.
Raycast Sensor Detects a component intersecting a ray cast along an axis.
Volume Sensor Detects a component intersecting or within a space.

Area of Detection
Some sensors need to be assigned to paths in order to detect components.

Other sensors can detect components freely in the 3D world or be filtered to only detect components in a container.

RayCast Sensor filtered to detect components and distances in a path


Signaling Detection
In most cases, sensors use signals to inform other behaviors of detected components. For example, signals used by sensors can be
connected to a Python Script in order to trigger events.

Sensor used to trigger process for component at point in path


Signals
A signal type behavior is used to send and receive different types of data.

Types
Name Description
Boolean Signal Sends/receives a True or False value.
Boolean Signal Map Provides a continuous I/O space for mapping signals to ports.
Component Signal Sends/receives a component as a value.
Integer Signal Sends/receives an integer.
Matrix Signal Sends/receives a 4x4 matrix as a value.
Real Signal Sends/receives a real number.
String Signal Sends/receives a string of characters.
Features
A feature is the visual representation of a component. Features are contained in nodes and can be nested with one another to inherit values
and perform actions. In most cases, features are used to contain, group and edit geometry. In other cases, some types of features are used to
show information and act as points of reference in a component.
In terms of usability, access to features is limited unless you are modeling components.

Types
Name Description
Angular Clone Clones nested features around its Z-axis using a given angle and
interval.
Block Solid object shaped like a block/cube.
Cone Solid object shaped like a cone.
Cylinder Solid object shaped like a cylinder.
Extrude Extrudes nested features using a given length and direction.
Frame Point of reference.
Geometry Container of geometry that can be loaded from a file or collapsed
from other features.
Linear Clone Clones nested features using a given direction and interval.
Mirror Mirrors nested features using a given plane.
Plane Plane object shaped like a square.
Python Feature Custom type feature defined using Python scripting.
Revolve Sweeps the geometry of nested features along a path, thereby
constructing new geometry.
Sphere Solid object shaped like a sphere.
Switch Logical switch for selecting a nested feature and its hierarchy, while
hiding other nested features.
Text Three-dimensional text.
Transform Transforms nested features by using an expression.
Wedge Solid object shaped like a wedge.
Nodes
Data in a component is organized in a tree structure consisting of nodes. The root node of a component represents the entire component. For
example, the origin of a component's coordinate system is its root node.
CONTENTS HIDE
HIERARCHY
COMMON PROPERTIES
JOINT PROPERTIES

Hierarchy
Simple components may have one node, whereas components with movable parts would require two or more nodes. For example, an
articulated robot is a series of nodes linked together to form a kinematic chain for motion targeting.
In terms of node hierarchy:
Parent is a node above another node.
Child is a node below another node.
Sibling is a node that is either before or after another node that belong to the same parent.
In most cases, a component's root node is a child of the 3D world. That is, a component is attached to the 3D world (simulation root node). In
some cases, components are attached to nodes in other components. That allows components to move together, for example a tool mounted
on the end of a robot's arm.
Some components that perform tasks during a simulation may have temporary nodes in order to contain and transport other components.

Common Properties
With the exception of root nodes, every node/link has the same set of common properties.
Name Description
Name Defines the name of node.
Offset Defines the position (XYZ coordinates) and orientation (ABC degrees
of rotation) of node offset from its parent.
Type Defines the joint type of node.
Fixed
Joint is fixed and constrained to its offset.
Rotational
Joint can be rotated along a defined axis.
Translational
Joint can be translated along a defined axis.
Rotational Follower
Joint can be rotated around a defined axis based on the value of
another joint.
Translational Follower
Joint can be translated around a defined axis based on the value of
another joint.
Custom
Joint can be defined to translate or rotated around a defined axis.

Axis If joint type is not fixed or custom, defines the axis of joint.
Axis Type If joint type is custom, defines how joint moves in relation to its
axis.
Rotational
Joint can be rotated along a defined axis.
Translational
Joint can be translated along a defined axis.
Joint Properties
The amount of additional properties in a node is based on its joint type and the assignment of that joint to a controller.

Fixed
No additional properties.

Rotational
Name Description
Name Defines the name of joint.
Tip: The name of a joint can be used in an expression to reference
its value.

Controller Assigns joint to a new or existing controller type behavior in node.


Initial Value Defines the default value of joint.
Value Defines the current value of joint.
Tip: The value of a joint can be used in an expression to reference
its value using the keyword VALUE.

Value Expression Defines an expression for manipulating the value of joint.


Min Limit Defines the minimum value of joint.
Max Limit Defines the maximum value of joint.
MaxSpeed If joint is assigned to controller, defines the maximum speed of
joint.
MaxAcceleration If joint is assigned to controller, defines the maximum acceleration
of joint.
MaxDeceleration If joint is assigned to controller, defines the maximum deceleration
of joint.
LagTime If joint is assigned to controller, defines the time lag of joint.
SettleTime If joint is assigned to controller, defines the settling time of joint.

Translational
Same properties as Rotational.

Rotational Follower
Name Description
Name Defines the name of joint.
Tip: The name of a joint can be used in an expression to reference
its value.

Driver Defines another joint that is followed by the joint.


Value Expression Defines an expression for manipulating the value of joint.

Translational Follower
Same properties as Rotational Follower.

Custom
Name Description
Name Defines the name of joint.
Tip: The name of a joint can be used in an expression to reference
its value.
Controller Assigns joint to a new or existing controller type behavior in node.
Initial Value Defines the default value of joint.
Value Defines the current value of joint.
Tip: The value of a joint can be used in an expression to reference
its value using the keyword VALUE.

Joint Defines an expression for manipulating joint offset.


Pivot Defines an expression for manipulating pivot point of joint.
Min Limit Defines the minimum value of joint.
Max Limit Defines the maximum value of joint.
MaxSpeed If joint is assigned to controller, defines the maximum speed of
joint.
MaxAcceleration If joint is assigned to controller, defines the maximum acceleration
of joint.
MaxDeceleration If joint is assigned to controller, defines the maximum deceleration
of joint.
LagTime If joint is assigned to controller, defines the time lag of joint.
SettleTime If joint is assigned to controller, defines the settling time of joint.
Properties
A property is a global variable in a component. Properties are contained in the root node of a component. Any visible properties of a selected
component in the 3D world will be displayed in the Properties panel.
CONTENTS HIDE
TYPES
COMMON PROPERTIES

Types
Name Description
Boolean True or False value that can be expressed using a 1 or 0.
Button Button control used for triggering an action.
Distribution Pseudo-random real number generated by an expression that
defines a distribution.
normal([stream], u, s)
Normal distribution for mean value u and standard deviation s with
an optional stream for seeding a random value to generator.
exponential([stream], lambda)
Exponential distribution where mean value is 1/lambda and variance
is 1/lambda^2 with an optional stream for seeding a random value
to generator.
gamma([stream], k, theta)
Gamma distribution with shape k and scale theta with an optional
stream for seeding a random value to generator.
lognormal([stream], u, s)
Log normal distribution for mean value u and standard deviation s
with an optional stream for seeding a random value to generator.
triangular([stream], min, mode, max)
Triangular distribution for given min, mode and max values with an
optional stream for seeding a random value to generator.
uniform([stream], a, b)
Uniform distribution in range a <= x < b with an optional stream for
seeding a random value to generator.
weibull([stream], k, lambda)
Weibull distribution with shape k and scale lambda with an optional
stream for seeding a random value to generator.

Expression Calculated value of a given expression.


Integer Integer value.
Matrix 4x4 matrix with position (Tx, Ty, Tz) and orientation (Rx, Ry, Rz)
values.
Real Real number value.
Simulation Node Reference to a node in 3D world.
Simulation Node List List of references to nodes in 3D world.
String String of characters.
Uri URI for referencing a file or resource.
Vector Vector with direction (X, Y, Z) values that determine its magnitude.

Common Properties
All properties at the component level are objects that have their own set of properties for defining how to access the property and read/write
its value.
Name Description
Name Defines the name of the property.
A property's name can be used to assign the property to a tab in the
Properties panel. The syntax is [TabName]::[PropertyName]. If the
tab does not exist, a new tab will be generated and shown as long
as the tab itself is assigned visible properties; otherwise the tab will
be hidden. By default, properties are assigned to a Default tab,
which is clearly marked when there are two or tabs displayed in the
Properties panel.

Visible Turns on/off the display of the property in the Properties panel.
On value change Triggers an event and set of actions when the property's value is
changed.
Rebuild
Rebuilds a component's geometry and re-evaluate expressions.
Generally, you only need to enable Rebuild if the property is used
with features or expressions in a node. Otherwise, Rebuild is an
unnecessary action.
Configure
Reconfigures the node structure of a component and re-evaluate
expressions.
Update simulation
Update the 3D world (simulation root node) to show the current
state of the component based on the property's value. Generally,
you need Update simulation to configure a joint or update changes
made to a component during a simulation.

Allow editing when Defines the rules for setting the property's value.
Disconnected
Allows you to edit the property when the component is not
connected to any other component.
Connected
Allows you to edit the property when the component is connected to
any other component.
Simulating
Allows you to edit the property during a simulation.

Value Defines the value of the property.


Layouts
A layout is a VCMX file that allows you to save your work in the 3D world and drawing area.
CONTENTS HIDE
USAGE
FILE STRUCTURE

Usage
A layout is always open in the 3D world can be filled with components and other layouts. A saved layout contains information related to
components, layout items and the settings of a scene. Generally, the contents of the 3D world are cleared when you open a layout, and that
layout becomes the current layout of the 3D world. If you were to close a layout in the 3D world, the new empty layout opened in the 3D
world when you started KUKA Sim Pro 3.0 would become the current layout.

References
A layout references the VCID of a component to reduce its file size. Other data about a component is saved automatically in a layout
including its location, connections and property values.

Layout Items
Layout items are visual objects that are not components, for example dimensions and annotations. A layout item is saved in a layout and
automatically recreated when you open the layout in the 3D world. In some cases, layout items can be exported as one or more types of files.
For example, you can export or print drawings.

Settings
Some settings for a scene are saved in a layout. For example, the current 3D world view is saved with a layout.

File Structure
A layout is a native archive file in KUKA Sim Pro 3.0 that is saved with a .vcmx file extension. Every layout will contain at least four files.
layout.rsc contains the data needed by KUKA Sim Pro 3.0 to generate the layout.
component.dat contains the layout's metadata.
layout_preview_icon.tga is the image displayed when you preview the layout in the eCatalog panel.
layout_icon.tga is the icon representing the layout in the eCatalog panel.
One to One Interface
A One to One Interface allows you to establish a connection with another matching interface.

Properties
Name Description
Name Defines the name of the interface.
IsAbstract Defines the type of connection supported by the interface. A True
value supports only remote connections. A False value supports only
physical connections.
ConnectSameLevelOnly Defines if the interface can only connect to interfaces on the same
level in a hierarchy. Generally, this is used when you are connecting
a large group of components that make up an assembly and want to
avoid connecting the wrong components, thereby disassembling the
group.
AngleTolerance Defines an angle for restricting a physical connection to the
interface. Generally, a smaller angle is used to require a front-end
connection attempt instead of allowing a component to approach
the interface from behind or its side.
DistanceTolerance Defines a distance for restricting a physical connection to the
interface. Generally, a smaller distance is used to require
connection attempts at a closer proximity to the interface.
ConnectionEditName Defines a Button property for accessing a connection editor.
InterfaceDescription Defines a description about the interface. Generally, this used to
leave a note about what and how the interface is used in its
component.
Sections and Fields Defines the sections and fields of the interface. A section is like a
plug or socket and its fields are connectors or pins that allow you to
plug in and connect devices. Therefore, the fields of two interfaces
need to match in order to connect with one another.
Add new section
Creates a new section.
Name
Defines the name of the section. In some cases, the naming of a
section is important at identifying connection points in a component.
Section Frame
Defines a Frame feature that defines the section's location. This is
not needed if the interface is abstract, so select NONE. If you want
to create a new Frame feature for the interface, select NEW.
Add new field
Creates a new field in the section. Each field type has its own set of
properties and a common property of Name. For more information,
see "Field Types" in this topic.
Right-corner options
Allow you to delete and rearrange sections and fields. Sections are
separate connection points, so in most cases the location of
sections is important but not their order. Fields define the
connection type of a section, so their order is important when
evaluating a possible connection. For example, two interfaces may
have the same amount and type of fields but are unable to connect
because their fields do not match up in the right order.

Field Types
Action
An Action field allows you to send and receive actions as well as connect resource clients, providers and managers. Generally, an Action field
is used in a remote connection.
Actions defines the Action Container used to manage actions.
Connection defines the how the Action Container manages actions.
To send actions, select Client.
To receive actions, select Provider.
To send and receive actions to other Action Containers, select Buffer.
Note: Generally, a Python Script is used with Action Containers and Action fields to simulate tasks and processes.

Attachment
An Attachment field allows you to attach and connect physics objects. Generally, an Attachment field is used to extend Plug and Play by
allowing the joints of a component to be attached to other components. In such cases, an Attachment field is visualized as a paper plane
which can be dragged to an available connection in the 3D world.

BaseExport
A BaseExport field allows you to import/export base frames. For example, a robot positioner exports base frames to a mounted robot that
imports them.
BaseList defines the Base Container used for storing base frames.
Export defines if base frames are imported or exported by the field. A True value exports bases frames. A False value imports base
frames.

Flow
A Flow field allows you to transfer components from one container to another container. For example, most conveyors use Flow fields to
simulate material handling between one or more conveyor lines.
Container defines the behavior used to receive or send components. The behavior must be able to contain components, for example a
One Way Path.
Port defines the connector of Container. Generally, a value of 0 refers to a behavior's Input port (receive components), whereas 1
refers to a behavior's Output port (send components). In some cases, a behavior may have any number of ports, which are attached to
the behavior in the Component Graph panel.

Hierarchy
A Hierarchy field allows you to attach a node in the component to a node in a different component. The nodes would need to a valid
relationship in order to connect to one another. For example, if both nodes are designated as Parent or Child they won't connect. That is, one
node would have to be Parent and the other node defined as Child.
Node defines the node in the component to use when forming a hierarchy.
Frame defines an offset for attaching the node or a child node.
Parent defines the relationship of the node. A True value means another node will be attached to the node. A False value means the
node will be attached to another node.

IntegerCompatibility
An IntegerCompatibility field allows you to restrict a connection if it does not have a matching integer. Generally, an integer is used as a
model number to restrict components from connecting to one another if they otherwise could not in the real world.
Value defines the integer used in the comparison test.

JointExport
A JointExport field allows you to import/export joint information. For example, a workpiece positioner exports its joint information to a robot
that imports them in order to use external joints.
Controller defines the Servo/Robot Controller for managing joint information.
Export defines if joints are imported or exported by the field. A True value exports the joint information for any joint referenced by
Controller. A False value imports joint information which is then defined as an external joint in Controller.

Processor
A Processor field allows you to connect Process Point Sensors to path type behaviors. In some cases, a conveyor uses a One to Many
Interface to allow for the connection of multiple sensors. In all cases, a detachable sensor is attached to a path using the PnP command. The
location of the sensor on the path can be verified in the sensor's Distance property or in the Parent coordinate system. That is, a path is
Parent to a sensor which is Child.
Path defines a behavior that can contain detachable sensors. The behavior must be a type of path. If Parent is False, then Path is
disabled.
Sensor defines the Process Point Sensor that attaches itself to a path in a different component. If Parent is True, then Sensor is
disabled.
Parent defines the relationship of the field. A True value means the field supports attachments to Path. A False value means the field
supports the attachment of Sensor to a different component's path.

Rsl
A Rsl field allows you to import/export a robot executor's program in order to remotely call subroutines. Generally, an Rsl field is used in a
remote connection.
Publish defines if the field exports a robot executor's program. A True value means other robots can read and execute subroutines in
the program. A False value means other robots cannot read nor execute subroutines in the program.
Subscribe defines if the field imports a robot executor's program. A True value means the robot can read and execute subroutines in
other programs. A False value means the robot cannot read nor execute subroutines in other programs.
Note: Python Scripts are often used to call subroutines as well as create custom statements in a robot's program, thereby eliminating the
need for Rsl fields.

Signal
A Signal field allows you to connect and map signals. For example, a Signal field can be used to map a signal to an item in a PLC connection
(remote connection) or a signal in a mounted tool to a robot's IO system (physical connection).
Signal defines the behavior used by the field. The behavior must be a type of signal.
Connection defines how Signal is used by the field.
To connect Signal to a signal in another component, select Normal.
To use Signal as the beginning part of a network, select Begin.
To use Signal as the end part of a network, select End.

ToolExport
A ToolExport field allows you to import/export tool frames. For example, a tool mounted on a robot would export tool frames and the robot
would import them to use as a tcp.
ToolList defines the Tool Container used for storing tool frames.
Export defines if tool frames are imported or exported by the field. A True value exports tool frames. A False value imports tool frames.

Transport
A Transport field allows you to send and receive transportation tasks. A Transport Protocol uses a signal to rely information, so a Transport
field is used mainly for sharing data (what component to pick up, the pick-up location, the receiving component, the drop-off location).
Transport defines the Transport Protocol used by the field.
Connection defines how Transport is used by the field.
To receive transportation tasks, select Input.
To send transportation tasks, select Output.
To send and receive transportation tasks, select Input and Output.
One to Many Interface
A One to Many Interface allows you to establish a connection with one or more matching interfaces.

Properties
Name Description
Name Defines the name of the interface.
IsAbstract Defines the type of connection supported by the interface. A True
value supports only remote connections. A False value supports only
physical connections.
ConnectSameLevelOnly Defines if the interface can only connect to interfaces on the same
level in a hierarchy. Generally, this is used when you are connecting
a large group of components that make up an assembly and want to
avoid connecting the wrong components, thereby disassembling the
group.
AngleTolerance Defines an angle for restricting a physical connection to the
interface. Generally, a smaller angle is used to require a front-end
connection attempt instead of allowing a component to approach
the interface from behind or its side.
DistanceTolerance Defines a distance for restricting a physical connection to the
interface. Generally, a smaller distance is used to require
connection attempts at a closer proximity to the interface.
ConnectionEditName Defines a Button property for accessing a connection editor.
InterfaceDescription Defines a description about the interface. Generally, this used to
leave a note about what and how the interface is used in its
component.
Sections and Fields Defines the section and fields of the interface. A One to Many
Interface has only one section, which is automatically initialized
when you create the interface. A section is like a plug or socket and
its fields are connectors or pins that allow you to plug in and
connect devices. Therefore, the fields of two interfaces need to
match in order to connect with one another.
Name
Defines the name of the section.
Section Frame
Defines a Frame feature that defines the section's location. This is
not needed if the interface is abstract, so select NONE. If you want
to create a new Frame feature for the interface, select NEW.
Add new field
Creates a new field in the section. Each field type has its own set of
properties and a common property of Name. For more information,
see "Field Types" in this topic.
Right-corner options
Allow you to delete and rearrange sections and fields. Sections are
separate connection points, so in most cases the location of
sections is important but not their order. Fields define the
connection type of a section, so their order is important when
evaluating a possible connection. For example, two interfaces may
have the same amount and type of fields but are unable to connect
because their fields do not match up in the right order.

Field Types
Action
An Action field allows you to send and receive actions as well as connect resource clients, providers and managers. Generally, an Action field
is used in a remote connection.
Actions defines the Action Container used to manage actions.
Connection defines the how the Action Container manages actions.
To send actions, select Client.
To receive actions, select Provider.
To send and receive actions to other Action Containers, select Buffer.
Note: Generally, a Python Script is used with Action Containers and Action fields to simulate tasks and processes.

BaseExport
A BaseExport field allows you to import/export base frames. For example, a robot positioner exports base frames to a mounted robot that
imports them.
BaseList defines the Base Container used for storing base frames.
Export defines if base frames are imported or exported by the field. A True value exports bases frames. A False value imports base
frames.

IntegerCompatibility
An IntegerCompatibility field allows you to restrict a connection if it does not have a matching integer. Generally, an integer is used as a
model number to restrict components from connecting to one another if they otherwise could not in the real world.
Value defines the integer used in the comparison test.

JointExport
A JointExport field allows you to import/export joint information. For example, a workpiece positioner exports its joint information to a robot
that imports them in order to use external joints.
Controller defines the Servo/Robot Controller for managing joint information.
Export defines if joints are imported or exported by the field. A True value exports the joint information for any joint referenced by
Controller. A False value imports joint information which is then defined as an external joint in Controller.

Processor
A Processor field allows you to connect Process Point Sensors to path type behaviors. In some cases, a conveyor uses a One to Many
Interface to allow for the connection of multiple sensors. In all cases, a detachable sensor is attached to a path using the PnP command. The
location of the sensor on the path can be verified in the sensor's Distance property or in the Parent coordinate system. That is, a path is
Parent to a sensor which is Child.
Path defines a behavior that can contain detachable sensors. The behavior must be a type of path. If Parent is False, then Path is
disabled.
Sensor defines the Process Point Sensor that attaches itself to a path in a different component. If Parent is True, then Sensor is
disabled.
Parent defines the relationship of the field. A True value means the field supports attachments to Path. A False value means the field
supports the attachment of Sensor to a different component's path.

Rsl
A Rsl field allows you to import/export a robot executor's program in order to remotely call subroutines. Generally, an Rsl field is used in a
remote connection.
Publish defines if the field exports a robot executor's program. A True value means other robots can read and execute subroutines in
the program. A False value means other robots cannot read nor execute subroutines in the program.
Subscribe defines if the field imports a robot executor's program. A True value means the robot can read and execute subroutines in
other programs. A False value means the robot cannot read nor execute subroutines in other programs.
Note: Python Scripts are often used to call subroutines as well as create custom statements in a robot's program, thereby eliminating the
need for Rsl fields.

Signal
A Signal field allows you to connect and map signals. For example, a Signal field can be used to map a signal to an item in a PLC connection
(remote connection) or a signal in a mounted tool to a robot's IO system (physical connection).
Signal defines the behavior used by the field. The behavior must be a type of signal.
Connection defines how Signal is used by the field.
To connect Signal to a signal in another component, select Normal.
To use Signal as the beginning part of a network, select Begin.
To use Signal as the end part of a network, select End.

ToolExport
A ToolExport field allows you to import/export tool frames. For example, a tool mounted on a robot would export tool frames and the robot
would import them to use as a tcp.
ToolList defines the Tool Container used for storing tool frames.
Export defines if tool frames are imported or exported by the field. A True value exports tool frames. A False value imports tool frames.

Transport
A Transport field allows you to send and receive transportation tasks. A Transport Protocol uses a signal to rely information, so a Transport
field is used mainly for sharing data (what component to pick up, the pick-up location, the receiving component, the drop-off location).
Transport defines the Transport Protocol used by the field.
Connection defines how Transport is used by the field.
To receive transportation tasks, select Input.
To send transportation tasks, select Output.
To send and receive transportation tasks, select Input and Output.
Articulated Kinematics
An Articulated Kinematics behavior is a list of kinematic properties used by a Robot Controller for solving an articulated robot's motions
which relate to joint length, angle, positioning, coupling, configuration and tolerance levels.

Properties
Name Description
Name Defines the name of the kinematics.
L01Z to L56Z Defines the offset between two joints in a given axis.
L01Z
Refers to the offset from the robot's base to first joint along Z-axis.
L23X
Refers to the offset from second joint to third joint along X-axis,
which is generally less than or equal to 0 and almost never greater
than 0.
L56X
Refers to the offset between the fifth and sixth joints along X-axis.

A45 Defines the angle (in degrees) between the fourth and fifth joints.
Generally, 90 or -90 is used, but an angle value close to 45 is also
common in certain cases.
JointZeroOffset1 to JointZeroOffset6 Defines the joint-zero pose of the robot (arm-up space).
JointZeroOffsets are used as a kinematic solution for determining
the robot's pose when its joints are at zero value. Different robot
vendors tend to use different joint zero positions for robots.
JointSign1 to JointSign6 Defines which direction is the positive direction of a joint, for
example if you flip joint rotation from clockwise to counter-
clockwise.
Coupling23 Indicates if the second and third joints are coupled, albeit
mechanically or represented in software. For example, if you move
the second joint then the third joint will do a counter movement.
ShoulderValid Turns on/off the use of valid configurations.
A True value turns on the following configurations:
Front above no flip
Front above flipped
Front below no flip
Front below flipped
A False value turns off the following configurations:
Back above no flip
Back above flipped
Back below no flip
Back below flipped

ElbowValid Turns on/off the use of valid configurations.


A True value turns on the following configurations:
Front above no flip
Front above flipped
Back above no flip
Back above flipped
A False value turns off the following configurations:
Front below no flip
Front below flipped
Back below no flip
Back below flipped

WristValid Turns on/off the use of valid configurations.


A True value turns on the following configurations:
Front above no flip
Front below no flip
Back above no flip
Back below no flip
A False value turns off the following configurations:
Front above flipped
Front below flipped
Back above flipped
Back below flipped

ConfigName1 to ConfigNameN Defines the names of configurations for the robot's arm. Different
robot types may use different naming conventions for the same
configurations.
PalletizingMode Turns on/off the direction of the robot's wrist to point in the
direction defined by PalletizingNormal.
PalletizingNormal XYZ Defines the direction of the robot's wrist when PalletizingMode is
enabled.
PolarSingularityTolerance Defines the radius of the robot's singularity circle, a small round
space defined at the end of the robot's arm.
WristSingularityTolerance Defines the angle tolerance of the robot wrist's singularity. That is,
when the fifth joint approaches zero value it can be counted as
singularity, therefore an angle tolerance can used in such cases.
ExtendedPositionTolerance Defines the tolerance value to detect singularity in a robot's
configuration when either the robot is in an extended position or its
elbow will pass through zero to reach a point. The value (in degrees)
must be greater than or equal to zero. If the value is zero then there
is no singular solution and most likely the user receives a
reachability error. Singularity or an orientation solution based on
configuration changes in a robot's elbow to reach a point may
require a user to define ExtendedPositionTolerance.
Coupling456 Defines the coupling relationship between 4,5 and 6th axes. The
rotations of the 5th and 6th axes are defined when induced by a
motion in the 4th axis. This property is rarely used and the coupling
term is fractional and must be supplied by the robot manufacture.
Otherwise, use a value of zero. Coupling456 is needed, for example,
when a hollow triple roll wrist is used, where the design of the
mechanism causes a coupling between all of the axes.
Cartesian Kinematics
A Cartesian Kinematics behavior calculates the forward and inverse kinematics of a Robot Controller for a Cartesian type robot (gantry,
portal, etc.) in which the robot has three transitional joints and an articulated wrist (three rotational joints) defined in this order: Trans X,
Trans Y, Trans Z, Rot Z, Rot Y, Rot Z.

Properties
In most cases, the Robot Controller using the Cartesian Kinematics is responsible for defining the kinematic nature of the component in a
Cartesian space. That is, the kinematic structure of the component and its robot controller's RootNode, FlangeNode, RootOffset and
FlangeOffset properties provide the values needed by the kinematics solver. In some cases, you can use Cartesian Kinematics for
components that are not robots. For example, a forklift can have Cartesian Kinematics in which a node without any geometry is defined as
the RootNode, and the FlangeNode is the node containing the geometry of the forklift.
Name Description
Name Defines the name of the kinematics.
Delta Kinematics
A Delta Kinematics behavior calculates the forward and inverse kinematics of a Robot Controller for delta type, parallel robots.

Properties
Name Description
Name Defines the name of the kinematics.
LinkLength1 Defines the length of the robot's driving arm from its shoulder to
elbow.
LinkLength2 Defines the length of the robot's arm from its elbow to wrist.
Height1 Defines the height from the robot's top plate to the center of its
midbar ball joint.
Height2 Defines the height from the center of the midbar to the center of the
shoulder.
ShoulderOffset Defines the offset from the center of the robot base to the center of
the robot's shoulder.
WristOffset Defines the offset from the center of robot's wrist to the center of
the robot's arm/wrist connection.
Parallelogram Kinematics
A Parallelogram Kinematics behavior calculates the forward and inverse kinematics of a Robot Controller used for palletizing operations in
which the wrist orientation is always pointing downward.

Properties
If you want to use Parallelogram Kinematics with ordinary articulated robots, set LinkLength4 to zero and include the entire distance from the
center of axis 3 to the center of the wrist in LinkLength3. In this case, the geometry of the fourth joint may move by the value of LinkLength4.
To compensate for that effect, consider moving the actual geometry.
Name Description
Name Defines the name of the kinematics.
LinkLength1 to LinkLength5 Defines the length of each joint in the Robot Controller.
LinkLength1
The height in Z-axis from the robot's base to center point of axis 2.
LinkLength2
The distance from the center of axis 2 to the center of axis 3 using
axis 2's direction.
LinkLength3
The distance from the center of axis 3 to the center of the robot's
wrist.
LinkLength4
The offset from the wrist center to the center line of the flange
node.
LinkLength5
The distance from the center of the wrist to the center of the flange
node in the direction of the flange.

JointOffset1 Defines the distance from the center of axis 1 to the center of axis 2
in the X-axis.
JointOffset3 Defines the distance from the center of axis 3 to the center of the
robot's wrist in the Z-axis. In some cases, JointOffset3 is set to zero.
Python Kinematics
A Python Kinematics behavior allows you to define the forward and/or inverse kinematics of a Robot Controller for a robot using a script
written in Python programming language.

Properties
Name Description
Name Defines the name of the kinematics.
Script Defines the script used for defining the properties of a kinematics
object.

Editor
In order to access the script editor:
In the Component Graph panel, Component Node Tree, find the Python Kinematics behavior you want to edit, and then double-click
that behavior.
The script editor is the same one used for a Python Script.

The initial content of the editor contains a code snippet used for defining the properties of a kinematics object that corresponds to a robot
and its controller:
from vcPythonKinematics import *
import vcMatrix
import vcVector
from math import *
# Define the amount of joints and their names
JOINT_COUNT = 0
JOINT_NAMES = []
# Init kinematic object information
def OnInitKinObject( kinobj ):
pass
# Returns the amount of joints this kinematics handles
def OnGetJointCount():
return 0
# Returns the indexed joint names
def OnGetJointName(index):
return JOINT_NAMES[index]
# Constraints kinematic solutions to show only valid choices
def OnConstrainParams(kinobj):
return True
# Relaxes kinematics solutions to show all choices
def OnRelaxParams(kinobj):
return True
# Returns Kinematic chain target (matrix) value based on joint values
def OnForward(kinobj):
return True
# Returns Kinematic chain joint values based on the target (matrix)
def OnInverse(kinobj):
return True
Scara Kinematics
A Scara Kinematics behavior calculates the forward and inverse kinematics of a Robot Controller for a SCARA type robot in which the wrist is
defined in one axis (generally the Z-axis) and has two possible configurations (Left and Right).

Properties
Name Description
Name Defines the name of the kinematics.
LinkLength1 Defines the length of the robot's arm from its shoulder to the elbow.
LinkLength2 Defines the length from the elbow to the wrist center.
JointOffset1 Defines the offset from the robot's base to the center of axis 1.
Capacity Controller
A Capacity Controller allows you to define the global capacity for a group of behaviors.

Properties
Name Description
Name Defines the name of the controller.
Capacity Defines the amount of components allowed at any given time in a
behavior using the controller.
Component Container
A Component Container allows you to contain components. The components can be moved into the container, placed there by other
components as well as attached using a Python Script.

The ports of a Component Container are listed with the behavior in the Component Graph panel.

Properties
Name Description
Name Defines the name of the container.
Statistics Defines the Statistics behavior that collects statistics generated by
the container.
Capacity Defines the amount of components the can occupy the container at
any given time.
CapacityBlocks Defines a list of Capacity Controller behaviors for globally defining
the container's capacity. Generally, a Capacity Controller is used as
a variable for controlling the capacity of one or more containers in
order to avoid deadlock situations.
TransitionSignal Defines a Boolean Signal to signal the arrival and departure of a
component in the container. A True value signals the arrival of a
component. A False value signals the departure of a component.
Location Defines a Frame feature that acts as the container's physical
location.
Component Creator
A Component Creator allows you to use a component as a template for creating new components during a simulation.

The ports of a Component Creator are listed with the behavior in the Component Graph panel.

Properties
Name Description
Name Defines the name of the creator.
Statistics Defines the Statistics behavior that collects statistics generated by
the creator.
Capacity Defines the amount of components the creator can contain at any
given time.
CapacityBlocks Defines a list of Capacity Controller behaviors for globally defining
the creator's capacity. Generally, a Capacity Controller is used as a
variable for controlling the capacity of one or more containers in
order to avoid deadlock situations.
TransitionSignal Defines a Boolean Signal to signal the arrival and departure of a
component in the creator. A True value signals the arrival of a
component. A False value signals the departure of a component.
Location Defines a Frame feature that acts as the creator's physical location.
Interval Defines an interval (in seconds) for creating the creator's Part.
Limit Defines the maximum amount of components the creator can
generate for its Part. You can set Limit to zero, and then use a
Python Script to manually control the creation of the creator's Part.
Part Defines the component to use as a template for creating new
components. You can define a URI that points to a component file or
reference a component's VCID using the following syntax:
vcid:[the component's vcid].
Component Flow Proxy
A Component Flow Proxy allows you to manage the flow of components to and from different behaviors using any number of ports.

The ports of a Component Flow Proxy are added and removed using shortcuts and listed with the behavior in the Component Graph panel.

Each port of a Component Flow Proxy has a hidden internal port, which should be used to connect the proxy to behaviors in the same
component.

Input port of a One Way Path connected to internal port of Component Flow Proxy

Properties
Name Description
Name Defines the name of the proxy.
Statistics Defines the Statistics behavior the collects statistics generated by
the proxy.
ComponentSignal Defines the Component Signal used to signal what component is
trying to enter the proxy.
PortSignal Defines the Integer Signal used to signal from which port a
component is trying to enter the proxy.
DynamicConnections Turns on/off the use of connectors defined by a Python Script. That
is, during a simulation a Python Script may connect the proxy's ports
to connectors in other behaviors based on certain logic, for example
a turn table that needs to route components to different paths.
A True value means the proxy will dynamically form connections
during a simulation, which in most cases requires the use of a
Python Script. A False value means the proxy will transfer
components per the connection of its internal and external ports. For
example, if a proxy's internal port receives a component, the
component will be transferred from the internal port to its paired
external port, and then elsewhere if the external port (a connector
added to the proxy) is connected to a transfer point, such as the
Input connector of a path.

RetainOffset Turns on/off the ability to retain position of component as it passes


through route.
One Way Path
A One Way Path allows you to contain and move components forward along a path defined by Frame features.

The ports of a One Way Path are listed with the behavior in the Component Graph panel.

Properties
Name Description
Name Defines the name of the path.
Statistics Defines a Statistics behavior that collects statistics generated by the
path.
Capacity Defines the amount of components the path can contain at any
given time.
CapacityBlocks Defines a list of Capacity Controller behaviors for globally defining
the path's capacity. Generally, a Capacity Controller is used as a
variable for controlling the capacity of one or more containers in
order to avoid deadlock situations.
TransitionSignal Defines a Boolean Signal behavior that signals the arrival and
departure of components to and from the path. A True value signals
the arrival of a component. A False value signals the departure of a
component.
Speed Defines the speed at which components move along the path. In
order to allow components to overtake one another, you need to
override the path's Speed using a Python Script.
Acceleration Defines the maximum acceleration for moving components along
the path. A value of zero disables the path's Acceleration.
Deceleration Defines the maximum deceleration for moving components along
the path. A value of zero disables the path's Deceleration.
Interpolation Defines a mode for controlling how the path acts when moving
components.
Step
Snaps components to and from waypoints at a time interval (linear
distance of the path divided by the path's Speed).
Linear
Moves components to and from waypoints in a straight line.
Cubic
Moves components to and from waypoints along a chain of cubic
splines, for example a curved path. Generally, the curvature of a
path is more defined when the path has a higher amount of
waypoints (Frame features).

Accumulate Defines if the path is disabled when a component is blocked from


leaving. A True value stops the path. A False value will not stop the
path.
SegmentSize Defines the length and use of the path's segments. For example, if
the linear distance of the path is 1000 {mm}, a SegmentSize of 100
would form 10 segments and limit the movement of components to
and from each segment. That is, one component per segment. A
value of zero disables the use of segments.
RetainOffset Turns on/off the ability of a component to retain its position upon
entering the path. For example, a batch of components placed
randomly along the width of a conveyor belt can maintain their
distribution instead of snapping to the line of the path.
SpaceUtilization Turns on/off the overlapping of components on the path. A True
value means components can border one another but not overtake
each other in the same path segment. A Fale value means
components can be placed side-by-side one another and overlap.
The indexing of components on the path is not affected by
SpaceUtilization. So a False value does not mean components will
overtake one another in a list. You can use a Python Script to
manipulate indexing for buffering, stacking, routing and so forth.

Sensors Defines a list of behaviors connected to the path and used for
detecting components on the path. Each behavior must be a type of
sensor and define its location relative to the path, for example the
sensor's distance along the path or at one of the path's Frame
features.
ExternalSensors Defines a list of behaviors attached to the path and used for
detecting components on the path. Each behavior must be a type of
sensor and define its location relative to the path's distance. In all
cases, the external sensors are other components that have been
attached to the path by using an interface with a Processor field.
Path Defines an ordered list of Frame features in the path's component
that act as the path's waypoints. The sequence of frames is
important at defining the beginning and end of the path.
PathAxis Defines the orientation of the path's waypoints in relation to a
calculated axis.
Automatic
Uses the orientation of each waypoint to calculate an appropriate
axis. Generic will be used if the waypoints differ considerably in
terms of orientation.
X-Positive
Uses the distance from the path's component's origin to the positive
X-axis limit of that component's bound box.
Y-Positive
Uses the distance from the path's component's origin to the positive
Y-axis limit of that component's bound box.
Z-Positive
Uses the distance from the path's component's origin to the positive
Z-axis limit of that component's bound box.
X-Negative
Uses the distance from the path's component's origin to the
negative X-axis limit of that component's bound box.
Y-Negative
Uses the distance from the path's component's origin to the
negative Y-axis limit of that component's bound box.
Z-Negative
Uses the distance from the path's component's origin to the
negative Z-axis limit of that component's bound box.
Generic
Uses a worst-case estimation based on the component's bound box.
Two Way Path
A Two Way Path allows you to contain and move components forward and/or backwards along a path defined by Frame features.

The ports of a One Way Path are listed with the behavior in the Component Graph panel.

Properties
Name Description
Name Defines the name of the path.
Statistics Defines a Statistics behavior that collects statistics generated by the
path.
Capacity Defines the amount of components the path can contain at any
given time.
CapacityBlocks Defines a list of Capacity Controller behaviors for globally defining
the path's capacity. Generally, a Capacity Controller is used as a
variable for controlling the capacity of one or more containers in
order to avoid deadlock situations.
TransitionSignal Defines a Boolean Signal behavior that signals the arrival and
departure of components to and from the path. A True value signals
the arrival of a component. A False value signals the departure of a
component.
Direction Defines the direction for moving components on the path.
Forward
Moves components from the beginning to the end of the path. That
is, Input to Output.
Backward
Moves components from the end of the path to its beginning. That
is, Output to Input.
Forward (Auto)
The same as Forward, but the direction will automatically switch to
Backward if a component arrives from the path's Output connector.
Backward (Auto)
The same as Backward, but the direction will automatically switch to
Forward if a component arrives from the path's Input connector.

Speed Defines the speed at which components move along the path. In
order to allow components to overtake one another, you need to
override the path's Speed using a Python Script.
Acceleration Defines the maximum acceleration for moving components along
the path. A value of zero disables the path's Acceleration.
Deceleration Defines the maximum deceleration for moving components along
the path. A value of zero disables the path's Deceleration.
Interpolation Defines a mode for controlling how the path acts when moving
components.
Step
Snaps components to and from waypoints at a time interval (linear
distance of the path divided by the path's Speed).
Linear
Moves components to and from waypoints in a straight line.
Cubic
Moves components to and from waypoints along a chain of cubic
splines, for example a curved path. Generally, the curvature of a
path is more defined when the path has a higher amount of
waypoints (Frame features).

Accumulate Defines if the path is disabled when a component is blocked from


leaving. A True value stops the path. A False value will not stop the
path.
SegmentSize Defines the length and use of the path's segments. For example, if
the linear distance of the path is 1000 {mm}, a SegmentSize of 100
would form 10 segments and limit the movement of components to
and from each segment. That is, one component per segment. A
value of zero disables the use of segments.
RetainOffset Turns on/off the ability of a component to retain its position upon
entering the path. For example, a batch of components placed
randomly along the width of a conveyor belt can maintain their
distribution instead of snapping to the line of the path.
SpaceUtilization Turns on/off the overlapping of components on the path. A True
value means components can border one another but not overtake
each other in the same path segment. A Fale value means
components can be placed side-by-side one another and overlap.
The indexing of components on the path is not affected by
SpaceUtilization. So a False value does not mean components will
overtake one another in a list. You can use a Python Script to
manipulate indexing for buffering, stacking, routing and so forth.

Sensors Defines a list of behaviors connected to the path and used for
detecting components on the path. Each behavior must be a type of
sensor and define its location relative to the path, for example the
sensor's distance along the path or at one of the path's Frame
features.
ExternalSensors Defines a list of behaviors attached to the path and used for
detecting components on the path. Each behavior must be a type of
sensor and define its location relative to the path's distance. In all
cases, the external sensors are other components that have been
attached to the path by using an interface with a Processor field.
Path Defines an ordered list of Frame features in the path's component
that act as the path's waypoints. The sequence of frames is
important at defining the beginning and end of the path.
PathAxis Defines the orientation of the path's waypoints in relation to a
calculated axis.
Automatic
Uses the orientation of each waypoint to calculate an appropriate
axis. Generic will be used if the waypoints differ considerably in
terms of orientation.
X-Positive
Uses the distance from the path's component's origin to the positive
X-axis limit of that component's bound box.
Y-Positive
Uses the distance from the path's component's origin to the positive
Y-axis limit of that component's bound box.
Z-Positive
Uses the distance from the path's component's origin to the positive
Z-axis limit of that component's bound box.
X-Negative
Uses the distance from the path's component's origin to the
negative X-axis limit of that component's bound box.
Y-Negative
Uses the distance from the path's component's origin to the
negative Y-axis limit of that component's bound box.
Z-Negative
Uses the distance from the path's component's origin to the
negative Z-axis limit of that component's bound box.
Generic
Uses a worst-case estimation based on the component's bound box.
Routing Rule
A Routing Rule allows you to route components to and from different containers based on one or more levels of conditional statements.

The ports of a Routing Rule are listed with the behavior in the Component Graph panel.

Properties
Name Description
Name Defines the name of the router.
Statistics Defines the Statistics behavior that collects statistics generated by
the router.
Capacity Defines the amount of components the router can manage at any
given time.
Capacity blocks Defines a list of Capacity Controller behaviors for globally defining
the router's capacity. Generally, a Capacity Controller is used as a
variable for controlling the capacity of one or more containers in
order to avoid deadlock situations.
Transition signal Defines a Boolean Signal to signal the arrival and departure of a
component in the router. A True value signals the arrival of a
component. A False value signals the departure of a component.
Location Defines a Frame feature that acts as the router's physical location.
Rule component Defines if rule processing is done for the router's component or a
component contained by the router.
RetainOffset Turns on/off the ability to retain position of component as it passes
through route.

Connectors
A Routing Rule uses ports/connectors to connect to other behaviors and transfer in and out components.
Name Description
Add new connector Adds a new port to router.
Shortcut: In the Component Graph panel, right-click a Routing Rule
behavior, and then click Add Connector.

Route
A route is defined using one or more rules that form a nested structure. In some cases, rules can directly route to a connection/port. In other
cases, a rule can use another rule to determine the route of a component. In all cases, changing a rule will undo all of its child rules. As a last
resort, some rules allow you to define a default connection or rule.
Tip: You can edit the route of a Routing Rule in the Component Properties panel.
Types of Rules
Name Description
Boolean Table Routes components to a selected port based on a True or False
value.
Variable
Defines which property of either processed component or owner
component is evaluated by the rule.
Default
Used if the value of Variable does not match any listed value in
table.

Capacity Routes components to the first selected port that passes a capacity
test.
Cyclic Routes components to selected ports in sequence before repeating
the same cycle.
CycleOnlyConnected
Can be used to only route to ports that are connected to other ports.

Fixed Routes components from a selected port to another selected port.


CycleOnlyConnected
Can be used to only route to ports that are connected to other ports.

Integer Table Routes components to a selected port based on an integer value.


Variable
Defines which property in either processed component or owner
component is evaluated by the rule.
Default
Used if the value of Variable does not match any listed value in
table.

Percentage Routes components to selected ports based on a percentage


distribution.
RandomStream
Can be used to seed a value.
In all cases, the total percentage for all selected ports should add up
to 100.

<Port> Routes components to a selected port.


For example, all incoming components of router would exit the
selected port. Generally, only available as a level 1 rule.

Real Table Routes components to a selected port based on a real number value.
Variable
Defines which property in either processed component or owner
component is evaluated by the rule.
Default
Used if the value of Variable does not match any listed value in
table.

String Table Routes components to a selected port based on a string value.


Variable
Defines which property in either processed component or owner
component is evaluated by the rule.
Default
Used if the value of Variable does not match any listed value in
table.
Action Container
An Action Container allows you to send, receive and store actions.

Properties
Name Description
Name Defines the name of the container.
Connections Defines a list of behaviors connected to the container. This can
include Python Scripts which use the container as a trigger and
means to receive OnAction events.
Document Link
A Document Link allows you to create a collection of links in a component that provides access to internal and external files.

Properties
Name Description
Name Defines the name of the document link.
Jog Info
A Jog Info allows you to make an object or property interactive by defining its degree of freedom.

Properties
Name Description
Name Defines the name of the jog info.
Offset Defines a pivot point (matrix) in the containing node's coordinate
system.
DOF Defines the degree of freedom of the jog info, which is either a
translation or rotation in a defined axis.
Scale Defines the scale factor for interaction, which in most cases is ± 1
depending on whether the interaction needs to be inverted.
Variable Defines the property or object the jog info makes interactive.
Message Defines a message to be printed when you try to interact with
Variable using the Interact or Jog command.
Note
A Note allows you to provide documentation (free-form text) for a component.

In the 3D world, you can click the note icon of a selected component to view and edit its notes.

The editor displays each note in its own tab and text area. There is a global font size option that affects the size of text in all notes.

By default, the Note property of a Note is a visible in the Properties panel for a selected component.

Properties
Name Description
Name Defines the name of the note.
Note Opens an editor for writing and editing the text of note. This may
include links and other Uri schemes.
Python Script
A Python Script allows you to write a script for manipulating components, commands and the application using Python programming language
(stackless, version 2.7).

Properties
Name Description
Name Defines the name of the script.
Script Allows you to view and edit the script in an editor.

Editor
In order to access the script editor, do one of the following:
In the Component Graph panel, Component Node Tree, find the Python Script behavior you want to edit, and then double-click that
behavior.
In the Properties panel, click Open In Editor.
The script editor displays line numbers, expand/collapse options for code blocks, and a toolbar.

Name Description
Compile
Compiles the script into Python bytecode, which can then be
executed by the application. That is, you are saving the script, and
this should always be done before you run a simulation. Note at
compiling messages, errors and any exceptions will be printed in the
Output panel and the script is automatically compiled when you exit
its editor.
Trace Execution
Tracks the execution of the script during a simulation to allow you to
view which line of code is being executed at a given moment.
Generally, tracing is used to debug a script (find and resolve errors)
as well as to understand how a script performs based on the
conditions of your layout.
Run to cursor
Runs the script until it reaches the current line of the cursor/caret in
the editor. Generally, running to cursor is used to debug a script in
which you are testing if the script can reach a certain line of code.
Step 1 line
Runs the script so that the current line of code is executed in order
to move the script one step forward in its execution. Generally,
stepping is used to walk through the sequence of a script one line at
a time in order to verify expected outcomes.
Snippets
Allows you to insert a code snippet in the script.
Cut
Removes selected code from the script, and then copies that code to
the clipboard.
Copy
Copies selected code in the script to the clipboard.
Paste
Inserts code from the clipboard to the script.
Undo
Cancels the last edit performed in the script.
Redo
Executes the last undone edit performed in the script.
Background
Toggles the background color and syntax highlighting.
Find
Allows you to search the script for items matching keywords in the
Search box.
Find Next
Moves the cursor to the next search result in the script.
Find Previous
Moves the cursor to the previous search result in the script.
Highlight All Matches
Highlights all search results in the script.
Clear Highlights
Removes the highlights assigned to search results in the script.

Snippets
The initial content of the editor contains a code snippet that allows you to use the properties, methods and events of the script's behavior:
from vcScript import *
def OnSignal( signal ):
pass

def OnRun():
pass

If the text area is active, you can press CTRL+J to insert a snippet of code.

Word Completion
The editor allows you to use autocomplete for certain types of cases. For example, if the text area is active, you can press CTRL+SPACEBAR
to display options for completing a line of code.
If you use autocomplete, you may be able to read documentation about the added item.
Statistics
A Statistics behavior allows you to collect and report statistics generated by other behaviors in a component during a simulation.

Properties
Data collection can be cumulative or based on time, states and events. In order to report statistics a behavior needs to have a Statistics
property or else you can use a Python Script to manually define data collection. By default, interval-based statistics are reported every 60
seconds in a running simulation.
Name Description
Name Defines the name of the Statistics behavior.
PartsEntered Indicates the number of components that have arrived at a container
type behavior.
PartsExited Indicates the number of components that have departed a container
type behavior.
PartsCurrent Indicates the current amount of components attached to a container
type behavior.
PartsUtilization Indicates the percentage of components attached to a container
type behavior divided by the container's capacity. For example, a
Component Container may have the capacity to hold 100
components but has only contained 50 components, resulting in 50
percent utilization of storage space.
PartsAverageCount Indicates the average amount of components that have been
attached to a container type behavior. For example, on average a
sorting machine might have 10 components at any given time.
PartsMinCount Indicates the minimum number of components that have been
attached to a container type behavior at one particular time. For
example, a shuttle conveyor might have a minimum of one
component at any given time.
PartsMaxCount Indicates the maximum number of components that have been
attached to a container type behavior. For example, a robot gripper
might have a maximum of three components at any given time.
PartsTotalTime Indicates the total amount of time each component spent attached
to a container type behavior. For example, a machine processes 10
components for 5 seconds with a feed in/out rate of 2~3 seconds, so
the sum total of each component's duration in the machine added
together results in PartsTotalTime.
PartsAverageTime Indicates the average amount of time a component spent attached
to a container type behavior.
PartsMinTime Indicates the minimum amount of time a component spent attached
to a container type behavior.
PartsMaxTime The maximum amount of time a component spent attached to a
container type behavior.
PartsIntervalEntered Same as PartsEntered but for a recorded interval.
PartsIntervalExited Same as PartsExited but for a recorded interval.
PartsIntervalCurrent Same as PartsCurrent but for a recorded interval.
PartsIntervalUtilization Same as PartsUtilization but for a recorded interval.
PartsIntervalAverageCount Same as PartsAverageCount but for a recorded interval.
PartsIntervalMinCount Same as PartsMinCount but for a recorded interval.
PartsIntervalMaxCount Same as PartsMaxCount but for a recorded interval.
PartsIntervalTotalTime Same as PartsTotalTime but for a recorded interval.
PartsIntervalAverageTime Same as PartsAverageTime but for a recorded interval.
PartsIntervalMinTime Same as PartsMinTime but for a recorded interval.
PartsIntervalMaxTime Same as PartsMaxTime but for a recorded interval.
Utilization Indicates the percentage a behavior was in a defined "setup" or
"busy" state based on the elapsed time of a simulation.
TotalStateTime Indicates the total amount of time a behavior was in any of its
defined states based on the elapsed time of a simulation.
BreakPercentage Indicates the percentage a behavior was in a defined "break" state
based on the elapsed time of a simulation. Generally, a broken state
should occur before a defined repair state.
IdlePercentage Indicates the percentage a behavior was in a defined "idle" state
based on the elapsed time of a simulation.
BusyPercentage Indicates the percentage a behavior was in a defined "busy" state
based on the elapsed time of a simulation.
BlockedPercentage Indicates the percentage a behavior was in a defined "blocked"
state based on the elapsed time of a simulation. Generally, capacity
issues trigger a blocked state in a behavior.
FailedPercentage Indicates the percentage a behavior was in a defined "failed" state
based on the elapsed time of a simulation.
RepairPercentage Indicates the percentage a behavior was in a defined "repair" state
based on the elapsed time of a simulation.
SetupPercentage Indicates the percentage a behavior was in a defined "setup" or
"warm up" state based on the elapsed time of a simulation.
AverageActivePeriodTime Indicates the average amount of time a behavior was in one of its
defined states during a simulation.
IntervalUtilization Same as Utilization but for a recorded interval.
IntervalTotalStateTime Same as TotalStateTime but for a recorded interval.
IntervalBreakPercentage Same as BreakPercentage but for a recorded interval.
IntervalIdlePercentage Same as IdlePercentage but for a recorded interval.
IntervalBusyPercentage Same as BusyPercentage but for a recorded interval.
IntervalBlockedPercentage Same as BlockedPercentage but for a recorded interval.
IntervalFailedPercentage Same as FailedPercentage but for a recorded interval.
IntervalRepairPercentage Same as RepairPercentage but for a recorded interval.
IntervalSetupPercentage Same as SetupPercentage but for a recorded interval.

States
A component can have one or more states, which are defined by a Statistics behavior. A state is the condition of a component during a
simulation at a given time. This is why each state has two dynamic properties: State<StateName>Percentage and
State<StateName>IntervalPercentage. A state is mapped to a system state, which is a hardcoded, predefined condition for a component.

The Create default states property of a Statistics behavior allows you to create the following eight states.
Name Description
Blocked Indicates a component is blocked, for example a capacity issue or
parts are stuck in a process.
Break Indicates a break in a component, for example a break in a process.
Broken Indicates a failure in a component, for example something is broken
and needs to be repaired.
Busy Indicates a component is busy, for example executing a process.
Idle Indicates a component is not busy, for example not waiting for a
command or not executing a process.
Repair Indicates a component is being repaired, for example fixing a broken
part.
Setup Indicates a component is being configured, for example a boot
process or steps before executing a process.
Warmup Indicates warm up time in a component.
Notes:
You can rename a state, but it must always be mapped to a system state.
Transport Protocol
A Transport Protocol allows you to handle transportation actions requested by resources using a Python Script.

Properties
Name Description
Name Defines the name of the protocol.
Statistics Defines a Statistics behavior that collects statistics generated by the
protocol.
Capacity Defines the amount of components the transport container can
contain at any given time.
CapacityBlocks Defines a list of Capacity Controller behaviors for globally defining
the transport container's capacity. Generally, a Capacity Controller
is used as a variable for controlling the capacity of one or more
containers in order to avoid deadlock situations.
TransitionSignal Defines a Boolean Signal behavior that signals the arrival and
departure of components to and from the transport container. A True
value signals the arrival of a component. A False value signals the
departure of a component.
Location Defines a Frame feature that acts as the protocol's physical
location.
Resourcing Defines a behavior used by the protocol to manage transportation
tasks. In most cases, you would use an Action Container.
Vehicle
A Vehicle allows you to define a component as a moving object that can be controlled using a Python Script.

Properties
Name Description
Name Defines the name of the vehicle.
Physics Cable
A Physics Cable allows you to create a pliable, physics cable that can be anchored to nodes in the 3D world and used for simulating ropes,
chains, pulleys, belts, wires, and cables.

The pins of a Physics Cable are listed as separate nodes in the Component Graph panel.

Properties
Name Description
Name Defines the name of the cable.
Thickness Defines the thickness of the cable.
Cable Length Defines the length of the cable.
If zero, the length of the cable is dynamic and based on other
properties.

Collider Length Defines the size of the cable's collider relative to the cable's length.
Stiffness Defines the rigidity of the cable.
#Low
The cable is very flexible.
#Medium
The cable is fairly flexible.
#High
The cable is very rigid.

Node 1 Defines the node the first endpoint is attached to in 3D world.


Node 2 Defines the node the second endpoint is attached to in 3D world.
End Type 1 Defines the anchor type of the first endpoint.
#Free
The cable hangs freely while attached to Node 1.
#Rotating
The cable can swing back and forth or rotate while attached to Node
1.
#Fixed
The cable is securely anchored to Node 1.

End Type 2 Defines the anchor type of the second endpoint.


#Free
The cable hangs freely while attached to Node 2.
#Rotating
The cable can swing back and forth or rotate while attached to Node
2.
#Fixed
The cable is securely anchored to Node 2.

Total Length Factor Defines a factor for determining cable length.


Material Defines the material of the cable.
Advanced Turns on/off the display of advanced properties for the cable.

Advanced properties
Name Description
Spring Strength Defines the strength of the cable relative to the force applied when
compressing/stretching the cable, for example its tensile strength.
Spring Damping Defines the damping of the cable, thereby affecting how bounciness
of the cable.
Spring Tangential Strength Defines the tangential strength of the cable relative to force applied
when contacting a surface.
Spring Tangential Damping Defines the tangential damping of the cable relative to force applied
when contacting a surface.
Rendering Steps Defines the amount of steps for rendering the cable.
Collider Overlap Defines an accepted overlap of the cable's collider in relation to
others.
Solver Iter Position Defines the solver iteration position of the cable.
Solver Iter Velocity Defines the solver iteration velocity of the cable.
Solver Iter Internal Defines the solver iteration internal setting of the cable.
Solver Iter External Defines the solver iteration external setting of the cable.
Solver Iter Projections Defines the solver iteration projections of the cable.
Solver Separation Limit Defines the separation limit of the solver for the cable.
Material Friction Static Defines the static friction of the cable's material.
Material Friction Dynamic Defines the dynamic friction of the cable's material.
Material Restitution Defines the restitution of the cable's material.
Material Density Defines the density of the cable's material.
Scene Id Defines the scene id of the cable, thereby allowing you to isolate
the cable in different physics scenes/layers in the physics world.
Collision Group Defines the collision group of the cable, which can be used to filter
collisions with the cable in physics world.
Center Position Centers the cable.
Physics Entity
A Physics Entity allows you to define a node in a component as a physical body that is affected by the physics of the 3D world.

Properties
Name Description
Name Defines the name of the entity.
Controller Group Defines the control group of the entity.
Material Density Defines the density of the entity.
Static Friction Defines the static friction of the entity.
Dynamic Friction Defines the kinetic friction of the entity.
Restitution Defines the restitution of the entity.
Linear Damping Defines the linear damping of the entity.
Angular Damping Defines the angular damping of the entity.
Solver Position Iterations Defines the number of iterations for solving the entity's motion in
relation to its position.
Solver Velocity Iterations Defines the number of iterations for solving the entity's motion in
relation to its velocity.
Collision Group Defines the collision group of the entity.
Physics Type Defines the physics type of the entity.
Physics Joint
A Physics Joint allows you to configure a D6 joint with multiple degrees of freedom for a component in the 3D world.

Properties

Name Defines the name of the joint.


Attached to Defines the node that the joint is attached to in the component.
In some cases, this would be the parent of the node containing the
joint. For example, a Physics Joint in the node of the second axis for
a robot could be attached to the node of the first axis.
In other cases, your customization of the joint will determine which
node it should attach itself to in a component.

Constraints A set of properties for customizing the joint. That is, constraints for
translations and rotations in the axes of a coordinate system.
Each property can be assigned its own constraint.
#Free
Does not constrain movement.
#Limited
Attempts to limit movement.
#Locked
Attempts to restrict all movement.

Breakage A set of properties for defining the integrity of the joint.


Drive Settings A set of advanced properties for customizing the physics of the joint
and its degrees of freedom.
Physics Path
A Physics Path allows you to contain and move physical objects along a path defined by Frame features in one direction.

The ports of a Physics Path are listed with the behavior in the Component Graph panel.

The node of a Physics Path requires at least one Physics Entity behavior that

Properties
Name Description
Collision Filter Defines a collision group number to filter in the path.
Name Defines the name of the path.
Statistics Defines a Statistics behavior that collects statistics generated by the
path.
TransitionSignal Defines a Boolean Signal behavior that signals the arrival and
departure of physical objects to and from the path. A True value
signals the arrival of a physical object. A False value signals the
departure of a physical object.
Path Defines an ordered list of Frame features in the path's component
that act as the path's waypoints. The sequence of frames is
important at defining the beginning and end of the path.
PushingFeatures Defines a list of features used for blocking and/or colliding with
physical objects on the path.
Speed Defines the speed at which physical objects move along the path.
Process Point Sensor
A Process Point Sensor allows you to detect components moving along a path and perform an action.

Properties
Name Description
Name Defines the name of the sensor.
Distance Defines the distance of sensor along a connected path.
Frame Defines the Frame feature referenced as the physical location of the
sensor.
TriggerAt Defines the mode of the sensor for detecting components.
Leading Edge is triggered when the first edge of a component
reaches the sensor.
Origin is triggered when the origin of a component reaches the
sensor.
Trailing Edge is triggered when the last edge of a component
reaches the sensor.
None disables the sensor.

BoolSignal Defines the Boolean Signal used to signal when a component


triggers the sensor.
ProcessingStops Defines the action to execute when the sensor detects a component.
Path stops the path the sensor is attached to in the 3D world.
Component stops the component detected by the sensor.
RuleComponent Defines if the sensor uses properties in a detected component or the
component the sensor is attached to for calculating processing time.
For example, a component may have its own processing time
defined in one of its properties or a component may have a global
property for controlling the processing time.

Route
A route defines the time delay (in seconds) for processing a detected component and can use one or more rules that form a nested structure.
Some rules allow you to use other rules to determine the time delay for a component. In all cases, changing a rule will undo all of its child
rules. As a last resort, some rules allow you to define a default time delay or rule.
Tip: You can edit the route of a Process Point Sensor in the Component Properties panel.

Types of Rules
Name Description
Boolean Table Time is based on a True or False value.
PropertyName defines which property of either processed
component or owner component is evaluated by the rule.
Default is used if the value of PropertyName does not match any
listed value in table.

Integer Table Time is based on an integer value.


PropertyName defines which property of either processed
component or owner component is evaluated by the rule.
Default is used if the value of PropertyName does not match any
listed value in table.

Normal Distribution Time is calculated using a normal distribution.


RandomStream can be used to seed a value.
Average defines the average value.
Deviation defines the standard deviation.

<Time> Time is the given amount.


Uniform Distribution Time is calculated using a uniform distribution.
RandomStream can be used to seed a value.
Min defines the minimum amount of time.
Max defines the maximum amount of time.

Real Table Time is based on a real number value.


PropertyName defines which property of either processed
component or owner component is evaluated by the rule.
Default is used if the value of PropertyName does not match any
listed value in table.

String Table Time is based on a string value.


PropertyName defines which property of either processed
component or owner component is evaluated by the rule.
Default is used if the value of PropertyName does not match any
listed value in table.
Raycast Sensor
A Raycast Sensor allows you to cast a ray in the 3D world for measuring distances and detecting components.

Properties
Name Description
Name Defines the name of the sensor.
UpdateScene Defines if the simulation is updated when the sensor detects a
component. A True value will update geometry and the locations of
objects in the 3D world. A False value should be used if only the
sensor's component moves during a simulation; otherwise, updating
the entire scene is unnecessary.
TestParent Defines if the sensor detects geometry in the node it is attached to
in the 3D world. Generally, a True value is used to detect self
collisions, for examples doors in a machine colliding with one
another.
ShowRay Turns on/off the visibility of the ray in the 3D world.
UseSampling Defines if the sensor operates using a sampling interval or pulse
driven by a received signal. A True value uses sampling mode and is
further defined using SampleTime. A False value uses pulse mode in
which a signal acts as a trigger for detecting components. In pulse
mode, the Connections property of a signal type behavior has the
sensor listed as a connection and some kind of iteration is used to
operate the sensor, for example a loop written in a Python Script or
some logic defining the signal's frequency.
SampleTime Defines the time interval between each sample if UseSampling is
enabled. That is, the sampling interval of the sensor.
MaxRange Defines the range used by the sensor for measuring distances. For
example, if a detected component is closer than MaxRange, the
sensor will signal the component's distance using RangeSignal.
DetectionThreshold Defines the range used by the sensor for detecting components. For
example, if a detected component is closer than
DetectionThreshold, the sensor will trigger ComponentSignal and
BoolSignal.
DetectionContainer Defines if the sensor only detects components in a specified
container, for example a path in the sensor's component.
RangeSignal Defines the Real Signal used to signal the length of the sensor's ray
to a detected component.
ComponentSignal Defines the Component Signal used to signal what component was
detected by the sensor.
BoolSignal Defines the Boolean Signal used to signal when a component
triggers the sensor.
Frame Defines the Frame feature referenced as the physical location of the
sensor. The ray of the sensor is cast in the Frame feature's positive
Z-axis direction.
Volume Sensor
A Volume Sensor allows you to define a volume space for detecting any component in the 3D world.

Properties
Name Description
Name Defines the name of the sensor.
UpdateScene Defines if the simulation is updated when the sensor detects a
component. A True value will update geometry and the locations of
objects in the 3D world. A False value should be used if only the
sensor's component moves during a simulation; otherwise, updating
the entire scene is unnecessary.
TestParent Defines if the sensor detects geometry in the node it is attached to
in the 3D world. Generally, a True value is used to detect self
collisions, for examples doors in a machine colliding with one
another.
TestSiblings Defines if the sensor detects geometry in nodes that are at the
same level as the sensor in a hierarchy. For example, components
moving along a path are temporarily attached to the path's node
during a simulation. Therefore, the sensor could be attached to the
path's node and used to detect components moving along the path.
In other cases, the sensor could be contained in a component's root
node and used to detect other components attached to the 3D world
(simulation root node).
TestOnlyContained Defines if the sensor can only detect components which are stored
in containers. Generally, a True value is used to detect components
placed in machines and storage containers as well as components
stacked on pallets.
ShowVolume Defines if the volume space of the sensor is rendered in the 3D
world.
VolumeMaterial Defines the material of the sensor's volume space. Generally, a
material with some transparency or Alpha channel is used in order
to show the detection area and component that triggered the
sensor.
TestMethod Defines the mode of the sensor for detecting components.
Precise Test is triggered by the geometry of a component, for
example edges and faces.
BBox Intersect is triggered by the bounding boxes of geometry
sets in a component.
BBox Center Inside is triggered if the center of a colliding
bounding box is inside the sensor's volume space.
BBox Fully Inside is triggered if a colliding bounding box is
completely inside the sensor's volume space.

UseSampling Defines if the sensor operates using a sampling interval or pulse


driven by a received signal. A True value uses sampling mode and is
further defined using SampleTime. A False value uses pulse mode in
which a signal acts as a trigger for detecting components. In pulse
mode, the Connections property of a signal type behavior has the
sensor listed as a connection and some kind of iteration is used to
operate the sensor, for example a loop written in a Python Script or
some logic defining the signal's frequency.
SampleTime Defines the time interval between each sample if UseSampling is
enabled.
DetectionContainer Defines if the sensor only detects components in a specified
container, for example a path in the sensor's component.
ComponentSignal Defines the Component Signal used to signal what component was
detected by the sensor.
BoolSignal Defines the Boolean Signal used to signal when a component
triggers the sensor.
LowerFrame Defines the Frame feature referenced as the lower left corner of the
sensor's volume space.
UpperFrame Defines the Frame feature referenced as the upper right corner of
the sensor's volume space.
Component Path Sensor
A Component Path Sensor allows you to detect components moving along a path.

Properties
Name Description
Name Defines the name of the sensor.
Frame Defines the Frame feature referenced as the physical location of the
sensor.
TriggerAt Defines the mode of the sensor for detecting components.
Leading Edge is triggered when the first edge of a component
reaches the sensor.
Origin is triggered when the origin of a component reaches the
sensor.
Trailing Edge is triggered when the last edge of a component
reaches the sensor.
None disables the sensor.

ResetAt Defines the mode of the sensor for resetting itself after detecting a
component.
ComponentSignal Defines the Component Signal used to signal what component was
detected by the sensor.
BoolSignal Defines the Boolean Signal used to signal when a component
triggers the sensor.
BoolSignalValue Defines if BoolSignal sends a signal. A True value means a
component triggered the sensor. A False value means the sensor
has either been reset or not yet triggered by a component.
Generally, BoolSignalValue is used to disable the use of BoolSignal
in the sensor.
Boolean Signal
A Boolean Signal allows you to signal a True or False value.

Properties
Name Description
Name Defines the name of the signal.
AutomaticReset Defines if the signal is reset to its initial value when you reset a
simulation. A True value resets the signal. A False value does not
reset the signal.
Connections Defines a list of behaviors that are connected to the signal and
reference it as a trigger. Generally, a signal is connected to a Python
Script in order to notify the script whenever the signal's value
changes during a simulation.
Boolean Signal Map
A Boolean Signal Map allows you to map signals to ports in a continuous I/O space.

Properties
Name Description
Name Defines the name of the signal map.
PortCount Defines the number of ports in the signal map.
Listeners Defines a list of behaviors that use the signal map. Generally, a
robot executor uses signal maps to define the robot's IO.
Component Signal
A Component Signal allows you to signal a value which is a component.

Properties
Name Description
Name Defines the name of the signal.
AutomaticReset Defines if the signal is reset to its initial value when you reset a
simulation. A True value resets the signal. A False value does not
reset the signal.
Connections Defines a list of behaviors that are connected to the signal and
reference it as a trigger. Generally, a signal is connected to a Python
Script in order to notify the script whenever the signal's value
changes during a simulation.
Integer Signal
An Integer Signal allows you to signal an integer value.

Properties
Name Description
Name Defines the name of the signal.
AutomaticReset Defines if the signal is reset to its initial value when you reset a
simulation. A True value resets the signal. A False value does not
reset the signal.
Connections Defines a list of behaviors that are connected to the signal and
reference it as a trigger. Generally, a signal is connected to a Python
Script in order to notify the script whenever the signal's value
changes during a simulation.
Matrix Signal
A Matrix Signal allows you to signal a 4x4 matrix value using real numbers.

Properties
Name Description
Name Defines the name of the signal.
AutomaticReset Defines if the signal is reset to its initial value when you reset a
simulation. A True value resets the signal. A False value does not
reset the signal.
Connections Defines a list of behaviors that are connected to the signal and
reference it as a trigger. Generally, a signal is connected to a Python
Script in order to notify the script whenever the signal's value
changes during a simulation.
Real Signal
A Real Signal allows you to signal a real number value.

Properties
Name Description
Name Defines the name of the signal.
AutomaticReset Defines if the signal is reset to its initial value when you reset a
simulation. A True value resets the signal. A False value does not
reset the signal.
Connections Defines a list of behaviors that are connected to the signal and
reference it as a trigger. Generally, a signal is connected to a Python
Script in order to notify the script whenever the signal's value
changes during a simulation.
String Signal
A String Signal allows you to signal a string value.

Properties
Name Description
Name Defines the name of the signal.
AutomaticReset Defines if the signal is reset to its initial value when you reset a
simulation. A True value resets the signal. A False value does not
reset the signal.
Connections Defines a list of behaviors that are connected to the signal and
reference it as a trigger. Generally, a signal is connected to a Python
Script in order to notify the script whenever the signal's value
changes during a simulation.
Base Container
A Base Container is a container of Frame features used as base frames.

Frames in a Base Container are listed with the behavior in the Component Graph panel and managed using a Bases element.

Properties
Name Description
Name Defines the name of the container.
Robot Controller
A Robot Controller allows you to configure and control a robot's mechanisms.

Base and tool frames of a Robot Controller are listed with the behavior in the Component Graph panel.

Properties
Name Description
Name Defines the name of the controller.
Joints Defines a list of joints defined in nodes used by the controller.
UseHeartbeat Turns on/off the use of a pulse to drive events.
HeartbeatTime Defines the time between each pulse (in seconds) if UseHeartbeat
is enabled.
RootNode Defines the link/node that acts as the base of the mechanical
structure.
FlangeNode If you are using an external axis system, defines the link/node used
as a mounting plate for other kinematic structures. If you are using a
track, defines the link/node used as the carriage.
RootOffset Defines an offset from RootNode origin in the kinematics. Generally,
this is used to start kinematics from the center of a node instead of
its side.
FlangeOffset Defines an offset from FlangeNode origin in order to properly mount
other kinematic structures.
InitialBase Defines the default base frame in the controller.
InitialTool Defines the default tool frame in the controller.
Kinematics Defines the kinematics solver (behavior) used to calculate and
provide inverse kinematics related properties to the controller.
MaxCartesianSpeed Defines the maximum Cartesian speed used for linear interpolation.
MaxCartesianAccel Defines the maximum Cartesian acceleration used for linear
interpolation.
MaxAngularSpeed Defines the maximum angular speed used for linear interpolation.
MaxAngularAccel Defines the maximum angular acceleration used for linear
interpolation.
LagTime Defines the time lag used for linear interpolation.
SettleTime Defines the settling time used for linear interpolation.
OrientationInterpolationMode Defines a mode for calculating the robot's orientation during linear
motions in which the rotational values of the robot are based around
one, two or three axes.
One Axis uses an axis with the smallest angle of rotation for the
current tool center point.
Two Axis uses one of the XYZ axes and its direction at the current
tool center point. In this mode, the angle of rotation for the selected
axis is applied first, and then other rotations are based around that
axis.
Three Axis interpolates either the yaw, pitch and roll (WPR) or
Euler angles (ZYZ) of a position, and then calculates a sequence of
rotations for the robot.

ConfigurationMode Defines the mode for determining the robot's configuration during
linear motion interpolation.
Fixed uses the robot's current configuration to reach a position.
Follow frame tries to maintain the robot's current configuration, so
small changes may occur to reach a position.
Interpolate joint values means the robot uses a configuration
based on a point-to-point interpolation of its joints to reach a
position.

TrackWorldFrameMode Defines the robot's World frame when the robot is mounted on a
track.
TrackOrigin places the World frame at the track's origin.
RobotWorldFrame retains the position of the World frame in the
robot.
Robot Executor
A Robot Executor allows you to read, write and execute a robot program.

Properties
Name Description
Name Defines the name of the executor.
DigitalInputSignals Defines the Boolean Signal Map behavior used for managing the
executor's inputs.
DigitalOutputSignals Defines the Boolean Signal Map behavior used for managing the
executor's outputs.
IsLooping Defines if the executor loops its program.
ProcessHandlers Defines a list of Python Process Handlers used to override or modify
statements in robot program and execute process statements.
IsEnabled Turns on/off the execution of its program.
Controller Defines the Robot/Servo Controller used by the executor to generate
motion statements in its program.
If a Servo Controller, you can generate joint-type motions but not
linear motions. If a Robot Controller, you can generate both joint and
linear motions.
Servo Controller
A Servo Controller allows you configure and control independent joints and mechanisms using forward kinematics.

Properties
Name Description
Name Defines the name of the controller.
Joints Defines a list of joints defined in nodes used by the controller.
UseHeartbeat Turns on/off the use of a pulse to drive events.
HeartbeatTime Defines the time between each pulse (in seconds) if UseHeartbeat
is enabled.
RootNode Defines the link/node that acts as the base of the mechanical
structure.
FlangeNode If you are using an external axis system, defines the link/node used
as a mounting plate for other kinematic structures. If you are using a
track, defines the link/node used as the carriage.
RootOffset Defines an offset from RootNode origin in the kinematics. Generally,
this is used to start kinematics from the center of a node instead of
its side.
FlangeOffset Defines an offset from FlangeNode origin in order to properly mount
other kinematic structures.
Tool Container
A Tool Container is a container of Frame features used as tool frames. Frames in Tool Container are listed with the behavior in the
Component Graph panel and managed using a Tools element.

Frames in a Tool Container are listed with the behavior in the Component Graph panel and managed using a Tools element.

Properties
Name Description
Name Defines the name of the container.
Functions
A supported function can be used to write an expression.
CONTENTS HIDE
TRIGONOMETRIC FUNCTIONS
POWER FUNCTIONS
HYPERBOLIC FUNCTIONS
VECTOR AND MATRIX CONSTRUCTION FUNCTIONS
MISCELLANEOUS FUNCTIONS
PSEUDO-RANDOM DISTRIBUTION FUNCTIONS

Trigonometric functions
Each function returns a real number value. By default, trigonometric functions use radians to calculate angles. You can append a function
name with a "d" character to use degrees, for example sind(), sasad() and sasssa1d().
All standard trigonometric functions are implemented to resemble functions in standard C math library as close as possible. Therefore,
radians are the default unit for calculations. This differs from matrix transformation functions, which operate using degrees.
You can perform unit specification, but remember to always use the canonical unit of angles. For example, sin(45 {deg}) and sind(.5 {rad}) are
valid expressions.

Unit Circle
Name Description
sin(a) Sine function.
cos(a) Cosine function.
tan(a) Tangent function.
asin(a) Inverse sine function.
acos(a) Inverse cosine function.
atan(a) Inverse tangent function.
atan2(a, b) If a is not zero, calculates inverse tangent of b/a; otherwise returns
pi/2.

Generic Triangles

Name Description
sasa(a, beta, c) Returns the value of alpha.
sass(a, beta, c) Returns the value of b.
sssa(a, b, c) Returns the value of alpha.
Quadrilaterals

Name Description
sasasa(A, a, B, b, C) Returns the value of c.
sasass(A, a, B, b, C) Returns the value of D.
sasssa1(A, a, B, C, D) Returns the value of b.
sasssa2(A, a, B, C, D) Returns the value of c.

Angle Conversion Functions


Name Description
degree(a) Converts a given radian value to degree value.
radian(a) Converts a given degree value to a radian value.

Power functions
Name Description
pow(a, b) Returns a to the power of b.
sqrt(a) Returns the square root of a.
exp(a) Returns the e value to the power of a.
log(a) Returns the natural logarithm of a.
log10(a) Returns the logarithm base 10 of a.

Hyperbolic functions
Name Description
sinh(a) Hyperbolic sine function.
cosh(a) Hyperbolic cosine function.
tanh(a) Hyperbolic tangent function.

Vector and matrix construction functions


The following functions can be used to return a vector or matrix in an expression.
Name Description
AxisAngle(i, j, k, angle) Returns identity matrix rotated around a given axis and angle.
Euler(a, b, c) Returns a matrix with given Euler angles and a zero position.
Identity() Returns identity matrix.
IJK(i, j, k) Returns identity matrix with its approach axis (Z-axis) parallel to a
given vector.
Pos(x, y, z) Returns identity matrix translated to a given position.
Quaternion(q1, q2, q3, q4) Returns identity matrix rotated with given quaternion values.
Rx(angle) Returns identity matrix rotated around X-axis by a given angle.
Ry(angle) Returns identity matrix rotated around Y-axis by a given angle.
Rz(angle) Returns identity matrix rotated around Z-axis by a given angle.
Set(v1, v2, ..., v16) Returns matrix initialized with given values.
Sx(factor) Returns identity matrix scaled along X-axis by a given factor.
Sy(factor) Returns identity matrix scaled along Y-axis by a given factor.
Sz(factor) Returns identity matrix scaled along Z-axis by a given factor.
Tx(dist) Returns identity matrix translated along X-axis by a given distance.
Ty(dist) Returns identity matrix translated along Y-axis by a given distance.
Tz(dist) Returns identity matrix translated along Z-axis by a given distance.
Vector(x, y, z) Returns vector with given XYZ coordinates.
Vector(x, y, z, w) Returns vector with a given XYZ coordinates and W value.
WPR(w, p, r) Returns identity matrix rotated by given yaw, pitch, and roll angles.

Miscellaneous functions
Name Description
max(a, b) Returns a or b, whichever is the largest value.
min(a, b) Returns a or b, whichever is the smallest value.
mod(a, b) Returns the remainder of a/b.
range(a, b, c) Returns a if b is less than a.
Returns b if b is within range of a and c.
Returns c if b is greater than c.

inrange(a, b, c) Returns True if b is within range of a and c; otherwise returns False.

Pseudo-random distribution functions


Distribution
Name Description
normal(u, s) Normal distribution for mean value of u and standard deviation of s.
lognormal(u, s) Log normal distribution for mean value of u and standard deviation
of s.
uniform(a, b) Uniform distribution in range a <= x < b.
exponential(lambda) Exponential distribution where mean is 1/lambda and variance is
1/lambda^2.
gamma(k, theta) Gamma distribution with shape k and scale theta.
triangular(min, mode, max) Triangular distribution for given min, mode and max values.
weibull(k, lambda) Weibull distribution with shape k and scale lambda.

Random Stream
Name Description
normal(stream, u, s)
lognormal(stream, u, s)
uniform(stream, a, b)
exponential(stream, lambda) Same as Distribution functions but with stream argument.
gamma(stream, k, theta)
triangular(stream, min, mode, max)
weibull(stream, k, lambda)
Grouping Operators
Grouping operators are useful for controlling the evaluation of an expression.

Parentheses
Expressions can be grouped by using parentheses () and are always evaluated first.
1 +2 * 3 = 7 whereas (1+2) * 3 = 9

Conditional operator
A conditional operator ?: can be used to return an argument for a given condition. The second argument is returned if the first argument is
True; otherwise the condition returns the third argument. The first argument must be a Boolean or numeric type, and the second and third
arguments must be compatible types.
1 == 2 ? 3 : 4 will return 4 since the first argument is false
2 > 1 ? 5 : 6 will return 5 since the first argument is true

Sequence operator
A sequence operator or comma evaluates first argument, and then second argument, and finally returns the second argument value.
a = 3, 4 + 5 will assign 3 to a, and then returns 9
Operator Precedence
Operators are evaluated based on their precedence to one another in an expression.
Precedence Operator Usage Parsing Order
1 Post increment a++ Left to Right
Post decrement a--
Member operator a.b
Function call a(...)
Parentheses (...)
Unit specification a{unit}
2 Pre increment ++a Right to Left
Pre decrement --a
Bitwise complement / Matrix ~a
inverse
Logical NOT !a
Unary minus -a
Unary plus +a
Type conversion (type)a
3 Multiply a*b Left to Right
Divide a/b
Modulo a%b
4 Add a+b Left to Right
Subtract a-b
5 Shift left a<<b Left to Right
Shift right a>>b
6 Less than a<b Left to Right
Less than or equal a<=b
Greater than a>b
Greater than or equal a>=b
7 Equal a==b Left to Right
Not equal a!=b
8 Bitwise AND a&b Left to Right
9 Bitwise XOR a^b Left to Right
10 Bitwise OR a|b Left to Right
11 Logical AND a&&b Left to Right
12 Logical OR a||b Left to Right
13 Assignment a=b Right to Left
Multiply and assign a*=b
Divide and assign a/=b
Modulo and assign a%=b
Add and assign a+=b
Subtract and assign a-=b
Shift left and assign a<<=b
Shift right and assign a>>=b
Bitwise AND and assign a&=b
Bitwise XOR and assign a^=b
Bitwise OR and assign a|=b
14 Condition a?b:c Left to Right
15 Sequence a,b Left to Right

An operator that is parsed left to right are left associative, whereas those parsed right to left are right associative.
a = b = c <-> a = (b = c)
a + b + c <-> (a + b) + c
Type Conversion
Integers and floating-point numbers are automatically converted when one is given and the other is required. Floating-point values can be
truncated to integers using a cast operator. When converting floating-point numbers to integers, no rounding is performed.
(int)2.5 becomes 2 not 3
Types and Operators
A type specifies the characteristics of a value and determines the set of operations available for the value. Operations include operators,
functions and methods. Types that have methods are complex and can have members.
CONTENTS HIDE
EXPRESSION TYPES AND CAST NAMES
BOOLEAN TYPES
NUMERIC TYPES
COMPLEX TYPES

Expression types and cast names


Type Cast Name Description
Boolean bool A value that can be True or False.
Integer int A 32-bit signed integer.
Real double A 64-bit floating point value.
Vector rVector A 4 element vector of real values.
Matrix rMatrix A 4x4 matrix of real values, for example 16
elements.
String rString A sequence of characters.
Notes:
The int and double types are mutually compatible.
The cast name is the name used in a cast operation.

Boolean types
A Boolean type represents a True or False value and is convertible to a numeric type. When converting a Boolean to numeric, True becomes 1
and False becomes 0. When converting a numeric to Boolean, 0 becomes False and any other number becomes True.

Logical Operators
Any logical operator will return a Boolean type. There are no explicit Boolean literals in expression syntax, so use 1 and 0 for True and False
respectively.
Name Description
Logical NOT: A unary prefix operator that inverts a given logical value.
! !true is false
!(1==2) is true

Logical AND: A binary operator that returns True if both arguments are True. That
is, if first argument is False, second argument is not evaluated.
&&
1 && 1 is true
0 && z<3 false, z<3 is never evaluated

Logical OR: A binary operator returns True if any of the arguments are true. That
is, if first argument is True, second argument is not evaluated.
||
1 || 0 is true
1 || z<3 true, z<3 is never evaluated

Numeric types
A numeric type expresses a scalar value and most have common operators.

Arithmetic Operators
For arithmetic operators, the type of result depends on the type of each argument. If arguments are the same, the common type is sued. If
the arguments differ, the type with the highest range is used. This will change the behavior of some operators, for example division, where
integer division is performed when both operands are integers.
Name Description
Addition, Subtraction, Multiplication, Division Basic arithmetic operators.
+-*/ 1 + 3 4
2 * 5 10
10.0 / 3 3.333333333333333
10 / 3 3 Integer division
1.0 * 10 / 3 3.333333333333333

Unary Plus and Minus Sign prefixes.


+- -1 is -1
-( 3 - 5 ) is 2
+5 is 5

Increment and Decrement Increment or decrement value by one, and then return the modified
or original value depending on the prefix or suffix of variable.
++ --
a = 3, b = ++a a == 4 and b == 4
a = 3, b = a-- a == 2 and b == 3

Comparison Operators
For comparison operators, the result will always be a Boolean value.
Name Description
Less Than, Less Than or Equal, Greater Than, Greater Than or Equal Compares arguments, and then returns True if expression is True;
otherwise returns False.
< <= > >=
3>2 is true
4<3 is false
5 <= 2 +3 is true

Equality, Inequality The equality operator returns True if operands are equal; otherwise
returns False. The inequality is the logical opposite of equality
== != operator.
2 + 3 == 5 is true
3 != 1 + 2 is false

Assignment Operators
Name Description
Simple assignment: Assigns right hand value to the left hand value, and then returns the
left hand value after the assignment.
=
a = 1 result is 1, and a == 1

Modifying assignment: Applies an operation on the values, and then stores the results in
the left hand argument, and finally returns the left hand value after
+= -= *= /= the assignment.
a += 3 <=> a = a + 3

Type Integer
Integers are represented as 32-bit signed integers and have a cast name of int. Integers may be specified as literal values.
55 is decimal format
067 leading zero indicates octal format
0X37 is hexadecimal format(0X37 is also accepted)

Methods
Integer values support the following operators in addition to standard numerical operators.
Name Description
Modulo: Calculates the remainder of division between left and right
arguments, and then returns that value.
%
10 % 3 is 1

Shift Left, Shift Right: Returns the left argument value by shifting number of bits specified
by right argument either left or right.
<< >>
2 >> 1 is 1, binary 10 is shifted to 01
1 << 3 is 8, binary 0001 is shifted to 1000

Bitwise complement: Unary prefix operator that returns the 32-bit complement of its
argument.
~
~0x0000ffff is 0xffff0000 negative value

Bitwise AND, OR, XOR: Applies logic to both arguments, each bit at a time, and then returns
the result.
&|^
1&2 -> 1
1|2 -> 3
1^3 -> 2

Notes:
All supported operators for integer type, except bitwise complement, exist as assignment operations: %=, <<=, >>=, &=, |= and ^=.

Type Real
Real type values are represented as 64-bit IEEE floating point values and have a cast name of double. Real types can be specified as literal
values.
12.4 :integer part and fractional part
.63 :only fraction present
2.4e6 is 2400000 integer part, fractional part and exponent
.8e-3 0.0008 only fraction part with negative exponent

Complex types
Complex types can be accessed or manipulated using members and methods, which are accessed using member access operator.
v.X the X coordinate member value
v.Length() a method that returns the length or absolute value

The main difference between members and methods is that methods are functions that take arguments, whereas members just access a part
of the complex type. Generally, complex types only support a small number of operators.

Type Vector
A 4-dimensional array consisting of 4 double type elements with a cast name of rVector. A vector is often used to represent positions or
directions.

Members
Name Description
X X coordinate.
Y Y coordinate.
Z Z coordinate.
W W coordinate.

Methods
Name Description
Length() Returns the absolute length of vector as a real type value.
Square() Returns the square of vector length as a real type value.
Set(x, y, z) Sets the XYZ members of vector using given double type arguments,
and then returns the modified rVector.
Set(x, y, z, w) Sets the XYZW members of vector using given real type arguments,
and then returns the modified rVector.

Operators
Name Description
Negative: Returns the opposite of vector.
-Vector

Scaling: Multiplies or divides each component of vector with a scalar value.


Vector*real, real*Vector, Vector/real

Scalar Product: Returns the scalar product of two vectors.


Vector*Vector

Vector Product: Returns the vector product of two vectors.


Vector^Vector

Addition and Subtraction: Returns the sum or difference of two vectors.


Vector+Vector, Vector - Vector

Assignment: Simple vector assignment.


Vector = Vector

Assignment: Addition or subtraction vector assignment.


Vector += Vector, Vector -= Vector

Assignment: Scaling vector assginment.


Vector *= real, Vector /= real

Type Matrix
A 4x4 matrix of double values with a cast name of rMatrix. A matrix is often used to represent positions in space and linear transformations.

Methods
A matrix has several methods for setting or modifying its value, all of which can be used as functions. In that case, a function is equivalent to
using a method on identity matrix. All methods will return a modified matrix, so method calls can be chained.
Tx(100).Rz(45) translates and then rotates matrix

The following methods can be used with a matrix. The unit for all angle parameters is degrees, unless you give a unit specification.
Name Description
Identity() Sets matrix to its identity matrix.
Rx(angle) Rotates matrix around relative X-axis by a given angle.
Ry(angle) Rotates matrix around relative Y-axis relative by a given angle.
Rz(angle) Rotates matrix around relative Z-axis relative by a given angle.
Tx(distance) Translates matrix along relative X-axis by a given distance.
Ty(distance) Translates matrix along relative Y-axis by a given distance.
Tz(distance) Translates matrix along relative Z-axis by a given distance.
Sx(factor) Scales matrix relative to its X-axis by a given factor.
Sy(factor) Scales matrix relative to its Y-axis by a given factor.
Sz(factor) Scales matrix relative to its Z-axis by a given factor.
Pos(x, y, z) Sets the position of matrix to the given coordinate values.
Euler(a, b, c) Sets the orientation of matrix using given Euler angles.
WPR(a, b, c) Sets the orientation of matrix using yaw, pitch and roll values.
IJK(i, j, k) Aligns the Z-axis of matrix to a given vector.
AxisAngle(i, j, k, angle) Sets the orientation of matrix by rotating identity matrix around a
given axis and angle.
Quaternion(q1, q2, q3, q4) Sets the orientation of matrix by using given quaternion values.
Set(v1, v2, ..., v16) Sets the values of matrix row by row.

Operators
Name Description
Inverse: Calculates the inverse of matrix.
-Matrix

Equality: Tests two matrices for equality.


Matrix == Matrix

Transform: Returns a vector transformed by matrix.


Matrix*Vector

Matrix Multiplication: Returns a matrix product or quotient.


Matrix*Matrix, Matrix/Matrix

Assignment: Assigns one matrix to another matrix.


Matrix = Matrix

Matrix Transform: Pre-multiplies a matrix by a given matrix or its inverse.


Matrix *= rMatrix, Matrix /= Matrix

Type String
A string is a sequence of characters with a cast name of rString. The literal form of a string is surrounded by double quotes.
"Hello" a string literal surrounded by double quotes
"\"Quoted\"" a string quote containing escaped quotes

Methods
Name Description
Length Returns the number of characters in string.

Operators
Name Description
Equality: Compares the equality and inequality of strings.
String == String, String != String

Comparison: Implements a lexicographical sort based on the numeric value of


characters in strings.
String < String, String <= String, String > String, String >= String

Concatenation: Concatenates two strings into one.


String + String

Assignment: Assigns or appends one string to another string.


String = String, String += String
Unit Specification
Unit specification allows you to specify the unit of a given value, which may or may not be a canonical unit.
Usage
Built-in Units

Usage
Generally, unit specifications are used in expressions when defining a certain quantity. This allows you specify any applicable unit to a value
while the underlying calculations remain the same. That is, unit specification cannot be used to convert a value from one unit to another.
A unit specification consists of a unit name enclosed in curly braces. This can be done for numerical values (integer and real) and the result
is always a real type value.
10{cm} 100.0 millimeter is canonical unit for distance
(3+4){m} 7000.0 units can be applied to subexpressions
15{in} + 45{mm} 426.0 mixing units in an expression is allowed
30{centimetres} 300.0 you can use unit name in specification

Built-in Units
Both built-in and custom units can be used in unit specification. Some built-in units have suffixes, for example degree° and mircosecond µs,
and alternative forms that can be used in expressions. Units marked "Canonical" are canonical units for quantities and used internally by
KUKA Sim Pro 3.0 to store and calculate values.
Name Suffix Quantity Note Alternative
centimetres cm Distance None None
centimetres cm/s Velocity None None
cubic centimetres cm3 Volume None cm^3
cubic decimetres dm3 Volume None dm^3
cubic feet cu ft Volume None None
cubic inches cu in Volume None None
cubic metres m3 Volume None m^3
cubic yards cu yd Volume None None
cups cp Volume.Liquid None None
days days Time None None
degrees ° Angle Canonical deg
degrees Celsius °C Temperature None degC
degreesFahrenheit °F Temperature None degF
degrees per second °/s Angular velocity Canonical deg/s
degrees per second °/s 2 Angular acceleration Canonical deg/s^2
squared
drams dr Mass None None
feet ft Distance None None
feet per second squared ft/s 2 Acceleration None ft/s^2
fluid drams fl dr Volume.Liquid None None
fluid ounces fl oz Volume.Liquid None None
foot pounds force ftlbf Torque None None
gallons gal Volume.Liquid None None
grads grad Angle None None
grads per second grad/s Angular velocity None None
grads per second squared grad/s 2 Angular acceleration None grad/s^2
gram degrees per second g°/s Angular momentum None gdeg/s
gram grads per second ggrad/s Angular momentum None None
gram metres per second gm/s Momentum None None
gram radians per second g rad/s Angular momentum None None
grams g Mass Canonical None
hours hr Time None None
hundredweights cwt Mass None None
inch pounds force inlbf Torque None None
inches in Distance None None
inches per second in/s 2 Acceleration None in/s^2
squared
Kelvin K Temperature Canonical None
kilogram degrees per kg°/s Angular momentum Canonical kgdeg/s
second
kilogram grads per second kggrad/s Angular momentum None None
kilogram metres per kgm/s Momentum Canonical None
second
kilogram radians per kg rad/s Angular momentum None None
second
kilograms kg Mass None None
kilonewtons kN Force None None
litres l Volume.Liquid None None
metres m Distance None None
metres per second m/s Velocity None None
metres per second m/s 2 Acceleration None m/s^2
squared
microseconds µs Time None mus
millilitres ml Volume.Liquid None None
millimetres mm Distance Canonical None
millimetres per second mm/s Velocity Canonical None
millimetres per second mm/s 2 Acceleration Canonical mm/s^2
squared
milliseconds ms Time None None
minutes min Time None None
newton centimetres Ncm Torque None None
newton metres Nmm Torque None None
newton millimetres Nmm Torque Canonical None
newtons N Force Canonical None
ounces oz Mass None None
pints pt Volume.Liquid None None
pound degrees per second lb°/s Angular momentum None lbdeg/s
pounds lb Mass None None
pounds force lbf Force None None
quarts qt Volume.Liquid None None
radians rad Angle None None
radians per second rad/s Angular velocity None None
radians per second rad/s 2 Angular acceleration None rad/s^2
squared
seconds s Time None None
short tons t Mass None None
square centimetres cm2 Area none cm^2
square feet sqft Area None None
square inches sqin Area None None
square metres m2 Area None m^2
square millimetres mm2 Area None mm^2
tonnes t Mass None None
weeks wks Time None None
Angular Clone
An Angular Clone feature clones its child features around its Z-axis.

Generally, you would use an Angular Clone with a Transform feature to define a radius and adjust the positioning of cloned objects.

Properties
Name Description
Name Defines the name of the feature.
Count Defines the number of times to clone child features.
0 hides the original child features.
1 shows the original child features.
n+1 shows the original child features and n amount of clones.

Step Defines the angle (in degrees) of separation between each clone.
Offset Defines an offset for each clone in relation to one another.
Physics Defines a set of physics properties for the feature.
Block
A Block feature is a cube/box shape.

Generally, a Block is shaped and made parametric using expressions with component properties.

Properties
Name Description
Name Defines the name of the block.
Visible Turns on/off the visibility of block.
Material Defines the material of the block.
Length Defines the length of the block in its X-axis.
Width Defines the width/depth of the block in its Y-axis.
Height Defines the height of the block in its Z-axis.
Physics Defines a set of physics properties for the feature.
Cone
A Cone feature is a cone/frustum shape.

Cones are flexible shapes that can be modeled to visualize spaces, viewing angles, fields and other types of objects on the fly.

Properties
Name Description
Name Defines the name of the cone.
Visible Turns on/off the visibility of cone.
Material Defines the material of the cone.
BottomRadius Defines the bottom radius of the cone.
TopRadius Defines the top radius of the cone
Height Defines the height of the cone in its Z-axis.
StartSweep Defines the start angle (in degrees) for sweeping the cone's surface.
EndSweep Defines the end angle (in degrees) for sweeping the cone's surface.
Sections Defines the amount of sections generated between StartSweep and
EndSweep in the cone. A low value generates a pyramid/pyramidal
frustum.
Caps Turns on/off the rendering of caps for the cone.
Physics Defines a set of physics properties for the feature.
Cylinder
A Cylinder feature is a cylindrical shape.

Cylinders are flexible shapes that can be molded into many different objects.

Properties
Name Description
Name Defines the name of the cylinder.
Visible Turns on/off the visibility of cylinder.
Material Defines the material of the cylinder.
Radius Defines the radius of the cylinder.
Height Defines the height of the cylinder in its Z-axis.
StartSweep Defines the start angle (in degrees) for sweeping the cylinder's
surface.
EndSweep Defines the end angle (in degrees) for sweeping the cylinder's
surface.
Sections Defines the number of sections generated for the circumference of
the cylinder. A low value can produce a prism.
Caps Turns on/off the rendering of caps in the cylinder.
Physics Defines a set of physics properties for the feature.
Extrude
An Extrude feature extrudes the geometry of its child features.

Extrusions can be used to warp and distort objects that supposed to be malleable as well extrude surfaces.

Properties
Name Description
Name Defines the name of the feature.
Material Defines the material of the extrusion.
Caps Turns on/off the rendering of caps in the extrusion.
Reverse Turns on/off the reversal of the extrusion's Direction.
ShowBackFaces Turns on/off the rendering of backfaces in the extrusion.
Direction Defines the direction of the extrusion.
Length Defines the length of the extrusion.
Physics Defines a set of physics properties for the feature.
Frame
A Frame feature is a reference point in the 3D world with a defined position and orientation.

Frames are often transformed and referenced by behaviors to simulate actions.

Properties
Name Description
Name Defines the name of the frame.
Visible Turns on/off the visibility of frame.
UseAsGuide Defines if the frame is used as a guiding point.
Geometry
A Geometry feature is a container of geometry that is either imported or generated in the feature or collapsed from other features.

Geometry features can be used to load interchangeable geometry and is the default container for imported geometry.

Properties
Name Description
Name Defines the name of the feature.
Visible Turns on/off the visibility of feature and its subfeatures.
Uri Defines the file path of a CAD file loaded by the feature. Changing
the file path deletes all preexisting geometry in the feature.
OnDemandLoad Turns on/off the allocation of memory for contained geometry based
on the need of the feature. Generally, OnDemand is used when
there are large amounts of geometry and a Switch feature is
controlling the use of the feature.
ShowBackfaces Turns on/off the rendering of backfaces in the feature.
CreaseAngle Defines an angle tolerance for treating adjacent faces as one
smooth surface during light calculations in which face normals are
averaged to produce reflection normals.
Pickable Defines if geometry of feature can be picked in the 3D world. This
affects any tool, command or shortcut that uses snap types.
Physics Defines a set of physics properties for the feature.
Linear Clone
A Linear Clone feature clones its child features along an axis.

In some cases, Linear Clone operations are chained together to clone objects along two or more axes.

Properties
Name Direction
Name Defines the name of the feature.
Count Defines the number of times to clone child features.
0 hides the original child features.
1 shows the original child features.
n+1 shows the original child features and n amount of clones.

Step Defines the distance between each clone.


Direction Defines the direction for cloning child features.
Physics Defines a set of physics properties for the feature.
Mirror
A Mirror feature mirrors and scales its child features in one to three axes.

A Mirror operation can be helpful when you want to visualize geometry and keep file size low, for example when you need to use one
geometry file for pillars and support columns.

Properties
Name Description
Name Defines the name of the feature.
HideOriginal Turns on/off the hiding of the original child features.
Direction Defines the direction and scale factor for mirroring child features.
Physics Defines a set of physics properties for the feature.
Plane
A Plane feature is a two-dimensional flat surface.

Generally, a Plane is used for visualization purposes or to aid in the selection and interactive picking of geometry in the 3D world.

Properties
Name Description
Name Defines the name of the plane.
Visible Turns on/off the visibility of plane.
Size Defines the length and width of the plane in its XY axes.
Physics Defines a set of physics properties for the feature.
Python Feature
A Python Feature generates geometry and transforms child features using a script written in Python.

Properties
Name Description
Name Defines the name of the feature.
Script Defines the feature's Python script. When the feature is initially
created, the script is initialized and is identical to a Transform
feature with an empty expression.
The script must use the OnEvaluate event to generate geometry,
apply transformations, and pass the feature and its subfeatures to
its parent.

Physics Defines a set of physics properties for the feature.

Events
Name Parameters Description
OnEvaluate vcFeature feature, vcGeometryContainer Triggered by the rebuilding of a component's
target, vcMatrix matrix, List of feature tree.
vcGeometryContainer containers
feature is the Python feature object.
target is the geometry container of the
feature's parent. That is, any geometry
passed to target will be rendered in the
feature.
matrix is the local transformation matrix of
the feature.
containers is a list of geometry containers
subfeatures. When the feature itself is
created a for loop is used to pass all
geometry from subfeatures into the target.

Editor
In order to access the script editor:
1. In the Component Graph panel, Component Node Tree, find the node containing the Python feature you want to edit, and then select
that node.
2. In Node Feature Tree, find the Python feature you want to edit, and then double-click that feature.
The script editor is the same one used for a Python Script.
The initial content of the editor contains a code snippet that defines the OnEvaluate event to function as a Transform feature with an empty
expression:
from vcFeature import *
def OnEvaluate(feature, target, matrix, containers):
for c in containers:
c.moveGeometrySets(target,matrix)

Examples
Example. Generate custom feature of mathematical shapes and visual tools

from vcFeature import *


import math, vcVector

def OnEvaluate(feature, target, matrix, containers):


'''Create custom line set in planes using 15 degree marks and axes'''
target.clear()
lineset = target.createGeometrySet(VC_COMPACTLINESET)
lineset.LineWidth = 1
##use unit circle to generate lines in xy,zx,yz planes
max_radius = 300
for radius in range(100,(max_radius+100),100):
line = []
for angle in range(0,375,1):
radAngle = math.radians(angle)
x = math.cos(radAngle)*radius
y = math.sin(radAngle)*radius
z = 0
point = vcVector.new(x,y,z)
line.append(point)
if len(line) == 2:
lineset.addLine(line)
for point in line:
point.Z = point.X
point.X = point.Y
point.Y = 0
lineset.addLine(line)
for point in line:
point.Y = point.X
point.X = 0
lineset.addLine(line)
line[:] = []
angle += 15
##generate lines for each axis based on max radius and offset
for i in ['x','y','z']:
p1,p2 = vcVector.new(),vcVector.new()
if i == 'x':
p1.X = max_radius+100
p2.X = -p1.X
elif i == 'y':
p1.Y = max_radius+100
p2.Y = -p1.Y
elif i == 'z':
p1.Z = max_radius+100
p2.Z = -p1.Z
lineset.addLine([p1,p2])

for c in containers:
c.moveGeometrySets(target,matrix)
Revolve
A Revolve feature sweeps the geometry of child features along a path, thereby constructing new geometry.

Generally, a Revolve operation is used to sweep geometry, which sometimes requires the use of Transform and Extrude features.

Properties
Name Description
Name Defines the name of the feature.
Material Defines the material of the feature.
Sections Defines the amount of sections around the longitudinal
circumference of the revolved child features.
RevolveAngle Defines the angle to revolve child features.
RevolveAxis Defines the direction and axis for revolving child features.
RevolveOffset Defines an offset for revolving child features.
Caps Turns on/off the rendering of caps in the feature.
Reverse Turns on/off the reversal of the feature's child features.
Physics Defines a set of physics properties for the feature.
Sphere
A Sphere feature is a spherical shape.

Spheres can be molded into different shapes, for example capsules and balls, and used as indicators in the 3D world.

Properties
Name Description
Name Defines the name of the sphere.
Visible Turns on/off the visibility of sphere.
Material Defines the material of the sphere.
Radius Defines the radius of the sphere.
StartSweep Defines the start angle (in degrees) for sweeping the sphere's
surface.
EndSweep Defines the end angle (in degrees) for sweeping the sphere's
surface.
Sections Defines the amount of faces around the longitudinal circumference
of the sphere.
Spans Defines the amount of sections between the poles of the sphere.
Caps Turns on/off the rendering of caps in the sphere.
Physics Defines a set of physics properties for the feature.
Switch
A Switch feature selects one of its child features and disables the other child features.

Switch operations are helpful if you need to switch out geometry or other operations based on component properties.

Properties
Name Description
Name Defines the name of the switch.
Choice Defines an expression that when evaluated selects a child feature
using a one-based index. That is, 0 would not select any child
feature, which in turn disables all of them.
Physics Defines a set of physics properties for the feature.
Text
A Text feature is a container of text that is visualized in the 3D world.

Text features are helpful at labeling processes and stages in a layout as well as the flow of components.

Properties
Name Description
Name Defines the name of the feature.
Visible Turns on/off the visibility of text.
Material Defines the material of the feature.
Text Defines the expression that when evaluated returns the text to be
visualized in the 3D world.
Size Defines the scale factor for sizing rendered text.
IsFloating Defines if text floats freely in 3D world or is anchored directly to
feature location.
IsReadOnly Defines if the text is read-only and locked from editing.
Physics Defines a set of physics properties for the feature.
Transform
A Transform feature allows you to write expressions for transforming child features.

Transform operations use a dot (.) character to separate nested expressions, and you should refer to Operator Precedence to know the
parsing order for the transformation.

Properties
Name Description
Name Defines the name of the feature.
Visible Turns on/off the visibility of its subfeatures.
Expression Defines an expression (matrix) that when evaluated transforms child
features. The given expression is evaluated based on the order of
operations and operator precedence.
Physics Defines a set of physics properties for the feature.
Wedge Feature
A Wedge feature is a wedge-like shape.

Wedges can be molded into different shapes that can be varying lengths and heights as well as mirrored along different axes.

Properties
Name Description
Name Defines the name of the wedge.
Visible Turns on/off the visibility of wedge.
Material Defines the material of the wedge.
BiggerLength Defines the bottom length of the wedge in its X-axis.
SmallerLength Defines the top length of the wedge in its X-axis.
BiggerHeight Defines the back height of the wedge in its Z-axis.
SmallerHeight Defines the front height of the wedge in its Z-axis.
Width Defines the width of the wedge in its Y-axis.
MirrorBack Turns on/off the mirroring of the wedge in its negative Y-axis.
MirrorDown Turns on/off the mirroring of the wedge in its negative Z-axis.
Physics Defines a set of physics properties for the feature.
Documents
CONTENTS
COMPONENTS
LAYOUTS
How It Works
CONTENTS
NAVIGATION
SELECTION
VISUALIZATION
BUILDING A LAYOUT
RUNNING A SIMULATION
TEACHING A ROBOT
MODELING A COMPONENT
CREATING A DRAWING
Tasks
CONTENTS
CATALOG
COMPONENTS
CONNECTIVITY
DRAWINGS
LAYOUTS
MODELING
PHYSICS
ROBOTS
SIMULATIONS
WORKSPACE
Catalog
CONTENTS
CO LLECTI O N GRO UP S
ADD COLLECTIONS AND SOURCES TO GROUPS
ADDING A COLLECTION GROUP
DELETING A COLLECTION GROUP
REMOVING COLLECTIONS AND SOURCES FROM GROUPS
CO LLECTI O NS
ADDING A COLLECTION
ADDING ITEMS TO COLLECTIONS
DELETING A COLLECTION
REMOVING ITEMS FROM COLLECTIONS
I TEM S
FILTERING ITEMS
SEARCHING FOR ITEMS
SORTING ITEMS
VIEWING AND EDITING METADATA
VIEWING ITEMS
LO CAL CO P I ES
DELETING A LOCAL COPY
FORCING THE UPDATE OF LOCAL COPIES
MAPPING LOCAL FOLDER TO REMOTE SOURCE
SM ART CO LLECTI O NS
ADDING A SMART COLLECTION
DELETING A SMART COLLECTION
EDITING SMART COLLECTIONS
SO URCES
ADDING A LOCAL SOURCE
ADDING A REMOTE SOURCE
FORCING THE UPDATE OF SOURCES
REMOVING SOURCES
SHOWING SOURCES
USING SOURCES
Components
CONTENTS
ADDING COMPONENTS
ALIGNING COMPONENTS
ATTACHING COMPONENTS
EDITING COMPONENT PROPERTIES
EDITING ORIGIN OF COMPONENTS
EXPORTING GEOMETRY OF COMPONENTS
GROUPING COMPONENTS
IMPORTING GEOMETRY AS NEW COMPONENTS
INTERACTING WITH PARTS OF COMPONENTS
MEASURING COMPONENTS
MOVING AND ROTATING COMPONENTS
PLUGGING IN COMPONENTS
REMOTELY CONNECTING COMPONENTS
REPORTING STATISTICS
SELECTING COMPONENTS
SELECTING COMPONENTS IN A LIST
SELECTING COMPONENTS IN AN AREA
SNAPPING COMPONENTS
Drawings
CONTENTS
CREATING A DIMENSION
CREATING A DRAWING
CREATING A DRAWING TEMPLATE
CREATING AN ANNOTATION
EXPORTING A DRAWING
FINDING A DRAWING TEMPLATE
IMPORTING A DRAWING TEMPLATE
PRINTING A DRAWING
Layouts
CONTENTS
CLOSING A LAYOUT
EXPORTING GEOMETRY OF LAYOUTS
OPENING A LAYOUT
OPENING A NEW LAYOUT
SAVING A LAYOUT
Modeling
CONTENTS
ADD AND EDIT BASE FRAMES
ADD AND EDIT TOOL FRAMES
ASSIGNING A JOINT TO A CONTROLLER
COLLAPSING FEATURES
CREATING A NEW COMPONENT
CREATING A NEW BEHAVIOR
CREATING A NEW FEATURE
CREATING A NEW PROPERTY
CREATING A NEW NODE
DECIMATING GEOMETRY
DEFINING A JOINT OFFSET
EDITING NODE FEATURE TREE
EXTRACTING GEOMETRY INTO NEW COMPONENT
EXTRACTING GEOMETRY INTO NEW NODE
INTERACTING WITH A JOINT
INVERTING GEOMETRY
MATERIALS
MERGING FACES
MERGING FEATURES
SELECTING BEHAVIORS IN A COMPONENT
SELECTING FEATURES IN A COMPONENT
SELECTING NODES IN A COMPONENT
SELECTING PROPERTIES IN A COMPONENT
SIMPLIFYING GEOMETRY
SLICING GEOMETRY
SPLITTING FEATURES
SEARCHING COMPONENT DATA
SAVING A COMPONENT
TRANSFERRING COMPONENTS TO OTHER BEHAVIORS
TRANSFERRING COMPONENTS TO OTHER COMPONENTS
Physics
CONTENTS
PHYSICS WORLD
CABLES IN PHYSICS WORLD
COLLIDERS IN PHYSICS WORLD
COLLISIONS IN PHYSICS WORLD
JOINTS IN PHYSICS WORLD
PATHS IN PHYSICS WORLD
Generating Machine and Configuration Data
An external kinematics component connected to a robot, for example a turn table, requires certain properties in order to fully support the
mechanism for importing and exporting machine and configuration data.
Machine data can be imported/exported in KUKA Sim Pro 3.0 if an external kinematics component is properly built. This means certain matrix
properties and selection lists must be defined in all external kinematics components connected to a robot in order for the import/export
mechanism to fully work at generating real robot programs. Otherwise, comments will be added to configuration and machine data files
about these issues.
Required properties:
ET
Allowed values are #NONE, #EASYS, #EBSYS, #ECSYS, #EDSYS, #EESYS, #EFSYS, and #ERSYS (machine.dat and config.dat export,
config.dat import, defines machine.dat import*).
EX_KIN
Allowed values are ET1, ET2, ET3, ET4, ET5, and ET6 (machine.dat import/export).
MACH_DEF_INDEX
Integers 2 to 16 (config.dat export, must be defined for import whereas other properties will be imported based on the value of
property in component).
TA1KR, TA2A1, TA3A2, TFLA3, and TPINFL
Matrix properties (machine.dat, import/export).
TR_A1, TR_A2, and TR_A3
Based on the number of external axes. Allowed values are #NONE, #E1, #E2, #E3, #E4, #E5, #E6 (machine.dat import/export).
Implicit properties:
SOFTN_END, SOFTP_END
Used for KRC robot controller behavior.
Hardcoded values:
Unknown variables for export: coop_krc_index, objectID
In some cases, you may need to create new properties in an external kinematics component to support the import/export of robot data.
1. Click the Program tab.
2. In the Controller Graph panel, right-click the element of an external kinematics component, and then click Create MADA properties.
Note: A properly built component that has required (matrix) properties with defined values will not output any errors when generating
machine data.
Robots
CONTENTS
CALIBRATING COMPONENTS IN AN ENVIRONMENT
CALLING SUBROUTINES IN ROBOT PROGRAM
CONNECTING EXTERNAL AXES
CONNECTING ROBOT TO VIRTUAL ROBOT CONTROLLER
CONNECTING SIGNALS TO ROBOT I/O
CREATING EXPLICIT VARIABLES
CREATING SAFETY ZONES
CREATING STATEMENTS IN ROBOT PROGRAM
CREATING SUBROUTINES IN ROBOT PROGRAM
CUSTOMIZING STATEMENTS TOOLBAR
DETECTING COLLISIONS
EDITING BASE AND TOOL FRAMES
EDITING CONTROLLER DATA
EDITING IMPLICIT VARIABLES
EDITING PATH STATEMENTS
EDITING ROBOT ORIGIN
EDITING ROBOT POSITIONS
EDITING STATEMENTS IN ROBOT PROGRAM
EXCHANGING ROBOTS
EXPORTING PROJECT DATA
GENERATING MACHINE AND CONFIGURATION DATA
GOING THROUGH ROBOT MOTIONS
IMPORTING KRL PROGRAM
IMPORTING PROJECT DATA
IMPORTING ROBOT DATA
LIMITING A ROBOT AND ITS JOINTS
LOCKING ROBOT POSITIONS
MAPPING SIGNALS TO ACTIONS IN ROBOT
PAINTING
PROGRAMMING OTHER COMPONENTS
SELECTING A ROBOT AND ITS DATA
SELECTING STATEMENTS IN ROBOT PROGRAM
SWEEPING GEOMETRY
SYNCHRONIZING ROBOT DATA
TEACHING A PATH OF POSITIONS
TEACHING POSITIONS USING ALIGN OPTIONS
TEACHING POSITIONS USING JOINT VALUES
TEACHING POSITIONS USING SNAP OPTIONS
USING EXPLICIT VARIABLES
VISUALIZING ROBOT MOTION PATHS
Simulations
CONTENTS
EXPORTING SIMULATION AS IMAGE
PRINTING SIMULATION AS IMAGE
RECORDING SIMULATION AS 3D PDF
RECORDING SIMULATION AS ANIMATION
RECORDING SIMULATION AS VIDEO
REPEATING A SIMULATION
RUNNING A SIMULATION
USING A RUNTIME
USING A WARM UP TIME
Workspace
CONTENTS
DEFINING UNITS AND QUANTITIES
EDITING OPTIONS
CLI P BOARD
CLONING SELECTED OBJECTS
COPYING AND PASTING A SELECTION
DELETING A SELECTION
PANELS
DOCKING A PANEL
GROUPING PANELS
HIDING PANELS
RESTORING PANELS
VIEWING PANELS
Q UI CK ACCESS TO O LBAR
ADDING COMMANDS TO THE QAT
CUSTOMIZING THE QAT
REMOVING COMMANDS FROM THE QAT
User Interface
CONTENTS
SIMULATION CONTROLS
HELP TAB
VI EWS
BACKSTAGE
DRAWING
LAYOUT
MODELING
ROBOT
PANELS
CELL GRAPH
COMPONENT GRAPH
CONTROLLER GRAPH
ECATALOG
JOB MAP
JOG
OUTPUT
PROPERTIES
Reference Guide
CONTENTS
BEHAVIORS
FEATURES
EXPRESSIONS
PYTHON API
NET API
Behaviors
CONTENTS
I NTERFACES
ONE TO MANY INTERFACE
ONE TO ONE INTERFACE
K I NEM ATI CS
ARTICULATED KINEMATICS
CARTESIAN KINEMATICS
DELTA KINEMATICS
PARALLELOGRAM KINEMATICS
PYTHON KINEMATICS
SCARA KINEMATICS
M ATERI AL FLOW
CAPACITY CONTROLLER
COMPONENT CONTAINER
COMPONENT CREATOR
COMPONENT FLOW PROXY
ONE WAY PATH
ROUTING RULE
TWO WAY PATH
M I SCELLANEO US
ACTION CONTAINER
DOCUMENT LINK
JOG INFO
NOTE
PYTHON SCRIPT
STATISTICS
TRANSPORT PROTOCOL
VEHICLE
P HYSI CS
PHYSICS CABLE
PHYSICS ENTITY
PHYSICS JOINT
PHYSICS PATH
RO BOTI CS
BASE CONTAINER
ROBOT CONTROLLER
ROBOT EXECUTOR
SERVO CONTROLLER
TOOL CONTAINER
SENSO RS
COMPONENT PATH SENSOR
PROCESS POINT SENSOR
RAYCAST SENSOR
VOLUME SENSOR
SI GNALS
BOOLEAN SIGNAL
BOOLEAN SIGNAL MAP
COMPONENT SIGNAL
INTEGER SIGNAL
MATRIX SIGNAL
REAL SIGNAL
STRING SIGNAL
Expressions
CONTENTS
FUNCTIONS
GROUPING OPERATORS
OPERATOR PRECEDENCE
TYPE CONVERSION
TYPES AND OPERATORS
UNIT SPECIFICATION
Features
CONTENTS
ANGULAR CLONE
BLOCK
CONE
CYLINDER
EXTRUDE
FEATURES
FRAME
GEOMETRY
LINEAR CLONE
MIRROR
PLANE
PYTHON FEATURE
REVOLVE
SPHERE
SWITCH
TEXT
TRANSFORM
WEDGE

You might also like