Chart Plotting Libraries in Rhino using ETO in C#

Hi all,

My plugin’s conversion to ETO is going really well, but I’ve run into an area where it is very difficult to reconcile components, and was wondering if anyone knows what the best way through would be.

Using the old .Net Framework, my plugin plotted signals on charts (signal processing is important in acoustics analysis and rendering). Previously I used Zedgraph in Windows Forms, and it was very reliable. However, now that I’m trying to get the same kind of output in ETO, Zedgraph it seems might not be useable anymore in .NET Core, and particularly not cross-platform.

After a quick review of alternatives, ScottPlot looked pretty good, so I attempted that… however, I found ETO version conflicts over there. If I use stable versions, Rhino would need to be using ETO 2.5. If I use beta versions, Rhino would need to use ETO 2.7.5. You wouldn’t think there would be significant differences between 2.7.0, and 2.7.5, but according to Visual Studio, functions move around between these minor versions, and as a result, Rhino’s ETO library no longer works - and I find myself at a loss for how to do this:

if (FileLocation.ShowDialog(RhinoEtoApp.MainWindow) == DialogResult.Ok)

As the compiler now has an issue with the ‘RhinoEtoApp’ namespace if I use the later ScottPlot beta versions.

…among other things, some of which I can find a workaround for, and some of which I am not sure how to resolve.

(I know I’ve said it before, but the McNeel staff are pretty good at making sure that our plugins don’t break at updates. I feel blessed that I didn’t really have significant issues running my Rhino 6 plugin in Rhino 7, and I don’t fault anyone at all that I finally have to rethink this in Rhino 8 - but I would appreciate some advice.)

So, here are a number of questions:

  1. Will Rhino move on to later versions of ETO, or will Rhino stick with ETO 2.7.0? If it will move on, how soon will that happen?
  2. Are there other charting libraries that anyone can recommend for use with ETO in Rhino, and particularly which would enable cross-platform use of my software?

@stevebaer @dale @curtisw

Thanks in advance!


Hey, have you tried Oxyplot?

There is some topic about using Oxyplot for Rhino in Eto there: Eto , Windows chart or oxyplot?

You can check GH plugin using Oxyplot there: GitHub - paireks/Pterodactyl: Grasshopper plugin for report generation and data visualization

Hi @w.radaczynski,

I have not tried OxyPlot. I had found that conversation, but the outcome of that was that they would not use ETO, but WPF (if I understood correctly).

Thanks for the peek at Pterodactyl… but it looks like they don’t use ETO in that project anywhere. A search of the repository shows a few dependency references, but no actual use of the ETO library. It’s a Windows Forms application.


I may have found an answer… it’s a little untidy, as I can’t use nuget with this approach anymore.

Basically, I cloned the ScottPlot and ScottPlot.ETO repositories, and recompiled it referencing Rhino’s ETO library, and at least it compiles now…

I’m dreading having to do this over and over again whenever an update is needed, but I guess this is the world we live in now.

Thanks for trying, guys. I will still take advice if anyone has any to give.