0

CNC レーザー出力の Gcode をスケーリングしています。レーザーの「S」値の最大値は 225 で、現在のファイル スケールは 1000 です。S 値のみ/すべてに .225 を掛け、0 の S 値を省略し、各行の文字列を置き換える必要があります。軸移動および機械機能の G コードには、事前に指定された「M」、「G」、「X」、「Y」、「Z」、「F」、および「S」があります。

注: 7.5k 行のコードがあるため、これを手動で行うことはできません。

(上 3 行) のような結果で .py を期待:

Old> G1Y0.1S0     New> G1Y0.1S0
Old> G1X0.1S248   New> G1X0.1S55.8
Old> G1X0.1S795.3 New> G1X0.1S178.9

サンプル ファイル コード:

G1Y0.1S0
G1X0.1S248
G1X0.1S795.3
G1X0.2S909.4
G1X0.1S874
G1X0.1S374
G1X1.1S0
G1X0.1S610.2
G1X0.1S893.7
G1X0.6S909.4
G1X0.1S893.7
G1X0.1S661.4
G1X0.1S157.5
G1X0.1Y0.1S0
G1X-0.1S66.9
G1X-0.1S539.4
G1X-0.2S909.4
G1X-0.1S897.6
G1X-0.1S811
G1X-0.1S515.7
G1X-0.1S633.9
G1X-0.1S874
G1X-0.3S909.4
G1X-0.1S326.8
G1X-0.8S0

これを試しました:

import os
import sys
import fileinput

print("Text to Search For:")
textToSearch = input("> ")

print("Set Max Power Output:")
valueMult = input("> ")

print("File to work:")
fileToWork = input("> ")

tempFile = open(fileToWork, 'r+')

sValue = int

for line in fileinput.input (fileToWork):
    if textToSearch in line:
        c = str(textToSearch,(sValue)) #This is where I'm stuck.
        print("Match Found >> ", sValue)
    else:
        print("Match Not Found")
        
    tempFile.write(line.replace(textToSearch, (sValue,"(sValue * (int(valueMult)/1000))")))
    
tempFile.close()

#input("\n\n Press Enter to Exit")

出力:

Text to Search For:
> S
Set Max Power Output:
> 225
File to work:
> test.rtf
Match Not Found
Traceback (most recent call last):
  File "/Users/iamme/Desktop/ConvertGcode.py", line 25, in <module>
    tempFile.write(line.replace(textToSearch, (sValue,"(sValue * (int(valueMult)/1000))")))
TypeError: replace() argument 2 must be str, not tuple
>>> 

test.rtf ファイル:

Hello World

X-095Y15S434.5

That is Solid!
4

1 に答える 1