You are on page 1of 777

KUKA

Sim Pro 3.0 Help

HOW IT WORKS

USER INTERFACE

TASKS

DOCUMENTS
REFERENCE GUIDE

Version: 12 December, 2016


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


3D Studio All .3ds
ACIS Up to 26 .sat, .sab
Autodesk Inventor Up to 2017 .ipt, .iam
Autodesk RealDWG AutoCAD 2000-2004, .dwg, .dxf
2007, 2010 and 2013
CATIA V4 Up to 4.2.5 .session, .dlv, .exp
CATIA V5 V5-6 R2016 (R26) .CATDrawing,
.CATPart, .CATShape,
.cgr
CATIA V6 2011 to 2013 .3dxml
Creo Elements/Pro 19.0, Up .asm, .neu, .prt, .xas, .xpr
to Parametric 3.0
I-deas Up to 13.x (NX5) and .mf1, .arc, .unv, .pkg
NX I-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 28.1 .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 ST8 .asm, .par, .pwd, .psm
SolidWorks Up to 2016 .sldasm, .sldprt
STEP Up to AP 203 E1/E2, AP .stp, .step
214 and AP 242
Stereo Lithography All .stl
(ASCII and Binary)
U3D ECMA-363 1st, 2nd and .u3d
3rd editions
Unigraphics (Siemens 11.0 up to NX 10.0 .u3d
PLM 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 Centers view on point of object in 3D
down SHIFT, and then right-click world, that is sets the center of interest
(COI) of camera.
Point to 3D world, hold down right Orbits the camera.
mouse button, and then drag the
pointer
Point to 3D world, hold down left and Pans the camera.
right mouse buttons, and then drag the
pointer
Point to 3D world, rotate mouse Zooms in/out the camera.
wheel forward/backward
-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 Adds or removes an object from
an object in 3D world current selection.
Point to 3D world, hold down CTRL Draws a selection box or path for
and the left mouse button, and then selecting objects in 3D world.
drag the pointer
Hold down CTRL, and then double- Duplicates a component, thereby
click a component in 3D world creating a copy of it in 3D world.
Hold down SHIFT, point to geometry Aligns a selected object using one to
of selected object in 3D world, and three vectors. Alignment vectors are
then drag the pointer to align indicated by yellow arrows and with
geometry point (red torus), and then the head of each vector a colored
release SHIFT torus. Dragging the head of a vector
allows you to realign the object but
-and-
will undo any following alignments.
Hold down SHIFT, point to geometry For example, dragging the green torus
of same object, and then drag the will cancel the alignment to blue torus
pointer to align geometry along a but not that of the red torus.
vector (green torus), and then release
Note: Shortcut uses 30 pixel
SHIFT
threshold, so you may need to move
-and- pointer a bit to execute action.
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 Snaps a selected object to same


manipulator for a selected object in position of geometry in one of three
3D world, hold down CTRL, and then axes. For example, floor object can be
point to geometry to snap axis to that snapped to same height of elevated
position object in Z-axis.
While dragging torus (origin) of Snaps object to geometry centers, for
manipulator for a selected object, hold example edge midpoints and face
down SHIFT and hover over centers.
geometry
While dragging torus (origin) of Allows object to be moved freely in
manipulator for a selected object, hold 3D world without snapping to other
down CTRL objects.
Interactive Picking
Action Function
While taking a measurement, hold Picks center point of geometry, for
down CTRL and hover over geometry example edge midpoints and face
centers.
While snapping a selected object, hold Picks center point of geometry, for
down CTRL and hover over geometry example edge midpoints and face
centers.
Robot Teaching
Action Function
When using curve selection tools, Trims path to selected point, thereby
hold down SHIFT to trim curve while removing any following points from
teaching a robot path 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, Removes a curve segment from path.
hold down CTRL to remove curve For example, four edges are selected,
segment while teaching a robot path and then one edge is removed from
path leaving three curve segments.
When using curve selection tools, Flips the normal of curve segment
hold down ALT to flip curve normal points, which can be verified by
while teaching a robot path visualizing curve points of path.
Geometry Editing
Action Function
While dragging a feature to another Retains the 3D position of feature
feature or node in the Component relative to its parent. Without SHIFT
Graph panel, hold down 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 Increases/decreases font size of code.
mouse wheel 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.
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.

To return a license, click Return.


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 None The installer interacts with the user and installs 3rd-party
Mode (.NET, DirectX and SQL Server) if required on the machine.
Example
setup.exe

Silent Silent Similar to Normal and Auto Update modes without requiring
Mode 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
setup.exe Silent

Silent /S, [ IniFile Similar to Silent mode but no screens or dialogs are shown
Mode ]
Example
with
config install.exe /S
file 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:
[SetupValues]
%AppFolder%=C:\Program Files\[ProductName]

Example
C:\output\setup.exe /S:"C:\setupvars.ini"

Note: /S accepts absolute paths only.

Uninstall /U, /S Uninstalls KUKA Sim Pro 3.0 silently from a device in which the
Silent /U parameter is responsible for passing the absolute path to the
Mode uninstall.xml file located in program's Uninstall folder.
Example
C:\output\setup.exe /U:"C:\Program Files\[Provider]\[Product]\Uninstall\uninstall.xml"
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.

Center Of Interest
To focus/center the camera, you can hold down CTRL and right-click an object
in a simulated environment.
View Selector
Since the 3D world has three dimensions (length, width/depth, height), your
point of view is indicated by a View Selector in the lower left corner of the
viewport.

The View Selector represents six standard views and the XYZ axes of the World
coordinate system. The arrows of the View Selector are interactive and can be
used to rotate the camera around its center of interest using a step value of 45
degrees. For example, at 10 degrees the camera would rotate to 45 degrees not
55 degrees.
Horizontal arrows can continuously orbit the camera left or right of its
current position.
Vertical arrows can orbit the camera above or below its current position
until the camera reaches a top or down view.
3D Mouse
If you are using a 3D mouse (SpaceMouse), camera navigation adheres to the
best practices of 3DConnexion and it is recommended to use a Rendering mode
of Shaded or Face edges shaded. Any adjustments to the 3D mouse itself would
need to be made directly to its hardware settings.
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.
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

CONTENTS HIDE

FILL VIEW

HEADLIGHT
CAMERA PROJECTION

RENDERING

FRAME VISIBILITY

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
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. By default, a feature placed in a
node does not inherit the node's offset. You can hold down SHIFT while
dragging and dropping a feature into a node to force the feature to inherit
the node's offset.
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.
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 3D 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.
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.
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.
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.
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.
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.
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. Robot Positions
5. Interactive Joint
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.
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.

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.

Settings Displays a list of actions to execute


when objects exceed their limits.
Color Highlights
Highlight node in 3D world exceeding
limit.
Stop at limits
Stop a running simulation.
Message Panel Output
Send info on exceeded limit to Output
panel.

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 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. Type of Component
2. Selected Components
3. Component Name
4. Lock Editing for Component Type
5. Visibility for Component Type
6. 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. By default, a node will retain its
location, but you can press and hold SHIFT when dragging a node in order for
the offset of a parent node to affect the new child node's location. 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.
OK Closes the dialog or saves changes
made to the metadata of an item.
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.
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


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 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 is set to advance in real time and emulates 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.
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.
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
CONNECTIVITY CONFIGURATION

CONNECTED VARIABLES
VARIABLE PAIR TABLE

PERFORMANCE STATISTICS
VARIABLE PAIR OPTIONS
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 retain its 3D world position when
moved elsewhere in a tree. Otherwise, you can hold down SHIFT to have a
feature update its 3D world position based on the location of its node and parent
feature.
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 and
Physics Container 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.
For example, the physics world would
not recognized the transition of
components moving in and out of a
Physics Path behavior. Therefore, the
path could be paired with a Physics
Container behavior to record the
containment of components.
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.
Containers in Physics World
The containment of physical objects can be accomplished by using a Physics
Container behavior. This allows you to define one or more nodes of a component
to act as containers for physical objects.
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 act as and contain the Physics
Container.
3. On the Modeling tab, in the Behavior group, click the Behavior arrow, and
then under Physics, click Container.
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.
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.
Using Program Variables
Variables can be added to routines in a robot program, and then used to add
complexity and define conditions for If and While statements. The scope of a
robot variable is limited to its routine. That is, statement cannot reference a
variable that is not in the same routine.
Supported variable types are:
Boolean
Integer
Real
String

CONTENTS HIDE

ADD VARIABLE

EDIT VARIABLE
ASSIGN VALUE

DEFINE CONDITIONAL STATEMENT


Add Variable
Supported types of variables can be added to any routine in a robot. The
variables of a routine can only be referenced by statements of that routine. Once
a variable is added to a routine, it is impossible to change the variable's type.
1. Click the Program tab, and the use the Jog command to select a robot.
2. In the Program Editor panel, select a routine.
3. In the Routine Properties panel, Add new variables list, click the type of
variable you want to add to the routine.
Edit Variable
The name and value of a variable can be edited directly in its routine's
properties.
1. Click the Program tab, and the use the Jog command to select a robot.
2. In the Program Editor panel, select a routine.
3. In the Routine Properties panel, Variables table, edit the Name and Value
fields of variables you want to update in the routine.
Note: Any change to a variable cannot be undone.
Assign Value
An Assign Variable statement allows you to set the value of a variable that
belongs to the same routine as the statement. In some cases, you would assign
values to variables at the start of a simulation or when a subroutine is executed
in its program. In other cases, you would increment the value of variables used
in a loop or subprocess of a routine. When you reset a simulation, a variable
reverts to its initial value.
1. Click the Program tab, and the use the Jog command to select a robot.
2. In the Program Editor panel, select the routine containing the variable you
want to assign a value, and then add an Assign Variable statement.
3. In the Statement Properties panel, do all of the following:
Set TargetProperty to be name of the variable you want to assign a
value.
In ValueExpression, define an expression that when evaluated returns
a value that can be assigned to the target variable.
Define Conditional Statement
Variables in a routine can be used to define a condition for executing If and
While statements.
1. Click the Program tab, and the use the Jog command to select a robot.
2. In the Program Editor panel, select a routine, and then do one of the
following:
To add a conditional statement for executing one of two branches of
statements, add an If statement.
To add a conditional statement for repeating the execution of a branch
of statements, add a While statement.
3. In the Statement Properties panel, in Condition, define an expression that
when evaluated returns a True or False value.
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 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.
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.
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.
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 Container Contains any number of components
with physical behaviors based on its
capacity.
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.
Collider Physics collider for a group of one or
more features.
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.
IndicateDistance Defines the distance for indicating an
available connection is near the
interface. If a physical connection,
green arrows will point from the
interface to each available connection.
If an abstract connection, the node of
the available connection will be
highlighted yellow.
MagnetDistance Defines the distance at which the
interface snaps to an available
connection, thereby completing Plug
and Play.
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.
IndicateDistance Defines the distance for indicating an
available connection is near the
interface. If a physical connection,
green arrows will point from the
interface to each available connection.
If an abstract connection, the node of
the available connection will be
highlighted yellow.
MagnetDistance Defines the distance at which the
interface snaps to an available
connection, thereby completing Plug
and Play.
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.

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.
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 is the height in Z-axis from
the robot's base to center point of axis
2.
LinkLength2 is the distance from the
center of axis 2 to the center of axis 3
using axis 2's direction.
LinkLength3 is the distance from the
center of axis 3 to the center of the
robot's wrist.
LinkLength4 is the offset from the wrist
center to the center line of the flange
node.
LinkLength5 is 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.
WristHeight Defines the height from the robot's
base to its wrist center. In some robot
models, WristHeight will be from the
wrist center to the floor level.
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.
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 will snap components to and from
waypoints at a time interval (linear
distance of the path divided by the
path's Speed).
Linear will move components to and
from waypoints in a straight line.
Cubic will move 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) is the same as Forward,
but the direction will automatically
switch to Backward if a component
arrives from the path's Output
connector.
Backward (Auto) is 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 will snap components to and from
waypoints at a time interval (linear
distance of the path divided by the
path's Speed).
Linear will move components to and
from waypoints in a straight line.
Cubic will move 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 added and removed using shortcuts and 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.
CapacityBlocks 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.
TransitionSignal 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.
RuleComponent Defines if rule processing is done for
the router's component or a
component contained by the router.
Physical Defines if the router is used for a
physical connection with another
component or internally with other
flow type behaviors.
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.
Clients Defines a list of other Action
Containers that send service requests,
for example pick and place actions.
Providers Defines a list of other Action
Containers that receive service
requests, for example a vehicle or
worker that performs an action for a
client.
Brokers Defines a list of other Action
Containers that manage pending
actions between clients and providers.
For example, several Action
Containers can be wired to a single
Action Container that used in a
Python Script for allocating tasks.


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,
which can be visualized in the 3D world as a text box resembling a post-it
(sticky) note.

A Note can be expanded and collapsed in the 3D world. If a component has


multiple notes, they are grouped together and navigation buttons are used to
view each note.

By default, the Note property of a Note is a visible in the Properties panel for a
selected component.
You can click the Note property of a Note to access its text editor.
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.
CompatibilityMode Defines if the script was written using
old generation API and Python
version 2.5, thereby a wrapper is used
to implement the script.
Script Defines the script of the behavior.
Editor
In order to access the script editor:
In the Component Graph panel, Component Node Tree, find the Python
Script behavior you want to edit, and then double-click that behavior.
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.
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.

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
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.
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.
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.

Collider Length Defines the size of the cable's collider


relative to cable length.
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 Container
A Physics Container allows you to store physical objects in a static container.
Properties
Name Description
Name Defines the name of the container.
Statistics Defines a Statistics behavior that
collects statistics about the container.
Capacity Defines the amount of components
the container can contain 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 behavior
that signals the arrival and departure
of components to and from the
container. A True value signals the
arrival of a component. A False value
signals the departure of a component.
In some cases, components may fall
into or out of the container. In other
cases, components may be grabbed
from or released to the container.
Location Defines a Frame feature that acts as
the container's physical location.
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.
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 Defines the processing time and rules
for handling components that trigger
the sensor.
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 a robot
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 angle between sides b and
c.
sass(a, beta, c) Returns the length of side b.
sssa(a, b, c) Returns the angle of between sides a,
b and c.

Quadrilaterals

Name Description
sasasa(A, a, B, b, C) Returns the angle between sides C and
D.
sasass(A, a, B, b, C) Returns the length of side D.
sasssa1(A, a, B, C, D) Returns the angle between sides C and
B.
sasssa2(A, a, B, C, D) Returns the angle between sides C and
D.

Angle Conversion Functions


Name Description
degree(a) Converts a given radian value to
degree value.
radians(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)
Same as Distribution functions but
exponential(stream, lambda)
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 ~a
complement /
Matrix 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 a>=b
equal
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 a*=b
assign
Divide and assign a/=b
Modulo and a%=b
assign
Add and assign a+=b
Subtract and a-=b
assign
Shift left and a<<=b
assign
Shift right and a>>=b
assign
Bitwise AND and a&=b
assign
Bitwise XOR and a^=b
assign
Bitwise OR and a|=b
assign
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, Basic arithmetic operators.
Division
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, Compares arguments, and then returns
Greater Than, Greater Than or Equal 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
String < String, String <= String,
characters in strings.
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 unit
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 °/s Angular Canonical deg/s
second velocity
degrees per °/s2 Angular Canonical deg/s^2
second squared acceleration
drams dr Mass None None
feet ft Distance None None
feet per second ft/s2 Acceleration None ft/s^2
squared
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 None None
velocity
grads per second grad/s2 Angular None grad/s^2
squared acceleration
gram degrees per g°/s Angular None gdeg/s
second momentum
gram grads per ggrad/s Angular None None
second momentum
gram metres per gm/s Momentum None None
second
gram radians per g rad/s Angular None None
second momentum
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/s2 Acceleration None in/s^2
squared

Kelvin K Temperature Canonical None


kilogram degrees kg°/s Angular Canonical kgdeg/s
per second momentum
kilogram grads kggrad/s Angular None None
per second momentum
kilogram metres kgm/s Momentum Canonical None
per second
kilogram radians kg rad/s Angular None None
per second momentum
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/s2 Acceleration None m/s^2
squared
microseconds µs Time None mus
millilitres ml Volume.Liquid None None
millimetres mm Distance Canonical None
millimetres per mm/s Velocity Canonical None
second
millimetres per mm/s2 Acceleration Canonical mm/s^2
second squared
milliseconds ms Time None None
minutes min Time None None
newton Ncm Torque None None
centimetres

newton metres Nmm Torque None None


newton Nmm Torque Canonical None
millimetres
newtons N Force Canonical None
ounces oz Mass None None
pints pt Volume.Liquid None None
pound degrees per lb°/s Angular None lbdeg/s
second momentum
pounds lb Mass None None
pounds force lbf Force None None
quarts qt Volume.Liquid None None
radians rad Angle None None
radians per rad/s Angular None None
second velocity
radians per rad/s2 Angular None rad/s^2
second squared acceleration
seconds s Time None None
short tons t Mass None None
square cm2 Area none cm^2
centimetres
square feet sqft Area None None
square inches sqin Area None None
square metres m2 Area None m^2
square mm2 Area None mm^2
millimetres
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.
Collider
A Collider feature allows you to create collider subgroups of features and
custom-shaped colliders for simulating physics.

Name Description
Name Defines the name of collider.
Collider Defines the shape of collider.
NULL Collider is not defined.

#None
Collider is inactive.
#Box
Collider is active and is shaped using
minimum bound box of all features
nested with collider.
#Boxes
Collider is active and is shaped using
minimum bound boxes for each
feature nested with collider.
#Precise
Collider is active and is shaped to fit
faces of geometry for each feature
nested with collider as precise as
possible.

Padding Defines more or less space for the


area covered by collider.
Feature Defines a feature by name to
reference as the shape of collider.
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 in the feature can
be interactively picked in the 3D
world.
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, Triggered by the
vcGeometryContainer rebuilding of a
target, vcMatrix matrix, component's feature tree.
List of
feature is the Python
vcGeometryContainer
feature object.
containers
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 pas 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.
How It Works
CONTENTS

NAVIGATION
SELECTION
VISUALIZATION

BUILDING A LAYOUT
RUNNING A SIMULATION

TEACHING A ROBOT
MODELING A COMPONENT

CREATING A DRAWING
User Interface
CONTENTS

SIMULATION CONTROLS
VIEWS
BACKSTAGE

DRAWING
LAYOUT

MODELING
ROBOT

PANELS

CELL GRAPH
COMPONENT GRAPH

CONTROLLER GRAPH
ECATALOG

JOB MAP

JOG
OUTPUT

PROPERTIES
Tasks
CONTENTS

CATALOG
COMPONENTS
CONNECTIVITY

DRAWINGS
LAYOUTS

MATERIALS
MODELING

PHYSICS

ROBOTS
SIMULATIONS

WORKSPACE
Documents
CONTENTS

COMPONENTS
LAYOUTS
Reference Guide
CONTENTS

BEHAVIORS
FEATURES
EXPRESSIONS

PYTHON API
NET API
Catalog
CONTENTS

COLLECTION GROUPS
ADD COLLECTIONS AND SOURCES TO GROUPS
ADDING A COLLECTION GROUP

DELETING A COLLECTION GROUP


REMOVING COLLECTIONS AND SOURCES FROM GROUPS

COLLECTIONS
ADDING A COLLECTION

ADDING ITEMS TO COLLECTIONS

DELETING A COLLECTION
REMOVING ITEMS FROM COLLECTIONS

ITEMS
FILTERING ITEMS

SEARCHING FOR ITEMS

SORTING ITEMS
VIEWING AND EDITING METADATA

VIEWING ITEMS

LOCAL COPIES

DELETING A LOCAL COPY


FORCING THE UPDATE OF LOCAL COPIES

MAPPING LOCAL FOLDER TO REMOTE SOURCE

SMART COLLECTIONS

ADDING A SMART COLLECTION

DELETING A SMART COLLECTION

EDITING SMART COLLECTIONS


SOURCES

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
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


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


CONTAINERS IN PHYSICS WORLD

JOINTS IN PHYSICS WORLD


PATHS IN PHYSICS WORLD
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

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


USING PROGRAM VARIABLES

VISUALIZING ROBOT MOTION PATHS


Simulations
CONTENTS

EXPORTING SIMULATION AS IMAGE


PRINTING SIMULATION AS IMAGE
RECORDING SIMULATION AS 3D PDF

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
CLIPBOARD

CLONING SELECTED OBJECTS


COPYING AND PASTING A SELECTION

DELETING A SELECTION
PANELS

DOCKING A PANEL

GROUPING PANELS
HIDING PANELS

RESTORING PANELS
VIEWING PANELS

QUICK ACCESS TOOLBAR

ADDING COMMANDS TO THE QAT


CUSTOMIZING THE QAT

REMOVING COMMANDS FROM THE QAT


Behaviors
CONTENTS

INTERFACES
ONE TO MANY INTERFACE
ONE TO ONE INTERFACE

KINEMATICS
ARTICULATED KINEMATICS

CARTESIAN KINEMATICS
DELTA KINEMATICS

PARALLELOGRAM KINEMATICS

PYTHON KINEMATICS
SCARA KINEMATICS

MATERIAL FLOW
CAPACITY CONTROLLER

COMPONENT CONTAINER

COMPONENT CREATOR
COMPONENT FLOW PROXY

ONE WAY PATH

ROUTING RULE

TWO WAY PATH


MISCELLANEOUS

ACTION CONTAINER

DOCUMENT LINK

JOG INFO

NOTE

PYTHON SCRIPT
STATISTICS

TRANSPORT PROTOCOL
VEHICLE
PHYSICS

PHYSICS CABLE

PHYSICS CONTAINER
PHYSICS ENTITY
PHYSICS JOINT

PHYSICS PATH
ROBOTICS
BASE CONTAINER
ROBOT CONTROLLER

ROBOT EXECUTOR

SERVO CONTROLLER
TOOL CONTAINER

SENSORS
COMPONENT PATH SENSOR

PROCESS POINT SENSOR

RAYCAST SENSOR
VOLUME SENSOR

SIGNALS

BOOLEAN SIGNAL
BOOLEAN SIGNAL MAP

COMPONENT SIGNAL

INTEGER SIGNAL

MATRIX SIGNAL
REAL SIGNAL

STRING SIGNAL
Features
CONTENTS

ANGULAR CLONE
BLOCK
COLLIDER

CONE
CYLINDER

EXTRUDE
FEATURES

FRAME

GEOMETRY
LINEAR CLONE

MIRROR
PLANE

PYTHON FEATURE

REVOLVE
SPHERE

SWITCH

TEXT

TRANSFORM
WEDGE
Expressions
CONTENTS

FUNCTIONS
GROUPING OPERATORS
OPERATOR PRECEDENCE

TYPE CONVERSION
TYPES AND OPERATORS

UNIT SPECIFICATION
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.

You might also like