线程评级:
向代码中追加行
# 1
早上好,

我想在后处理程序(kuka krc4)的输出文件中添加几行代码。
很确定这可以用一个相对简单的.append方法来完成(代码必须位于输出文件*.src的最末尾)

我在roboDK文档中没有找到任何例子,因为我还不是一个程序员,如果能得到一点帮助,我会很感激的。

致以最亲切的问候
赫尔曼
通过在程序末尾使用程序调用指令,可以很容易地在用户界面中实现这一点。这允许你在程序中添加一个或多个自定义代码行:
//www.w5838.com/doc/en/Robot-Programs...nsProgCall

或者,如果你所有的程序都需要这个,我们可以帮助你定制一个后处理器。
# 3
谢谢你!

如果我想在输出文件的末尾添加某些代码行,我该如何处理?
# 4
如果你在程序末尾添加了“程序调用”,你可以选择下拉菜单,选择“插入代码”,然后输入你想要看到的代码。
这是最简单的方法,不需要任何编码。

杰里米
有关RoboDK及其功能的有用信息,请访问我们的在线文档通过观看我们的教程Youtube频道


# 5
我明白,但我想通过后处理来标准化这一点。

这是我目前得到的。

def RunCode(self, code, is_function_call=False):
添加代码或函数调用"""

如果这是RunCode的第一次调用,则添加计数器属性
if not hasattr(self, "M51_counter"):
自我。M51_counter = 0

如果“M_RunCode(50)”在代码:
#过滤M50
self.addline(“\ n”)
自我。addline(“激光”)
self.addline(“\ n”)

返回

elif "M_RunCode(51)"在代码:

#忽略第一个M51调用
如果自我。M51_counter > 0:
在程序事件中,默认情况下,我们将通过M_RunCode过滤M50
self.addline(“\ n”)
自我。addline(“激光”)
self.addline(“\ n”)


返回

#总是增加计数器,即使它是0
自我。M51_counter += 1
返回

如果“M_RunCode(30)”在代码:

self.addline (" ")

返回

(缩进可能显示不正确)


正如你所看到的,这“使用”m码来添加新行。
我只是想在输出文件的末尾添加没有“劫持”M-Codes的行。
# 6
好吧,那就做吧。XD
到目前为止,你的作品看起来不错。问题到底是什么?
你刚刚发布的代码的结果是什么?

要使用M-Code,你需要从一个NC (G-code)文件开始,它需要在最后有一个M-Code。
是你的情况吗?
如果是这样,只需捕获代码并使用addline即可。
有关RoboDK及其功能的有用信息,请访问我们的在线文档通过观看我们的教程Youtube频道


# 7
嗯…我可能不是程序员……但它会完成的(需要一点帮助;))

是的……m代码的捕获工作得很好。

我要做的是在每个输出文件的末尾添加以下textcluster。这个文本集群没有链接到任何M-Code,应该只是打印“原样”。
当然,我可以手动复制和粘贴这个集群,但是……你知道的…这是不可接受的;)



DEF laser_on ()

;FOLD OUT 13 'Laser bereit (standby)' State=TRUE;%{PE}%R 8.3.38,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:13, 3:Laser bereit (standby), 5:TRUE, 6:
美元[13]= TRUE
; ENDFOLD
;FOLD OUT 14 'Laser (Steuerung) ein' State=TRUE;%{PE}%R 8.3.38,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:14, 3:Laser (Steuerung) ein, 5:TRUE, 6:
美元[14]= TRUE
; ENDFOLD
;FOLD OUT 267 'Absaugung ein' State=TRUE;%{PE}%R 8.3.38,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:267, 3:Absaugung ein, 5:TRUE, 6:
美元[267]= TRUE
; ENDFOLD

;FOLD OUT 266 'Sauerstoff' State=TRUE;%{PE}%R 8.3.38,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:266, 3:Sauerstoff, 5:TRUE, 6:
美元[266]= TRUE
; ENDFOLD
laser_ein (3800 # schneiden)
折叠等待时间=3秒;%{PE}%R 8.3.38,%MKUKATPBASIS,%CWAIT,%VWAIT,%P 3:3
等待第三节
; ENDFOLD
laser_aus ()
# schneiden laser_ein (1000)



结束



DEF laser_off ()

%{PE}%R 8.3.38,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:266, 3:Sauerstoff, 5:FALSE, 6:继续
继续
美元[266]= FALSE
; ENDFOLD
;FOLD OUT 267 'Absaugung ein' State=FALSE;%{PE}%R 8.3.38,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:267, 3:Absaugung ein, 5:FALSE, 6:
美元[267]= FALSE
; ENDFOLD
%{PE}%R 8.3.38,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:14, 3:激光(Steuerung) ein, 5:FALSE, 6:
美元[14]= FALSE
; ENDFOLD
%{PE}%R 8.3.38,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:13, 3:Laser bereit (standby), 5:FALSE, 6:
美元[13]= FALSE
; ENDFOLD
;FOLD LIN P13 Vel=0.5 m/s CPDAT10 Tool[2]:Schneidkopf Base[0];%{PE}%R 8.3.38,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:P13, 3:, 5:5 .5, 7:CPDAT10
美元BWDSTART = FALSE
LDAT_ACT = LCPDAT10
FDAT_ACT = FP13
BAS (# CP_PARAMS, 0.5)
林XP13
; ENDFOLD

pv_korrektur = false



结束
# 8
哦,难道不应该在标题中添加它吗?

你应该在文章中找到一个“CUSTOM_HEADER”部分,在那里你可以添加这样的自定义代码,它总是会被添加到程序中。
我不是KRL的专家,但我知道的大多数语言,在标题中添加它应该工作。

杰里米
有关RoboDK及其功能的有用信息,请访问我们的在线文档通过观看我们的教程Youtube频道






浏览此线程的用户:
1客人(年代)