[Solved] Starting point for developing


I’m an engineer and have idea about a plugin. I have basic knowledge in python and csharp.

I do not understand however where should I start.

I think RhinoCommon would be the ultimate and most powerful approach but for sure this is not for beginners. There are examples but no explanation on how to add them to your project. And maybe not up to date. I saw they are developed for Rhino5.

How to create Eto forms is there a graphic designer or I have to do it with coding? Where can I find an example of a panel with some widgets on it accessing and manipulating 3d objects?

Can I use WPF created inside visual studio? How do I make it interact with rhino.
Can I make dockable windows?

From hellorhinocommon I undrestood how to create a command, but how do you make an icon a toolbar/panel and place this icon there all coming with the plugin you create?

Can I create custom types? Can I create new type of line or a box that has its own attributes and properties that I can later use for calculations?

What is the difference between developing a plugin for rhino and a component for grasshopper?

Can I create custom rhino types from a custom component in grasshopper?

What is the best streamline? Creating a plugin in Rhino developing a new type of object, then create a component in grasshopper access to that new type so that you can use GH to automate?

Thanks in advance.

Hi @ivelin.peychev,

The best place to start is here: http://developer.rhino3d.com/

There are samples available for both Rhino 6 and Rhino 5:

GitHub - mcneel/rhino-developer-samples: Rhino and Grasshopper developer sample code

The Rhino 6 samples are in the 6 branch, and the Rhino 5 samples are in the 5 branch.

I believe there is a graphics designer in the works. But most Eto work is done by just typing code.


Yes. Keep in mind that WPF is for Windows only.


Rhino - Creating and Deploying Plugin Toolbars

You can create custom objects in Rhino. But the programming can be difficult. You will want to see how far you an push regular Rhino objects before diving into custom ones.

For one, Grasshopper components don’t have commands, or much user interface to speak of.

We’ll need more information as to what you want to do and why in order to provide an answer.

Again, we’ll need more information as to what you want to do and why in order to provide an answer. But in general, if you have technology you want to share between a Rhino plug-in and a Grasshopper component, then put this in it’s own assembly.

Let me know if we’re on the the right track.

– Dale

Hi @dale,

Thanks for the reply, please see below my answers and counter-questions. :slight_smile:

Yes, I visited these two websites but they are not beginner friendly. I only know basics in programming, and using specific API has its peculiarities in usage, I must go deeper into namespaces and into the structure of the cs file itself. You would call me a script-kiddie :slight_smile: and the examples given inside the api list of functions is useless to me. I don’t know where to put the snippets of code from the api into my code, in which stack in order to make it work. I tried a few times with eto and the plugin didn’t compile after that. There’s only one tutorial out there HelloRhinoCommon and it’s done great but this is not enough. At least one command, button (make an icon to the button), place the button inside a toolbar/tab/panel. That will be enough for a beginner to get the idea.

I don’t care about Mac, nobody uses Mac in EU. And definitely not in my field of engineering.

Easy or hard, still I would like to see some tutorials about it. If it is too hard, I’ll take an advanced course in csharp if I have to.

by “difference” I mean can you create a grasshopper component which after baking will create a custom type of object in rhino. Or I first need to make the rhino plugin containing that custom type, then a component in grasshopper to be able to bake into a custom type of object.

So, imagine a box in rhino, but this box has its attributes like material, and dimensions that define it. And these attributes are not just static ones but rather dynamic, like what grasshopper does, but within rhino, like an additional properties panel that gives you access to change the dimensions of the box and the material in real-time. Without scaling. In a way making Rhino more parametric.

Another example is a dimension object, but instead of the dimension to adjust to the 3d object, the object is adjusted to whatever the dimension value is.

Another example is imagine a plane, how about making a type of plane that is visually scaled so that it appears exactly the same not taking the zoom into account. Dynamic scaling.

How? There are no tutorials about that.

The first of the two has a section called Guides. It does quite a bit of hand-holding, with even a crash course in Python (albeit a bit short).

Funny, the EU I live in is teeming with Mac users.

If you want to do complex things it’ll pay off to get more into programming beyond scriptkiddie.

I skipped this part, leave it for @dale to answer (:

Check your favourite search engine for tutorials on C# assemblies, DLLs

1 Like

I know a little about DLLs how to create and use them, but my bad. In engineering “assembly” brings something else in my head :smiley:

:slight_smile: with over 10 years in Ship Design in a bunch of countries in EU, never seen a single Mac, let alone someone using MacOS.