@Alban_de_Chasteigner, I know I keep coming back with more difficult questions!
I’ve finally found some time to start implementing the node that gets edge references to the script that dimensions walls. I was able to make dimensions for every vertical and horizontal edge. I guess I just face one issue. I have no way of sorting out which edges are for reveals and which ones are for openings. In the past, I would pull the normals from the surfaces that created the edges and check if they had a 45 degree angle with a specific plane.
If I had a python script that could pull every surface and edge reference with a similar list structure shown above (I don’t need the vectors), I could do all of the sorting on my own. In the end I would need four lists: one for the surfaces, the next for the surface references, one for edges, and the last for the edge references. Otherwise I have pull the surfaces and edges three times over in order to match the correct edges with the reveals.
Once with the surface references for the openings and sides (a lot of times, chamfers steal those edges and place them on the hollow portion of the wall),
Twice with the edges references for the reveals,
and three times to get the other faces that do not align with an orthogonal plane in order to match them with the edges references. I think I could pull that off with some intersecting, but the longest part of the whole routine includes getting geometry and it would shorten the run time significantly if that operation only had to be performed just once.
It seems like the awesome python nodes for getting surface and edge references are already getting the lists that I need; they just happen to be culling the output before I can get to it. So I figured I should ask in case this was not a difficult thing to do. What do you think?
The last trick would be to pull the vertex references for the start and end points of those edges, but I understand if that is a bit of a tall order! Those vertexes would allow me to dimension to literally anything, including slopes and diagonal surfaces.