Three days later and I've made it work!
I currently :
- Get the exterior face reference with HostObjectUtils,
- Get the actual face using GetGeometryObjectFromReference(),
- Extract the geometry from the wall using an Options object that gathers references,
- Compare all the faces on the Solid of the wall to the exterior face I got in step 2 to get the exterior face with references,
- Get all the edges of the face with
- Evaluate(0.5) all the edges of that face to get the midpoint and therefore a general idea of where that edge is in the world,
- Ordering the edges in a list such that the edge with the midpoint with the lowest Z value is first and the highest Z value is last,
- Subtracting the lowest Z (First()) from the highest Z (Last()) to get the "height" of the wall,
- Add a third of the height to the lowest Z to get a "maximum height" in worldspace,
- Remove any edges from the list who's midpoint's (Evaluate(0.5)) Z is higher than the maximum height.
- Get the first end Reference of the First() edge in the list and the last end Reference of the Last() edge of the list.
- Dimension between those References.