<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[RoboDK Forum - RoboDK API]]></title>
		<link>https://robodk.com/forum/</link>
		<description><![CDATA[RoboDK Forum - https://robodk.com/forum]]></description>
		<pubDate>Thu, 22 Oct 2026 05:52:00 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Import the cartesian points with the external axes values]]></title>
			<link>https://robodk.com/forum/Thread-Import-the-cartesian-points-with-the-external-axes-values</link>
			<pubDate>Wed, 16 Sep 2026 06:14:09 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=7552">Kevin.Zhang</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Import-the-cartesian-points-with-the-external-axes-values</guid>
			<description><![CDATA[I have a series of Cartesian points, and I have already determined the corresponding external axes values for these points.<br />
I want to import these points into RoboDK while preserving the external axis value associated with each point. How should I do this by C# API?<br />
Thanks very much!]]></description>
			<content:encoded><![CDATA[I have a series of Cartesian points, and I have already determined the corresponding external axes values for these points.<br />
I want to import these points into RoboDK while preserving the external axis value associated with each point. How should I do this by C# API?<br />
Thanks very much!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Saving files license problem]]></title>
			<link>https://robodk.com/forum/Thread-Saving-files-license-problem</link>
			<pubDate>Wed, 09 Sep 2026 17:21:11 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=11191">hamada abaza</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Saving-files-license-problem</guid>
			<description><![CDATA[When I try to save a file the massage in the picture appears.<br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=7874" target="_blank" title="">Untitled.png</a> (Size: 144.37 KB / Downloads: 84)
]]></description>
			<content:encoded><![CDATA[When I try to save a file the massage in the picture appears.<br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=7874" target="_blank" title="">Untitled.png</a> (Size: 144.37 KB / Downloads: 84)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Physical Robot Does Not Move When Using Ultralytics YOLO in RoboDK Python Script]]></title>
			<link>https://robodk.com/forum/Thread-Physical-Robot-Does-Not-Move-When-Using-Ultralytics-YOLO-in-RoboDK-Python-Script</link>
			<pubDate>Wed, 19 Aug 2026 12:14:34 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=10107">Muhammad Faizan Ahmed</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Physical-Robot-Does-Not-Move-When-Using-Ultralytics-YOLO-in-RoboDK-Python-Script</guid>
			<description><![CDATA[Hello everyone,<br />
<br />
I am currently working on a project in RoboDK involving two JAKA collaborative robots (Zu7 and Zu12). I am using a Python script in RoboDK to control the robots and integrate a real-time vision system using a USB webcam and a YOLO11n model.<br />
<br />
My robot movement program works correctly and the physical robots move as expected when I run the script without the YOLO/Ultralytics import.<br />
<br />
However, when I add:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>from ultralytics import YOLO</code></div></div><br />
the RoboDK simulation continues to work, but the physical robots do not move. Interestingly, if I comment out the Ultralytics import, the physical robot movement works again.<br />
<br />
I am using:<ul class="mycode_list"><li>RoboDK<br />
</li>
<li>Python 3.10.11<br />
</li>
<li>Ultralytics <br />
</li>
<li>OpenCV <br />
</li>
<li>YOLO11n<br />
</li>
<li>JAKA Zu7 and Zu12<br />
</li>
</ul>
The Ultralytics package is installed in the same Python virtual environment used by RoboDK, and importing YOLO works successfully in a standalone Python test.<br />
<br />
My intended workflow is:<ul class="mycode_list"><li>Move the robots to predefined positions using RoboDK.<br />
</li>
<li>Start the webcam-based YOLO11n vision system.<br />
</li>
<li>Detect the needle and gripper states.<br />
</li>
<li>Based on the detection, continue the robot movement sequence.<br />
</li>
<li>Execute the same sequence on the physical JAKA robots.<br />
</li>
</ul>
The main issue is that the RoboDK simulation executes the movements, but the physical robot does not move when Ultralytics is imported.<br />
<ul class="mycode_list"><li>Could the Ultralytics/PyTorch libraries interfere with RoboDK's physical robot driver, Python execution, or communication with the robot?<br />
</li>
<li>Is there a recommended way to run YOLO/OpenCV vision processing alongside RoboDK's physical robot control without preventing the robot driver from executing?<br />
</li>
<li>Would it be better to run the vision processing in a separate Python process/thread and communicate the detection result to the RoboDK script?<br />
</li>
</ul>
<br />
Any guidance on how to diagnose this issue would be greatly appreciated. See the attached code file for reference.<br />
Thank you.<br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/txt.png" title="Text Document" border="0" alt=".txt" />
&nbsp;&nbsp;<a href="attachment.php?aid=7852" target="_blank" title="">Complete Code.txt</a> (Size: 17.49 KB / Downloads: 84)
]]></description>
			<content:encoded><![CDATA[Hello everyone,<br />
<br />
I am currently working on a project in RoboDK involving two JAKA collaborative robots (Zu7 and Zu12). I am using a Python script in RoboDK to control the robots and integrate a real-time vision system using a USB webcam and a YOLO11n model.<br />
<br />
My robot movement program works correctly and the physical robots move as expected when I run the script without the YOLO/Ultralytics import.<br />
<br />
However, when I add:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>from ultralytics import YOLO</code></div></div><br />
the RoboDK simulation continues to work, but the physical robots do not move. Interestingly, if I comment out the Ultralytics import, the physical robot movement works again.<br />
<br />
I am using:<ul class="mycode_list"><li>RoboDK<br />
</li>
<li>Python 3.10.11<br />
</li>
<li>Ultralytics <br />
</li>
<li>OpenCV <br />
</li>
<li>YOLO11n<br />
</li>
<li>JAKA Zu7 and Zu12<br />
</li>
</ul>
The Ultralytics package is installed in the same Python virtual environment used by RoboDK, and importing YOLO works successfully in a standalone Python test.<br />
<br />
My intended workflow is:<ul class="mycode_list"><li>Move the robots to predefined positions using RoboDK.<br />
</li>
<li>Start the webcam-based YOLO11n vision system.<br />
</li>
<li>Detect the needle and gripper states.<br />
</li>
<li>Based on the detection, continue the robot movement sequence.<br />
</li>
<li>Execute the same sequence on the physical JAKA robots.<br />
</li>
</ul>
The main issue is that the RoboDK simulation executes the movements, but the physical robot does not move when Ultralytics is imported.<br />
<ul class="mycode_list"><li>Could the Ultralytics/PyTorch libraries interfere with RoboDK's physical robot driver, Python execution, or communication with the robot?<br />
</li>
<li>Is there a recommended way to run YOLO/OpenCV vision processing alongside RoboDK's physical robot control without preventing the robot driver from executing?<br />
</li>
<li>Would it be better to run the vision processing in a separate Python process/thread and communicate the detection result to the RoboDK script?<br />
</li>
</ul>
<br />
Any guidance on how to diagnose this issue would be greatly appreciated. See the attached code file for reference.<br />
Thank you.<br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/txt.png" title="Text Document" border="0" alt=".txt" />
&nbsp;&nbsp;<a href="attachment.php?aid=7852" target="_blank" title="">Complete Code.txt</a> (Size: 17.49 KB / Downloads: 84)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Not generating output file using API]]></title>
			<link>https://robodk.com/forum/Thread-Not-generating-output-file-using-API</link>
			<pubDate>Wed, 05 Aug 2026 14:41:04 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=10958">samrobodk</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Not-generating-output-file-using-API</guid>
			<description><![CDATA[I need to generate an offline robot program by directly recording a stream of Python API commands.<br />
<br />
The problem I am having is that no file is created, and I am at a complete loss. I have tried 100+ variants and looked at every doc and example I can find.<br />
<br />
Manual program generation and MakeProgram() both work, but I need the stream recorded instead.<br />
<br />
ProgramStart returns 0 errors, but no robot program file is generated after RDK.Finish().<br />
<br />
I reproduced the same issue with a clean ABB station using ABB_RAPID_IRC5 and separately with FANUC using Fanuc_R30i.<br />
<br />
Is there an additional step required when using RUNMODE_MAKE_ROBOTPROG and ProgramStart, , or am I misunderstanding the intended use of this run mode? <br />
<br />
RoboDK 6.0.6, Python 3.13, robodk package 5.9.4. <br />
<br />
Code:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>from robodk.robolink import *<br />
import time<br />
RDK = Robolink()<br />
RDK.AddFile("C:/Users/Sam/code/robodk_stations/test_station.rdk")<br />
robot = RDK.Item("ABB CRB 1300-7/1.4", ITEM_TYPE_ROBOT)<br />
t1 = RDK.Item("safe_target_1", ITEM_TYPE_TARGET)<br />
t2 = RDK.Item("safe_target_2", ITEM_TYPE_TARGET)<br />
RDK.setRunMode(RUNMODE_MAKE_ROBOTPROG)<br />
errors = RDK.ProgramStart(<br />
&nbsp;&nbsp;&nbsp;&nbsp;"Prog123",<br />
&nbsp;&nbsp;&nbsp;&nbsp;"C:/Users/Sam/Downloads/",<br />
&nbsp;&nbsp;&nbsp;&nbsp;"ABB_RAPID_IRC5",<br />
&nbsp;&nbsp;&nbsp;&nbsp;robot<br />
)<br />
print("ProgramStart errors:", errors)<br />
robot.MoveJ(t1)<br />
robot.MoveL(t2)<br />
RDK.Finish()</code></div></div><br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/robodk.png" title="RoboDK station" border="0" alt=".rdk" />
&nbsp;&nbsp;<a href="attachment.php?aid=7838" target="_blank" title="">test_station.rdk</a> (Size: 1.65 MB / Downloads: 108)
]]></description>
			<content:encoded><![CDATA[I need to generate an offline robot program by directly recording a stream of Python API commands.<br />
<br />
The problem I am having is that no file is created, and I am at a complete loss. I have tried 100+ variants and looked at every doc and example I can find.<br />
<br />
Manual program generation and MakeProgram() both work, but I need the stream recorded instead.<br />
<br />
ProgramStart returns 0 errors, but no robot program file is generated after RDK.Finish().<br />
<br />
I reproduced the same issue with a clean ABB station using ABB_RAPID_IRC5 and separately with FANUC using Fanuc_R30i.<br />
<br />
Is there an additional step required when using RUNMODE_MAKE_ROBOTPROG and ProgramStart, , or am I misunderstanding the intended use of this run mode? <br />
<br />
RoboDK 6.0.6, Python 3.13, robodk package 5.9.4. <br />
<br />
Code:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>from robodk.robolink import *<br />
import time<br />
RDK = Robolink()<br />
RDK.AddFile("C:/Users/Sam/code/robodk_stations/test_station.rdk")<br />
robot = RDK.Item("ABB CRB 1300-7/1.4", ITEM_TYPE_ROBOT)<br />
t1 = RDK.Item("safe_target_1", ITEM_TYPE_TARGET)<br />
t2 = RDK.Item("safe_target_2", ITEM_TYPE_TARGET)<br />
RDK.setRunMode(RUNMODE_MAKE_ROBOTPROG)<br />
errors = RDK.ProgramStart(<br />
&nbsp;&nbsp;&nbsp;&nbsp;"Prog123",<br />
&nbsp;&nbsp;&nbsp;&nbsp;"C:/Users/Sam/Downloads/",<br />
&nbsp;&nbsp;&nbsp;&nbsp;"ABB_RAPID_IRC5",<br />
&nbsp;&nbsp;&nbsp;&nbsp;robot<br />
)<br />
print("ProgramStart errors:", errors)<br />
robot.MoveJ(t1)<br />
robot.MoveL(t2)<br />
RDK.Finish()</code></div></div><br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/robodk.png" title="RoboDK station" border="0" alt=".rdk" />
&nbsp;&nbsp;<a href="attachment.php?aid=7838" target="_blank" title="">test_station.rdk</a> (Size: 1.65 MB / Downloads: 108)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Unable to get anything from getDI]]></title>
			<link>https://robodk.com/forum/Thread-Unable-to-get-anything-from-getDI</link>
			<pubDate>Mon, 27 Jul 2026 19:47:03 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=10107">Muhammad Faizan Ahmed</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Unable-to-get-anything-from-getDI</guid>
			<description><![CDATA[I am currently using Jaka robot and reading its input using robot.getDI(3) command. Even though the DI pin on robot controller is already high but the robot.getDI() command is not showing anything. I also read similar queries on the forum, but i did not work. I also changed the data type to int as the output from getDI() command is string. I'm able to set the digital output but can read the digital inputs.]]></description>
			<content:encoded><![CDATA[I am currently using Jaka robot and reading its input using robot.getDI(3) command. Even though the DI pin on robot controller is already high but the robot.getDI() command is not showing anything. I also read similar queries on the forum, but i did not work. I also changed the data type to int as the output from getDI() command is string. I'm able to set the digital output but can read the digital inputs.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Controlling OnRobot Eyes Camera with Python in RoboDK]]></title>
			<link>https://robodk.com/forum/Thread-Controlling-OnRobot-Eyes-Camera-with-Python-in-RoboDK</link>
			<pubDate>Sat, 25 Jul 2026 22:16:40 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=10107">Muhammad Faizan Ahmed</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Controlling-OnRobot-Eyes-Camera-with-Python-in-RoboDK</guid>
			<description><![CDATA[Hi everyone,<br />
<br />
I'm currently working on a <span style="font-weight: bold;" class="mycode_b">JAKA Zu7</span> robot with an <span style="font-weight: bold;" class="mycode_b">OnRobot RG6 gripper</span> and an <span style="font-weight: bold;" class="mycode_b">OnRobot Eyes</span> camera.<br />
<br />
At the moment, I'm controlling the robot movements and the RG6 gripper successfully using <span style="font-weight: bold;" class="mycode_b">Python scripts both in RoboDK and actual.</span> My next goal is to integrate the OnRobot Eyes camera into my Python workflow.<br />
<br />
I would like to know:<ul class="mycode_list"><li>Is it possible to control the <span style="font-weight: bold;" class="mycode_b">OnRobot Eyes</span> camera directly from a Python script?<br />
</li>
<li>Is there a Python API or SDK available for the camera?<br />
</li>
<li>How can I trigger an image capture or object detection from Python?<br />
</li>
<li>Once an object is detected, how can I retrieve its pick coordinates (X, Y, Z and orientation) so that I can send them to RoboDK and move the robot to pick the object?<br />
</li>
<li>Has anyone integrated the OnRobot Eyes camera with RoboDK while controlling everything through Python?<br />
</li>
</ul>
<br />
I've gone through the OnRobot Learning courses and documentation but couldn't find any examples showing Python integration with the OnRobot Eyes camera.<br />
<br />
If anyone has experience with this setup or can point me to relevant documentation, example code, or a recommended workflow, I would really appreciate your help.<br />
<br />
Thank you!]]></description>
			<content:encoded><![CDATA[Hi everyone,<br />
<br />
I'm currently working on a <span style="font-weight: bold;" class="mycode_b">JAKA Zu7</span> robot with an <span style="font-weight: bold;" class="mycode_b">OnRobot RG6 gripper</span> and an <span style="font-weight: bold;" class="mycode_b">OnRobot Eyes</span> camera.<br />
<br />
At the moment, I'm controlling the robot movements and the RG6 gripper successfully using <span style="font-weight: bold;" class="mycode_b">Python scripts both in RoboDK and actual.</span> My next goal is to integrate the OnRobot Eyes camera into my Python workflow.<br />
<br />
I would like to know:<ul class="mycode_list"><li>Is it possible to control the <span style="font-weight: bold;" class="mycode_b">OnRobot Eyes</span> camera directly from a Python script?<br />
</li>
<li>Is there a Python API or SDK available for the camera?<br />
</li>
<li>How can I trigger an image capture or object detection from Python?<br />
</li>
<li>Once an object is detected, how can I retrieve its pick coordinates (X, Y, Z and orientation) so that I can send them to RoboDK and move the robot to pick the object?<br />
</li>
<li>Has anyone integrated the OnRobot Eyes camera with RoboDK while controlling everything through Python?<br />
</li>
</ul>
<br />
I've gone through the OnRobot Learning courses and documentation but couldn't find any examples showing Python integration with the OnRobot Eyes camera.<br />
<br />
If anyone has experience with this setup or can point me to relevant documentation, example code, or a recommended workflow, I would really appreciate your help.<br />
<br />
Thank you!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Simulating an imported ABB robot program]]></title>
			<link>https://robodk.com/forum/Thread-Simulating-an-imported-ABB-robot-program</link>
			<pubDate>Wed, 22 Jul 2026 23:24:53 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=7192">HenryInUtah</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Simulating-an-imported-ABB-robot-program</guid>
			<description><![CDATA[I am using RoboDK in a PySide application and have a couple confusing things that I cannot figure out. The attached station has a couple small tool change paths. I have exported both of those as *.mod files that are also attached.<br />
<br />
I know that I can simulate them in RoboDK as normal, but there are a lot of steps in our process that happen between authoring the paths and simulating them later.<br />
<br />
When I use the Python API to import the mod files, it pops up a couple dialog boxes that get in the way and require user input.  I need to suppress those dialog boxes and work around them somehow.  Here are the two dialogs:<br />

<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=7811" target="_blank" title="">Import Options.png</a> (Size: 11.72 KB / Downloads: 100)
<br />

<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=7812" target="_blank" title="">Import Summary.png</a> (Size: 10.79 KB / Downloads: 90)
<br />
The program seems to import perfectly. However, the API says that the program is not valid. If I double click the program in the tree it will run as expected.  If I select the program and press F5 it will update the program and the icon returns to "valid".  But if the script tries to use the Update() method on the program it fails.<br />
<br />
If you open the station, there is a "Import Robot Program" script that goes through all of these steps. I hope that you see the same results that I see :)<br />
<br />
Does anyone have some suggestions of what I should try?  Or what I am doing wrong - which is more likely.<br />
<br />
Thanks,<br />
Henry<br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/prog.png" title="ABB Rapid Program" border="0" alt=".mod" />
&nbsp;&nbsp;<a href="attachment.php?aid=7809" target="_blank" title="">SpindleApproach.mod</a> (Size: 2.51 KB / Downloads: 119)
<br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/prog.png" title="ABB Rapid Program" border="0" alt=".mod" />
&nbsp;&nbsp;<a href="attachment.php?aid=7810" target="_blank" title="">SpindleRetract.mod</a> (Size: 2.06 KB / Downloads: 103)
<br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/robodk.png" title="RoboDK station" border="0" alt=".rdk" />
&nbsp;&nbsp;<a href="attachment.php?aid=7813" target="_blank" title="">Tool Change Development Simplified.rdk</a> (Size: 3.29 MB / Downloads: 106)
]]></description>
			<content:encoded><![CDATA[I am using RoboDK in a PySide application and have a couple confusing things that I cannot figure out. The attached station has a couple small tool change paths. I have exported both of those as *.mod files that are also attached.<br />
<br />
I know that I can simulate them in RoboDK as normal, but there are a lot of steps in our process that happen between authoring the paths and simulating them later.<br />
<br />
When I use the Python API to import the mod files, it pops up a couple dialog boxes that get in the way and require user input.  I need to suppress those dialog boxes and work around them somehow.  Here are the two dialogs:<br />

<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=7811" target="_blank" title="">Import Options.png</a> (Size: 11.72 KB / Downloads: 100)
<br />

<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=7812" target="_blank" title="">Import Summary.png</a> (Size: 10.79 KB / Downloads: 90)
<br />
The program seems to import perfectly. However, the API says that the program is not valid. If I double click the program in the tree it will run as expected.  If I select the program and press F5 it will update the program and the icon returns to "valid".  But if the script tries to use the Update() method on the program it fails.<br />
<br />
If you open the station, there is a "Import Robot Program" script that goes through all of these steps. I hope that you see the same results that I see :)<br />
<br />
Does anyone have some suggestions of what I should try?  Or what I am doing wrong - which is more likely.<br />
<br />
Thanks,<br />
Henry<br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/prog.png" title="ABB Rapid Program" border="0" alt=".mod" />
&nbsp;&nbsp;<a href="attachment.php?aid=7809" target="_blank" title="">SpindleApproach.mod</a> (Size: 2.51 KB / Downloads: 119)
<br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/prog.png" title="ABB Rapid Program" border="0" alt=".mod" />
&nbsp;&nbsp;<a href="attachment.php?aid=7810" target="_blank" title="">SpindleRetract.mod</a> (Size: 2.06 KB / Downloads: 103)
<br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/robodk.png" title="RoboDK station" border="0" alt=".rdk" />
&nbsp;&nbsp;<a href="attachment.php?aid=7813" target="_blank" title="">Tool Change Development Simplified.rdk</a> (Size: 3.29 MB / Downloads: 106)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Alternative way to obtain all IK solutions for FANUC CRX-10iA]]></title>
			<link>https://robodk.com/forum/Thread-Alternative-way-to-obtain-all-IK-solutions-for-FANUC-CRX-10iA</link>
			<pubDate>Wed, 22 Jul 2026 04:48:08 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=10935">Shigeaki Takatsu</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Alternative-way-to-obtain-all-IK-solutions-for-FANUC-CRX-10iA</guid>
			<description><![CDATA[Hello,<br />
<br />
I am using a FANUC CRX-10iA with RoboDK 5.6.7.<br />
<br />
I found the existing forum threads explaining that multiple configurations are<br />
not currently supported for FANUC CRX robots.<br />
<br />
I would like to know whether there is any alternative way to obtain all valid<br />
inverse-kinematics solutions for a given Cartesian pose.<br />
<br />
In my test, SolveIK_All() returns only one solution.<br />
<br />
However, I confirmed that another valid joint posture exists for exactly the<br />
same Cartesian pose. I verified this using SolveFK(), and the pose difference<br />
was effectively zero.<br />
<br />
I also tried SolveIK() with the other valid joint posture provided as<br />
joints_approx, but RoboDK still returned the same single solution.<br />
<br />
Is there any alternative API, solver, robot model setting, or recommended<br />
method to obtain all valid IK solutions for the CRX-10iA?<br />
<br />
Thank you.]]></description>
			<content:encoded><![CDATA[Hello,<br />
<br />
I am using a FANUC CRX-10iA with RoboDK 5.6.7.<br />
<br />
I found the existing forum threads explaining that multiple configurations are<br />
not currently supported for FANUC CRX robots.<br />
<br />
I would like to know whether there is any alternative way to obtain all valid<br />
inverse-kinematics solutions for a given Cartesian pose.<br />
<br />
In my test, SolveIK_All() returns only one solution.<br />
<br />
However, I confirmed that another valid joint posture exists for exactly the<br />
same Cartesian pose. I verified this using SolveFK(), and the pose difference<br />
was effectively zero.<br />
<br />
I also tried SolveIK() with the other valid joint posture provided as<br />
joints_approx, but RoboDK still returned the same single solution.<br />
<br />
Is there any alternative API, solver, robot model setting, or recommended<br />
method to obtain all valid IK solutions for the CRX-10iA?<br />
<br />
Thank you.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Guidance on PLC Integration and Robot Control in RoboDK]]></title>
			<link>https://robodk.com/forum/Thread-Guidance-on-PLC-Integration-and-Robot-Control-in-RoboDK</link>
			<pubDate>Mon, 20 Jul 2026 10:12:44 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=10930">pritesh</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Guidance-on-PLC-Integration-and-Robot-Control-in-RoboDK</guid>
			<description><![CDATA[I am currently working on an industrial automation project and would like to learn the complete process of integrating a PLC with RoboDK and controlling a robot using PLC logic.<br />
<br />
My objective is to build a complete simulation where the PLC communicates with RoboDK, exchanges input/output signals, and controls the robot's movements and program execution in real time.<br />
I would appreciate your guidance on the following:<ul class="mycode_list"><li>How to connect a PLC with RoboDK.<br />
</li>
<li>Supported communication protocols (such as EtherNet/IP, PROFINET, Modbus TCP, OPC UA, etc.).<br />
</li>
<li>How to configure communication between the PLC and RoboDK.<br />
</li>
<li>How to send and receive I/O signals.<br />
</li>
<li>How to control robot movements and execute robot programs using PLC logic.<br />
</li>
<li>Any documentation, tutorials, sample projects, or training resources that explain the complete workflow from start to finish.<br />
</li>
</ul>
I am eager to learn the entire setup and would greatly appreciate any recommendations or learning materials you can provide.]]></description>
			<content:encoded><![CDATA[I am currently working on an industrial automation project and would like to learn the complete process of integrating a PLC with RoboDK and controlling a robot using PLC logic.<br />
<br />
My objective is to build a complete simulation where the PLC communicates with RoboDK, exchanges input/output signals, and controls the robot's movements and program execution in real time.<br />
I would appreciate your guidance on the following:<ul class="mycode_list"><li>How to connect a PLC with RoboDK.<br />
</li>
<li>Supported communication protocols (such as EtherNet/IP, PROFINET, Modbus TCP, OPC UA, etc.).<br />
</li>
<li>How to configure communication between the PLC and RoboDK.<br />
</li>
<li>How to send and receive I/O signals.<br />
</li>
<li>How to control robot movements and execute robot programs using PLC logic.<br />
</li>
<li>Any documentation, tutorials, sample projects, or training resources that explain the complete workflow from start to finish.<br />
</li>
</ul>
I am eager to learn the entire setup and would greatly appreciate any recommendations or learning materials you can provide.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Controlling RG6 gripper using digital output command]]></title>
			<link>https://robodk.com/forum/Thread-Controlling-RG6-gripper-using-digital-output-command</link>
			<pubDate>Mon, 13 Jul 2026 22:19:56 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=10107">Muhammad Faizan Ahmed</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Controlling-RG6-gripper-using-digital-output-command</guid>
			<description><![CDATA[Hello everyone,<br />
<br />
I'm currently controlling Jaka Zu7 using Python script, running directly in RoboDK. Now, I want to control the OnRobot RG6 gripper which is attached to the robot. I tried to use the following command but it did not work.<br />
<br />
Command: robot.setDO(0,1) # first value represents the digital ouput while second shows the control value<br />
<br />
I also tried program.setDO(0,1) command and program = RDK.AddProgram(ProgramName) but it also did not work. Kindly guide me how can I control the gripper using python code. Looking forward to hearing from you all. Thank you]]></description>
			<content:encoded><![CDATA[Hello everyone,<br />
<br />
I'm currently controlling Jaka Zu7 using Python script, running directly in RoboDK. Now, I want to control the OnRobot RG6 gripper which is attached to the robot. I tried to use the following command but it did not work.<br />
<br />
Command: robot.setDO(0,1) # first value represents the digital ouput while second shows the control value<br />
<br />
I also tried program.setDO(0,1) command and program = RDK.AddProgram(ProgramName) but it also did not work. Kindly guide me how can I control the gripper using python code. Looking forward to hearing from you all. Thank you]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Creating a generic item and setting a custom icon in the tree]]></title>
			<link>https://robodk.com/forum/Thread-Creating-a-generic-item-and-setting-a-custom-icon-in-the-tree</link>
			<pubDate>Mon, 08 Jun 2026 22:46:46 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=7192">HenryInUtah</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Creating-a-generic-item-and-setting-a-custom-icon-in-the-tree</guid>
			<description><![CDATA[There is a good chance that I am misunderstanding what the "IconSet" command does.  I am hoping that it will change the icon next to the instruction in the station.  Like this...<br />

<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=7716" target="_blank" title="">2026-06-08 16 39 32.png</a> (Size: 7.11 KB / Downloads: 160)
<br />
<br />
I have tried this command:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>currentProg.Instruction(n).setParam('IconSet', "C:/images/LargeNext.png")</code></div></div><br />
<br />
Do I need to resize the icon?  I attached the file.  I was hoping that Qt would handle the scaling.<br />
<br />
Thanks for your help,<br />
Henry<br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=7715" target="_blank" title="">LargeNext.png</a> (Size: 2.57 KB / Downloads: 233)
]]></description>
			<content:encoded><![CDATA[There is a good chance that I am misunderstanding what the "IconSet" command does.  I am hoping that it will change the icon next to the instruction in the station.  Like this...<br />

<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=7716" target="_blank" title="">2026-06-08 16 39 32.png</a> (Size: 7.11 KB / Downloads: 160)
<br />
<br />
I have tried this command:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>currentProg.Instruction(n).setParam('IconSet', "C:/images/LargeNext.png")</code></div></div><br />
<br />
Do I need to resize the icon?  I attached the file.  I was hoping that Qt would handle the scaling.<br />
<br />
Thanks for your help,<br />
Henry<br />
<br />
<img src="//cdn.robodk.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=7715" target="_blank" title="">LargeNext.png</a> (Size: 2.57 KB / Downloads: 233)
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Moving Two Robots Independently]]></title>
			<link>https://robodk.com/forum/Thread-Moving-Two-Robots-Independently</link>
			<pubDate>Tue, 05 May 2026 16:36:55 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=7192">HenryInUtah</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Moving-Two-Robots-Independently</guid>
			<description><![CDATA[Our PySide program will embed the RoboDK window so the user can visulize the robot movement.  This worked perfectly in the last project - which only used one robot.  The robot in the station was connected as normal and the simulated robot matched the real robot positions.  <br />
<br />
Skipping some steps... the <span style="font-family: Courier New;" class="mycode_font">self.RDK = robolink.Robolink(args=["-NEWINSTANCE", "-EXIT_LAST_COM", "-SKIPCOM_ALL"]) </span>command provided a RoboLink instance for our program.  That object could be used to move the robot or send a program to the controller.  No problems so far.<br />
<br />
The next project will use two robots - each with a seventh axis.  Each robot will have a separate ABB controller running the RoboDK driver.  I expect the RoboDK window to embed using the same steps as before.  Each robot in the station can connect and (hopefully) the simulation will echo what is happening in real life as the two robots move.  But here is where I get confused.<br />
<br />
Consider the example where each robot needs to calibrate an end effector.  Our program will move a robot to a position, signal the end effector to do something, then repeat for many positions.  This should happen for each robot at the same time - but the two robots are not "synchronized", they are running independently.  How do I do this?<br />
<br />
The first idea is to start two threads and pass the main RoboLink object to them. The "<span style="font-family: Courier New;" class="mycode_font">self.RDK</span>" object created above.  Thread "A" will make a reference to "Robot A" using something like <span style="font-family: Courier New;" class="mycode_font">self.Robot = self.RDK.Item('RobotA', 2)</span> and move it as needed.  Similarly, thread "B" will move RobotB.  In reality, they are both using methods in the same RoboLink object (I think).  What happens if both threads tell RoboLink to move different robots at the same?<br />
<br />
The "<a href="https://robodk.com/doc/en/PythonAPI/examples.html#synchronize-3-robots" target="_blank" rel="noopener" class="mycode_url">Synchronize 3 Robots</a>" example in the documentation also creates a thread for each robot, but the threads then create a new RoboLink instance.  How would this work if the RoboDK window (with the initial RoboLink) is embedded in our program?  That "embedded RoboLink" is also talking to the drivers to update the display, correct?<br />
<br />
I don't feel like I explained this very well - here is some pseudo-code that might help.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>class ApplicationGUI(QtWidgets.QMainWindow):<br />
&nbsp;&nbsp;&nbsp;&nbsp;def embedRoboSK(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.RDK = robolink.Robolink(args=["-NEWINSTANCE", "-EXIT_LAST_COM", "-SKIPCOM_ALL"])<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Stuff happens to embed the window and connect to the robots<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;def startTreads(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Each thread gets a reference to the main RoboLink object and a file of instructions<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadA = calibrationThreadA()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadA.rdk = self.RDK<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadA.instructions = pathToListOfPositionsA<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadA.start()<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadB = calibrationThreadB(pathToListOfPositionsB)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadB.rdk = self.RDK<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadB.instructions = pathToListOfPositionsB<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadB.start()<br />
<br />
<br />
class calibrationThreadA(QThread):<br />
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self, parent=None):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QThread.__init__(self, parent)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;def run(self)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.robot = self.rdk.Item('RobotA', 2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Read the self.instructions file and move the robot when needed.<br />
<br />
<br />
class calibrationThreadB(QThread):<br />
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self, parent=None):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QThread.__init__(self, parent)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;def run(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.robot = self.rdk.Item('RobotB', 2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Read the self.instructions file and move the robot when needed.</code></div></div>]]></description>
			<content:encoded><![CDATA[Our PySide program will embed the RoboDK window so the user can visulize the robot movement.  This worked perfectly in the last project - which only used one robot.  The robot in the station was connected as normal and the simulated robot matched the real robot positions.  <br />
<br />
Skipping some steps... the <span style="font-family: Courier New;" class="mycode_font">self.RDK = robolink.Robolink(args=["-NEWINSTANCE", "-EXIT_LAST_COM", "-SKIPCOM_ALL"]) </span>command provided a RoboLink instance for our program.  That object could be used to move the robot or send a program to the controller.  No problems so far.<br />
<br />
The next project will use two robots - each with a seventh axis.  Each robot will have a separate ABB controller running the RoboDK driver.  I expect the RoboDK window to embed using the same steps as before.  Each robot in the station can connect and (hopefully) the simulation will echo what is happening in real life as the two robots move.  But here is where I get confused.<br />
<br />
Consider the example where each robot needs to calibrate an end effector.  Our program will move a robot to a position, signal the end effector to do something, then repeat for many positions.  This should happen for each robot at the same time - but the two robots are not "synchronized", they are running independently.  How do I do this?<br />
<br />
The first idea is to start two threads and pass the main RoboLink object to them. The "<span style="font-family: Courier New;" class="mycode_font">self.RDK</span>" object created above.  Thread "A" will make a reference to "Robot A" using something like <span style="font-family: Courier New;" class="mycode_font">self.Robot = self.RDK.Item('RobotA', 2)</span> and move it as needed.  Similarly, thread "B" will move RobotB.  In reality, they are both using methods in the same RoboLink object (I think).  What happens if both threads tell RoboLink to move different robots at the same?<br />
<br />
The "<a href="https://robodk.com/doc/en/PythonAPI/examples.html#synchronize-3-robots" target="_blank" rel="noopener" class="mycode_url">Synchronize 3 Robots</a>" example in the documentation also creates a thread for each robot, but the threads then create a new RoboLink instance.  How would this work if the RoboDK window (with the initial RoboLink) is embedded in our program?  That "embedded RoboLink" is also talking to the drivers to update the display, correct?<br />
<br />
I don't feel like I explained this very well - here is some pseudo-code that might help.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>class ApplicationGUI(QtWidgets.QMainWindow):<br />
&nbsp;&nbsp;&nbsp;&nbsp;def embedRoboSK(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.RDK = robolink.Robolink(args=["-NEWINSTANCE", "-EXIT_LAST_COM", "-SKIPCOM_ALL"])<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Stuff happens to embed the window and connect to the robots<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;def startTreads(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Each thread gets a reference to the main RoboLink object and a file of instructions<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadA = calibrationThreadA()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadA.rdk = self.RDK<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadA.instructions = pathToListOfPositionsA<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadA.start()<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadB = calibrationThreadB(pathToListOfPositionsB)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadB.rdk = self.RDK<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadB.instructions = pathToListOfPositionsB<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.threadB.start()<br />
<br />
<br />
class calibrationThreadA(QThread):<br />
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self, parent=None):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QThread.__init__(self, parent)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;def run(self)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.robot = self.rdk.Item('RobotA', 2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Read the self.instructions file and move the robot when needed.<br />
<br />
<br />
class calibrationThreadB(QThread):<br />
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self, parent=None):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QThread.__init__(self, parent)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;def run(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.robot = self.rdk.Item('RobotB', 2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Read the self.instructions file and move the robot when needed.</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Robot is not moving]]></title>
			<link>https://robodk.com/forum/Thread-Robot-is-not-moving</link>
			<pubDate>Tue, 05 May 2026 15:56:23 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=9104">weisseran</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Robot-is-not-moving</guid>
			<description><![CDATA[I'm using Mecademic Meca500.<br />
When I rotate the dial to change the robot orientation, I can see the robot on my screen moving but the real robot is not moving unless I click Move Joint.<br />
It was moving before.<br />
What went wrong ?]]></description>
			<content:encoded><![CDATA[I'm using Mecademic Meca500.<br />
When I rotate the dial to change the robot orientation, I can see the robot on my screen moving but the real robot is not moving unless I click Move Joint.<br />
It was moving before.<br />
What went wrong ?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Program instruction operations using the API]]></title>
			<link>https://robodk.com/forum/Thread-Program-instruction-operations-using-the-API</link>
			<pubDate>Mon, 27 Apr 2026 17:16:53 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=7192">HenryInUtah</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Program-instruction-operations-using-the-API</guid>
			<description><![CDATA[My goal is to have a script that will insert a command after the selected instruction in a program.  The snippet of code below finds the instruction that is selected/highlighted.  It is a robodk.robolink.Item object.  Next, the script looks at the parent of this (which should be an ITEM_TYPE_PROGRAM) and loops through the instructions looking for a match.<br />
<br />
However, using program.Instruction(n) returns a tuple.  So, I have a tuple and a  robodk.robolink.Item with no way to check if they are the same.  I cannot use the Item.Type() + Item.Name() because the names are not unique.<br />
<br />
I hope that I explained that so it made sense...<br />
<br />
This code is part of a PySide app - sorry if it looks a little different.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&nbsp;&nbsp;&nbsp;&nbsp;def btnSelectedItem_Clicked(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'''Show information about the selected item in the tree'''<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.clear()<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentSelection = self.rdk.Selection()<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if len(currentSelection) == 0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append('No items selected')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item = currentSelection[0]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itemType = item.Type()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itemName = item.Name()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itemParent = item.Parent()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itemVisible = item.Visible()<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'{itemName=}')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'{itemType=}')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'{itemParent=}')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'{itemVisible=}')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'type={type(item)}')<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# The parent is a program, so it must be an instruction<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if itemParent.Type() == 8:<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instructionCount = itemParent.InstructionCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'Looping through {instructionCount} instructions...')<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for n in range(instructionCount):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'Instruction {n}')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current = itemParent.Instruction(n)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# How to compare if item == current?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# current is a tuple and item is an robodk.robolink.Item</code></div></div>]]></description>
			<content:encoded><![CDATA[My goal is to have a script that will insert a command after the selected instruction in a program.  The snippet of code below finds the instruction that is selected/highlighted.  It is a robodk.robolink.Item object.  Next, the script looks at the parent of this (which should be an ITEM_TYPE_PROGRAM) and loops through the instructions looking for a match.<br />
<br />
However, using program.Instruction(n) returns a tuple.  So, I have a tuple and a  robodk.robolink.Item with no way to check if they are the same.  I cannot use the Item.Type() + Item.Name() because the names are not unique.<br />
<br />
I hope that I explained that so it made sense...<br />
<br />
This code is part of a PySide app - sorry if it looks a little different.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&nbsp;&nbsp;&nbsp;&nbsp;def btnSelectedItem_Clicked(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'''Show information about the selected item in the tree'''<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.clear()<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentSelection = self.rdk.Selection()<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if len(currentSelection) == 0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append('No items selected')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item = currentSelection[0]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itemType = item.Type()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itemName = item.Name()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itemParent = item.Parent()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itemVisible = item.Visible()<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'{itemName=}')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'{itemType=}')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'{itemParent=}')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'{itemVisible=}')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'type={type(item)}')<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# The parent is a program, so it must be an instruction<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if itemParent.Type() == 8:<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instructionCount = itemParent.InstructionCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'Looping through {instructionCount} instructions...')<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for n in range(instructionCount):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ui.textInfo.append(f'Instruction {n}')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current = itemParent.Instruction(n)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# How to compare if item == current?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# current is a tuple and item is an robodk.robolink.Item</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Display mensage on screen based on the running program]]></title>
			<link>https://robodk.com/forum/Thread-Display-mensage-on-screen-based-on-the-running-program</link>
			<pubDate>Sat, 28 Mar 2026 13:06:26 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://robodk.com/forum/member.php?action=profile&uid=10213">Danilo assumpção</a>]]></dc:creator>
			<guid isPermaLink="false">https://robodk.com/forum/Thread-Display-mensage-on-screen-based-on-the-running-program</guid>
			<description><![CDATA[Dear All,<br />
I made a simulation with 7 robots, step by step.<br />
<br />
I would like to display a message on the screen according to the program being executed.<br />
<br />
Example:<br />
When program RB01 is running - "Robot 1 picking up part"<br />
When program RB02 is running - "Welding part"<br />
<br />
Is there any API or Python script to do this?]]></description>
			<content:encoded><![CDATA[Dear All,<br />
I made a simulation with 7 robots, step by step.<br />
<br />
I would like to display a message on the screen according to the program being executed.<br />
<br />
Example:<br />
When program RB01 is running - "Robot 1 picking up part"<br />
When program RB02 is running - "Welding part"<br />
<br />
Is there any API or Python script to do this?]]></content:encoded>
		</item>
	</channel>
</rss>