The intent of this package is to provide framework controls for use with CNC applications on the Beckhoff TwinCAT HMI platform.
A simple utilization of the ace editor configured for GCode and wrapped in a TwinCAT HMI framework control. It provides basic editor functions, syntax highlighting, search & replace, etc.
A GCode parser and interpreter, along with a 3D rendering environment using the BabylonJS engine. This control is intended to provide a 3D tool path visualization of the supplied GCode string.
The master branch will be for TwinCAT HMI version 14.n (currently 14.3). We will maintain a separate branch for users of 1.12.
- Add reference (Either as a package or as a project reference):
- Drop controls on a page
- Call the
SetPathmethod of the Renderer with the Editor'sContentproperty as input:
The control is also able to render the path progress based on the selected line in the editor. It also supports click events on the rendering itself to take you to the GCode line in the editor.
- Enable the
Render Progressproperty of the Renderer, and bind the Renderer'sSelected Segmentproperty to the Editor'sSelected Lineproperty:
- Bind the Editor's
Selected Lineproperty to the Renderer'sSelected Segmentproperty to enable clicking on the rendering to jump to the associated GCode line in the editor:
- Changed some renderer property names; most notably
Selected MeshtoSelected Segment - Added tool path rendering:
- Use the
Tooling Configproperty to specify a model file (supported types). Apply position, rotation, and scaling offsets. Enable theTrack Tool Pathsub-property - Use the
Tooling Dynamicsproperty to bind real-time position and rotation data from the controller - Enable tool path tracking to trace the path of the tooling as it moves
- Use the renderer's
ClearToolPath()method to clear tool path traces - Specify trace color with the
Tool Path Line Colorproperty
- Use the
- Port to TypeScript 😬
- Use ES modules maybe? Would break 1.12 compatability...
- More options around tool tracing
- Fix/refine camera tool following




