Wednesday, December 26, 2012

Happy Holidays! See you in 2013!

Greetings Network!
I wanted to take the time and wish you all a happy holidays and a happy New Year!

2012 was a big year for The Proving Ground...

This past year, I released LunchBox which has become a popular Grasshopper add-on for productivity, workflow, and generative techniques.  Look for this plug-in to grow in 2013!   The Revit API diary, which focuses on the use of IronPython and Vasari, has also grown in popularity and has been cited as an important resource for scripting in Revit.  The Proving Ground has also moved into the world of social media with a Facebook page that is growing daily.  In less than a year, the page has amassed 1,136 'likes'! (the memes are especially popular).

Of course, 2012 has also brought many personal and professional changes.  I left my friends at NBBJ in Los Angeles to set up an outpost for CASE here in my lifelong home in the Midwest:  Omaha, Nebraska.

And finally... 2012 has given The Proving Ground its own domain:

Look for more original content from this blog/wiki/social site in the New Year!  Thank you all for visiting, liking, and supporting The Proving Ground!


Friday, December 7, 2012

UNL Arch 223: Assignment 03

This is the the final of three assignments for the Fall Arch 223 undergraduate course at UNL...

This assignment transitioned the class from freeform modeling in Rhino (Assignments 01 and 02) to parametric modeling and BIM with Revit. The philosophy of the assignment was to introduce students to Revit with a selection of specific techniques and a focused design-based exploration.  The assignment itself was inspired by some of the student work found at Mark Green's ReThinking BIM Blog...

Revit is, of course, a massive program and I wanted to ensure that there was a design focus for a software that is typically associated with production and documentation. The design exercise was to design a  'bridge' by first developing parametric features such as adaptive components and pattern-based curtain systems.

They then had to document the design by developing a sheet set that fully leveraged the information they embedded into their components and families.  The final deliverable was a single DWF file containing drawings, diagrams, renderings, schedules, and a navigable 3D model.

 Great work students! 

 ... and, once again, fantastic lab instruction by the course TAs Matt Neaderhiser and Dan Williamson!

Student:  Charles Weak
Student:  Greg Preston
Student:  Sarah Schlegelmilch
Student:  Jati Zunaibi

Tuesday, November 20, 2012

Autodesk University 2012, See you next week!

Next week is the Autodesk University 2012 convention in Las Vegas, NV.  CASE will be out in force, so be sure to track us down.  Topics of conversation can and should include design technology, computation, Battlestar Galactica, Game of Thrones....  oh yeah... and figuring out how we can do business with you!

Track CASE down at the convention... or by checking out the #casetweetup event

ALSO...If you haven't already, be sure to sign up for the class...

Coding Autodesk Vasari: Scripting for Conceptual Design 

I am teaming with Matt Jezyk and Zach Kron for this session on Wednesday morning 8:00AM-9:30AM (man, that's early)

We'll be showing off all sorts of computational goodies in our hands-on lab...

Monday, November 5, 2012

Import OpenNURBS Read Me...

For those of you who are trying (or interested in trying) the Import OpenNURBS Add-in by CASE, I have put together a short ReadMe PDF which includes a FAQ.  I hope this helps people get up to speed!

Tuesday, October 23, 2012

UNL Arch 223: Assignment 02

More kick ass work from my Arch 223 students...

This assignment was to "remix" Gothic geometry.  Not much conceptual criteria beyond that as the focus of the course technical process.  I wanted them to focus on creating modular design logic with an emphasis on technical modeling craft, and drawing quality.  Rhino was used as the modeler. (and again... no Grasshopper!)  Some students opted to try out Blender Cycles rendering as well .

The TAs are also doing a great job... props to Matt Neaderhiser and Dan Williamson for running the labs and bringing the best out of these students.

You can also check out some of Assignment 01 here...

The next assignment will enter the world of BIM... stay tuned :) 

Student:  Aaron Powell

Student:  Allen Phengmarath

Student:  Carlos Servan-Alverez

Student:  Jati Zunaibi

Student:  Sarah Schlegelmilch

Friday, October 19, 2012

Import OpenNURBS for Vasari is here!

CASE is excited to announce the Beta release of Import OpenNURBS for Autodesk’s Vasari Conceptual Modeling Software.  The Beta is available for a limited time through the CASE Apps Add-in manager found at the CASE Apps website.

The Import OpenNURBS add-in facilitates early-stage interoperability by allowing designers to import conceptual geometry from Rhino into Autodesk Vasari.  Unlike importing and linking with other file formats, Import OpenNURBS will translate geometries as native Vasari elements to give designers the flexibility to further develop their designs using Vasari’s modeling and analysis features.

The Vasari Add-in reads the OpenNURBS file format (Rhino 4.0 3DM) and uses custom algorithms to reconstruct geometry using Vasari API methods.  Currently, the Add-in supports a broad range of OpenNURBS geometry.  At this stage, some geometry support has yet to be implemented but we are committed to expanding the functionality as new capabilities become available for OpenNURBS and the Vasari API.

We hope you enjoy testing the new Import OpenNURBS Beta for Autodesk Vasari... and we hope you can provide us with valuable feedback about the tool!

Try it.... test it... break it!  Then let us know what you think :)

Sunday, October 14, 2012

LunchBox v0.35 Available

A new LunchBox is available...
  • New Math components:  Helicoid and Conoid
  • New Generate Components:  Panel Frames and 'Constant Quad' Panel Division
  • New Structure Components:  2-Surface Space Truss and 2-D Truss.
...Anyone want to try out the new installer?

Sunday, October 7, 2012

Pecha Kucha Night @ The Slowdown, Omaha

I'll be participating in a Pecha Kucha Night this coming Thursday, October 11th!

I'll have 20 slides and 20 seconds per slide to talk about... something.

Will it be architectural?
Will it be computational?
Will it include a healthy selection of internet memes?

Join us at The Slowdown to find out...!

UNL Arch 223: Assignment 01

For those of you following along to the Facebook posts, this may be old news, but I wanted to post an update on the UNL Arch 223 course I am instructing this semester.  The course is an introduction to 3D modeling and representation.  This course is an undergraduate course in the College of Architecture for Architecture, Interior Designers, and Landscape Architecture students.

For many, this is their first exposure to a college-level design course.  Interestingly enough, many students already had previous experience in 3D modeling applications (Sketch-up being the most common one).  It seems local high schools are already pushing 3D CAD applications such as Revit, Inventor, and Solidworks as part of the engineering, shop, and drafting curricula.

The first assignment asked them to find an object created by some natural process and produce 3D models and visualizations conveying various formal and morphological characteristics.  Rhino is the modeler being used for production with a high level of emphasis placed on surface control and manipulation.

Here is a snapshot of some of the projects....

Parametric tools, such as Grasshopper, are not allowed at this stage. :)

Student, Charlie Weak

Student, Hillary Krajnik

Student, Jessica Lee

Student, Kyle Owens

Student, Nicholas Beaty

Student, Taylor Hiemer

Sunday, September 16, 2012

Interoperable Geometry (Part 3): Surface Forms

...and then there are surfaces.

Reconstructing Rhino surfaces within Revit is a tricky science.  Revit's Conceptual Massing API exposes a number of useful higher-level form creation tools for surfaces and solid geometry which can be used to recreate some types of surfaces.  However, the mathematical representations of Revit surfaces may vary from Rhino's NURBS representation making challenging to produce completely accurate reconstructions of Rhino surfaces using automated native API rebuilding.  Additionally, the construction geometry used to derive the Revit Form (Hermite Splines, for example) are also ripe with their own interoperability challenges.

Much like the Spline example in the previous post, we can use reference points on the original Rhino surface to control the how accurately the Revit Form matches the original NURBS.  The greater the number of  points, the more accurate the construction geometry and the resulting Revit Form will be.

Saturday, September 15, 2012

Interoperable Geometry (Part 2): Spline Control

Simple things matter in the world of 3D modeling and BIM...

For the foreseeable future, designers and engineers will be using a variety of different tools to meet their needs so it is important to understand the fundamental differences in the tools.  Many questions arose from the past post on how to resolve the differences in the spline interpolation algorithms used between Rhino and Revit.

When a user draws an interpolated curve in Rhino, the user specifies the Greville points (or "edit points") to produce a NURBS curve representation.  When a user draw a Spline in Revit (using Curve by Points), Revit will use a Hermite spline interpolation algorithm to draw the curve.  Revit also uses this same Hermite spline algorithm for representing imported splines from programs such as AutoCAD.

The next version of CASE's Import OpenNURBS Add-in implements a technique for producing accurate curve translations between Rhino and Revit.   The importer will let users multiply the number of interpolation points that are used to calculate and draw a Revit Spline curve.  By increasing the number of interpolation points along the Rhino curve, Revit is able to produce matching spline curve geometry with less chance for deviation...

Here is a graphic example of that process...

Saturday, September 8, 2012

Interoperable Geometry (Part 1): Curves

Discussions about interoperability have become extremely pervasive in the computational design and BIM communities. As they rightly should, users expect their software applications to support one another through integrated workflows where information can fluidly pass from one system to the next..  Unfortunately, given the complexity of our industry and its technological infrastructure, we still have a ways to go before we achieve seamless integration between systems and across platforms... but that doesn't mean we should give up!

Which brings me to geometry....

Being in the midst of developing the next release of CASE's Import OpenNURBS Add-in for Revit (which will include broader curve and surface support through conceptual massing), I thought it would be helpful to contextualize that effort by providing some short infographics which explain specific geometry challenges across the Rhino and Revit platforms.

Even at the lowest levels of representation, the two systems handle geometry differently which makes it especially challenging to ensure correct and reliable translation.  The graphic below shows a comparison of NURBS and Interpolated curves created in Rhino and Revit which share the same control points and weights.  The variations in how the two systems compute the curves are made obvious by the deviations...  Even NURB Splines are translated with variations.

UPDATE 1 - Interpolation Algorithms:  I just wanted to clarify that I attribute these variations due to a difference in spline and interpolation algorithms.  Architectural Geometry (Pottmann et al) has a nice section on Freeform curves with a nice diagram showing different interpolation algorithms.

UPDATE 2 - NURBS Splines and Knots:  After some further investigation into the NURB Spline, the variation in curvature is due to a difference in how knots are computed in Rhino and Revit.  According to the SDK, Revit determines knots based on NumberOfControlPoints + Degree + 1.  Rhino, on the other hand, uses NumberOfControlPoints + Degree -1.  This means that there is a difference of 2 knot values between the tools. For accurate results, an interoperability method must also account for this variation.

Thanks, Matt Jezyk and the Autodesk team for confirming some of these technical differences!

Wednesday, August 29, 2012

Upcoming Events: September + October

In addition to a few workshops, I will be participating in two presentation and panel discussions in the coming months...  I hope you can join me!

Sunday, August 19, 2012

UNL Arch 223: Computer Applications In Design

The Fall Semester kicks off at the University of Nebraska tomorrow.  I will be giving Monday night lectures as part of Arch 223:  Computer Applications in Design.  This is an undergrad course and this will be some student's first class in the world of architecture and design.

Finally!  My chance to corrupt impressionable youth with digital technology.

I hope to post cool course-related stuff here... stay tuned!

Wednesday, August 15, 2012

ACADIA Workshop: Python Scripting for Revit and Vasari

This October, I will be instructing an ACADIA workshop:  Python Scripting for Revit and Vasari.  The workshop will cover the basics of using Python with an emphasis on the Conceptual Modeling capabilities of Revit and Vasari.  We will also investigate opportunities for extracting information from models and enabling workflows with other data sources.

Be sure to sign up at the ACADIA website and check out the other workshop offerings along with the conference info!

Monday, August 13, 2012

SURVEY: CASE Computational Design Workshop

We are planning future workshops at CASE's new NYC training lab...  Let us know a little about what Computational Design topics interest you!

Saturday, August 4, 2012

LunchBox v0.32 Available

A new LunchBox is available with some new components...
  • Hexagonal Cells:  Creates Hexagonal cells for using with paneling.
  • Patch Surface:  Creates a patch surface for curves defining a boundary.
  • Relative Coordinates:  Returns relative coordinates for a point in relation to a plane.

Hexagon Cells with Patch Surface
Klein Surface + Hexagonal Cells + Weaverbird
Klein Surface + Hexagonal Cells + Weaverbird

Wednesday, August 1, 2012

DesignReform: Automated Baking with LunchBox

Visit DesignReform and check out a new tutorial for LunchBox focused on the Bake component. The bake component lets users set up systems for baking multiple objects to different layers with the flip of a boolean toggle...

Wednesday, July 25, 2012

Import OpenNURBS, Samples and Tutorial

Hot off the release of the CASE Import OpenNURBS Add-in for Revit, I have created some 3DM sample files you can use to test drive the tool.  I have also put together a DesignReform tutorial to get you started with the Add-In!

  • Sample Rhino 3DM files:  The sample files contain all kinds of curve geometry which you can import into the Revit environment as model curves.
  • DesignReform Tutorial:  A short tutorial for getting started with the Import OpenNURBS Add-In.
Here are some shots of the tool being put to work...!

CASE Free Revit Add-In: Import OpenNURBS

I am happy to announce that my first CASE Free Revit Add-In is available for download.  The new Add-In allows Revit to read the OpenNURBS (Rhino *.3dm) file format and import curves into the Revit Project environment as native model lines.  Future functionality will include support for the family environment and form creation...  for now, feel free to dig in and let us know what you think!

Tuesday, July 24, 2012

DesignReform: Slingshot! Pack and Unpack

Be sure to head on over to DesignReform and check out a new tutorial for Slingshot! focused on the 'Pack' and 'Unpack' plug-ins.  The tools are still in an early stage, but still useful for enabling geometry data exchange between Grasshopper users via SQLite.

I will be doing more DesignReform videos in the near future for Slingshot and LunchBox... so be sure to check back!

Wednesday, July 18, 2012

Now on YouTube! Vasari Talk 13: Scripting with Python

For those that missed my Vasari Talk about scripting with Python, you can now view the video on YouTube!




Thursday, July 12, 2012

Some context on CASE!

I have a distinct memory from February 2009 of coming across an article on Architect as part of my usual pre-work morning reading.  It featured three guys who were dead set on transforming the AEC world by affecting "processes rather than end products" with a special emphasis on, of course,  the latest digital tools and information technologies.  Actually, what caught my attention about this article was not the provocative business model.... nor the cool screen captures of their advanced processes being deployed on projects at SHoP, DS+R, and Grimshaw... what caught my attention was the context in which this new model of practice emerged.

2009 was a moment in time directly after our industry (and every industry for that matter) was experiencing the initial shock of the global financial crisis... and yet here was a group that was driven to invest themselves in a new service model for an industry that was in a great-recession-driven tail spin.  My first thought:  "These guys are either geniuses... or out of their bloody minds!"  

Flash forward to March 2012... and the CASE team had become a recognized force for innovation in the AEC world by adding value to the design and delivery process with proven leadership in the latest and greatest digital processes.

On my side of the world, the Hangzhou sports park was/is in the middle of construction in China, NBBJ was continuing their investment in  firm-wide capabilities for computational design (and still is!), and this blog  had grown to become home to many resources for Grasshopper and Revit....

....then an e-mail appeared in my inbox from 'that Design Reform guy' with a proposition: "I'd love to talk to you about the potential of working with a company like CASE."

What could I say?  There was surprisingly very little hesitation.  The answer that came into my head was immediate even before knowing the details for what Dave, Steve, and Fed had in mind.  It would be a few months before finally ironing everything out, but the decision to say "YES!" to what would amount to being a significant career change was clear from the start.

They're attitude towards tools certainly reflects my own:   'use right tools for the right job... and if you don't have the tools, make them!'...but the main reason I have joined CASE is that, as an integrated project consultant, they have crafted a fresh, relevant, and optimistic vision for an industry that is ripe for HUGE transformations...

.... and I am more than thrilled to be a part of THAT.

Friday, June 29, 2012

Vasari Talk: Scripting with Python in Project Vasari

Interested in knowing more about scripting with Python in Project Vasari?

Join me on July 11 @ 11:30 EDT for a 1-hour webinar where I will discuss how to begin scripting using the RevitPythonShell. I will reference several examples from my Revit API Notebook along with some work-in-progress demos. Lilli Smith from Autodesk will also show off her programming workflow originally published on Buildz.

Thursday, June 7, 2012

Slingshot! 0.882 Available for Testing

A new build of Slingshot! has been made available. Build 0.882 includes 2 new components for automating the creation of SQLite database files which contain serialized Rhino geometry records.

The new components are intended to facilitate collaboration within a team of Grasshopper users that are sharing geometry to coordinate.

New Components (Rhino 5.0 only)
  • Rhino Pack: Serializes Rhino geometry types into a SQLite database record. 
  • Rhino Unpack: Deserializes geometry records stored in a SQLite database file created with Rhino Pack. Toggles allow users to query by geometry type. 

  • Fixed some syntax issues with some of the special database creation components.
Download the new release here.... 

 Feedback is, of course, always appreciated.

Geometry object types (points, curves, surfaces, breps, and meshes) can be recorded to a SQLite file.

Different geometry can be queried using toggles.  This view shows only the points being pulled from the SQLite file.

Monday, May 28, 2012

LunchBox v0.3 Available for Download

Hot on the heels of the latest Slingshot! release, I have put out a new version of LunchBox.  The new version includes new Platonic Solid components, a rebuild surface component, and a new paneling system.

Added a new Platonic Solid components under Math

  • Cube 
  • Tetrahedron 
  • Octahedron 
  • Icosahedron 
  • Dodecahedron 

Added Rebuild Surface Component
Added Skewed Quad paneling component

Download the latest release here...!

Monday, May 21, 2012

Slingshot! v0.88 Released

I have posted the new version of the Slingshot! Database plug-in for testing.  The new version includes relevant binary files for MySQL and SQLite.  Unlike previous versions, this means you should not have to download the DLLs and install them separately.  The package should have all you need :)

The new SQLite functionality requires that you should select either the 32-bit or 64-bit release as per your windows system specs.  The new Serialization components only work with Rhino 5.0.  This limitation is a sign of the times and is out of my hands!

Please review the version notes before installing...
...then proceed to the download site (now on The Proving Ground Wiki)

Please do not hesitate to report problems...

There is new territory here so I am interested in knowing if the new functionality is performing as expected on different set-ups.


Sunday, May 20, 2012

Slingshot! v0.88... Preview

It has been awhile... so I have decided to circle back on my first public plug-in Slingshot!

I am working away on Slingshot! Database for Grasshopper v0.88.  The new version will included support for SQLite in addition to components which allow users to serialize/deserialize Grasshopper objects into XML records.

  • SQLite:  Users will be able to create, query, and write to SQLite database files.  SQLite is a nice format with RDBMS capability without the need for those pesky database servers.
  • Serialization:  Users will be able to serialize and deserialize geometry types into XML records and stored externally in a database or other format.  These records can be accessed by other users deserialized back into Grasshopper geometry.
Still working out some bugs... the new version will be released sometime this week...

Deserialized geometry being stored as XML within a SQLite file
Serialized Grasshopper objects being inserted into a SQLite database file
Serialization process....