Sunday, December 6, 2015

Updates You May Have Missed

With my new business keeping me busy, I haven't had as much time as I would like to keep as up to date as I would like. Make no mistake, I am still very much committed to keeping this blog going and sharing some of my more recent computational design explorations.  If you have been following any of my social media accounts, you may have noticed that there have been several updates to LunchBox, Rhynamo, and other tools making their way out into the wild.

Here is a summary of what you may have missed in recent months...

Playing Nice with JSON

In both LunchBox for Dynamo AND Grasshopper, the LunchBox toolkit now has several new nodes converting between JSON, XML, datasets, and more.  I like being able to convert my data between various formats with ease and these new tools hopefully make this easier

Serialize Dynamo data as JSON
Grasshopper Tree to XML and converted to JSON

Extended Excel Tools in Dynamo

Grasshopper and Dynamo both have some great solutions for working with Excel.  Within Dynamo, I created a few helpful nodes for serializing Excel data to .NET DataTables.  These nodes make it easy to serialize your tables so they can be queried like a database or converted to other formats like XML and JSON.
New LunchBox Excel nodes for Dynamo
Dynamo 0.9 Support

Rhynamo and LunchBox have been upgraded to the latest version of Dynamo (0.9) and have been given some general facelift for use with new versions.

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.