Community
    • Login

    Mass editing G-code

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    17 Posts 4 Posters 1.8k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • PeterJonesP
      PeterJones
      last edited by

      What you describe sounds best suited to a programming language. Using PythonScript or LuaScript, you can embed the code in the Notepad++ application, but it still is best handled by programming.

      If x were the same for every file, you could easily set up a regular expression (FIND = ^;LAYER:(\d+)$, REPLACE = M117 Layer:$1/x, MODE = regular expression, and Replace All in All Opened Documents, or switch over to Find In Files tab, and use Replace in Files after defining the file mask).

      If you just have a handful of files with a different x per file, you could just do that once per file, using Replace All instead of the all-documents button.

      If you have many files, that becomes unwieldy, at which point probably a PythonScript or LuaScript (or any programming language you want, if you don’t need it to have access to the contents of your Notepad++ editor window(s)), where it would be an algorithm of “populate an array or hash/map structure which will map filename to X value; for each file { x = map(file); search-and-replace using those regexes, with the appropriate X value }”

      • PythonScript project and download page
        • PythonScript Install Instructions for recent Notepad++ versions
      • LuaScript project and download page
        • I believe you can install LuaScript directly from Plugins > Plugins Admin without having to follow special directions.

      If you are willing to put in some effort with muddling through a scripting language: give it a try, but if you need help, if you posted your attempt at the PythonScript or LuaScript code, and told us why it’s results didn’t match what you were hoping for, you’d probably get some good help here. If you just want us to write your code for you for free, good luck with that.

      1 Reply Last reply Reply Quote 1
      • PeterJonesP
        PeterJones
        last edited by

        @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.

        1 Reply Last reply Reply Quote 4
        • Alan KilbornA
          Alan Kilborn
          last edited by

          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’…

          1 Reply Last reply Reply Quote 2
          • PeterJonesP
            PeterJones
            last edited by

            @Alan-Kilborn,

            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.

            Levente VargaL 1 Reply Last reply Reply Quote 3
            • Levente VargaL
              Levente Varga @PeterJones
              last edited by

              @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.

              1 Reply Last reply Reply Quote 0
              • Levente VargaL
                Levente Varga
                last edited by

                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.

                1 Reply Last reply Reply Quote 0
                • EkopalypseE
                  Ekopalypse
                  last edited by

                  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?

                  Levente VargaL 1 Reply Last reply Reply Quote 2
                  • PeterJonesP
                    PeterJones
                    last edited by

                    @Levente-Varga ,

                    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 on 18297-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 see filename = '...', 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.

                    1 Reply Last reply Reply Quote 2
                    • Levente VargaL
                      Levente Varga @Ekopalypse
                      last edited by

                      @Ekopalypse 2019-10-01 (1).png

                      1 Reply Last reply Reply Quote 0
                      • PeterJonesP
                        PeterJones
                        last edited by

                        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.

                        1 Reply Last reply Reply Quote 2
                        • EkopalypseE
                          Ekopalypse
                          last edited by

                          This post is deleted!
                          1 Reply Last reply Reply Quote 0
                          • PeterJonesP
                            PeterJones
                            last edited by

                            @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.

                            Levente VargaL 1 Reply Last reply Reply Quote 1
                            • Levente VargaL
                              Levente Varga
                              last edited by

                              alt text

                              Thank thanks thanks guys. I’ll test it on my printer soon, it is printing atm.
                              I really appreciate it!

                              1 Reply Last reply Reply Quote 1
                              • Levente VargaL
                                Levente Varga @PeterJones
                                last edited by

                                @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?

                                1 Reply Last reply Reply Quote 0
                                • PeterJonesP
                                  PeterJones
                                  last edited by PeterJones

                                  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.

                                  1 Reply Last reply Reply Quote 2
                                  • Levente VargaL
                                    Levente Varga
                                    last edited by

                                    Now it works like a charm. Thank you again!

                                    1 Reply Last reply Reply Quote 2
                                    • First post
                                      Last post
                                    The Community of users of the Notepad++ text editor.
                                    Powered by NodeBB | Contributors