Saturday, March 24, 2012

Revit API Notebook: Randomization Examples

Tired of making the 'same old' formula-driven shapes?  Why not sprinkle a dash of randomization into your BIM casserole.

This RevitPythonShell section looks at using .NET's Random class as a means of creating irregular geometry and adjusting family parameters.  The examples intentionally use modified code from previous basic examples so you can track the logic.

Tuesday, March 20, 2012

My Revit API Notebook!

This wiki page is my personal (re: public) diary for exploring the Revit API. This page is as much a resource for me as I hope it will be for others.

 Developing custom tools for Revit using the API can be a complicated endeavor. The program is quite complex and the development process is not nearly as straightforward as developing tools for more 'free geometry' modelers such as Rhino. Please see Jeremy Tammik's article titled BIM versus Free Geometry and Product Training for a more detailed explanation of the 'barriers to entry' in Revit API development.

This notebook attempts to remedy a few 'resource deficiencies' in learning and applying the Revit API in a design workflow…
  •  Design-Related Techniques: Most API examples I have found on the web are related to model management. For designers interested in computation and automation, finding good design-related examples can be a frustrating experience. The examples here show how the Revit API can be used as a design tool specifically within family creation environments such as the conceptual mass. 
  • Vasari Implementation: Vasari is essentially a stripped down version of Revit with additional conceptual design and analysis capabilities (and it's free!). Vasari also features a version of the Revit API. The examples here will focus on Varsari's capabilities but most will be applicable in the full versions of Revit. 
  • RevitPythonShell-Based Examples: Not many examples exist for using the RevitPythonShell Add-In. The tool provides many iterative scripting capabilities similar to those found in other popular modeling tools such as Rhino. This makes the Revit API much more accessible to designers and those in need of some quick automation!
My hope is that this will save designers time in being productive with the Revit API and perhaps contribute to the creation of a more serious 'scripting culture' around Revit and BIM tools in general….

Current examples include basic geometry creation techniques and family parameter manipuation.  I will progressively post more interesting examples in the coming weeks and months. Keep checking back!!!

This is still work in progress and I am learning new things every day. I am positive a few of you could teach me a thing or two… If you have any comments or suggestions please let me know! 


-Nathan Miller

Friday, March 16, 2012

LunchBox Maintenance Release

...and now for some spring cleaning...

This is a maintenance release that fixes some critical bugs in the paneling and structure components.  You can read the full list of fixes here

Aside from the fixes...there is one cool thing I added to the Hex grid component to spice things up a bit....

Tuesday, March 6, 2012

Upcoming April Lectures: Back-to-Back!

I am happy to announce 2 back-to-back lectures coming up this April.  I will be presenting at the Digital Provocations Symposium at the University of Minnesota which takes place April 12-14.  I am following this up with a presentation at Woodbury University on April 16th as part of the Serial Series lectures and workshops.

The title of my talk(s) will be Algorithms are Thoughts:  New Rules for Design Practice
My lecture will cover some recent design work, pop the hood on some new tools (re: thoughts), and discuss the significance of the designer~programmer paradigm.

You can find more information about these two events at the links below....

Sunday, March 4, 2012

LunchBox v0.263

Yet another update to LunchBox with new components and updates to existing functionality.

New components:
  • Attractor (Normal):  A straightforward attractor system that maps distance variables to a domain.
  • Diamond Grid:  A grid component that exposes the corners, midpoints, and normals of diamond-shaped panels.  Useful for constructing custom panels with this as the base pattern.
  • Rhino Command:  A component that allows users to send commands to the Rhino command-line from within Grasshopper.  Useful for automating commands not available inside of Grasshopper.

Please note that you may need to update parts of your definitions if you are using some of the updated components.  Some components now have new outputs and may display slightly different behavior.

A full list of updates can be found here...

I have also made a little example file for using the attractor system.  (more examples coming soon)