Posts by tdawg

    This will improve readability a lot and a built-in variable handler should be able to fix issues of double-usage with specific variables of which some are persistent, some not, some write-protected.

    Man that's exactly what we need! I was wondering if there was a way to ID duplicate or unused values. Really looking forward to that. It would be awesome to use text variables like in your tutorials and have them mapped on the back end. Awesome idea.


    Alright, my work is finished... for now. Here's my github repo with all of my changed files. It is drastically different from the Sorotec version, but mostly in naming and some added user macros to rapid move into known locations.

    If you find any issues, please let me know! I need that feedback to learn. Not sure how to properly collab over Github, but if you have an idea I'm happy to try it.

    Over the next few weeks, I will work to isolate and test some functions that I'd like to propose Sorotec include in their macro, like improving the cancel functions in some dialogs. I've implemented the "fixes" with my very basic knowledge and hope to polish it up so I can easily present it for use.


    I programmed it, but I also don't see any reason to use this option.

    But if you have a couple of thousand users, there is always the one or other who needs a certain option.

    Of course, it's a big job to make this work for everyone. It is really amazing what people are doing with these machines!

    My guess would be that users wit an automatic tool changer might want to use this option. They do not need to have the tool measured with every change because the tools are chucked in their holders so their length of protrusion stays the same, thus can be captured in the tool table.

    Thinking of that scenario, I think you are right. I haven't even begun to consider fixed tool lengths and tool tables, and probably won't for some time given the price of ATC. Hopefully in a few years though.

    Back to the change_tool macro!

    There are 3 types:

    • 0 ignore
    • 1 move to tool change position
    • 2 move to tool change position and measure tool.

    What is the reason to use type 1 to change tools during a program without measurement?

    Original Sorotec code auf Deutsch:

    Schallbert I came back to this thread to ask if you would post your version so I can compare my edits ^^ Thanks for the link, I will have a look around.

    At this point it would probably be good to have a new thread specific for the macro that can contain your articles and the github repository. I made a private github myself to testdrive hosting the files, but am still learning how to use it and implement versioning online instead of my hard drive.

    I am really surprised how little info I can find specific to Eding macros. The Sorotec version has mostly different variables than the Eding macros and is much more complex, so it's obvious they have someone really smart writing this stuff. That person should make a youtube channel or something! Maybe there is a forum where people get together and write macros?

    I have completely free time at work during the holidays and have been reading/editing macros for the last several days straight :sleeping: I think I've hit a point where I am going in circles a little bit and need a break. I'll reach back out when I get back at the computer.

    I would like to build a lightweight enclosure and look to using aluminum extrusions for the frame.

    I see a lot of projects people make with extrusions, but where do they buy them? I have so far only found industrial suppliers that want my annual salary for a few meters. I know it costs more than wood, but some of it must be more affordable if people are using it at all.

    Any good online shops or regional suppliers we can use? Initial calculations (1500x1000x1000) suggest I need about 15 meters.

    I discovered that there are some pre-defined callouts within EdingCNC that refer to the macros.

    When I renamed the 'change_tool' sub routine to 'TOOL_CHANGE', it broke. Renaming it fixed it.

    Looking through the manual, other routines with hardcoded names and called by the software itself are:









    Everything else can be named whatever you want and associated with your own sub routine.

    You can even nest your own subroutines within these software routines to customize their sequences.

    That's easy - it is because EdingCNC developers decided to hard-code a set of variables (including this one) internally to always reflect probe position.

    So does the G38.2 update this value on the backend when #5067 (probe triggered) is triggered? The manual says #5067 is 0 unless triggered to 1, so just want to confirm my interpretation. This would be easy to watch if I had a machine with me, but I am left to work this out in simulation mode and my monkey brain while I am away.

    G53 G38.2 Z[#4509] F[#4504] ; Probe Z to sensor height with Probe Feed #4504
    IF [#5067 == 1] ; Sensor is triggered

    I don't have any improvements to suggest on your code, it is already very easy to understand. Do you think I could remove the tool table recording from the Sorotec macro since I use a normal collet?

    I actually thought you work for Sorotec! Do you host any of this on Github? I am looking to start keeping mine there for version control and availability.

    I am so blown away by this AI tool, that I just wanted to let you know about it and try it for your own learning experience with GCode and programming.

    The technology is pretty close! It is very similar to our CNC machines; it will operate precisely according to commands, in this case how the question is asked. I needed to rephrase my question a few times, but I'm still impressed with it:


    Ha that is amazing coincidence. I recently messed with AI gcode a few days ago when ChatGPT went public, but never even thought to mess with it as I sat working on this code the last 2 days.

    It seems to restate the macro in plain terms, which is great for learning but doesn't exactly explain when the #5053 is recorded. I'll still take your lead and see what it comes up with for some other macros I've been thinking about. Maybe I'll even see if it could've done all the translation for me if I can handle the shock ^^

    I am working to fully understand the macro.cnc from Sorotec and translate version (2.1e) to english in the process. I am trying to fully explain each line using comments and I am completely tripped up in the tool measurement sub routine (sub user_2).

    I am referencing Schallbert 's amazing website on macros and there seem to be some extra lines in the Sorotec version I want to understand.

    Can someone help me understand how the machine knows the probe measurement (#5053) without issuing a G92 command at the sensor trigger point?

    Specifically, why does the machine move to safeZ and then do the measurement calculations:

    IF [#5067 == 1]

    G53 G0 z[#4506]

    #[5400 + #5016] = 0

    #[5500 + #5016] = 0

    #5021 = [#5053 - #4509]

    msg "Tool Length = " #5021

    IF [#3501 == 1]

    #4502 = [#4501]

    #4501 = [#5021]

    #3502 = [#4501 - #4502]

    G92 Z[#5003 - #3502]

    Here's the whole code from after the machine is moved to the sensor:…ste-jetzt-veroeffentlicht

    Hope that tool helps you. I found my "local" dealer about 1 hour away and make some runs every few months for a few boards. Of course they come in large 2500x1250 sheets and I cut them down at home as quick as possible.

    The prices are similar to the baumarkt, BUT the quality is much better. I recently milled some Buche - Keilzinkung Lamellen from Obi and hated it. The durchgehende Lamellen from the holzhandler is only a little more money and looks great.