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=''),
...
]
Changing back to Gcode String
The GcodeLine class has a method to_gcode() which will return the equivalent gcode string.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gcodeparser-0.0.4.tar.gz.
File metadata
- Download URL: gcodeparser-0.0.4.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc9cac0118d1e6626976baf50284c8e132af9c91846cd0d8b69eee9988f35c03
|
|
| MD5 |
cfd489d88c31419f0a5180eeb309cda3
|
|
| BLAKE2b-256 |
f0feede855c5035517f213a8cf92407d0d6540405bd7fc6ff1ab502efaf6c53b
|
File details
Details for the file gcodeparser-0.0.4-py3-none-any.whl.
File metadata
- Download URL: gcodeparser-0.0.4-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56e370f6e7d73466ffe89517f24457e622ab6be5ccee85b3f43675cea74ce326
|
|
| MD5 |
dcf3082caf99cae46a3de284f52b8f6a
|
|
| BLAKE2b-256 |
e7e080138d45bca0f9c3844d624662baf36e49aae34a71953dd33f8a6be22abd
|