Wednesday, December 1, 2010

USC ARCH 517: Spring 2011

I am pleased to announce that I will be returning to the USC spring semester line up to teach a 5-week seminar on the use of Grasshopper and Galapagos.

Keep an eye on The Proving Ground Wiki for course information.

Saturday, November 13, 2010

Kangaroo Physics

Below are some videos showing off some of the fun I am having with the Kangaroo Physics engine by Daniel Piker. Kanagroo is a powerful and intuitive tool that allows you simulate physical phenomena, such as gravity, within the Grasshopper environment.

You can test drive Kangaroo by visiting

Click the images to go to videos:

Sunday, November 7, 2010

ACADIA Regional 2011: Parametricism (SPC)

The 2011 ACADIA Regional Conference will be hosted by the University of Nebraska Lincoln in March.

Paper abstracts are due by December 21st, 2010.


1.0 Analog Parametrics
2.0 Forms that Matter
3.0 Building Envelopes & Surface Geometry
4.0 Investigations in Digital Curricula
5.0 Reconfiguring Collaboration by Computational Means
6.0 Comprehensive (Parametric) Design
7.0 Simulations: Quantitative and Qualitative
8.0 In-Formation Based Design

Sunday, October 10, 2010

Saturday, October 9, 2010

Galapagos + Ecotect: Tower Form-Finding Video

The video shows a snippet of a tower form-finding process using Grasshopper, Galapagos, and Ecotect.

Custom Grasshopper components are used to send a tower mass to Ecotect and retrieve information via a DDE connection. Galapagos evaluates the tower analysis results and looks for shapes which have the lowest total radiation.

A low-poly shape is used for the purposes of speed in this video.

Friday, October 8, 2010

Web3D, VRML Testing

I'm not seeing much info on the use of using VRML or X3D on my usual blog circuit... so I thought I would do a quick post on the topic to point interested people in the right direction.

Setting up your web browser to view 3D files:

VRML Plugin and Browser Detector
Cosmo Player (View VRML Files in a web browser...I am currently using this to quickly test models)

After you have installed a web browser plug-in, you should be able to freely view 3D files...

Here are some other helpful resources....

Web3D Consortium

X3D for Developers

Give it a go... it's a lot of fun!

Friday, September 17, 2010

LADTF Lecture: Computational Design - Aesthetics and Approaches

Date: September 16, 2010
Location: UCLA, Perloff Hall

Topics covered:
Information vs. Data
Technical challenges in collaborative workflows
Design computation at NBBJ
Tool customization
Tool 'ecology'

Friday, September 10, 2010

The Los Angeles Design Technology Forum Lecture

I will be presenting at UCLA as part of the Los Angeles Design Technology forum on Thursday, September 16th @ 7:00 PM.

My presentation will be alongside Satoru Sugihara from Morphosis.

More information can be found at the LADTF website

Thursday, August 26, 2010

Grasshopper FTP Components

I have created a few scripting components that allow Grasshopper users to upload and download files using FTP.

An HTTP component allows the user to download files from a web address.

The components are located at The Proving Ground Wiki

Friday, July 16, 2010


I am happy to announce that I will be presenting at the ACADIA 2010 conference in NYC @ the Cooper Union.

My presentation will look at some case studies to examine how design information exchange and collaboration occurs in an international setting. The presentation will also study emerging workflows and evaluate their benefits for integrating teams and maintaining information integrity.

For more information, visit the ACADIA 2010 website.

Monday, July 12, 2010

Making a Remote COM Connection to AutoCAD using VB.NET

Inter-process communication allows you to create dynamic workflows between software applications. This can be achieved in a variety of ways (COM, Remoting...)

The example below provides some basic code for establishing a COM connection to AutoCAD using VB.NET. After a connection is established, it is then possible to send remote commands to the AutoCAD command-line as well as automate other features in the program.

The screenshot shows a custom Grasshopper VB.NET component using this code.

The process is quite simple.... Head over to The Proving Ground Wiki for details...

Feedback Cloud Lecture: Teaser Image 01

My lecture for the BIM Analytics symposium will demonstrate a series of methodologies for achieving a performance-driven design and collaboration process.

As a teaser... here is one technique that I will demonstrate showing an "ecology" of tools in use at once.
The tools are connected together and sharing information using inter-process communication.

More 'teasers' to come....

A change to the Rhino surface will update the connected software environments creating a dynamic design-analyze-document process.

1. Rhino (surface design)
2. Grasshopper (surface rationalization, inter-process communication control)
3. Ecotect (Solar analysis)
4. AutoCAD (2D Panel documentation)

[uto] were the first ones to figure out the process for connecting Grasshopper to Ecotect and were generous enough to provide me with information on how Ecotect could be accessed remotely using DDE. The particular components depicted in the image are custom made 'from scratch' to suit my specific needs.

For those of you interested in a similar kind of Ecotect-Grasshopper DDE link, please refer to [uto]'s Grasshopper plug-in: Geco.

For those of you interested in the COM connection to AutoCAD, you may find some sample code in my post here.

Info on my BIM Analytics lecture: Feedback Cloud

Monday, June 14, 2010

USC BIM Conference Lecture: Feedback Cloud

I am pleased to announce that I have been invited to give a lecture at USC's 2010 BIM Conference: BIM Analytics.

My lecture is tentatively titled: Feedback Cloud: Tactics for Toolset Integration and Design Optimization.

The talk will outline the digital processes used on some recent NBBJ projects as well describe a few experiments for creating performance-driven design solutions in a team made up of diverse participants using a multitude of tools.

By coordinating customized tools and workflows, Feedback Cloud.....

1. Embraces technological difference within a team.
2. Provides an adaptive framework for design change and variation.
3. Links together design and analysis for a performance-driven process.

My talk is tentatively scheduled on Wednesday, August 4th @ 1:30-2:00.
The conference is free, however you will need to RSVP here.

Speakers at the conference include...

architecture + engineering
Rachelle Villalon, Jenna Knudsen,
and Alex Korter, CO Architects
Erin McConahey, ARUP
Mitch Dec, David Summers, and Tianxin Xing, Glumac

Jim Bedrick, Webcor
Viktor Bullain, Turner Construction
Jonathan Widney, Solibri
Darren Roos, Suffolk Construction Company, Inc.

parametrics / performance based or algorithmic based design

Nathan Miller, NBBJ
Kurt Komraus, Buro Happold

integration, standards, the big picture
Richard Nowicki, NTD Architecture
Lance Lareau, San Diego CCD
Michael Rendler, e7 Studio at LACCD
Chuck Good-Man, Irwin Partners Architects

Sunday, June 6, 2010

Reading OBJ Mesh Files from K3DSURF in Grasshopper

I have created a custom scripting component that reads OBJ mesh files created in K3DSURF and reconstructs a triangular mesh within Grasshopper. Currently, the component will only read triangular OBJ meshes.

This allows for a more seamless workflow between K3DSURF and Grasshopper by eliminating the need to import the mesh into Rhino and then link the mesh into Grasshopper. If the OBJ file is updated from K3DSURF, the change is immediately affects the Grasshopper script.

Friday, May 28, 2010

Sending Remote Commands to Ecotect using VB.NET

A large pitfall in any design process is the disconnect between design and analysis. Software, like Ecotect, gives the designer the ability to perform detailed environmental analysis on a design. However, it is sometimes difficult to create a useful feedback of the analysis information to inform the design.

As a strategy, it is possible to use inter-process communication to bridge the gap between design and analysis environments. A fantastic example of this are the brilliant GH to Ecotect components developed by [uto]

When Ecotect is launched, it automatically creates a Dynamic Data Exchange server which allows the program to be accessed by remote applications. By accessing the DDE server, you can send commands to Ecotect as well as request information. Ecotect must always be running in the background for this to work. While DDE is older technology (in dotNet, it was replaced by "remoting"), it works quite well in this context.

Thanks to Thomas from [uto] for cluing me in on Ecotect's use of DDE!

Sunday, May 23, 2010

Transformable Batwing Surface

I have created a fun definition for manipulating Schoen's batwing surface and tiling the results into 3D patterns.

Head on over to The Proving Ground Wiki to download the Grasshopper file.

FYI. All of my previous Grasshopper definitions (and more!) are hosted and organized on The Proving Ground Wiki. Enjoy!

Thursday, April 15, 2010

NBBJ + CCDI: Hangzhou Sports Park on ArchDaily

USC Arch 517 Grasshopper Course: It's Alive!

We are now half-way through the 5-week Grasshopper course at USC and The Proving Ground Wiki is coming alive!

Students are posting their experiments,the forum is becoming quite active, and class materials are being made available to download.... have a look!

Student: Mohamed El Sheikh
Student: Eve Lin
Student: Jeffrey Vaglio

Sunday, April 11, 2010

arcCA 10.1: Parametrics and IPD

arcCA (Architecture California) has recently published its latest issue on Parametrics and IPD. Included is an article titled "Parametric Voices" where various practitioners and academics have chimed in with their thoughts on the relevance and potential of parametric technology. I am happy to have my thoughts included alongside other leading practitioners involved in the field....

Integrated Project Delivery: A History of Leadership, Advocacy, and Commitment
by Stephan Castellanos, FAIA

Toward Integrated Project Delivery: A New Design and Delivery Method
by Armando L. Gonzalez, FAIA and David L. Goodale, AIA

Internships for IPD: Gaining Perspective on Collaboration
by Dorit Fromm, AIA

Parametric Design: A Brief History
by Stephen Phillips, PhD

Parametric Voices

With contributions from....
Mark Anderson, Anderson Anderson Architecture
Phil Bernstein, Autodesk
Thomas W. Chessum, CO Architects
Tim Durfee, DurfeeRegn
John Enright, Griffen Enright Architects
Thom Faulders, Faulders Studio
Lisa Iwamoto, IwamotoScott Architecture
Hina Jamelle, Contemporary Architecture Practice
Michael Meredith, MOS
Nathan Miller, NBBJ
Pierluigi Serraino, Author
Nick Sowers, UC Berkeley
Carrie Byles, SOM
Mark Sarkisian, Eric Long, David Shook, SOM Structural Group
Craig Hartman, SOM

Pick it up if happen to come across it!

Sunday, March 28, 2010

The Proving Ground Wiki: USC Arch 517 Class

To coincided with my 5-week Grasshopper seminar at USC, I have created The Proving Ground Wiki. The purpose is to encourage experimentation and collaboration among the students enrolled in the course. As the course moves forward, the wiki will evolve with new content in the form of diagrams, descriptions, and Grasshopper files.

The Proving Ground Wiki

Have a look.... and check back throughout April to see how the class is going!

Tuesday, March 23, 2010

NYCCT Emerge Lecture Images

Below are some images from my recent lecture at the New York City College of Technology. I had a fantastic visit!

Generally, the basic premise of my lecture "Algorithms, Parameters, Practice" is that the architect cannot divorce the work that they do from the tools that they employ. The tool itself is not simply a means to achieve an architectural idea but is, in part, a driver for thought itself
(consciously, subconsciously, or both). To demonstrate this, I showcased a series of projects I have been working on at NBBJ where the design and optimization of the project went in tandem with the design and optimization of various toolsets.

Monday, February 15, 2010

Presenting @ NYCCT: Emerge Lecture Series

I am happy to announce that I will be presenting at the New York City College of Technology as part of the Emerge Lecture Series.

The program will begin at 6:00 PM on March 4th at the NYCCT.

Tuesday, January 5, 2010

Revit API: Mathematical Form-Making

In addition to my continued exploration with Grasshopper, I will begin doing posts relating to my recent interest with the Revit API.... and as my previous post suggests, these interests are not necessarily going to be "exclusive" from one another....

Below are some examples of making some parametric surfaces using a simple API script. The kinds of surfaces you are able to create is limited for two reasons:
1. There are only about 4 ways to create a surface (Loft, extrude, sweep, revolve)...
A surface from a point cloud or from 4-points would be very handy, Autodesk!
2. Revit doesn't seem to "like" self-intersecting surfaces very much... and even sometimes mistakes 'closed' shapes or shapes where edges touch for no Kleins or Catalans, booo!

Wave Surface
Torus Shell Mobius Segment

Sample Code (Wave surface):
Dim ref_ar_ar As ReferenceArrayArray = New ReferenceArrayArray()
Dim XYZ As Autodesk.Revit.Geometry.XYZ

For u As Double = 0 To 4 * Math.PI Step Math.PI / 4
Dim rfptsarr As ReferencePointArray = New ReferencePointArray()
For v As Double = 0 To 4 * Math.PI Step Math.PI / 4

Dim refpt As Autodesk.Revit.Elements.ReferencePoint

Dim x As Double
Dim y As Double
Dim z As Double

x = 10 * u
y = 10 * v
z = 10 * Math.Cos(u) + 10 * Math.Sin(v)

XYZ = revit_app.Create.NewXYZ(x, y, z)
refpt = revit_doc.FamilyCreate.NewReferencePoint(XYZ)

Dim crv As CurveByPoints = revit_doc.FamilyCreate.NewCurveByPoints(rfptsarr)
Dim ref_ar As ReferenceArray = New ReferenceArray()

Dim loftform As Autodesk.Revit.Elements.Form = revit_doc.FamilyCreate.NewLoftForm(True, ref_ar_ar)


Sunday, January 3, 2010

Streaming Grasshopper Points into a Revit Conceptual Mass

This will be the first of a series of posts where I will explore various strategies for moving geometric and analytical data between software platforms...

While often times sufficient, I have sometimes found the standard means of Importing/Exporting model information using file formats to be quite cumbersome and limiting
... especially in the case of Revit where it is next to impossible to modify or build from linked/imported files

Below is a basic example of streaming a list of XYZ coordinates from Grasshopper into a *csv file and then using that file to create reference points in a Revit conceptual mass... A custom script was written using the Revit API to read the CSV file and make the points.

Here is the Revit API code (in VB.NET) for reading the *.csv file :

Dim XYZfile As String = "insert file path here"

If File.Exists(XYZfile) Then

Dim FileReadXYZ As New StreamReader(XYZfile)

Do While FileReadXYZ.Peek <> -1
Dim XYZLine As String = FileReadXYZ.ReadLine()
Dim XYZData As String() = XYZLine.Split(",")
Dim XYZ As Autodesk.Revit.Geometry.XYZ
Dim RefPt As Autodesk.Revit.Elements.ReferencePoint

XYZ = revit_app.Create.NewXYZ(Convert.ToDouble(XYZData(0)), Convert.ToDouble(XYZData(1)), Convert.ToDouble(XYZData(2)))
RefPt = revit_doc.FamilyCreate.NewReferencePoint(XYZ)

End If