Find bottom of equipment elevation for tags

I am new to Dynamo and haven’t been able to find a solution to what I’m trying to do. I have some mechanical equipment that needs to have a tag in Revit that shows the bottom elevation of the equipment. I would like Dynamo to find the bottom elevation of all mechanical equipment with a specific name and report it to a Shared Parameter so I can use it in a tag. I’ve tried several approaches without any success. I believe my latest path is one that I should follow. I am able to get a list of all the equipment I need to extract info from but I can’t seem to go further than that. I believe I need to break down each units surface and select it in Dynamo and get the bottom elevation from that. Here is what I have so far. Any suggestions?

Note that I am trying to explode the geometry but getting errors, I’m sure it’s simple but don’t have the experience to figure it out. Thanks.

Why not use the built in elevation tag in revit?

The problem with all elevation tags I’ve seen for equipment is that it’s using the offset distance. The offset distance uses the family “Ref Level” as a reference for this distance. This means depending on the family creator, it may or may not be accurate. For instance the following bottom piece of this equipment was not placed on the Ref Level so the offset distance and associated Revit tag will actually give me the center elevation of this particular model. Hence I need to find a way to get the elevation of the bottom of all equipment, regardless of how it was modeled. Hope that makes sense.

Another side note, I’m aware that the Revit spot elevation will get me what I need, but we have a tier tag that we would like to add the elevation to. I wish I could harvest Revit for this elevation but they’ve made it difficult.

Ah! Now i get the issue.

The Geometry.Explode is attempting to explode a bunch of null parameter values. It needs design script geometry.

Instead of that method you may be better suited to use a bounding box workflow which is much faster. Set an Element.BoundingBox node off of the All Elements of Category node, and wire that into a BoundingBoxMin node (my spellings may be off so try a few combinations), and then pull the Z value from that point to get the “lowest height” for each piece of equipment. Note that this will be relative to Revit’s hard coded origin point, which may or may not relate to anything in your job, but it should be an arithmetic exercise to get the height above level or above the project base point and then write that to the desired custom parameter.

That works great! Thinking further about this method I don’t think it would work if the equipment had a service clearance that happened to stretch below the equipment. This should work for 95% of our equipment though. In the simple test project I ran this in I didn’t need to do any arithmetic exercises to get the correct height, but I could see that happening in actual projects. Thanks.

Here’s what it ended up looking like:

1 Like

Hmmm… service clearance could create some issues but you could also run a check based on if the service clearance subcategory is in the family, and then split the list of elements, offsetting the z min by the distance given by the parameter value for service clearance on the side of the graph which has the subcategory present. A little more involved, and may be better suited to just read the clearance below parameter instead of dealing with the subcategories, but it should be doable either way.

What about this Jacob…I’m going to take a different approach now. I know I can select a surface of a family. Can I make it so I select the surface of a family where I want the elevation to read from and have Dynamo then go through and select the same surface on each piece of equipment and input the elevation for each one? This would require a little more work to point out each family type but at least I know I’m choosing the right surface to measure from.

Hi, it’s a great Idea.
But, when I try, it give me the different output.
The equipment’s are placed at L5.
How to get the value from the host level?

Is it possible to get the value of Offset parameter and write in to another custom instant parameter?
If we can do that my problem solved. I can use formula in the tag to get the correct bottom of the equipment.
Please advise

any update on this dynamo path?

It’s a pretty specific workflow with many branches based on your specific file setup. Start a new topic or provide what you have here so we can help steer this along.

1 Like

I haven’t worked on it since my last post. I’ve been super busy and haven’t had time to really sit down and delve into it so I don’t have a solution for you either @aortiz93VQQ

Has anyone made any headway on this? i have a similar need to tag some FCU’s with their respective bottom heights (equivalent to the exact offset height from TOS) and was wondering if there are any completed working dynamo scripts out there that could help me get mine working. any input would be appreciated!