terjeio / ioSender

A GCode Sender for Grbl and grblHAL written in C# (Windows only).
BSD 3-Clause "New" or "Revised" License
210 stars 65 forks source link

Extensibility #67

Open phil-barrett opened 3 years ago

phil-barrett commented 3 years ago

This is not for the first release but it would be great to allow people to add features to the base product without changing the code. Perhaps some sort of plug-in approach. Since this is windows, maybe just a simple dll interface that allows a new tab and hands the tab "canvas" to the dll.

The idea springs from wanting to have a way to manage preventative maintenance schedules. I'd like to be able to know what tasks are needed and when. I don't think the core sender should be burdened with this code, especially since it is highly specific to the machine.

But, I can see it useful as a way to extend the sender. For example, a 3D scanning probe with export via something like STL would probably have some interest but probably shouldn't clutter up the probing section. I can imagine a number features in this plug-in like corner refinement, circle finding, multi-level edge tracing and so on.

terjeio commented 3 years ago

I have already code in another project for dynamically adding .dlls. The MVVM coding pattern means that a lot of data from the controller is possible to get at or subscribe to. What is missing is basically the main sender code allowing adding tabs dynamically.

I don't think the core sender should be burdened with this code

The core sender, GCode Sender.exe, is not much else than code for presenting UI components. The actual UI components are defined and handled in a number of dlls. Probing, 3D viewer, Lathe, Camera, basic UI components etc... So the architecture is in place for this enhancement.