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.
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.
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
A demonstration of inter-process communication between Grasshopper and AutoCAD. Grasshopper sends remote commands to AutoCAD to create 2D drawings of the tower floor plates. Tower floors are defined by arcs.
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.
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.
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.
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.
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.
Credit:[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.
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
construction 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
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.
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.
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!
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....
Articles: 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!
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.
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.
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 self-intersection....so no Kleins or Catalans, booo!
Wave Surface
Torus ShellMobius 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)
rfptsarr.Append(refpt) Next Dim crv As CurveByPoints = revit_doc.FamilyCreate.NewCurveByPoints(rfptsarr) Dim ref_ar As ReferenceArray = New ReferenceArray() ref_ar.Append(crv.GeometryCurve.Reference) ref_ar_ar.Append(ref_ar) Next
Dim loftform As Autodesk.Revit.Elements.Form = revit_doc.FamilyCreate.NewLoftForm(True, ref_ar_ar)
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