Today I am writing about a fun topic (for me :],) as my office primarily focuses on facilitating the food production facilities and warehouses of New York and New Jersey, we are often tasked with elaborating and validating various dry/chilled storage racking solutions that are primary program of a building design. Sometimes clients may need this vital function of their building visualized for presenting to stakeholders or to just envision the design in a useful way.
Whatever the case may be, being brutally honest in my opinion showing empty pallet racking is boring. As such, I will elaborate my method of spicing up visualizations up with some clever trickery and dynamo magic!
Drafting the pallets is a daunting and annoying proposition but using the power of Revit and a custom pallet rack model we can easily do this. As a matter of due diligence, we will usually do so anyway to at the very least, validate layouts generated by racking consultants. The below Revit family has a couple tricks up it's sleeve, it is not only adjustable but has various nested families within it that help fill out the pallet positions nicely, and a type catalogue allows storage and loading of type configurations à la carte.
Here is an overview diagram of how the nesting strategy within the family works:
Using a dynamic, adjustable family along with some type catalogues and consultant documentation to model our storage layout needs properly and ensure that counts, clearances and other implications are met. This task occurs naturally and leveraging the setup family provides us within the BIM (building information model) that bears fruit in providing us point location information (from the invisible box) to map actual pallet models within the project to.
When the foundation of our task, family & design layout is executed, we can begin to work on filling out the empty pallet positions with "Entourage." I will be calling the pallets on the racks this because it is the category in Revit reserved for RPC content. Traditionally entourage is used to help sell drawings & images generated that they are lively such as silhouettes drawn in sections or renderings that collage in people showing them moving around the floors of the design.
Find a comprehensive image of the dynamo script of making it work, which I will be braking into parts below:
This portion of the script establishes the families in play. Querying the model space for three things specifically. First the nested shared Pallet Location family which is invisible by default, the pallet that will be the entourage options placed on those locations, and lastly the spacing limiters within the Rack family to ensure that the pallets all fit first try without fussing over how big the pallets can be. Ostensibly the way it has been built leverages dynamo's ability to extract the points from model elements that are contextually relevant to placing pallet families in position in correct positions.
I also extracted the options for pallet configurations from the Family types
The options are as follows:
Storage Half
Storage Full
No Pallet
Goods Half
Goods Full
With these three nodes I am able to determine all of the locations of the Shared Nested family named "Pallet Location" that yields a list of points within the entire building using this Pallet Racking family.
This example is one rack with 6 levels and four pallets that fit on each level, giving us a list of twenty-four pallet positions. But it doesn't matter how many pallet racks there are and the configuration is driven appropriately to any layout we may need based on the design.
The previous nodes determined the specific locations and the types. We will use this information to build a randomized list of Types 0-5 (Left Side) and map them to locations (Right Side,) to place those types at the locations found in the previous section.
The important thing to note is that I'm counting the list and using the number of locations to drive my randomized list of pallet types, and then arranging that data to have enough types to saturate all of the positions that pallets can be placed at.
Now that all of our data is in place and structured appropriately I will be piping the points and family types into the FamilyInstance.ByPoint node to actually place each family in the model.
The Element Set parameter will retrieve the configuration's spacing scheme that drives determining how many pallets can fit side by side on each level and applies it to the pallets so they do not ever overlap each other should they be too large.
This data lives within the racking model inherently and the Pallets just refer to it to make sure they are proper sized.
This is only one method of dealing with a task like this but I can think of a few more off the top of my head and the one showcased here is my favorite. Hopefully it is something that can be useful to you if you want to try it or want to hear more about the methodology and thought that went into developing things like this, feel free to shoot ideas or comments about it via email.
Thanks for reading see you next time :)
~Max