Professional Documents
Culture Documents
HOW IT WORKS
USER INTERFACE
TASKS
DOCUMENTS
REFERENCE GUIDE
RENDERING
IMPORT AND EXPORT
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.
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
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.
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"
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.
Robot Tools
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.
In the layout, you can add and edit components to form a configuration.
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 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
EXTERNAL AXES
SYNCHRONIZING DATA
ROBOT VARIABLES
PROJECT FILES
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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
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
SELECTING MATERIALS
SETTING MATERIALS
DELETING MATERIALS FROM LAYOUT
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.
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.
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.
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.
#Limited
Attempts to limit movement.
#Locked
Attempts to restrict all movement.
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.
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
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
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).
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.
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.
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.
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.
#Limited
Attempts to limit movement.
#Locked
Attempts to restrict all movement.
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.
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.
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
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.
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.
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.
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
1 && 1 is true
0 && z<3 false, z<3 is never 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
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
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
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
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.
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
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.
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
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.
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
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.
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.
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.
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.
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.
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.
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:
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
COLLECTIONS
ADDING A COLLECTION
DELETING A COLLECTION
REMOVING ITEMS FROM COLLECTIONS
ITEMS
FILTERING ITEMS
SORTING ITEMS
VIEWING AND EDITING METADATA
VIEWING ITEMS
LOCAL COPIES
SMART COLLECTIONS
REMOVING SOURCES
SHOWING SOURCES
USING SOURCES
Components
CONTENTS
ADDING COMPONENTS
ALIGNING COMPONENTS
ATTACHING COMPONENTS
REPORTING STATISTICS
SELECTING COMPONENTS
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
PAIRING VARIABLES
Drawings
CONTENTS
CREATING A DIMENSION
CREATING A DRAWING
CREATING A DRAWING TEMPLATE
CREATING AN ANNOTATION
EXPORTING A DRAWING
PRINTING A DRAWING
Layouts
CONTENTS
CLOSING A LAYOUT
EXPORTING GEOMETRY OF LAYOUTS
OPENING A LAYOUT
COLLAPSING FEATURES
CREATING A NEW COMPONENT
INVERTING GEOMETRY
MATERIALS
MERGING FACES
MERGING FEATURES
SIMPLIFYING GEOMETRY
SLICING GEOMETRY
SPLITTING FEATURES
SEARCHING COMPONENT DATA
SAVING A COMPONENT
PHYSICS WORLD
CABLES IN PHYSICS WORLD
COLLIDERS IN PHYSICS WORLD
DETECTING COLLISIONS
EDITING BASE AND TOOL FRAMES
RUNNING A SIMULATION
USING A RUNTIME
DELETING A SELECTION
PANELS
DOCKING A PANEL
GROUPING PANELS
HIDING PANELS
RESTORING PANELS
VIEWING PANELS
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
ROUTING RULE
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
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.