Showing posts with label Dynamo. Show all posts
Showing posts with label Dynamo. Show all posts

Thursday, March 31, 2016

UNL Architecture Courses - Towerpalooza!


A series of spring technology courses at UNL have concluded this past month.  I taught two parallel courses in parametric modeling and computation for BIM for undergraduate and graduate architecture students. Both courses positioned Revit as the primary design platform:

  • Conceptual Design with Revit:  The first course was focused on conceptual family creation and parametric modeling workflows.  
  • Computational Design with Dynamo: The second course introduced Dynamo as a computational design tool that can be used to facilitate design exploration with BIM.

The mini-courses were taught over the span of three Saturday sessions with between 10 and 15 students. Both course assignments used a "tower" as the design prompt and it was interesting to compare and contrast the student results. The student products from the parametric family course tended to be more "free" in terms of geometric control with a higher level of development for different design components. The Dynamo course had a much higher barrier to entry for learning a 'new language' and the products were more formula-driven in terms of overall geometry.

Parametric Modeling with Revit
Student: Dexter Hansen

Student: Anna O'Neill

Student: Abdulrahman Nahas

Computational Design with Dynamo

Student: Michelle Lindgren


Student: Kristen Schulte

Student: Caitlin Tangeman

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

Sunday, March 15, 2015

University of Nebraska - Computational Design with Dynamo & Revit

UNL - Computational Design with Dynamo.  A 3-session 'mini-course'
This spring semester, I taught a 3-session mini-course at UNL focused on computational design with Dynamo and Revit.  Like the professional workshops I instruct at CASE, I focused this academic course on a real-world design study:  the design of a parametric tower.  The course started with an overview of  concepts related to data management and geometry creation.  We then proceeded to explore the connections between Dynamo and Revit including element creation and parameter control.  The course concluded with an overview of advanced data management concepts with Excel and interoperability with Rhynamo.

Towers provide a nice framework for communicating parametric concepts.  These buildings possess repetitive elements and opportunities for variation.  Towers also allow for clear workflows for how Dynamo's abstract geometry can map to architectural BIM elements and use cases.  For example, an abstract "Number Sequence" can easily be conceptualized as a driver for building Levels.  Curves can be mapped to floor boundaries.  And so on...

I also like how the tower typology allows students to explore ideas with Dynamo.  In the class, a few basic workflows were introduced and the students could then develop these concepts into their own design ideas.  This makes the class less about 'training' and more about being a design 'workshop'.  I have found this to greatly improve knowledge retention and keep classes engaged.... especially with architects.

If you are interested in these kinds of workshops for professionals, here are some links you might find to be of interest:


Here is some of the output from the class...

Student: Salem Topalovic  
Student: Alec Eastman  
Student: Leul Yoseph  
Student: Michelle McCullough  
Student: Sarah Hitchcock  
Student: Xiaoyu Wu  

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.

Saturday, January 31, 2015

Rhynamo - Refactored and Data-centric

The new version of Rhynamo exposes new data from 3DM files 
There is much more to Rhino files than NURBS geometry.  This latest release of Rhynamo extends the users ability to access different data and objects within a Rhino file from Dynamo... from general file information, to layers, or materials.  Geometry conversions will also return other important information about the object including GUIDs, layers, colors, and names.

In order to better develop this new functionality, the Rhynamo library has been refactored Rhynamo's for better organization... this will almost certainly break existing definitions that use older versions, but this is an important evolutionary step for this tool.  Older versions are still downloadable on the package manager for legacy use.

Visit the Rhynamo source to get the latest...
Geometry converters also return information about object GUIDs, names, layers, and colors.
Materials, layers, linetypes, hatch patterns, and camera view data is now available.

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!

Monday, December 1, 2014

Rhynamo is Open Source!

Rhynamo:  An Open Source Tool for Reading and Writing Rhino files with Dynamo
On behalf of CASE, I am happy to announce that the source code for Rhynamo has been published to BitBucket.org.  Rhynamo is an open source project under the MIT license and is maintained by CASE.

Free builds of Rhynamo have already been made available through the Package Manager.

We are very excited to be contributing to the BIM and computational design community with this tool kit that enables tighter integration between popular design authoring tools.  We are committed to helping the AECO industry address their interoperability challenges.  Tools, like Rhynamo, are only one small piece of that puzzle.

A few notes about the project...

  • The project his hosted on BitBucket.org... it's a great service, check it out!
  • I highly recommend Source Tree as a tool for managing your repos
  • Rhynamo is a C# project being developed with Visual Studio (I am using 2013)
  • The project relies heavily on McNeel's OpenNURBS library.
  • Because it relies on OpenNURBS, you do not need Rhino to work on the project (most of the time)
  • Are you interested in learning Dynamo/Rhynamo?  Do you have questions about interoperability?  Reach out to us...

If you are going to be at Autodesk University in Las Vegas this week, be sure to check out what CASE is up to... and don't miss our party!


https://bitbucket.org/caseinc/rhynamo

Saturday, November 29, 2014

Slingshot! for Dynamo Update

Introduce some SQL into Dynamo
It was about time something was done about the version of Slingshot! that has been collecting dust on the Dynamo package manager....   A year ago, the Slingshot package was released as a collection of Python scripts and several required libraries for MySQL and SQLite needed to be downloaded separately due to package limitations.

No more!  As of tonight, Slingshot! for Dynamo is distributed as a node library and ships with all the needed dependencies.  So if you are interested in cutting your teeth on some SQL within a graphical programming language, give it a shot!

Interact with relational databases
And just in case you forgot Slingshot! was open source... I have moved the source code to a new home over at BitBucket.org (including both Grasshopper and Dynamo projects)

https://bitbucket.org/archinate/slingshot/

Thursday, November 20, 2014

Get the Rhynamo Package!

Get Rhynamo now through the Dynamo package manager
Rhynamo is now an official Dynamo package... freely available to the public!  I am still putting the finishing touches on the source code repository (more on that soon!), but that shouldn't stop you from getting the latest build of Rhynamo to try out in your work.

The private beta was very successful with over 300 people testing Rhynamo and providing very valuable feedback.  There is still work to do to improve the tool, but now that we have been actively using it on our own projects at CASE, we feel it is ready for the greater BIM and Computational Design community to start making use of it.

So give it a try!  Rhynamo is designed to work with the latest builds of Dynamo (0.7.4 or later).



Monday, November 3, 2014

Rhynamo - An Open Source Project

Coding Rhynamo from my hotel room at The Standard in Los Angeles
If you who were paying attention to my Twitter feed During ACADIA, you may have caught that I made a special announcement regarding Rhynamo, the OpenNURBS file reader/writer for Dynamo:

As of December 1, CASE will release Rhynamo as an open source project.

What does that mean? It means that we will continue to be releasing and developing free builds of the tool so you can continue to use Rhynamo in your work. It also means that brave coders out there will have the opportunity to leverage the Rhynamo source code to customize their workflow with OpenNURBS and Dynamo and develop new integrations.

Rhynamo only attempts to address a small piece of the larger design and production workflow. However, I believe that tools like Rhynamo provide us with a road map for what we, as users, should be expecting from our ecosystem of tools:
  • We need more fluid exchanges of data throughout the design process
  • We need higher levels of compatibility between authoring platforms
  • We need open file formats and APIs that let us customize our workflow
Projects like McNeel’s OpenNURBS and the Dynamo project should not be exceptions…they should be the rule.

I still have some code commenting, clean-up, and feature development to do ahead of December before release the project into the wild... but for those of you who are already relying on Rhynamo in your workflow, rest assured that the tool is not going anywhere and will continue to be developed into 2015.

I also want to thank the more than 300 testers who signed up to try out Rhynamo in the past two months.  Their contributions have been very appreciated and I hope they continue to play along as we enter into phase 2 :)

More info to follow....

Reading in a Rhino file containing a Hexagonal paneling system
Mapping complex Rhino panels to Revit Adaptive components
Creating a Dynamo surface and saving geometry as a Rhino 3DM.
Completed during the ACADIA 2014 Hackathon, this shows Rhynamo sending 'live' commands to Rhino.

Friday, August 22, 2014

Introducing RHYNAMO: Apply for BETA Testing!

Demoing Rhynamo for the Central States BIM workshop
I just finished up a string of presentations at the Central States BIM Workshops hosted here in Omaha.  I announced a private beta for a new Dynamo node library:  RHYNAMO.

Rhynamo is a plug-in that lets you read and write the Rhino 3DM file format within Dynamo.  This opens up a lot of interoperability potential between Rhino, Grasshopper, Dynamo, Revit, and more. I am excited to get more folks to try this out!


 

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.