Skip to content

ACADIA 2011 Conference & Rhino Programming

September 27, 2011

I am excited to be attending the ACADIA 2011 annual conference in Calgary & Banff beginning in two weeks!  The conference is split between the two locations, the first two days in workshops on the University of Calgary campus and the remainder at the Banff Arts and Cultural Center.  The biggest question of the moment is which of the workshops to sign up for during those first two days in Calgary?!

Any audience members who will also be there, please feel free to get in touch with me!  Happy to talk shop over a cup of coffee.  Will pay for guest blog postings with beer.

Speaking of talking shop, I have quietly extended my capability to develop plugin tools in the Rhino 3d modeling environment and am now ready to flaunt them at large.  There are three accessible levels of programming in the new beta version of Rhino 5.0:  Grasshopper, Python, and C#, in increasing order of both capability and complexity.  All are a great deal of fun and have different strengths and weaknesses.  What makes the three together a particularly powerful combination is the ability to develop code at the appropriate level of programming sophistication and then to utilize the results in the others.  For example, complex algorithms can be implemented in C# and then expressed as Python commands or Grasshopper objects.

The simplest of the three for programming, the Grasshopper visual language interface,  has become a fascinating starting point of a great number of new features and capabilities.  An interesting example of outside the box thinking is Andrew Payne’s Firefly plugin for controlling Arduino micro-processors.  (I’m looking forward to hearing Andrew’s talk at ACADIA as well.) Grasshopper provides an amazing ability to switch back and forth between the Rhino model and the program, leading to a code development process I like to think of as “Forward-Backward” code development in contrast to traditional “Top-Down” and “Bottom-Up” approaches.

Grasshopper provides a limited set of data structures for passing between program objects, however, basically just lists and lists-of-lists of things.  Great for generating lots of objects but tricky for accessing individuals within those lists and costly in terms of storage because it limits the ability to release and garbage collect intermediate objects; all objects created exist throughout the program.  Code loops are also tricky to implement although this has been addressed with the clever Hoopsnake plugin. Furthermore, although it is easy to quickly generate programs in visual environments, I often find it frustratingly difficult to go back and understand what I built even a short time later.  Developing modular and robust code is tricky, especially in the hands of less experienced programmers.

As a result, after hacking out rough ideas in Grasshopper I tend to move quickly into implementing the complex parts in traditional imperative code.  This is where Python and C# come into play.  It is possible to embed Python or C# code directly into Grasshopper objects for use within that environment, to write scripts directly in Rhino, or develop in Microsoft’s Visual Studio 2010 Integrated Development Environment with all of its attendant debugging and build support. For my work, this is where the rubber meets the road.

Over the next few weeks I will present here some of my initial experiments and short tutorials to enable others to get started at each of the three levels of programming in Rhino and to understand their strengths and weaknesses.  And of course I will be posting from the conference as well.  For those of you active in the field there is a nice LinkedIn group for ACADIA and somehow I have also taken on the responsibility for enlisting support at the conference to get its activities posted there.  Feel free to join in the conversation there as well.

It is a busy time and even if you can’t come to the conference I hope that you will enjoy the vicarious glimpses here instead!  Stay tuned, as there is more to come…!

– Brian –

One Comment


  1. logos

Comments are closed.

%d bloggers like this: