Hi!
I’m creating a dynamo script to calculate formwork area for a building.
I plan to have the formwork contact areas painted with a specific material and use the schedule to export the quantities. - I was able to achieve this through this script (combined with the node vectors to avoid painting the top surface of the slabs, for example): Paint Material Surface - #14 by MartinSpence
However, I’m not sure what I could do to avoid applying paint to element faces that are in contact with each other. For example, the slab on the photo was modelled as two slabs, but in reality, it will be poured together, so I don’t need to have formwork between the two slabs (the red line). Is there any node to get the surface curve and check if it’s within any other surfaces?
I’m guessing you’re selecting the elements youw ant to calculate the formwork for, then using a ElementSurfaces node to return all surfaces of the element, or Element.Solids followed by a Geometry.Explode node?
Instead try Element.Solids > List.Flatten > Solid.ByUnion > Geometry.Explode > List.FilterByBoolMask to remove the top surfaces.
You might want to be careful with the element selection - i.e. you might want to include the top face of the recess in the slab, or you might want to work though the elements in a manual selection method.
From there you have your surfaces - tying them back to the elements is hard, but not impossible. Build a PolySurface from the surfaces, and then test the center point of each surface you were previously painting for intersection with the PolySurface; if there is an intersection, you need formwork.
Ok, let me see if I got your idea:
1- Transform my elements into solids
2- Join them to remove any “surface” in common between two elements
3- Compare the surfaces of my original revit elements x surfaces of combined solid
4- Paint all surfaces that are matching
Which node would you use for step 3?
100% agreed that some areas would be left out, but we will run a visual check on the model anyways, we can manually color it.