A blog dedicated to tidbits of software information related to the AEC industry. Most tips and tricks are roughly 60 seconds because, "Hey who doesn't have 60 seconds".
*The views and opinions expressed in this blog do not reflect those of my employer.

Friday, August 14, 2015

Feel the Rhythm

feel the rhyme, come on now, it’s Dynamo time!
This post aims to summarize what Rhythm has available at this time. I admit this post is probably much longer than 60 seconds, but it has a lot of great information :)
I've been using Dynamo since I attended Autodesk University 2014 and it changed how I thought about Revit completely. Not only did I learn the basics, but I immediately set out on a journey to build awesome functionality primarily with what’s available to us in the OOTB (out of the box) Dynamo library.
|Enter Rhythm (maintain Rhythm in Revit with Dynamo) |
Back in February when I began bundling all of my custom nodes into a new package called Rhythm, I never imagined it would become what it is today. Currently it is #11 on the package manager and has 65 nodes and counting. These nodes include useful core functionality, tools and collectors. Once again most of my nodes use OOTB nodes within them (currently about 15 use some sort of python, often found on stack overflow)
The screenshot below shows all of the nodes currently available.
2015-08-14_08h40_10
I also have a description below, if you are curious feel free to check it out!
|Tools|
All Upper
This is a tool that converts all of the items with text in a project to a standard of UPPERCASE. These items are chosen by tying in a Boolean (T/F) for each category you want to change.
Arrowhead Assigner
This tool will assign a specific arrowhead type to all categories selected. Simply type the name of the arrowhead style you want.
Level Element Collector
This will collect all levels in project and output some useful info. (Similar to others but no python is utilized in here)
Dash Remover
This will analyze all sheets for a dash after the prefix “AE” and remove it if present. This is important because NCS states that no dash shall be used when using the “AE” prefix.
Rhythm.PercentGlazingByOrientation
This node will output the percentage of glazing per orientation of your model. It relies on exterior walls being exterior function and using curtain walls for windows. (typical standard practices)
Parametric Graphic Scale
This node will automate a graphic scale calculation in your viewports.Here's a blog post that shows how it works.
Room Element Collector
This is another collector node. This time for rooms, it output a lot of useful data and is similar to others available. (Once again, no python here)
|Core.Ayuda (Spanish for help)|
The nodes in this section are simply a bunch of helpers for various things. This includes; seeing if other packages are installed and a thisorthat node to toggle two options.
|Core.OS|
These nodes output some pretty useful system data. This includes; current user and current user appdata location at the moment.
|Core.Inspiration|
These node were made as an experiment. My goal was to use the web request node to see what I can pull from a website. The example I used was pulling quotes from brainyquote.com. After making several nodes, I made the node searchable and now you can search for quotes from any author on their site.
|Core.Unicode|
I won’t go into details here, but Revit has an ability to insert Unicode characters in certain places. These nodes were made to supply them.
|Core.List|
Most of these are self-explanatory. They are all simple list stuff that I found I needed throughout this process.
|Core.String|
I began creating these nodes to add a lot more string functionality to Dynamo. After I got to the Remove prior and Remove after I discovered Mark Thorley’s package Zebra! He added a lot of the functionality I wanted so my string area somewhat halted. (Try out the flip reverse to have fun)
|Revit.Selection|
After reconfiguring how I name new nodes, this is where all collectors will live from now on. Currently there are 8 collectors in Rhythm, 6 of them live in this category.
|Revit.Document|
This is where some pretty useful Revit document nodes live. After Revit R2 came out we were allowed to create worksets via the API. That is in this section. (Coming soon is a rename worksets one)
|Revit.Element.Query|
This includes some useful Revit element data. This includes an element type that uses no python, but all OOTB nodes. I also have an Element.Room node in there.
|Revit.TextElement.Actions|
These are all useful nodes which manipulate text elements directly without converting to a string first.
|Revit.Elements.Walls|
I am starting to build nodes that query walls in this section. Walls are a big part of what we do, so they will be a big part of Rhythm too.

|Revit.Element.Actions|
This is probably my favorite section, so I will describe the nodes. Currently a lot of people have things to say about Dynamo can’t do this and that. This section represents the ability to alleviate these frustrations with OOTB nodes.
Element.GetMultipleParametersByName
Does what it says. Simply input your element and a list of parameters that have a comma between them.
CaSeiNSeNSiTiVe nodes
These nodes were made to show that Dynamo doesn’t have to be case sensitive. This is a common complaint in the Autodesk University Labs and RTC Labs by a famous cow man! I spoke with the developer and the case sensitive nature isn’t a glitch, but it’s by design. Either way we can fix this with OOTB.
TypeOrInstance nodes
These nodes show that you can set type or instance parameters for elements very easily with some thought.
Override nodes
We wanted the ability to override annotation symbols (projection lines), so we built it.














































Tuesday, August 11, 2015

#Revit Viewport Woes with #DynamoBIM

Currently there is an issue in Revit when you try to use the “GetParameterByName” node in Dynamo to retrieve viewport names.

If you have a title on sheet parameter defined it starts to throw some weird errors.

2015-08-11_07h27_05This is because it will actually show up as view name in the elements parameters.

Luckily we have all of the nodes in Dynamo to filter out what we want!

2015-08-11_08h37_57What we are basically doing is figuring out if a title on sheet entry  exists and subtracting that from the duplicated item list.

Rather than rebuild this whole graph I made this nice little collector which is now on Rhythm.

2015-08-11_08h41_49

The original question about this can be found here  http://dynamobim.com/forums/topic/revit-viewports-not-cooperating/#post-19655

Thursday, August 6, 2015

Visualize Glazing Percentage in #DynamoBIM with Rhythm and Grapher

So this is something that I have wanted to try since I made the Percent Glazing by Orientation node for RTC NA 2015. I was going to try to build graphing capability into Rhythm but it has already been made!

2015-08-06_08h32_48Since the community is awesome I was able to use this package to generate a really cool pie chart to show the amount of glazing per orientation. (For some reason the blue doesn’t show up in the preview)

2015-08-06_08h30_11But it also exports the graph as an awesome vector (.svg) image! Since I can’t embed an svg image type on here I attached it below as a png.

  pieChartPlot8_29_01_727_AM

This opens up some pretty cool possibilities for pulling data from our Revit model.

-johnp

Wednesday, August 5, 2015

Get Current User in #DynamoBIM

A few weeks ago I posted an update to Rhythm which included some pretty nifty helper nodes, named Ayuda and OS.

One of the nodes I included in this update was OS.CurrentUser. This simply retrieves the current user that is logged in for use elsewhere. Below is on example of a good use for this.

2015-08-05_08h49_27

My only hangup with this node is it requires python. That’s great and all but there needs to be another way!

That’s when I came up with the following workflow.

2015-08-05_08h42_03

All it does it retrieve the file path from your current open Revit file and retrieves the username between some typical characters with the package Zebra. 

2015-08-05_08h43_06Since your local files are typically saved on your local hard drive this will work pretty well.

This means we can now embed file paths in our definitions if they are at a specific location!

-johnp