Determine footing length parallel to wall

I was wondering if there was a way to determine what is the surface(s) of a wall footing element parallel to a wall element? I know clockwork has some nice tool that I have been able to use but not close enough. I have noticed that dynamo will query the information from Revit differently if the wall is drawn left to right vs right to left and if it is rotated from north. Any insight is welcome. This maybe bases on the local coordinates of the wall elements but I don’t know.

@Mike_Martin Please provide a small file with a wall and footing to help explain your issue
Examples of your attempts and screenshots would also help.

Footing Test.rvt (2.2 MB)
Foundation Edge Length.pdf (36.9 KB)

I am trying to get the orange and blue line lengths.

This is probably not exactly what you wanted, but hope it gives you some inspiration:

Thanks for the inspiration. I was pretty close with the general calling of geometric information. The real struggle has been to make sure the code always calls the sides parallel to the wall. So that is where I was wondering if the foundation elements had a local coordinate system that I could filter by. So, the attached image shows a condition where I would like to only call the 15’ side length and drop the 3 other edges. Also, the length parallel to the wall may be less then the width of the footing. That would through a wrench in the list.takeitems approach.

Ok, here is a possible workflow for you:

  • Get the wall associated with the foundation
  • Get the location line of the wall
  • Filter the lines parallell to the location line

For the two first points you need python script, here is a suggestion: (update: a tested version that works)

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

clr.AddReference('System')
from System.Collections.Generic import List

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

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

doc = DocumentManager.Instance.CurrentDBDocument

#Preparing input from dynamo to revit

if isinstance(IN[0], list):
	elements = UnwrapElement(IN[0])
else:
	elements = [UnwrapElement(IN[0])]

OUT = []
for e in elements:
	OUT.append(doc.GetElement(e.WallId).Location.Curve.ToProtoType())

Thanks for the idea. I will have to test this out now.