Python gcode parser
Project description
GcodeParser
A simple gcode parser that takes a string of text and returns a list where each gcode command is seperated into a python object.
The structure of the python object is:
G1 X10 Y-2.5 ; this is a comment
GcodeLine(
command = ('G', 1),
params = {'X': 10, 'Y': -2.5},
comment = 'this is a comment',
)
Install
pip install gcodeparser
Alternatively:
pip install -e "git+https://github.com/AndyEveritt/GcodeParser.git@master#egg=gcodeparser"
Usage
from gcodeparser import GcodeParser
# open gcode file and store contents as variable
with open('my_gcode.gcode', 'r') as f:
gcode = f.read()
GcodeParser(gcode).lines # get parsed gcode lines
Include Comments
GcodeParser
takes a second argument called include_comments
which defaults to False
. If this is set to True
then any line from the gcode file which only contains a comment will also be included in the output.
gcode = (
'G1 X1 ; this comment is always included\n',
'; this comment will only be included if `include_comments=True`',
)
GcodeParser(gcode, include_comments=True).lines
If include_comments
is True
then the comment line will be in the form of:
GcodeLine(
command = (';', None),
params = {},
comment = 'this comment will only be included if `include_comments=True`',
)
Converting a File
from gcodeparser import GcodeParser
with open('3DBenchy.gcode', 'r') as f:
gcode = f.read()
parsed_gcode = GcodeParser(gcode)
parsed_gcode.lines
output:
[GcodeLine(command=('G', 10), params={'P': 0, 'R': 0, 'S': 0}, comment='sets the standby temperature'),
GcodeLine(command=('G', 29), params={'S': 1}, comment=''),
GcodeLine(command=('T', 0), params={}, comment=''),
GcodeLine(command=('G', 21), params={}, comment='set units to millimeters'),
GcodeLine(command=('G', 90), params={}, comment='use absolute coordinates'),
GcodeLine(command=('M', 83), params={}, comment='use relative distances for extrusion'),
GcodeLine(command=('G', 1), params={'E': -0.6, 'F': 3600.0}, comment=''),
GcodeLine(command=('G', 1), params={'Z': 0.45, 'F': 7800.0}, comment=''),
GcodeLine(command=('G', 1), params={'Z': 2.35}, comment=''),
GcodeLine(command=('G', 1), params={'X': 119.575, 'Y': 89.986}, comment=''),
GcodeLine(command=('G', 1), params={'Z': 0.45}, comment=''),
GcodeLine(command=('G', 1), params={'E': 0.6, 'F': 3600.0}, comment=''),
GcodeLine(command=('G', 1), params={'F': 1800.0}, comment=''),
GcodeLine(command=('G', 1), params={'X': 120.774, 'Y': 88.783, 'E': 0.17459}, comment=''),
GcodeLine(command=('G', 1), params={'X': 121.692, 'Y': 88.145, 'E': 0.11492}, comment=''),
GcodeLine(command=('G', 1), params={'X': 122.7, 'Y': 87.638, 'E': 0.11596}, comment=''),
GcodeLine(command=('G', 1), params={'X': 123.742, 'Y': 87.285, 'E': 0.11317}, comment=''),
...
]
Convert Command Tuple to String
The GcodeLine
class has a property command_str
which will return the command tuple as a string. ie ('G', 91)
-> "G91"
.
Changing back to Gcode String
The GcodeLine
class has a property gcode_str
which will return the equivalent gcode string.
This was called
to_gcode()
in version 0.0.6 and before.
Parameters
The GcodeLine
class has a several helper methods to get and manipulate gcode parameters.
For an example GcodeLine
line
:
Retrieving Params
To retrieve a param, use the method get_param(param: str, return_type=None, default=None)
which
returns the value of the param if it exists, otherwise it will the default
value.
If return_type
is set, the return value will be type cast.
line.get_param('X')
Updating Params
To update a param, use the method update_param(param: str, value: int | float)
line.update_param('X', 10)
If the param does not exist, it will return None
else it will return the updated value.
Deleting Params
To delete a param, use the method delete_param(param: str)
line.delete_param('X')
Converting to DataFrames
If for whatever reason you want to convert your list of GcodeLine
objects into a pandas dataframe, simply use pd.DataFrame(GcodeParser(gcode).lines)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for gcodeparser-0.2.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c58ac8e016d8335129029d63757e97d572f1d504ca7326b3192a473a2c16ec4 |
|
MD5 | bc65bd6c33f2c0464bff781eec7ac683 |
|
BLAKE2b-256 | 4a34755b610e1a5c9cb6a7935318fec6a9ce7553316ee8764a77ab3a7dc8546f |