Thursday, July 9, 2015

LunchBox for Grasshopper Returns!

I am pleased to announced that a new version of LunchBox for Grasshopper has been released as a free download in the new website. It has been over a year since the last update and there are many new components and improvements in this new release. Features of interest include….

  • Data components allow users to translate their data to XML, JSON, and CSV. 
  • Sort Duplicate components allow users to better organize their data. 
  • User Strings are now supported with “Object Bake” and “Layer Geometry” 
  • Unroll Surface has been introduced as a new component.
Unroll Breps!
XML Serialization of DataSets
Referencing geometry by layer with User Strings
Sort Duplicate components let you find unique values with a sorted index map.

Monday, July 6, 2015

A New Proving Ground

Greetings friends,

It has been over 8 years since I started, in 2007.  It began as a journal for exploring the intersection of design and technology.  From there it grew into a venue to showcase new processes and tools to help in the design workflow.  I feel very fortunate to have earned a social following through these efforts in the design and building communities.  Along the way, I have learned more than a few things about how buildings are designed, built, and operated.

Today, we have increasingly more sophisticated modeling tools, more accurate analysis, and a lot more data at our disposal. However, buildings remain risky, expensive, and time-consuming endeavors.  Nearly 70% of buildings run over schedule and 72% are over budget.  26% of non-industrial waste can be attributed to building-related construction.  39% of all carbon emissions and 72% of electricity consumption comes from buildings.

Can data help us to move the needle on these statistics?  Perhaps.  However, it is no secret just how risk averse the building industry is when adopting change.  Creating a building carries a high price tag and high liability. The stiff competition in design and rising cost of construction materials will often deter introducing any anxiety of change and potentially 'looking bad'.  Instead of the disruptive change offered by data-driven technology, building teams are far more likely to look for faster, more powerful versions of the same paradigm already in place.

We need buildings.  We need well designed buildings.  More than ever, we need buildings to perform.  To achieve solutions to the challenges facing our built environment, I believe we need to strive to position data as a disruptive medium that can change how we make design decisions, transform how we build, and create new opportunities to manage and interact with space.

I am pleased to announce the formation of PROVING GROUND LLC.

As a consulting company, PROVING GROUND's mission is to shape a data-driven building industry through new services for strategy, education, and consulting.  I am interested in seeing the building industry realize the promise of data with new processes and behaviors... with some new tools sprinkled in along the way, of course.

I am very excited to start this journey and I am looking forward to sharing what comes next... 


Nathan Miller, Founder

Contact Proving Ground

Friday, April 24, 2015

Integrating XML with Dynamo via LunchBox

New LunchBox nodes for XML creation and importing
In the latest released of LunchBox for Dynamo, I have included new XML nodes that allow exporting and parsing.  Dynamo data can be serialized and saved to XML with the help of the new DataSet nodes included in Dynamo.  XML data can also be imported and parsed.

New nodes include...
  • SerializeXML - Create new XML from a DataSet and save it.
  • DeserializeXML - Converts XML nodes and values to a Dynamo nested list.
  • GetXMLNode - Get the contents of an XML node by tag name.
GetXMLNode allows for quick parsing of XML data using tag names
Deserialize XML into Dynamo lists for tags and values
Serialize XML data with the help fo LunchBox DataSet nodes

Wednesday, April 15, 2015

Back to 'Basics' with LunchBox and Dynamo

Divide a surface to get points, normals, planes, and curvature.
With the rapid expansion of Dynamo, it is easy to overlook the fact that there are still many "smaller" refinements that can be made to improve the workflow.  This is especially true of the cases of list management and basic geometry tasks.

In the latest release of LunchBox, my goal is to expand the basic list and geometry management capabilities of Dynamo. The latest release introduces new nodes for searching, sorting, and organizing list data.  I have also created geometry nodes that provide shortcuts for getting access to properties and enable workflows that I have grown accustomed to from Grasshopper.

This new release also signals the start of a lengthier migration:  I will be converting most of my Python code to a C# node library.  The advantages of doing this are numerous when it comes to how C# libraries handle list management.  I have had to develop many workarounds in my Python nodes and the custom nodes have become a chore to maintain.  Python nodes will be migrated to the "Archive" category as new C# nodes take their place.

So what's new?

My goal with these nodes is to provide some new means of managing data and fill in a few holes.  I'm also interested in how Dictionaries and DataSets can create advanced data management workflows... these are just the start
Sort and index duplicate strings... I use this for everything :)
  • Manage
    • Remove Nulls - Removes all null values from a list (converted from Python version)
    • Replace Nulls - Replaces all null values in a list
    • Randomize Order - Scramble the order of a list (with index map)
  • Dictionary
    • Create Dictionary - Create a dictionary with keys and values
    • Get Dictionary Keys and Values - Get all keys and values from a dictionary
    • Get Value From Dictionary - Get a value in a dictionary by key
  • DataSets
    • Create DataSet - Create a .NET DataSet
    • Create DataTable - Create a .NET DataTable
    • Get Tables From DataSet - Get all tables from a DataSet
    • Get Data From Tables - Get data from a table
  • Sequence
    • Random Numbers - List of random numbers using start, end, number, and seed.
    • Range Division - A range of numbers using a division (core Dynamo uses "step")
  • Strings
    • Sort Duplicate Strings - Find unique strings with sorted index map
    • Search List for String - Search for matching strings
The functionality of many of these tools can be achieved with a combination of core Dynamo nodes.  The goal here is to combine outputs I often use into a single node to reduce the amount of canvas management.  There are a couple of new workflows sprinkled throughout.
Deconstruct PolySurface into faces and points
  • Curves
    • End Points - Get start and end points of a curve
    • Divide Curve - with outputs for points, tangents, planes, and parameters.
    • Divide Curve By Distance - with outputs for points, tangents, planes, and parameters.
    • Deconstruct PolyCurve- Get segments and vertex points of a polycurve.
  • Points
    • Deconstruct Point - Get X, Y, and Z values
    • Numbers to Point - Convert a list of 2 or 3 number to a point.
    • Point to Numbers - Convert a point to a list of numbers.
    • String to Point - Convert a string to a point value (converted from Python version)
    • Point to String - Convert a point to a string. (converted from Python)
    • Sort Points Along Curve - Takes a list of points and orders them using a guide curve.
  • Surfaces
    • Divide Surface UV - Divides a surface into points, planes, normals, and calcuated curvature.
    • Deconstruct Surface - Get the edges and corner points of a surface
    • Deconstruct PolySurface - Get the corner points and faces of a polysurface.

Sunday, March 22, 2015

CASE Interoperability Update

CASE's interoperability framework makes important design data accessible among different technologies.
It has been awhile since I have shared an update on CASE interoperability approach.  With new technologies entering into the fray, interoperability is as relevant a concept as ever.  In recent months, much of my focus has been on highlighting efforts around the Rhynamo node library for Dynamo. I am thrilled to see that the library has grown in popularity and is currently the second most downloaded Dynamo package.

In the wake of Rhynamo's success as an open source project, I have been actively continuing development of a broad range of CASE interoperability solutions which allow us to consult and support project-wide and firm-wide data management among a broad spectrum of design software.  In recent months, these solutions have found their way into the workflows of firms such as Adrian Smith+Gordon Gill, AECOM, HDR, DIALOG, and RTKL.

The goal of these solutions has been to address the many data transfer challenges as a building proceeds from concept, to analysis, to document production.  Grasshopper, Revit, RAM Structural System, SketchUp, Microstation, 3DS Max, and SolidWorks are just a sampling of the tools that have found their way into CASE's workflow planning services as of late.

Beyond providing technical tools for accomplishing better data transfer, our approach also involves mapping out key use cases for a team and to support the overall pipeline.

Here are some current use cases that I am interested in at the moment...
  • Integrated practice... uses of interoperability to enhance collaboration among architecture and engineering disciplines for more seamless bi-directional coordination.
  • Analysis workflows.... uses of interoperability as a methodology for model simplification and data extraction in analysis.
  • Datafication and BIM migration... uses of interoperability for migrating legacy drawings/data into the BIM ecosystem.  Let's automate 2D to 3D to BIM!
Stay tuned for an extended and detailed CASE Blog post on these subjects... and always feel free to reach out to us if you are interested in these ideas.

In the mean time, check out some of the recent clips below...