如何获得和设置移动指令的“目标链接”项?-打印版本 +- RoboDK论坛(//www.x7093.com/forum) +——论坛:RoboDK (EN) (//www.x7093.com/forum/Forum-RoboDK-EN) +——论坛:RoboDK API (//www.x7093.com/forum/Forum-RoboDK-API) +——线程:如何获得和设置移动指令的“目标链接”项?(/ Thread-How-to-get-set-the-Target-linked-item-of-a-move-instruction) |
如何获得和设置移动指令的“目标链接”项?-Maarten-02-17-2022 我如何获得一个程序的移动指令的“目标链接”项?目标和移动指令是在GUI中创建的,我想通过API获取链接的目标项。 我发现我可以使用' instruction()'获得指令的几个参数:
代码:
p = RDK.Item('myProgram',ITEM_TYPE_PROGRAM)
但是,这并没有提供链接的目标项。此外,输出'pose'似乎是根据被链接的目标项的第一个父参考框架定义的,但如果我不能确定指令链接到哪个目标项,那么我也不能确定'pose'的参考框架。 这个问题的第二部分是:我如何通过API更改/设置“目标链接”项目到不同的目标项目?(也就是说,不只是改变指令的“姿势”,而是改变实际的目标项目)。类似于在GUI的右键单击如下所示的指令菜单中所实现的: (附件= 3014) 最好的问候, Maarten 回复:如何获得和设置移动指令的“目标链接”项?-山姆-02-18-2022 嗨Mearten, 你在正确的道路上! 目前,不可能通过API直接编辑链接的目标项。 你得把说明书换成新的。 下面是一个示例代码,可以让您了解这个概念。
代码:
进口robolink
您可以在文档中找到更多信息
回复:如何获得和设置移动指令的“目标链接”项?-Maarten-02-18-2022 嗨,山姆, 谢谢你的帮忙。您的代码示例是不是有点冒险,因为您假设指令的名称包含目标的名称?
代码:
if old_target.Name() in instruction_dict['Name']:
默认情况下,联合移动指令的名称确实包含目标的名称。“MoveJ (targetName)”。但是用户可以自由地重命名指令。另外,用户可以在创建指令后重命名目标。如果没有目标名称作为指令名称的一部分,您的代码示例将错过链接。 (代码也会给出一个假阳性,例如。MoveJ (target10),其中包含“target1”和“target10”的名称。但这可以通过一个更具体的字符串比较来解决。) 除了作为指令名称一部分的目标项的名称之外,指令中链接的目标项是否没有其他指示符? 最好的问候, Maarten 回复:如何获得和设置移动指令的“目标链接”项?-Maarten-02-18-2022 我刚刚发现,GUI中移动指令的名称会自动更新,以匹配默认名称和链接目标的名称(如果更改则更新),在Python脚本中运行下面这些行:
代码:
从robolink导入* # RoboDK API
所以我有一个(第三)指令和目标: "MoveJ (target1)"和"target1" 我在GUI中手动更改指令名称和目标名称为: “MoveJA (target1B)”及“target1C” 然后我运行上面的代码,指令的名称会自动更新为: "MoveJ (target1C)"和"target1C" 也许水下的某些东西得到了更新?如果指令的命名实际上是由此强制执行的,那么从指令的名称中检索链接的目标项可能是一个可行的选项。 回复:如何获得和设置移动指令的“目标链接”项?-山姆-02-18-2022 实际上,我提供的示例代码并不健壮。 在API中添加更方便的方法之前,它是作为一种变通方法提供的。 你必须使它适应你的需要。 为了使其更加健壮,您可以检索所需的目标姿态并将其与指令姿态进行比较。 如果名称和姿势匹配,很可能您正在替换正确的指令。 其他解决方法:
|