I am new to Dynamo and wondered if there was a way to export pipe penetration into a schedule using Dynamo.
Yes there is. In fact there are a few ways to do this.
Element.Location and Geometry.DoesIntersect or Geometry.Intersect nodes are one possible method, though this can take a long time, and the methods for doing so will need to vary based on your setup.
How can I begin to writing this program using dynamo?
As I stated above: It depends on how your model is set up. Assuming you have a single model? Two models? Ten models? Using real pipes? How are your fire ratings stored? Do the walls intersect with the pipes cleanly at oerpendiculr angles? Are the intersections ugly oddball angles which don’t work well? Do you need geometry of the intersection? Or location points? Or do you just want to know that there is an intersection to worry about? How big is the dataset? 10 pipes? 100? 10000000? Same applies to walls…
You need to post something here to get good help.
That said, I can weigh in with a possible conceptual workflow which you can try to elaborate on. It may not be the best method - in fact of the ways I can think of this is the least likely to apply to my work, but I believe that it could work for more cases than not, so I’m posting this option instead of one of the others. Hopefully you can think on it and decide if it’s right for you, and come back with better direction.
My sketch steps:
An all elements of category for the walls category. Filter that list to only include the rated walls. Better yet filter and then group and sort by fire rating. Watch the sorted groups of walls. Get the geometry for each rated wall and set up a watch node here as well for use later in the graph.
An all elements of category node for pipes. Get the location for each (should be a 3D line) and set up a watch node here too.
A Geometry.Intersects node to test each wall geometry against each pipe geometry. If a pipe and a wall intersect, get the location of the wall and place a simple placeholder family at the intersection point. Use the rating of the group containing the wall to assign an instance parameter for the required penetration value.
If those worm you will be able to set up a schedule in Revit showing just these families, including what the required ratings are. This will allow you to quickly review each, and decide how to treat them individually, or in mass, or some combination of the two.