线程评级:
  • 0票(s) - 0平均
  • 1
  • 2
  • 3.
  • 4
  • 5
Post_Processor
# 1
你好,

我在编辑“Fanuc_R30i.py”后置处理器:

目前,我正在做我需要做的一个python代码,这样:
  • 我使用(加载)的输出"Fanuc_R30i.py"文件(这是一个。ls文件)并对其进行一些更改并再次保存,然后我将这个新保存的文件发送给我的机器人

但我想做的是将我的python文件嵌入到“Fanuc_R30i.py”中,并通过一步(而不是两步)完成我到目前为止一直在做的事情。

老实说,当我阅读“Fanuc_R30i.py”文件时,我找不到任何地方可以执行一些更改。
我试着改变“类RobotPost”,并添加一些功能到这个文件
但不幸的是,当我生成程序时,我执行的所有更改都被跳过了。

我想知道你是否能在这方面帮助我并指导我?
# 2
(03-09-2023, 09:44 pm)mehrdad_rafi写道: 老实说,当我阅读“Fanuc_R30i.py”文件时,我找不到任何地方可以执行一些更改。

您需要覆盖想要使用的方法,因为py文件使用已经编译的类作为它们的基类。

您要么必须联系RoboDK并询问PP的代码,要么重写您想要在py文件中使用的方法。

你能举例说明你想达到的目标吗?
# 3
(03-10-2023,上午11:06)maexbecks写道:
(03-09-2023, 09:44 pm)mehrdad_rafi写道: 老实说,当我阅读“Fanuc_R30i.py”文件时,我找不到任何地方可以执行一些更改。

您需要覆盖想要使用的方法,因为py文件使用已经编译的类作为它们的基类。

您要么必须联系RoboDK并询问PP的代码,要么重写您想要在py文件中使用的方法。

你能举例说明你想达到的目标吗?

非常感谢您的回复。

下面是我需要做的一个简单的例子:

选择Post_processor(“Fanuc_R30i.py”)进行仿真后,点击“Generate robot program”。--> roboDk为我生成了一个。ls文件,我可以在这个。ls文件中看到许多行,如下所示:

125:L P[1] 174mm/sec CNT1;

我用python写了一个程序,它加载这个.Ls文件,找到行(125)并将CNT1更改为Fine
然后将所有结果保存在一个新的. ls文件中。

我想做的事情是将我自己的python代码复制到“Fanuc_R30i.py”并生成一个新的后处理器(如modified_Fanuc_R30i.py)
因此,我可以选择modified_Fanuc_R30i.py而不是原来的“Fanuc_R30i.py”,一步就能得到正确的结果
通过这种方式,我将能够消除我目前手动执行的许多步骤。
# 4
(03-10-2023, 01:58 pm)mehrdad_rafi写道:125:L P[1] 174mm/sec CNT1;

我用python写了一个程序,它加载这个.Ls文件,找到行(125)并将CNT1更改为Fine
然后将所有结果保存在一个新的. ls文件中。

为此,不需要改变PP。在您想要准确移动的移动之前添加-1的“设置舍入指令”。
对于由加工项目生成的程序,您可以右键单击程序并激活“显示说明”。这样就可以在任何需要的地方添加舍入指令。但是,每次更新加工项目时,程序都会被覆盖。
# 5
(03-10-2023,下午03:01)maexbecks写道:
(03-10-2023, 01:58 pm)mehrdad_rafi写道:125:L P[1] 174mm/sec CNT1;

我用python写了一个程序,它加载这个.Ls文件,找到行(125)并将CNT1更改为Fine
然后将所有结果保存在一个新的. ls文件中。

为此,不需要改变PP。在您想要准确移动的移动之前添加-1的“设置舍入指令”。
对于由加工项目生成的程序,您可以右键单击程序并激活“显示说明”。这样就可以在任何需要的地方添加舍入指令。但是,每次更新加工项目时,程序都会被覆盖。

是的,你说的完全正确,但是我的程序有2万行,因此,我认为这种方法不适用于我的情况。
# 6
(03-10-2023, 04:08 pm)mehrdad_rafi写道:是的,你说的完全正确,但是我的程序有2万行,因此,我认为这种方法不适用于我的情况。

嗨人士,

嗯……我仍然不确定是什么问题。一个集舍入指令将传播到下一个集舍入指令。这意味着您的程序中有多个舍入指令,或者您希望只有几个动作是准确的?如果是这样,你如何判断哪个动作是准确的,哪个是连续的?

如果你希望在不删除现有舍入指令的情况下使所有移动准确,最简单的解决方案是重写setZoneData方法,像这样:

代码:
def setZoneData(self, zone_mm):
通过
这样,所有舍入指令将被忽略,并且每次移动都获得CNT_VALUE的默认值,这是好的。




浏览此主题的用户:
1客人(年代)