线程评分:
  • 0投票 - 0平均
  • 1
  • 2
  • 3
  • 4
  • 5
如何获取并设置移动指令的“目标链接”项目?
如何获得程序移动指令的“目标链接”项目?目标和移动指令是在GUI中创建的,我想通过API获得链接的目标项目。

我发现我可以使用“指令()”获得指令的几个参数:

代码:
p = rdk.item('myprogram',item_type_program)
ins_name,ins_type,move_type,iSjointtarget,姿势,关节= p.instruction(2)#选择'2',第三指令

但是,这不提供链接的目标项目。另外,似乎根据链接的目标项目的第一个父参考框架定义了输出“姿势”,但是如果我无法确定指令链接的哪个目标项目,那么我无法确定'的参考框架'摆姿势。

该问题的第二部分是:如何通过API更改/设置“目标链接”项目为其他目标项目?(即,不仅更改说明的“姿势”,还更改实际目标项目)。类似于GUI的右键单击指令菜单中所取得的成就:



最好的祝福,

马丁
嗨,米尔滕,

您走在正确的道路上!

当前,不可能通过API直接编辑链接的目标项目。
您将必须用新指令替换该指令。

这是一个示例代码,可以给您这个想法。

代码:
导入robolink
rdk = robolink.robolink()

prog = rdk.itemuserpick(“选择要编辑的程序”,robolink.item_type_program)
old_target = rdk.itemuserpick(“选择要替换的目标”,robolink.item_type_target)
new_target = rdk.itemuserpick(“选择新目标”,robolink.item_type_target)

inst_count = prog.instructioncount()
对于我的范围(inst_count):
consendion_dict = prog.setparam(i)
如果指令_dict ['type'] == robolink.ins_type_move:
如果encertion_dict ['name']中的old_target.name():
PROG.InstructionsElect(i)#选择要替换的指令
prog.movej(new_target)#添加新指令(正确使用movel或movej)
prog.setparam(i,{'type':-1})#删除指令
i += 1#重置指令指针

您可以在文档中找到更多信息
通过访问我们在线文档通过在我们的教程上观看教程YouTube频道
你好山姆,

感谢您的帮助。您的代码示例是否有些冒险,因为您假设指令的名称包含目标的名称?

代码:
如果encertion_dict ['name']中的old_target.name():

默认情况下,联合移动指令的名称确实包括目标名称,例如“ movej(targetName)”。但是用户可以自由重命名指令。此外,用户可以在创建指令后重命名目标。如果没有目标名称作为指令名称的一部分,您的代码示例将错过链接。

(该代码还将给出例如“ movej(target10)”的假阳性,其中包含“ target1”和“ target10”的名称。但是,这可以通过更具体的字符串比较来解决。)

指令以外的指令中没有其他指标,作为指令名称的一部分,没有其他指标?

最好的祝福,

马丁
我刚刚发现,GUI中的移动指令的名称已自动更新以匹配默认名称和链接目标的(如果更改为更改),则在Python脚本中运行这些下一行:

代码:
来自Robolink Import *#robodk api
rdk = robolink()

p = rdk.item('myprogram',item_type_program)
ins_dict = p.setparam(2)#获取第三指令
打印(ins_dict)
p.setparam(2,ins_dict)#将第三指令设置为我刚刚得到的
ins_dict = p.setparam(2)#再次获得第三指令
打印(ins_dict)

所以我有(第三)指令和目标:
“ MOVEJ(target1)”和“ target1”
我在GUI中手动更改指令名称和目标名称为:
“ moveja(target1b)”和“ target1c”
然后我运行上面的代码,并自动更新说明的名称为:
“ MOVEJ(target1c)”和“ target1c”

也许水下有些东西得到了刷新?如果实际上实施了指令的命名,则可以使从指令的名称中检索链接的目标项目成为可行的选项。
确实,我提供的示例代码不强大。
它作为解决方法提供,直到将更方便的方法添加到API中为止。
您将不得不适应您的需求。

为了使其更强大,您可以检索所需的目标姿势并将其与指令姿势进行比较。
如果名称和姿势匹配,则很可能会替换正确的指令。

其他方法可以解决此问题:
  • 创建两个具有不同目标的程序
  • 使用所需的目标项目从头开始创建您的程序
通过访问我们在线文档通过在我们的教程上观看教程YouTube频道




用户浏览此线程:
1位客人