Saving time: Optimizing a Dull Structural Task with Dynamo

I have the pleasure today of hosting a guest blog post, from a longtime Twitter friend that I was fortunate enough to meet up with in person this year, Tom Kunsman! As if working in this industry isn't cool enough, we also bond over our love of Legos and Space Science! 

Before we get to Tom's article on saving time with Dynamo, here are some links to past articles from guest authors: 

Saving time: Optimizing a Dull Structural Task with Dynamo 

Dynamo is often used to not just create parametric geometry, but to optimize workflows and maximize project efficiency.

Recently, I was working on a structural project and was slogging through one of those very repetitive tasks. This was, of course, the manual editing of a dimension on a beam system, in order to place the label below them which specifies the number of structural members and spacing required between them.

As I trudged through this task, I realized that Dynamo could be leveraged to perform this task, in less time than it would take to do manually. The data for all the members and spacing was available in the system family parameters already, so all we had to do was find a way to tap into it and put it where we want it.  

1.     Beam Framing Systems and Their Parameters

First, let’s look at a framing bay, to understand what information we are trying to gather (notice the values below the dimension segments).

Initially, when I began working through this problem, I was going to have users select the beam system, then the dimension, but relating the two pieces of data proved difficult.

One of the more frustrating aspects of Revit is the inability to access all of the parameters with in a project, when you want to use them in tags or with other parameters. Take a look at the parameters of the beam system. Note that “Centerline Spacing” is grayed out, which means that the user cannot modify this value.

Thankfully, with Dynamo, we can access this information, along with the “Number of Lines” value, to apply to the dimension spacing.

NOTE: This access has the added benefit of eliminating the opportunity for user error.

1.     Building a Solution in Dynamo

Instead of continuing to attempt to find native Revit options, I decided to turn to the amazing Dynamo community of users. And, since I was using custom nodes from a package called Rhythm, I sought assistance directly from the package author, John Pierson.

After brainstorming for a bit, we came up with this simple graph:

We’ll take a look at each group of nodes, by function, to understand the logic.

A.     Gathering User Inputs

The first step in our process is to select the multi-segment dimension that we wish to have the beam system values written to. This can be done with a simple Select Model Element node and a Number Slider node. Keep reading, if you aren’t sure why I included the number slider.

TIP: Renaming a node can be done simply by double-clicking on the title of the node and typing in a new label. Renaming nodes can help new Dynamo users more quickly understand which nodes require user input or selection.

I have renamed the “Select Model Element” node to read “Select Dimension”, and “Number Slider” has been changed to “Buffer for Dimension”.

A.     Collect and Compare Beam Systems

Next, we need to grab the structural beam systems, along with their bounding boxes. This is accomplished through the use of the following nodes: Categories, All Elements of Category and Element.BoundingBox.

A.     Projecting the Point and Generating the Bounding Box

Obtaining the underlying geometry of a multi-segment dimension is difficult. The end result actually places a point at the mid-point of each segment, and then copyies and offsets that point until it intersects the beam system.

With this method, Dynamo can understand which segment of a dimension corresponds to which beam system. Basically, we are playing laser tag with the dimension and the beam systems, which actually mimics what a user would do manually.
  1. Find the related dimension string
  2. Scan over and locate the beam system to pull data from
  3. Push the data to the dimension string

By using the Dimension.GetCurve node, we can place a point at the mid-point and then generate a curve along the normal vector from that point. This is where the “buffer for dimension” Number Slider gets input to the Geometry.Translate node.

This translate node places another dynamo point at a distance away from the midpoint of each of the selected multi-segment dimensions, which is how we are able to grab the related beam system. Since the dimension will not intersect the system, we simply project a point of our own towards it.

The last node in this group is the BoundingBox.ByGeometry. This generates the bounding box of the point that was offset from the mid-point of the dimension line. We will then look to see if the bounding box of this point intersects with the bounding box of the beam system.

A.     Select Objects to Check

The next step is performed by this group of nodes, which does an intersection check between the bounding boxes.

In the BoundingBox.Intersects node we input the Structural Beam System collection to the boundingBox input and for the other input we use the data from dimension point and translation group that was mentioned above.

Flowing from the BoundingBox.Intersects node we use the IndexOf node.

We also use a Code Block node with a true statement. So, we are ONLY selecting beam systems that do intersect with the offset midpoint of the selected dimension.

The remaining nodes: List.AllIndicesOf, List.RemoveItemAtIndex and the second Code Block, with the value of negative one, will remove any Beam System that may have been misplaced or does not have a corresponding dimension.

A.     Get the Index of the Beam System

Next, we need to get the Beam System index, and for that we can use the List.GetItemAtIdex node.

For the list port we feed a wire from the All Elements of Category from when we had selected all of the beam systems.
With the index port we wire in the list output from the List.RemoveItemAtIndex node. Again, this just helps to eliminate any misplaced beam systems in the current view.

A.     Obtain the Dimension Value of the Beam System

We need to get the dimension value of the beam system, which is where this group of nodes comes in.

The first step in getting the dimension value of the beam system is to use the Element.Parameters to get the parameters.

Next, we need to get the String value from that object with the String from Object node. This enables us to search for and isolate just the centerline spacing.

After converting to a string, we can then search for the centerline spacing by using String.Contains and a Code Block with “Centerline Spacing”.

NOTE: Dynamo and Revit require exact spelling and case sensitivity.

This can be done with the List.FilterByBoolMask node. The String.Split node groups the Centerline Spacing with the associated value associated with the spacing. This is helpful because we get the user-understandable value of the dimension and not the decimal value.

A.     Assemble the String

Now it’s time to build the string (text value) that will be written below the dimension value.

In the first part of this group we have the Rhythm node BeamSystem.Members, which obtains the framing members from the beam system. For the Beamsystem input port, we connect a wire from the List.GetItemAtIndex node while we were .

This gets connected to the Count node, allowing us to obtain the number of beams from the framing system.

From the group where we obtained the dimensional value of the beam spacing (the centerline spacing), we connect the String.Split to the List.LastItem, since we only need the spacing value from that list.

You can use a simple + (addition) node and a Code Block to add one to the number of lines. This is what builds our custom below value for dimensions (the part which used to be manual).

In our final step, we need to use the Dimension.SetBelowValue node from the Rhythm package. For the dimension port, we feed in the Dimension line that we picked all the way back in the beginning of this logic, with the Select Dimension node.

Finally, for the belowValue port, we feed in the wire from the Code Block where we had added the count of the number of beams and the spacing.

A.     Placing the Annotation

After the user runs this script, Revit places a Dynamo point at the midpoint of each segment of the multi-segment dimension line as well as a Dynamo point offset from that point.

NOTE: This offset point needs to be within the beam system you are trying to reference. 

NOTE: Remember our “buffer dimension”? This buffer dimension may need to be modified depending on how far the user has placed the dimension line from the beam system.

1.     Summarizing our Dynamo Solution

So, the next time you need to specify the number of members in a framing system, and the spacing between them, keep in mind that you can automate the process with the following Dynamo workflow:

A.     Have the user make selections and input the required tolerance
B.     Collect and compare your beam systems
C.     Project points and generate corresponding bounding boxes
D.     Select objects to check
E.     Obtain the index of the beam system
F.     Assemble the data string
G.    Place the data string below it’s related dimension

Stepping through your process in a Dynamo graph is important, because not every project is the same. Building flexibility into our graphs in this manner sets us up for success. As always, I would encourage you to test any script like this out on a test project, before using it in production.

I hope this example can demonstrate to any structural designers and engineers who may not already be aware, just how they might be able use Dynamo on a project with beam systems. That might spark other ideas, too, because utilizing a script on a mundane task can also save so much time and effort.

Much of the logic behind this solution was provided by John Pierson. Using my initial thoughts and the resulting idea for improvement, John was able to expand upon what I provided and assist with the onerous task of obtaining the dimension geometry.

Tom Kunsman is a structural designer with over 20 years’ experience and continues to find ways to utilize Dynamo in structural and other disciplines. He has experience in BIM Execution Plans BxP, Revit family content creation in all disciplines, and continues learning how to adopt or improve established BIM workflows. 
Twitter: @tkunsman 

John Pierson is a Design Technology Specialist at Parallax Team and a Revit certified professional for all disciplines. He is an active member of the Dynamo community and currently manages the Dynamo package called Rhythm. 
Twitter: @60secondrevit

Before you go, please take 3 minutes out of your day to participate in the AUGI Annual Salary Survey. https://www.surveymonkey.com/r/2019AUGISalarySurvey


BIM 360 Ops - Will it feed data back to Revit?

So, as much buzz as there is around BIM 360 Ops, as a facilities person, my primary concern is longevity and keeping things relevant.

While I know that you can export data from Revit to Ops, I was not sure whether changes you make in Ops can feed back to the Revit model.

So, I ran across this post in the Autodesk Discussion Groups:
Push New Data from Ops back to the Revit Model

The answer provided by katie.murff was that Ops does not (yet) have an API. Although, she did say that a workaround would be to export the information from BIM 360 Ops to a spreadsheet and then import it into Revit.

I suppose it would be up to the people involved in the process and the scale of the data changes as to whether that would be more efficient than just updating the data in both applications manually.


BIM 360 Ops - First Look

For the past five years, I have been absorbed in the world of ARCHIBUS. So, while I definitely made use of AutoCAD and Revit in conjunction, I sort of lost touch with the direction of some other Autodesk offerings.

Just prior to AU this year, one of my local friends and colleagues, Bill Carney, was discussing a class he was helping to put on. BLD226490 - Lessons Learned While Uploading Data to BIM 360 Ops. I have since logged on to the Autodesk University website and I can see that this year and last year, there are quite a few classes on different topics surrounding the Ops (short for building operations, aka post-construction, post-occupancy).

So, I was reminded that I should take another look at this platform (previously called Autodesk Building Ops) and it's current capabilities. From the Autodesk Website:

Autodesk BIM 360 Ops is a mobile-first asset and maintenance management solution that enables general contractors and building owners to realize the value of BIM in building operations. General contractors transform the handover process by connecting BIM asset data created during building design and construction to building operations. Owners begin operations on day one, with a mobile-first solution and the information they need.

The first CAFM system I was involved with was FMDesktop and a mobile component was not really on our radar at that point. Then, when my employer at the time was looking at migrating from our sunset CMMS, and we were transitioning to Maximo, our primary consideration with mobile was attempting to get wifi coverage in our working spaces (equipment floors, equipment rooms in basements and working spaces on the roofs) and ensuring all spaces and items were bar-coded and could be easily looked up, but, realized how vital it was to save man-hours in transit back to the facilities offices.

In my last role, working for an ARCHIBUS business partner, many of our clients were using the ARCHIBUS mobile apps. This is a trusted application nearly as old as I am, so the transition to mobile access has been very data focused. Each iteration of their mobile application (and Web Central) does improve the user interface and therefore usability, but, I think the Ops offering from Autodesk does have an advantage in instinctive use by starting with the mobile and working from there.

The main function of any CMMS (see this past article on my peeves about all the new acronyms to describe this phase of building lifecycle management - TLAs/FLAs for FIM/IWMS) is to be able to retrieve data and report problems. A mobile app puts that data with you in the field, rather than back at your desk. There are other features, easy prioritization, work order updates and flags sent up for missed items.

Now, you do not NEED CAD files or models to manage a facility. The facility is all about the data. That said, the more data is connected to it's source (.dwg/.rvt), the better, and the graphics of a floor plan can help end users and maintenance workers alike. So, my only criticism of BIM 360 Ops is the BIM in the name might make a lot of potential users ignore the product entirely (~coughs~ guilty), but, let's face it, Autodesk will just rename the offering in a year or two anyway.

But, I am happy for their renewed focus on the post-occupancy data and the full building lifecycle, and the user interface looks very intuitive. Easy adoption is the single most important thing in a successful technology implementation, in my opinion.

I encourage everyone to sign up for an AU Online account and search for the course handouts, which will touch on both highlighted implementations and specific tasks (like importing and exporting data).


AU2017 Influencer Event

It has been awhile since I have posted myself, so I am honored to be able to host another guest post for a fellow AutoCAD Influencer, Frank Mayfield. 

Here are some past guest posts:

After a year of anticipation, AU 2017 has come and passed, and with it, unparalleled learning experiences, along with connecting and reconnecting with new and old friends.
For all its glitz and glamour, Las Vegas is actually a perfect venue for 10,000 geeks to congregate, as its scale and opulence is all powered by its underlying technology. And that technology, after all, is what we’re all about.
Nowhere is this more evident than at the Ka Theater in the MGM Grand. It was my privilege to join an illustrious group of AutoCAD end users, along with key members of the product and marketing teams for a rare, behind the scenes, look at the inner workings of the Ka Theater.

[This dragon greets you to the entrance of the Ka Theater at the MGM]

On Monday afternoon, a full day before AU officially started, our group of “Influencers” enjoyed a lively shuttle ride down Las Vegas Boulevard to the MGM Grand, where we were treated to a wonderful reception with our Autodesk hosts. They knew, as we were soon to, that to fully appreciate the magnitude of the Ka Theater, you must see the Cirque De Soleil “Ka” show itself. So, after the reception, the entire team was treated to this incredible production. We returned to the Venetian later that night, jaws agape from a truly magnificent show. Had that been the entire experience, it would have been more than enough, but our story doesn’t end there…

[A pic of a panoramic photo, showing the theater and the incredible moving stage]

The adventure continues instead the next morning, when our group heads back to the MGM for our exclusive, behind the scenes tour of the Ka Theater. Upon our arrival, the promise of a caffeine pick-me-up was cut short by a long line, and a short time frame.

[AutoCAD Influencers: Shaan Hurley, Lisa Feldhammer, Alyson Moses, Lynn Allen, David Cohn, Rick Ellis, Curt Moreno, and way in the back, Donnie Gladfelter and Rob Maguire]

Soon we found ourselves in the front row of the theater, house lights up, and listening to our guide, the show’s Director of Automation, Mark Castle. He described many of the intricate details of the show and how the moving stage works. The stage production was designed in 2004, and we got to see some of the original drawings – all done in AutoCAD.

[Original 2004 AutoCAD drawing of the Sand Cliff Deck]

Our tour then proceeded three floors down, into the bowels of the Ka Theater. We ended up behind the moving stage, known as the Sand Cliff Deck. This stage is truly the star of the show, as it is able to raise and lower 75 feet by a vertical gantry crane. It can also rotate in three axes with the help of four hydraulic cylinders. During the show, this deck may be level, rotate 360*, or tilt up a full 90* - or anywhere in between!

[Looking down at the Sand Cliff Deck from the stage level]

[Looking back up to the theater level from behind the Sand Cliff Deck, 3 floors below]

The Sand Cliff Deck gets its name from a scene in the show where the deck is covered in a special granular cork material which simulates sand. The effect is spot on, but as Mark explained, the cork is the most difficult aspect for the crew, as at the end of the sand scene, the deck literally tilts forward toward the audience, spilling the cork from the stage, and it gets everywhere, including in the machinery. Cleaning up the sand is the most arduous task between shows.
One thing you may not think of while watching the show, but which does strike you from the vantage point shown above, is that the movement of the stage is nearly silent. I could recall the night before being able to hear the performers' footsteps and movement on the stage. It was explained that this quiet movement is accomplished by all of the hydraulic machinery being housed outside of the venue.
Our group continued the tour with another elevator ride; this time six floors up to the show’s control room. The entire show is electronically controlled from here. A relatively small space, our group was squeezed in tightly as we learned about how they manage the show.

[Linda Sellheim, Leah Friedman et al squeezed into the control room. On the right, the view from the control room.]

Soon, we found ourselves in the practice room. Full of equipment, mats, and harnesses all similar to what is found in the production, the performers spend many hours here honing their skills.

[All of the smart AutoCAD Influencers may look at the practice vertical peg deck, but the dummies must look away]

The final stop on our 90-minute tour was the costume department. On our way in, we saw harnesses for the acrobatic performers, their costumes, and as you see below, cabinets lines with perfect head models of each performer who wear a custom fitted mask.

[If you ever wondered how to get ahead...]

As the costume managers were describing this, I couldn’t help but wonder if a more modern way of accomplishing it might be better? Scan the performer’s head and 3D print it? Even better, scan the head and virtually create the mask, then 3D print that? I’m willing to bet some others in our group had the same thoughts.
One thing we did learn was that the costume department is a very busy place. They’re responsible for creating the costumes of course, but each morning, there is a rack full of things that need to be mended, and they also take care of all the laundering. Plus, backup costumes and alterations are all part of their day’s work.

[The Influencer group listens intently as the costume managers explain their job]

[Never one for being in the spotlight, Lynn Allen does her best to blend in…]

After an hour and a half of awe inspiring behind the scenes technology, our tour came to an end. I want to thank Autodesk, and specifically the AutoCAD team for putting this together for us.
I’ll leave you with this thought, if you ever get the chance to see the Cirque de Soleil Ka show, I highly encourage you to do so. Not only will you be thoroughly entertained, you may remember this post, and think about all the behind the scenes technology that was designed in AutoCAD. Until our next Influencer adventure, farewell for now.

[The AutoCAD Influencer group outside the Ka Theater]

Frank was most recently the CAD Manager for the Oil, Gas and Chemical division at Benham in Tulsa, Oklahoma. In this role, he oversaw all aspects of the AutoCAD, Plant 3D, Navisworks and CADWorx environments.

He has been using AutoCAD since 1986 (v 2.61). Frank is an AutoCAD Certified Professional, a volunteer with AUGI as a forum manager, and a contributing author for the AutoCAD Blog. He is a member of the AutoCAD Customer Council, Autodesk User Panel, the Product Delivery Council, Product Research Community, and the Autodesk Advisors Community.

He was part of a select group invited by Autodesk to attend the inaugural CAD Manager Summit in 2015. As a top-rated member of the AutoCAD All-Star Mentor program, he has provided live guidance and answered questions for over 2,500 in-trial users in more than 50 countries worldwide.



It seems like every time I see someone write, or hear someone speak, about my line of work, they will say something to the effect of "This could better be described by [INSERT TOTALLY NEW AND COMPLETELY UNNECESSARY ACRONYM HERE]".

If you have ever found yourself typing or uttering those words, or something similar, just stop yourself. Please.

Alright. Having grown up in the engineering industry, in the age of CAD, and a burgeoning data management movement, and the expansion of BIM, I am surrounded constantly by acronyms. 
The icing on the cake was that the facility I worked longest in was a medical center, so I had to be familiar with many of those as well.

The title of my post is Three Letter Acronyms / Four Letter Acronyms for Facilities Information Management and Integrated Workplace Management Systems. 
So, yes, it IS nicer to be able to say that in far fewer letters. The only problem is, which letters to use?

Enough ranting and meme-sharing, though. I have collected a series of these acronyms for reference, which I come across often in my work. 
Please feel free to comment any others which you see or use regularly.

CAFM - computer aided facilities management
CMMS - computerized maintenance management system
IWMS - integrated workplace management system
FAM - Facilities Asset Management
FIM - Facilities Information Management
AM - Asset Management
CRE - Corporate Real Estate / Commercial Real Estate
EAM - Enterprise Asset Management
EIM - Enterprise Information Management

HRIS - Human Resources Information Systems
ERP - Enterprise Resource Planning
BAS - Building Automation Systems

DCIM - Data Center Infrastructure Management (datacenter & facilities; energy, equipment and space are efficient)
CAD - Computer Aided Design/Drafting
GIS - Geographic Information System
BIM - Building Information Modeling
IPD - Integrated Project Deliery
COBie - Construction Operations Building Information Exchange
IFC - Industry Foundation Classes (not Insulating Concrete Form, dyslexics of the world untie!)
BEP/PxP/BxP - BIM Execution Plan / Project Execution Plan / BIM Execution Plan
PIM - project information model
LoD - Level of Detail
NCS/NBIMS - National CAD Standard / National BIM Standard US
AEC - Architecture, Engineering and Construction
AEC/FM - AEC & Facilities Management
AECO - AEC & Operations

BOMA - Building Owners and Managers Association
IFMA - International Facilities Management Association

AIM - asset information management
CDE - common data environment
UDF - User Defined Field (~shudders delicately~)


A listing of my articles

So, I'm just back from a day with #AutoCAD Influencers in San Francisco. Everyone admired the JavaScript dress I chose for the event (sorry, Svaha doesn't have anything with AutoLisp on it, but, I do use JavaScript quite a bit in my current role, so I will take it).

Always a good time visiting with Autodesk, talking to people involved with the process of creating or optimizing features and marketing the software, as well as the other users and managers like myself.
I didn't even think about the fact that we were getting together on C.AD (aka Pi) Day. Thanks to Donnie for pointing that out.

I tweeted from the event as @MistresDorkness and @AUGIatAU as well as posting on Google+ and Facebook. (Those of you who are my FB friends, if you're interested in seeing complete photo documentation of the trip, please check out my 'Work Stuff' album there.)

Before heading out to sunny California, I had to turn in my article for my HotNews column. The only distinction being that it will be the last edition of my polls and surveys column, due to participation falloff, since the poll was moved from the homepage to a page under the survey's channel of the AUGI site. I certainly hope that everyone has enjoyed the insight into our membership which these quick polls have given us the past few years.

Be sure to keep an eye on your email for AUGI bulletins and social media postings regarding when the Salary Survey will run this summer.

If you'd like to see a listing of my articles, including the ones I wrote about polls and surveys for AUGI, please see my Additional Content page.




Career Advancement Goals - Writer
Do you 3D print in-house? - Writer
Hardware Review - Lenovo P700 Workstation (Engineering.com) - Author
Does the classroom prepare new employees? - Writer
AutoCAD 2016 tips in pictures - photographer
AUGI 14th Annual Salary Survey - Author and Data Analyst
In-house customization and programming - Writer
Salary Resources - Writer
Are you currently job searching? - Writer
Processes and Procedures Documentation - Writer
Essential 3rd party applications - Writer
How to Get Started in Social Media - Tipster
When do you upgrade your Autodesk software? - Writer
Do you have a side job? (gigonomics) - Writer
10 Years of Blogging - Writer
AutoCAD and LT: No Experience Required 2016 - Technical Editor
Most Frequently Used Command - Writer
A day in the life of a CAD user - Reality Star
2014 Surveys in Review - Writer
Setting Achievable Goals - Writer
AU2014 General Session - Reporter


Replacing a text string across a directory

Since I have been working with my company, I have learned about LOADS of great tools.
For example, Beyond Compare, when keeping files synced across multiple environments (like development and production).

Another great one is FileLocator Lite, because, you can't put a price on finding exactly the data you need as quickly as possible.

Today, I am just pleased as punch with Notepad++. In my tasks modifying ARCHIBUS, I work in this program almost constantly, and have been doing so for the past three years. Obviously, I was already a pretty big fan (see my previously published article "Notepad++ Formatting Tip"), but, today, my unnatural love for this program grew even greater.

I needed to change the value for a single attribute, but, across every place where it showed up in the system, in all three environments we're using.

Turns out that Notepad++ has a lovely entry in the Search menu called "Find in Files..."
I was able to locate the exact string I needed, dictate the replacement string, filter for only the files our team had modified, in only the applicable directories.

If there is any doubt about context, you can see in the search results the exact line where the search string is located.

I recently returned from yet another inspiring Autodesk University for #AU2016. If you're interested in catching up with the @MistresDorkness commentary, twitter is the place to go.