Showing posts with label lunchbox. Show all posts
Showing posts with label lunchbox. Show all posts

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 TheProvingGround.org 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 ProvingGround.io 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.

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?

Lists
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
Geometry
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.

Thursday, March 19, 2015

LunchBox - New Rationalization Nodes and Panel Improvements

"Planarize Points" node will project a collection of points to a common plane.
A new release of LunchBox for Dynamo has been posted to the package manager.

In this release, I made modifications to the paneling nodes so they can better support a range of Dynamo lists and nested lists (no easy task with Python nodes in Dynamo!)  I have also included a few basic "Rationalization" nodes that let you create collections of planar points and rationalize splines into arc segments.

LunchBox is featured heavily in CASE's Dynamo training curriculum.  We are running workshops during the month of April, so be sure to sign up if you are interested!

Using curve parameters to describe co-tangent arcs.
Rationalized spline curves using co-tangent arc segments
Here I am using "planarize points" to define projected flat panels

Friday, March 6, 2015

Rhynamo and LunchBox Updates

LunchBox element collectors now have toggle inputs to better control updates with Revit.
The end of the winter is near (I hope!)... I've already started my spring cleaning by addressing some new features and enhancements to LunchBox and Rhynamo.  This past week, new versions of both Dynamo packages have been published to the package manager.  Be sure to check them out!

LunchBox
  • Toggle inputs for all element collection nodes.  This allows the user to turn off collection and also force a refresh to the node if there is a change to the Revit model
  • MEP Space collection
  • New outputs for various collection nodes.
Rhynamo

User String and Dictionary nodes let us read custom user data that is assigned to Rhino geometry.
An example of round tripping Rhino geometry and assigning Revit properties as User Data.

A new node for getting text object data from Rhino.

Friday, January 2, 2015

Parametric Forms for Dynamo with LunchBox


I have had a long standing fondness for parametric forms and surfaces that I thought it was about time I re-introduced some of them into the LunchBox package for Dynamo.  The Grasshopper plug-in already had many of them implemented so it was a matter of migrating some of the code to the Python nodes.  Dynamo is a bit touchy with self-intersecting surfaces and there is currently no way to establish "preset" parameter inputs for a node.  With that in mind, I have also included a few sample definitions in the latest package so you can check out some of the parameters.

Have fun.... oh and Happy New Year!

Wednesday, August 20, 2014

CASE Learning: Dynamo Essentials

CASE's Dynamo for Revit workshop... new and improved!
Dynamo is growing up so quickly that it is sometimes hard to keep up.  In this last year, the development team has completely refactored of the underlying code to support new workflows and user interface improvements.  In recent weeks, we've seen new educational content be released over at DynamoBIM.org to ensure that users are up to speed with the basics.

At CASE, we've stayed ahead of the curve by developing our own computational design curriculum focused on practicing architects and real-world applications.  You may remember that we've been running Dynamo workshops for over a year now... but now our curriculum has been greatly expanded and enhanced for the newest versions thanks to some summer help from Lorenzo Villaggi!


Interested in a Dynamo workshop?  Reach out to CASE!

Dynamo Essentials Summary

CASE's 2-Day curriculum is designed to introduce participants to essential project workflows from the creation of abstract geometry to the manipulation of BIM systems.  If you are new to the world of computational design or are interested in expanding your skills to include Dynamo, this is a great workshop to get started.

Dynamo is a graphical programming language that allows users to create powerful algorithms for creating generative design systems, automating tasks, and enhancing the BIM experience.  Much like Grasshopper, Dynamo gives users a powerful interface for advanced geometric control.  A unique feature of Dynamo is its ability to interface directly with Revit as BIM tool.

Data and Geometry

CASE's curriculum begins with an overview of the Dynamo interface and example systems focused on data manipulation and basic geometric constructions.  These initial exercises are designed to give the participants a complete experience in designing algorithms while introducing key data concepts.
Geometric definitions for points, curves, and surfaces.
Abstract systems with controls and parameters

BIM Elements & Parameters

Our exercises quickly accelerate to applying new algorithmic concepts to the BIM process.  The curriculum proceeds to introduce the uses of Dynamo for creating and managing Revit elements and their parameters.  We address techniques for placing family instances and adjusting parameters.

Populating Revit adaptive components.
Using surface subdivisions for advanced patterns with LunchBox

BIM Project Development

Our main exercise is the creation of a parametric tower using the Swiss Re tower as a guide.  These exercises demonstrate the definition of  Revit levels, floors, structures, and facades.

Tower element definition for massing and floors.

Creating variations and options.
Tower structure and facade geometry definition.

Leveraging Data & Interoperability

Dynamo also offers numerous ways to manage and interact with data.  To conclude the workshop, our curriculum exposes participants to techniques for leveraging external data sources,  We have designed exercises that use Dynamo with Excel to enable interoperability scenarios for pushing and pulling data.
Reading data from Excel to reconstruct geometry and control parameters.
Using Dynamo to mine a Revit model and send building information to Excel.

Sunday, July 13, 2014

Migrating my LunchBox to Dynamo 0.7

Dynamo has been undergoing some significant transformations as of late.  The yellow/orange color is gone, there are some nice UI/UX enhancements, and... most significantly, the program has been completely refactored to support new geometry and workflows.

So where does that leave my custom tools from the previous version..?  Well those, too, needed a complete overhaul to keep up with these new developments.  As of right now, LunchBox is at about 80% of what it was from Dynamo 0.6.  The biggest challenge for me is that there has also been some seismic shifts with how Dynamo interfaces with Revit.  These have made migration much more challenging than anticipated.  For now there are a few Revit-based nodes that are only partially working but this will hopefully get ironed out in a future update...

For the adventurous users out there, new version compatible with Dynamo for 0.7 has been pushed up to the package manager.*

Go ahead and try it out!

*If you need versions compatible with 0.6, they are still there as older builds...




Sunday, May 25, 2014

LunchBox for Dynamo: Bring your BIM into your Algorithm



Memorial Day weekend is upon us here in the US.  If you have some free time this holiday weekend, be sure to check out the latest version LunchBox now available through the Dynamo Package Manager

The LunchBox package contains 30 new nodes to aid in your Revit workflow.  The nodes are completely free with the Python script source fully accessible.

The most notable recent additions are "Element Collector" nodes which allow you to reference different element types (families, rooms, curtain wall, etc.) into Dynamo.  This workflow makes it easy to reference key element geometry and mine your Revit model for information.



The Structural Framing collector allows you to reference existing Revit structural elements into Dynamo.
LunchBox for Dynamo currently features 27 nodes... and growing.

Sunday, May 4, 2014

LunchBox for Grasshopper Update


Just in time for Cinco de Mayo... here's a modest update to LunchBox for Grasshopper!

The plug-in has not been updated in almost a year and a half so it was about time to ensure the code remained in alignment with the latest Grasshopper versions (0.90075).  The biggest update comes by way of some new Excel components which are leaner, meaner, and faster.

Here is a list of the updates:
  • New installer...  be sure you uninstall older versions of LunchBox first!
  • General code update for the most recent versions of Grasshopper.
  • NEW Excel components for reading and writing workbooks.
  • NEW Deconstruct Wireframe to create node-centerline table definition
  • Fixed a small bug with the Flatness Check component.

Excel Components

Excel components seem to be quite pervasive in various plug-in packages.  The goal here is the keep them lean and fast.   The new Excel tools allow you to quickly read and write data to multiple workbooks and worksheets at once.  They are also SCREAMING fast and will help you push and pull entire tables of data into Grasshopper with ease.  In addition, I have provided a data viewer for the Excel components. If you right-click on the nodes, you will have the option to preview the tables you are reading and writing.

*If you were a fan of the older components, they are still there :)

Reading Excel table data from a worksheet with a table preview.
Writing multiple worksheets to Excel with a table preview.
Deconstruct Wireframe

This is a simple utility for taking centerline models and deconstructing them into a node list (points) and centerline definition (start/end node index).  I have found this type of tool to be useful for formatting model information for structural analysis.

Deconstructing a structural wireframe into a node definition.

Monday, January 27, 2014

January closes out with more LunchBoxes and Slingshots!

Cool stuff continues to develop for my plug-ins LunchBox and Slingshot!...  Be sure you are checking the GitHub site and the Dynamo package manager to test out the latest builds and nodes.

Slingshot! (for Grasshopper)
Data grid view for Slingshot! query components in Grasshopper.
Updates continue to trickle into the Slingshot! source code on GitHub.  Users might be interested in this nifty data grid viewer for query returns which provides a selectable data.  There is also some stuff under the hood which should speed up your command and query operations.

LunchBox (for Dynamo)
LunchBox Element Collector components for Dynamo
Don't be shy about pulling in your Revit elements into Dynamo.  LunchBox now provides a growing set of element collectors which let you reference lists and lists of Revit elements that might be existing in your model.  Need to pull in all the control points from your adaptive components?  Do you need to get data about Revit room elements?  It's a snap with LunchBox for Dynamo... get it in the package manager!

Sunday, November 10, 2013

LunchBox for Dynamo 2013.11.11

I have posted a new LunchBox package for download by Dynamo users.  The intent of the package is to provide a growing list of Dynamo nodes for commonly used computational design techniques and other helpful nodes for data management.  Some of these nodes replicate a key nodes found in Grasshopper that are not yet included in Dynamo's core.  You can find my LunchBox plug-in for Grasshopper here... 

You can access LunchBox for Dynamo by visiting the "Search for a Package" under the packages menu.  As of this release, the package includes the following nodes...  Please note that you may need to get one of the latest Daily Builds of Dynamo for these to work properly.

Domain
  • Domain Variables:  Gets the Min and Max variables from a domain.
  • Get Domain:  Gets the domain from a list of numbers.
  • Remap Numbers:  Takes a list of numbers and maps them to a new domain.
Math
  • Mass Addition:  Adds a list of numbers
  • Mass Multiplication:  Multiplies a list of numbers
Curtain Panel
  • Curtain Panel Collector:  Gets a list of Curtain Panel instances in the document by Family Name
  • Adaptive Component Collector:  Gets a list of Adaptive Components in the document by Family Name
Random
  • Random Numbers:  Produces a list of Random Numbers using a Domain, Amount, and Seed.
  • Random Split List:  Randomly split a list into two lists.
Panel Grids by Face (previously found in the XYZ Cells by Face package)
  • Quad Grid by Face
  • Staggered Grid by Face
  • Diamond Grid by Face
  • Triangle Grid by Face