2014-07-23 34 views
-1

我正在研究一個項目,我必須在CNC程序中手動編輯偏移量。我想在python中做到這一點,但是,我的經驗並沒有涉及到這樣的事情。任何幫助是極大的讚賞。代碼使用txt文件更改值

例如:

N0880M41 
N0890G50S3600 
M03 
N0900G96S0210M03 
N0910Z23.274M08 
N0920M07 
N0930Z23.2063 
N0940X1.39 
N0950G99 
N0960G01X1.29F.009 
N0970X1.2558 
N0980G02X1.189Z23.1662R.944 
N0990G01Z14.7569F.012 
N1000G02X1.2558Z14.7168R.944 
N1010G01X1.29 
N1020G00X1.3608Z14.7522 
N1030Z23.1309 
N1040X1.2656 
N1050G01X1.189Z23.1662F.009 
N1060G02X1.088Z23.0955R.944 
N1070G01Z14.8276F.012 
N1080G02X1.2528Z14.7185R.944 
N1090G00X1.3236Z14.7538 
N1100Z23.0602 
N1110X1.1646 
N1120G01X1.088Z23.0955F.009 
N1130G02X.987Z23.0075R.944 
N1140G01Z14.9157F.012 
N1150G02X1.1446Z14.7864R.944 
N1160G00X1.2152Z14.8217 
N1170Z22.9721 
N1180X1.0636 
N1190G01X.987Z23.0075F.009 
N1200G02X.886Z22.8873R.944 
N1210G01Z15.0359F.012 
N1220G02X1.0344Z14.8716R.944 
N1230G00X1.105Z14.907 
N1240Z22.8519 

我需要改變通過提示用戶輸入Z值,我想將它與相同的文本輸入剛剛與Z軸

一個新值輸出

例如:用戶提示和輸入值0.226

input = N0910Z23.274M08 

我想輸出是

output = N0910Z23.500M08 
+0

你需要了解如何:1)獲取用戶提示信息,2)讀取文件,3)分析文件,以獲取您想要的值,4)將更改寫回文件,5)將輸出打印到用戶。哪一個是你的問題? – Banana

+0

在您的示例中,將輸入值分割爲「。」,然後將該值取爲「M」之前的值,將其轉換爲整數,並添加「226」並創建輸出值是相對簡單的。我只是不確定如何在所有這些涉及到您的文件,或其他字母輸入,或多個點。也許你可以更詳細地說明你究竟在做什麼和嘗試過什麼。 – Gerrat

+0

我已經在MATLAB中完成了這個工作,但是這個當前的項目我沒有訪問權限。我從來沒有真正在PYTHON工作過。我只是不熟悉Python編程的語法和結構 – brandocommando

回答

0

這裏是一個快速和骯髒的程序,你想要做什麼:

# GCode utility - adjust Z offset 
# This code assumes Python 3 
import re 

def get_float(prompt): 
    while True: 
     try: 
      return float(input(prompt)) 
     except ValueError: 
      pass 

# Regular expression to recognize a Z parameter 
z_re = re.compile("Z(-?\d+(?:\.\d*)?)", re.I) 

# Create callback function for re.sub 
def make_z_callback(dz, fmt="Z{:0.4f}"): 
    def z_callback(match): 
     z_value = match.group(1)  # get just the number 
     z_value = float(z_value) + dz # add offset 
     return fmt.format(z_value)  # convert back to string 
    return z_callback 

def main(): 
    # read GCode file contents 
    fname = input("Enter GCode file name: ") 
    with open(fname) as inf: 
     gcode = inf.read() 

    # do search-and-replace on Z parameters 
    z_offset = get_float("Enter Z offset: ") 
    z_callback = make_z_callback(z_offset) 
    gcode = z_re.sub(z_callback, gcode) 

    # write result back to file 
    with open(fname, "w") as outf: 
     outf.write(gcode) 

if __name__=="__main__": 
    main() 
+0

謝謝,這已經足夠了。 – brandocommando