Using Xamarin to rewrite iRhino 3D in C#

(Dan Belcher) #1

Continuing the discussion from Rhino for Mac UI Question:

iRhino 3D was originally written in Objective-C using Apple’s Xcode IDE - the standard method of writing Mac and iOS applications. Over the past year or so, we rewrote iRhino 3D in C# using Xamarin. There are lots of advantages to Xamarin, chief among them being the ability to use the native UI - as well as UI building tools.

We used Xamarin Studio on the Mac (Xamarin’s IDE) - along with Xcode - to build the UI for iRhino 3D. Xamarin Studio allows you to open Apple’s interface builder (.xib) files in Xcode - edit them there just as you would if you were working with Xcode and Objective-C. You use Interface Builder as you normally would, creating outlets and actions and linking them up to your UI elements. When you save the .xib, Xamarin automagically generates the C# properties (that bind to these elements UI) for you.

Just as with Objective-C and Xcode, you don’t have to use interface builder when using C# and Xamarin. You can write the UI yourself from scratch without ever creating a .xib should you so choose. From a back-end plumbing perspective, iOS/CocoaTouch doesn’t care if your UI is inflated from a .xib or created in code …just as long as all the actions/outlets (read: methods/properties) load when it comes time to tap a button.

(Gabriel Ganzarolli) #2

Is possible to create a “IRhino like” app, but that allows some live parameters changes in the models?

(Dan Belcher) #3

If you had asked this question a couple months ago, I would have said: “Nope, not really.” However, this answer has changed.

iRhino 3D is a Rhino3dmIO client. That means that it really uses the same Rhino3dmIO library for reading and writing 3dm files that Rhino uses. We publish Rhino3dmIO for Desktop, iOS, and Android. So that gets you as far as reading 3dm files - which is basically what iRhino 3D does. That said, that is really only 10% of the way to what you would (likely) want to do.

Now, running all of Rhino on a mobile device is not feasible right now, hence me saying above: “No.” But…

We just announced, which allows you to make calls to a web-service that runs Rhino in headless mode. This is basically Rhino’s geometry engine running as a web-service. Head on over to that category to take a look.

So now the answer is “yes, in principle, it is possible to write a mobile app that allows you to change the 3dm model.”

(Gabriel Ganzarolli) #4

its really nice.
Are GH paramaters commands also applicable?

(Gabriel Ganzarolli) #5

i mean, create a mobile application (virtual interface) for changing a limited number of parameters in a base model (personalization of a product), pro 3d printing purposes.

Like “giving life” for this dumb app prototype (

This is a project for customization of prosthetics covers, in ths example i exposed a hipotetic thickness change (espesura).

The base model is almost pure GH params (like thickness).

(Dan Belcher) #6

We would like to add the ability to pass a Grasshopper definition to the compute engine but we are not there yet.