Mass editing G-code
-
@PeterJones said
Good luck with that
Okay, I got interested enough to write it. Assuming you can figure out which Notepad++ menu to use to decode this encoded text, you get a freebie: Go buy a lottery ticket.
MS4gSW5zdGFsbCBQeXRob25TY3JpcHQNCjIuICoqUGx1Z2lucyA+IFB5dGhvblNj cmlwdCA+IE5ldyBTY3JpcHQqKiwgcG9wdWxhdGUgd2l0aCB0aGUgZm9sbG93aW5n LCBhbmQgc2F2ZSBpdCBhcyBgMTgyOTctZ2NvZGUtbGF5ZXItbnVtYmVyaW5nLnB5 YDoNCg0KICAgICAgICAjIGVuY29kaW5nPXV0Zi04DQogICAgICAgICIiImluIHJl c3BvbnNlIHRvIGh0dHBzOi8vbm90ZXBhZC1wbHVzLXBsdXMub3JnL2NvbW11bml0 eS90b3BpYy8xODI5Ny8iIiINCiAgICAgICAgZnJvbSBOcHAgaW1wb3J0ICoNCg0K ICAgICAgICAjY29uc29sZS5zaG93KCkNCiAgICAgICAgI2NvbnNvbGUuY2xlYXIo KQ0KDQogICAgICAgIGRlZiBmb3J1bV9wb3N0MTgyOTdfbWFpbigpOg0KICAgICAg ICAgICAgIiIiDQoNCiAgICAgICAgICAgIGFzc3VtZXMgdGhlIG1hcCBmaWxlIGlu IGluIHRoZSBhY3RpdmUgZWRpdG9yLCB3aXRoDQogICAgICAgICAgICAgICAgImZp bGVuYW1lIiB4bnVtDQogICAgICAgICAgICBwYWlycyBvbiBlYWNoLCBsaWtlDQog ICAgICAgICAgICAgICAgImdjb2RlMTAwLmciIDI3MTgNCiAgICAgICAgICAgICAg ICAiZ2NvZGUxMDEuZyIgMzE0DQogICAgICAgICAgICAgICAgImdjb2RlMTAyLmci IDE2DQoNCiAgICAgICAgICAgIEl0IHdpbGwgb3BlbiB0aGUgaW5kaXZpZHVhbCBm aWxlcyBpbiB0aGUgb3RoZXIsIGRvIHRoZQ0KICAgICAgICAgICAgc2VhcmNoL3Jl cGxhY2UsIGFuZCBzYXZlL2Nsb3NlLg0KDQogICAgICAgICAgICAiIiINCiAgICAg ICAgICAgIG5MaW5lcyA9IGVkaXRvci5nZXRMaW5lQ291bnQoKQ0KICAgICAgICAg ICAgbWFwQnVmSUQgPSBub3RlcGFkLmdldEN1cnJlbnRCdWZmZXJJRCgpDQogICAg ICAgICAgICBtYXBWaWV3ID0gbm90ZXBhZC5nZXRDdXJyZW50VmlldygpDQogICAg ICAgICAgICBtYXBJbmRleCA9IG5vdGVwYWQuZ2V0Q3VycmVudERvY0luZGV4KG1h cFZpZXcpDQoNCiAgICAgICAgICAgIGZvciBsIGluIHJhbmdlKDAsbkxpbmVzKToN CiAgICAgICAgICAgICAgICBub3RlcGFkLmFjdGl2YXRlSW5kZXgobWFwVmlldywg bWFwSW5kZXgpDQoNCiAgICAgICAgICAgICAgICB0eHQgPSBlZGl0b3IxLmdldExp bmUobCkucnN0cmlwKCkNCiAgICAgICAgICAgICAgICBpZiBsZW4odHh0KT09MDog Y29udGludWUNCiAgICAgICAgICAgICAgICBmbmFtZSwgeGlkID0gdHh0LnNwbGl0 KCciICcpDQogICAgICAgICAgICAgICAgZm5hbWUgPSBmbmFtZVsxOl0NCiAgICAg ICAgICAgICAgICAjY29uc29sZS53cml0ZSgiZm5hbWUgPSAne30nLCB4aWQgPSAn e30nXG4iLmZvcm1hdChmbmFtZSwgeGlkKSkNCg0KICAgICAgICAgICAgICAgIHJl dCA9IG5vdGVwYWQub3BlbihmbmFtZSkNCiAgICAgICAgICAgICAgICBub3RlcGFk Lm1lbnVDb21tYW5kKE1FTlVDT01NQU5ELlZJRVdfR09UT19BTk9USEVSX1ZJRVcp DQogICAgICAgICAgICAgICAgZWRpdG9yLnJlcmVwbGFjZSgNCiAgICAgICAgICAg ICAgICAgICAgJ147TEFZRVI6KFxkKykkJywNCiAgICAgICAgICAgICAgICAgICAg bGFtYmRhIG06ICdNMTE3IExheWVyOicgKyBzdHIobS5ncm91cCgxKSkgKyAnLycg KyB4aWQNCiAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgbm90ZXBh ZC5zYXZlKCkNCiAgICAgICAgICAgICAgICBub3RlcGFkLmNsb3NlKCkNCg0KDQog ICAgICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6IGZvcnVtX3Bvc3QxODI5 N19tYWluKCkNCg0KMy4gQ3JlYXRlIGEgZmlsZSB0aGF0IGxvb2tzIGxpa2UNCg0K ICAgICAgICAiQzpcVXNlcnNcUEVURVJ+MS5KT05cQXBwRGF0YVxMb2NhbFxUZW1w XGdjXGcwMDEuZ2NvZGUiIDk4MzgNCiAgICAgICAgIkM6XFVzZXJzXFBFVEVSfjEu Sk9OXEFwcERhdGFcTG9jYWxcVGVtcFxnY1xnMDAyLmdjb2RlIiA1ODQyDQogICAg ICAgICJDOlxVc2Vyc1xQRVRFUn4xLkpPTlxBcHBEYXRhXExvY2FsXFRlbXBcZ2Nc ZzAwMy5nY29kZSIgOTc3DQogICAgICAgICJDOlxVc2Vyc1xQRVRFUn4xLkpPTlxB cHBEYXRhXExvY2FsXFRlbXBcZ2NcZzAwNC5nY29kZSIgMTc0OQ0KICAgICAgICAi QzpcVXNlcnNcUEVURVJ+MS5KT05cQXBwRGF0YVxMb2NhbFxUZW1wXGdjXGcwMDUu Z2NvZGUiIDY0NzcNCiAgICAgICAgIkM6XFVzZXJzXFBFVEVSfjEuSk9OXEFwcERh dGFcTG9jYWxcVGVtcFxnY1xnMDA2Lmdjb2RlIiAzMw0KICAgICAgICAiQzpcVXNl cnNcUEVURVJ+MS5KT05cQXBwRGF0YVxMb2NhbFxUZW1wXGdjXGcwMDcuZ2NvZGUi IDUxMjMNCiAgICAgICAgIkM6XFVzZXJzXFBFVEVSfjEuSk9OXEFwcERhdGFcTG9j YWxcVGVtcFxnY1xnMDA4Lmdjb2RlIiA3Njc2DQogICAgICAgICJDOlxVc2Vyc1xQ RVRFUn4xLkpPTlxBcHBEYXRhXExvY2FsXFRlbXBcZ2NcZzAwOS5nY29kZSIgNjQy Ng0KICAgICAgICAiQzpcVXNlcnNcUEVURVJ+MS5KT05cQXBwRGF0YVxMb2NhbFxU ZW1wXGdjXGcwMTAuZ2NvZGUiIDE1NzYNCg0KICAgIHdoZXJlIHRoZSB0aGUgZmls ZW5hbWUgX211c3RfIGJlIGluIHF1b3RlcywgYW5kIHRoZSBYIHZhbHVlIGlzIG9u ZSBzcGFjZSBhZnRlciB0aGUgZW5kLXF1b3RlLA0KICAgIGFuZCB0aGUgWCB2YWx1 ZSBfbXVzdF8gYmUgb25lIG9yIG1vcmUgZGlnaXRzLg0KDQogICAgU2F2ZSB0aGF0 IGZpbGUsIGFuZCBoYXZlIGl0IG9wZW4gYXMgeW91ciBhY3RpdmUgZmlsZSBpbiBO b3RlcGFkKysNCg0KNC4gKipQbHVnaW5zID4gUHl0aG9uU2NyaXB0ID4gU2NyaXB0 cyA+IGAxODI5Ny1nY29kZS1sYXllci1udW1iZXJpbmcucHlgDQo1LiBTaXQgYmFj ayBhbmQgZW5qb3kgdGhlIHJpZGUuDQo=
This worked for me with the example map file, and using a bunch of files that have one or more
;LAYER:##
lines in them… If it doesn’t work for you, and you want help tweaking / debugging, you’ll have to show some effort. -
It might be difficult for someone that says this to “show some effort”.
I’m not a programmer,
and
Please give me a tutorial-like description, I don’t really know Notepad(++).
Not impossible, but, just sayin’…
-
Not impossible, but, just sayin’…
Indeed.
Looks like the OP was last here soon after my first post, and I doubt he’ll be back. For the his sake, I hope my regex suggestions were sufficient for getting something.
-
@PeterJones Hi, I really really appreciate your effort. I’m gonna try them out now (if I can find out how). I was last here last week because I was away for the weekend and was busy with school after.
-
Okay, so I managed to install PythonScript. In theory I created the script (made the file, copy pasted your script and saved as you said (18297-gcode-layer-numbering.py))
I created a new file wich contains the directions for the folder I have my gcode files in, saved. But when I start the script, nothing happens. Literally. I click on the 18297-gcode-layer-numbering script and nothing.
I would show some effort, but I really don’t know how this works. I follow your instructions, but for example I have no idea what the script contains.Thank you very much for this, i don’t know what’s wrong.
-
First let’s check if the plugin has been correctly installed.
Can you open the console?
Plugins->PythonScript->ShowConsole
If so, put the following into the run box in the console
notepad.getVersion()
and press enter or click Run
What do you see? -
Thank you very much for this, i don’t know what’s wrong.
Welcome back.
Thanks for taking the effort to decode the script and install PythonScript; it shows you’re not just trying to get us to do your work for you.
First, start with @ekopalypse’s instructions, and tell us what you see.
After that, open your
18297-gcode-layer-numbering.py
: if you go to Plugins > Python Script > Scripts, you can Ctrl+Click on18297-gcode-layer-numbering.py
to open it for editing.You’ll notice there are a few lines that start with
#console.
– remove the#
comment marker. Save.Open your map file like I showed, making sure you are using the paths to your actual files, and whatever ID you want for each file. It needs to be in the active/top editor window.
Then use Plugins > Python Script > Scripts, and normal-click on
18297-gcode-layer-numbering.py
to run the script. If the PythonScript console wasn’t showing before, it should now.
And you should seefilename = '...', xid = '...'
for each file as it’s processing.If you see any red text in the PythonScript console window, you’ll have copy the whole console window, and paste the contents (especially the error) into your reply in the forum. Once you paste, hightlight that section you pasted and click the
</>
to mark that section as code, so we get the actual characters you see. -
-
Sorry, I forgot that since you were decoding it, the forum wouldn’t gobble the indents.
In the script, Ctrl+A to select all, then Shift+TAB twice to un-indent twice. Save. Then go back to your map file and run the script again.
-
This post is deleted! -
@PeterJones said in Mass editing G-code:
then go back to your map file
You’ll also want to make sure your map file isn’t indented. Again, select all and Shift+TAB until it’s no longer indented.
-
Thank thanks thanks guys. I’ll test it on my printer soon, it is printing atm.
I really appreciate it! -
@PeterJones well I have good and bad news. The good is, your script works flawless, but turns out the gcode needs that line. Can you help me edit the script to insert the
M117 LayerX/sumX
line AFTER the
;Layer:X
line?
-
Good news and bad news:
edit the script
Change the
lambda m:...
line to:lambda m: str(m.group(0)) + "\r\nM117 Layer:" + str(m.group(1)) + '/' + xid
The
m.group(0)
contains the whole original match. The\r\n
add a windows CRLF newline between the original match and the new text. The rest is the same as before. -
Now it works like a charm. Thank you again!