As a QAQC procedure, our office would like to ensure that all placed dimensions are referencing the core face of the associated walls. I couldn’t find a package node that would do something similar, so I started building a script to force the association through geometry intersections. The further I got into the process, the more complications I’m running into. Has anyone attempted something similar or could point me in a possible direction?
With the attached script, the “Walls.GetFaces” node from archilab returns the surfaces of the walls in a random order, and the “FamilyType.CompoundStrutureLayers” doesn’t return the applicable surfaces at all, so I wasn’t able to find a way to check that the intersecting layer is defined as a core boundary.
It is probably possible with the numerous References nodes of the Genius Loci package.
Thank you for the quick reply! I downloaded the package and tried the “Dimension Properties” and “Wall Layer References” nodes, and they definitely get me closer, but I don’t think I’m using them right. Is there another node or setup you would suggest?
*edited to show better screenshot
Maybe with the Reference Surface node. You could compare the surface of the dimension reference with the wall core exterior face.
Is that the “Element Surface References” node? I just tried that one but it only seems to return the overall surfaces, rather than the compound layer surfaces. I wasn’t able to find any other node that converts a “Autodesk.Revit.DB.Reference” element to a surface element. Is there some other way to compare two reference elements other than returning their surfaces?
I also found the “Wall CompoundStructureLayersLocation” node which also comes really close to working for the geometry intersection approach, but doesn’t show the lines in the correct positions. In the image, the blue are the lines returned from the node, and the black lines are the correct positions from the model.
I was also able to get the element Ids of the reference elements using python, but they all seem to be the same, regardless of which layer it’s pointing to.
There is indeed a Reference Surface custom node in the Reference node category of the package.
This is your best option in my opinion.
Ah okay. It doesn’t look like that node was in version 2020.4.4. I upgraded to 2022.4.19 and I see “Reference Surface” now. That node does work for returning the outside surfaces, but it returns null for interior surfaces.