Rebar and its host elements

#1

Hello to you all. This issue is disturbing me for a while. Is there or node or a way to connect rebars and its host element?

For example, if you have reinforced wall, that your node or script can give you all rebars in that wall.

Of course my goal would be to have that information for every structural element in project.

Tnx!!

0 Likes

#2

@BIM_Croatia,

Please show some of your effort. Thanks.

You can start with this:

  1. Select the elements.
  2. Collect the Structural Rebars.
  3. Iterate trough the selected elements and get the Id.
  4. Iterate trough the Structural Rebars and get the Host Id:
    http://www.revitapidocs.com/2017/fe7a895a-5ea3-64ba-a997-dead0c206d5a.htm
  5. Compare the matching ids and get the corresponding element.

Regards,

0 Likes

#3

Thanks a lot.
As I am a noob in Dynamo i was not aware that Get Host ID element exists.
As soon as i make something i will upload.

Thank a lot again!!

0 Likes

#4

@BIM_Croatia, take a look at BIM4Struc.Rebar package by @Dieter_Vermeulen (https://revitbeyondbim.wordpress.com/) . This package has a special node for quering the host element (Rebar.GetHost), and other pretty handy nodes for reinforcement.

0 Likes

#5

Hello, finally I’ve managed to find some time for Dynamo. My idea is to calculate amount of rebar per element (kg/m3).

What is my Problem is that I do not know how to sort list by Group key so that indices match ones in list of unique items.
Or better to say, how to discover which rebars are in which element.

Do you guys have any ideas?

0 Likes

#6

@BIM_Croatia Why not get the parmameter “Estimated Reinforcement Volume” with Element.GetParameterValueByName and multiply it with the density of steel? Maybe use the node from the MEPover package to ensure you get the correct units. You could set that up in a schedule in Revit without using Dynamo as well.

0 Likes

#7

:man_facepalming:

OK. I can do that and simplify upper part of my script. :slight_smile:

I’ve (read Dynamo) actually managed to connect elements and host through list. But at the Moment i have another Problem.
How to get host from Structural Fabric Reinforcement Category, or even Better Structural Fabric Area???

0 Likes

#8

UPDATE:
I’ve managed to do it by creating, and then intersecting geometry.

Still not finished, but closer to the Goal.

0 Likes

#9

Hello again, here is a python script for you:

image

#Einar Raknes 2017
import clr

# Import List ( ICollection(ElementId) = List[ElementId]() )
clr.AddReference('System')
from System.Collections.Generic import List

# Import Revit API
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

# Import ToDSType(bool) extension method
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

# Import DocumentManager and TransactionManager
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument


# Input
element = UnwrapElement(IN[0])

OUT = doc.GetElement(element.HostId)
0 Likes

#10

@Einar_Raknes I also wanted to calculate rebar kg/m3 per element. I was wondering if the “Estimated Reinforcement Volume” is accurate when rebar extends beyond the limits of the host? (as the value is given per rebar host)

0 Likes