2017-10-20 51 views
1

我試圖打開一個文件.gcode,讀它,並基於它讀取一個特定的號碼添加到連接到包含「Z」修改的G-碼

以下任何字符串的數量是G-碼的樣本:

G1 Z0.3 
G1 F6000 E0 
G1 F900 X-14.561 Y14.562 E2.27024 
G1 X-14.561 Y-14.561 E4.54048 
G1 X14.562 Y-14.561 E6.81071 
G1 Z0.8 
G0 F12000 X-9.687 Y9.688 Z1.05 
G1 Z0.3 
G1 F6000 E0 
G1 F900 X-14.561 Y14.562 E2.27024 
G1 X-14.561 Y-14.561 E4.54048 Z1.50 

因此,例如,它需要讀取每行和每一個它遇到包含「Z」的字符串時,採取與它相關的數,並添加1.5,然後用新的值替換它。

到目前爲止,這是我的所有:

part_path = input(' Enter Directory for Part Number: ') # Asks user to input directory of part number folder 
part_path = part_path.replace(('\\'), '/') # Converts \ to/in path to avoid escape characters 
file_name = input('Enter the file name: ') 
file_path = part_path + '/' + file_name + '.gcode' 

gc = open(file_path) 
gc_content = gc.readlines() 
for l in gc_content: 
    if 'Z' in l: 
     print(l) 

我只是有打印有作爲佔位符,看看是怎麼回事。我很困惑,我只能把每行的ZXXX部分從字母上拆分(將'Z0.3'拆分爲['Z','0.3']),這樣我就可以將'0.3'變成浮動,然後添加一個特定的數字,然後用新值替換舊的ZXXX字符串。

任何幫助將非常感激,謝謝!

回答

2

我認爲這會工作:現在

from string import * 
part_path = input(' Enter Directory for Part Number: ') # Asks user to input directory of part number folder 
part_path = part_path.replace(('\\'), '/') # Converts \ to/in path to avoid escape characters 
file_name = input('Enter the file name: ') 
file_path = part_path + '/' + file_name + '.gcode' 

gc = open(file_path) 
gc_content = gc.readlines() 
for l in gc_content: 
    if 'Z' in l: 
     l.rstrip() 
     dex = l.index('Z') 
     num = float(l[dex+1:]) 
     newnum = num + 1.0 
     replace(l, str(num), str(newnum)) 

,你可以做任何你想要的次數,這是一個浮點數。這只是找到Z的位置,並且佔用了其餘的行,這總是浮點數。它還從右側剝去任何空格(否則我們可以用空格而不是0.3來轉換爲浮點數,現在我們將1.0加入到num中,並將該值賦給newnum。使用string.replace()方法,我們替換NUM與newnum。

+0

是該工程的感謝!所以沒我把NUM = NUM​​ +後1.00,但我怎麼會去更換,在G-碼的每一行?在這種情況下,變量L分別g代碼行,我只需要對變量l上的Z命令的索引執行.replace()? – Bkal05

+1

@ Bkal05現在好了 –