[HN Gopher] I Revived 3-Axis CNC Mill G-Code Simulator
       ___________________________________________________________________
        
       I Revived 3-Axis CNC Mill G-Code Simulator
        
       Author : harvie
       Score  : 112 points
       Date   : 2024-09-16 10:45 UTC (3 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | chiffre01 wrote:
       | Very cool project. what kind of post processors do you test with?
        
         | WillAdams wrote:
         | That's an excellent question.
         | 
         | Also, how are tool definitions to be handled? Each program
         | seems to have their own approach, though some will place the
         | tool description in comments. CutViewer is notable for doing
         | this, and is the example I have been following in:
         | 
         | https://github.com/WillAdams/gcodepreview
         | 
         | (which is quite a different project)
         | 
         | EDIT: Note that the comment system which Cutviewer uses seems
         | to be something of a de facto standard --- Carbide Create uses
         | this same scheme.
        
       | notpublic wrote:
       | Nice and Thanks! Was looking for something like this with minimal
       | dependency.
       | 
       | By the way, changing options updates browser history every time.
       | You may want a debounce. Also, you could remove jQuery and make
       | it even more leaner.
        
       | roamerz wrote:
       | Very nice thank you!!
        
       | leetrout wrote:
       | This is awesome. I learned CNC & manual G-Code on a Rockwell 3
       | axis in ~2000 and I am taken back tinkering with this.
        
         | WillAdams wrote:
         | The big problem for contemporary hobby CNC is that the G-code
         | interpreters for small single board computers such as Grbl
         | running on an Arduino are extremely memory-constrained:
         | 
         | https://bengler.no/grbl
         | 
         | which means:
         | 
         | - no loops
         | 
         | - no branching
         | 
         | - no variables
         | 
         | One work-around for that is:
         | 
         | https://github.com/NRSoft/GSharp
         | 
         | (I took a very different approach in my project linked
         | elsethread)
        
           | abakker wrote:
           | Do you not consider Mach4/UCCNC/Masso/Centroid Acorn to be
           | hobby? I've never encountered a hobby grade controller
           | without loops.
        
             | WillAdams wrote:
             | They are the high-end/legacy-end of hobby CNC.
             | 
             | The Grbl/Arduino stuff seems most prevalent/commonly sold.
             | 
             | That said, I was remiss in not mentioning LinuxCNC, &c.,
             | and as you note, they do have a more traditional G-code
             | implementation w/ loops and variables and branches.
             | 
             | But, I don't think that this simulator supports all of that
             | --- could someone post a sample program which does that
             | sort of thing and test it?
        
               | abakker wrote:
               | Yeah - I guess as a someone who considers my machining
               | "non professional", I've never even really consider GRBL
               | for a machine because "running G code" and "running a
               | mill/router/lathe" feel like different categories. the
               | lack of a reasonable GUI and access to the configurations
               | and macros to handle things like tool changes etc. has
               | never made me interested in GRBL. (I've only ever played
               | with GRBL in the context of a router that needed to be
               | run by UGS) and that felt so limited as to be useless.
               | 
               | That said, I'm on the brink of converting both my mill
               | and router from UCCNC to Centroid just to be into some
               | software that is more "machine operator aware" meaning
               | that it offers more features targeting making my life
               | easier as an operator, rather than simply running gcode
               | in a machine-agnostic way.
        
           | dekhn wrote:
           | I don't understand this comment- gcode never had loops,
           | branching, or variables. And most folks use more capable
           | controllers now based on ESP32 or whatever.
           | 
           | Update: I guess gcode _does_ have loops, branching and
           | variables: https://www.fictiv.com/articles/cnc-machining-
           | macros-subprog...
        
             | KeplerBoy wrote:
             | To be fair those features are pretty irrelevant these days.
             | They really are a relict of times when gcode was
             | handwritten. A skill i learned not even 10 years ago in
             | high school.
        
             | Joel_Mckay wrote:
             | Actually, in LinuxCNC dialect the gcode does have many
             | features most machines will not understand.
             | 
             | This is why these machines can drill and helical-tap plates
             | with thousands of holes with ease. Also, some folks will
             | cut gear-profiles with a slitting saw, and 4th rotary
             | axis...
             | 
             | https://www.youtube.com/watch?v=HI27vSoxCeo
             | 
             | Trying to pull these things off in a CAD/CAM package is
             | usually a fools errand the old guys prank kids with... oh
             | that sounds easy... lol =3
        
           | abe_m wrote:
           | I used to have some machines with Fanuc 6 controllers circa
           | 1981 - 1983. They had variables, macros, branching, etc. I
           | haven't been able to find what processors were in those old
           | controllers, but I'm certain the single board computers of
           | the last decade have more ram, more flash, and way more
           | processing power. If GRBL can't do it, it is a software
           | issue, not hardware.
        
       | buserror wrote:
       | More importantly, what do you use for toolpath generation? I
       | haven't found anything open source that really works...
        
         | WillAdams wrote:
         | Opensource options include:
         | 
         | - Solvespace --- limited to 2D last I checked
         | 
         | - FreeCAD has a workbench for CAM/toolpath generation
         | 
         | - BlenderCAM is a plug-in for Blender which is well-regarded,
         | and together w/ CADsketcher/BlenderCAD works well for some
         | folks
         | 
         | - Kiri:Moto
         | 
         | - pyCAM --- a venerable option, it worked well ages ago when I
         | used my son's gaming computer to make toolpaths.
         | 
         | Rather rough (possibly outdated) list at:
         | https://old.reddit.com/r/shapeoko/wiki/cam
        
         | Joel_Mckay wrote:
         | In general, FreedCAD has 3-axis tool path support, and I've met
         | the kind local guy who started the original Path toolbox.
         | 
         | For 2.5D there are several engraver options with the inkscape
         | mightyscape plugins (scorchworks etc.)
         | 
         | YMMV with the island-routing and surface probing routines:
         | 
         | https://github.com/pcb2gcode/pcb2gcode.git
         | 
         | https://github.com/pcb2gcode/pcb2gcodeGUI.git
         | 
         | Also, we are currently evaluating: viaconstructor, inkcut, GCAM
         | ( https://github.com/blinkenlight/GCAM.git )
         | 
         | If you want 3D contouring operations, than you could also try:
         | 
         | git://pycam.git.sourceforge.net/gitroot/pycam/pycam
         | 
         | And note, if you patch CAMotics to compile on ubuntu 24.04.x it
         | still has a number of Qt5 GUI problems (not entirely unexpected
         | with Qt impact on LTS programs.)
         | 
         | There are also direct gcode generator macros that support the
         | LinuxCNC/emc language extensions. This is the most accurate
         | methodology for turning and milling ops.
         | 
         | Best of luck, =3
        
         | alnwlsn wrote:
         | FreeCAD. Or, if it's simple enough, I write it by hand and use
         | Python to do loops. I've got a handful of Python scripts that
         | can mill holes, make square pockets, write text in a vector
         | font, etc.
        
       | tekno45 wrote:
       | has anyone tried making a mastercam/solidworks replacement?
       | 
       | Mostly interested in looking at some code, not taking on the
       | challenge lol
        
         | WillAdams wrote:
         | FreeCAD and its CAM Workbench?
         | 
         | For the light version maybe Solvespace?
         | 
         | I'm still amazed by Dune 3D: https://dune3d.org/ where the
         | Github page has the footnote:
         | 
         | >I ended up directly using solvespace's solver instead of the
         | suggested wrapper code since it didn't expose all of the
         | features I needed. I also had to patch the solver to make it
         | sufficiently fast for the kinds of equations I was generating
         | by symbolically solving equations where applicable.
        
       | nraynaud wrote:
       | https://nraynaud.github.io/webgcode/
       | 
       | I made one too, a long time ago.
       | 
       | https://nraynaud.github.io/webgcode/webapp/visucamTest.html
       | 
       | I did some code generation too, but it's bit rotting.
        
       | slt2021 wrote:
       | what if I want to learn CNC programming as a hobby, where one can
       | go and learn and practice, without purchasing CNC equipment? (in
       | NorCal/bay area)
       | 
       | lets say I want to emboss hello world on a piece of foam
        
         | WillAdams wrote:
         | Search term for that is "makerspace"
         | 
         | Perhaps:
         | 
         | https://www.humanmade.org/
        
           | Animats wrote:
           | 3x the price of Techshop. I miss TechShop.
        
         | luma wrote:
         | One thing I'll suggest - if you ever want to cut anything
         | metal, you'd probably do well to learn how machining works in
         | general and by that I mean on a manual lathe and mill. The
         | coding part is going to be easy for you (and probably anyone
         | else reading this), but knowing what you want the thing to do
         | is a MUCH different task than being able to tell the machine
         | what to do.
         | 
         | Everything about how you move that tool through the work
         | matters. Materials, workholding, spindle speeds, tooling,
         | tooling coatings, feed rates, plunge speeds, all of these
         | things need to be worked out and they all change when you swap
         | a tool or a part etc. Speeds and feeds are dynamic, you need to
         | learn about conventional-vs-climb milling, you'll need to know
         | about cutter geometries and the materials the cutters are made
         | of, when and how to deploy coolant, the list just never ends.
         | 
         | GCODE is, by far, the easy part for a programmer. It's a very
         | simple language that hasn't changed much in the past several
         | decades. "Knowing machining" is that tougher hill to climb.
         | 
         | My recommendation? Check your local community colleges/trade
         | schools! I took a couple semesters of machining classes as a
         | 40-something grown-ass dude and I learned a huge amount of
         | stuff that would have been expensive or dangerous to learn by
         | trying. You'll get hands-on access to big machines with someone
         | over your shoulder helping to make sure you keep your limbs
         | attached to your body.
        
           | xupybd wrote:
           | GCODE is not so easy in industry. Thanks to manufacturers
           | having their own take on everything.
        
           | LorenPechtel wrote:
           | Second this. My work occasionally deals with Gcode files. The
           | coding is simple, knowing what to do (or not to do!) is
           | harder. My first foray into the world of Gcode I named
           | "Smokey" because it was a quick fix for another program
           | generating bad Gcode that quite literally caused smoking on
           | the work surface and could have lead to a fire had the
           | operator not been paying attention.
           | 
           | And note that while Gcode is consistent it's meaning isn't
           | always--is Z positive going into the work surface or going
           | away from the work surface?
        
         | michaelt wrote:
         | If you _literally_ want to emboss hello world on a piece of
         | foam, you can buy cheap CNC kits on Amazon like
         | https://www.amazon.com/dp/B08HRLGL6C/ which will execute
         | G-code.
         | 
         | They're weak and imprecise _by the standards of CNC machines_
         | but if you 're only looking to learn a bit and cut foam? That's
         | a low price.
        
       | robszumski wrote:
       | I have a post-processed NC file from Fusion 360...which I think
       | is just gcode. How can I transform that into something this can
       | simulate? My hacky attempts have failed.
        
       ___________________________________________________________________
       (page generated 2024-09-19 23:00 UTC)