UI Interface

I am initially an Architectural Technologist and very interested in coding and software design. I have one-two year experience how to use Python in Rhino. I am also interested in other part of software development as well, such as User Interface Design. I am wondering what UI librray has been used for mainstream, good looking softwares like Rhino or Adobe Photoshop, BlueBeam, Corel, Solidworks, Archicad etc. that would be interesting to know. I assume they all code in C++. I checked Google about ready to use UIs, but I did not find. I know popular UI packages such as Windows Forms in C#, Tk for Python, JavaFx, Telerik etc. but do not know if software companies in AEC they use a custom coded one or something else.

Part of the Rhino GUI is created using Eto.Forms, which is a .NET library. This is used on both the Mac and the Windows version. In Rhino 8 more and more of the GUI is being moved on top of that, instead of the age old MFC that the oldest code is built on.


I can’t speak for other 3D software, apart from Blender - fully custom GUI, drawn entirely in OpenGL.

Another quite good library is Qt.

For plug-ins that run in Rhino best stick to Eto.Forms.

1 Like

Hello! It would be interesting to know what ETO forms are capable of. Like anything? How feature rich is it?
Would it be theoretically be possible to write a plugin like grasshopper with it’s countless UI widgets with it?

Grasshopper 2 is being written using the Eto.Forms library. All of the custom components are done through the Eto.Forms API.

Here some older Work In Progress demos of the features being implemented Zooming Number Line - YouTube and Tabbed UI - YouTube and more (see the playlist of the first link, videos from #17 onwards). Lets not forget the Grasshopper 2 Icon Editor: Grasshopper2 icon editing in Rhino - YouTube

Thanks! Looks like the dream of Rhino’s UI getting a refurbishment with a smooth and modern UI codebase will come true. This is beautiful!

Thank you for sharing some links!!! I can’t wait to dig in!

I have been messing around with ETO for a while, but I always feel like I am just scratching the surface.

I am trying to find good examples or open plugins that I can learn from that have nice GUI for rhino and/or grasshopper. It seems like there is so much more to ETO than what I find in the available examples.

Edit - I checked out the links and they do show some cool GUI functionality, but I was hoping for some info on how to make these kinds of things work. Anyone know where you learn to use ETO for more advanced features?