TCAM Idea
2024-11-04
It is 4:30 AM. While sleeping, my mind came across an idea so captivating that I am but forced to write it down here and now.
So, problem statements first:
- There is no production-viable FOSS CAM software out there
- Popular GUI-based options are still proving to be inefficient in their user interface
- *There is no produciton-viable CAM software for linux out there
And so, what would be the solution? Text-based CAM! A higher level language that compiles down into G-Code. A piece of software that is tightly integrated with said higher level language. An IDE of sorts that is optimized for simulating and interpreting the aforementioned langauge and it's functions.
Essentially it would be OpenSCAD, but for CNC Machining instead of modelling and with an emphasis on usability.
For now, i'm calling this project TCAM. It would be a huge undertaking, but I believe that it is the best first step towards the FOSS space having a viable CAM software set.
So, here's the kicker, out of the gate, I can tell that this project will require a toolkit that is far more robust than what I am currently used to. It's Rust or years of cruft around projects this complex.
And so, here's what is required to make a minimally viable product:
- A NURBS, BRep and mesh capable model renderer
- A procedural, deterministic and change-stable way of assigning identifiers to NURBS/B-rep model features.
- A base 3D navigation environment, preferably having QoL stuff like FXAA
- A formal language syntax definition of the language in mind
- A parser, lexer, compiler, linter, formatter stack
- A full-featured, syntax highlight capable text editor
- A mesh subtraction engine to allow for model cut simulation
- A procedural cutting tool generator
- A cutting tool feed/speed preset storage/selection system
- A cutting tool storage database
- A full featured, good set of documentation
- A well-picked and well-researched GUI toolkit
- Infra for said documentation (be it codegen and/or web hosting)
- All of the above having configurable shortcuts
- A .step importer
- Algorithmic implementations of various cutting strategies, possibly in the predefined language
- G-code post-processing support.
It's.. a lot. Way more than a single person can manage, to be honest