Please Explain Local Rhino API vs Rhino Compute

Can rhino3dm classes be turned into a RhinoCommon class and vice versa? I had this idea. Maybe I could send a whole lot of Rhino.Geometry.Brep to a compute instance hosted on a much more powerful place asynchronously to mesh/intersect. In that case I’m using rhino compute within rhino, offloading some heavy lifting. I asked in this post:

Offload meshing to rhino compute - Grasshopper Developer - McNeel Forum

What do you think? Thanks. @fraguada

The data contained within these objects is exactly the same, so a BREP in rhino3dm is the same BREP in RhinoCommon.

Your idea to offload computation to more powerful computers is certainly a use case for RhinoCompute.

1 Like

Hello,

I have the same confusion and this thread helps a lot.
May I the following questions:

  1. I have a C# Rhino Plugin that is currently an add-on in Rhino. I want to change that, and host that plugin core processing functions on the server and expose them as APIs. What is the suggested way to do so? As far as I understand, I have to host a Compute server, and host another server for the plugin, and replace all RhinoCommon uses of the plugin with RhinoCompute calls, is it right?

  2. I look at the guide to deploy RhinoCompute to Azure, and the scripts boostrap_server.ps1 actually installs Rhino on the server. So if Rhino can actually be installed on the server, why can’t we just use RhinoCommon, why do we need RhinoCompute?

I have read all guides and discussions and am still confused before asking. Thank you for your help.

Rhino.Compute allows client devices to access RhinoCommon functions on a server with Rhino installed.

In your use case, you could develop your plugin as you would have normally for Rhino. You need to add some code to expose your plugin functions so they are accessible via Rhino.Compute. You then install this plugin in Rhino on the server where you are running Rhino.Compute. You do not need two separate servers in this case.

As you say in your point #2, you don’t need to do this as Rhino.Compute is the mechanism to access RhinoCommon methods (as well as those of installed plugins) from client devices.