Dimension from Element to Surface

Hey, im trying to create automatic dimensions from the surface area of a Wall to a duct or pipe centerline. I managed to filter out the walls and ducts i want to dimension, but with Dimension.ByElements i can only dimension the pipe centerline to the wall centerline and not actually the wall surface. I found some posts on how to automatically dimension walls themselfs, so i know how to get the vertical surfaces of those too, but im struggling to find how to put the dimensions between those and the pipe/duct centerlines.
Any ideas? I’m pretty sure there are some easy ways to do it with a Python script, but im not really fit in programing so pythonless solution would be optimal! :open_mouth:

Hi @justloosit,

I recommend the Genius Loci package which has many nodes for dimensioning (in the Dimension and Reference sections).
For example, the Compound Surfaces References node.


Thanks for the quick response, i do have that node and getting the surfaces of the wall isnt my problem. The problem is getting the dimension between those surfaces to a centerline. I tryed using Dimension ByReferences too, but i cant seem to get it to work.

Hi Vitali,

Here is a quick example :

You need at least 2 references to create a dimension and you must indicate where the dimension must be. (line input)
Result :

Of course, you need to replace the Select Model Element nodes with SelectByCategoryAndView nodes or any other node you need to filter the pipes and walls.

Dimension pipe and wall.dyn (21.1 KB)

Thanks that seems to be what im looking for so far!

@Alban_de_Chasteigner Sorry one more question, do you know a way to get the surface of a rectangular duct as a reference in dynamo, the same way the genius loci note, did for the wall?

Yes it is possible.
I just need to find a smart way to define which reference is the upper surface or the lower surface of the duct. If you are strong in geometry, ideas are welcome.

There is a Node from Clockwork, “Surface.FilterbyOrientation” i think that one would already do the trick, i just need to find a way to get the surfaces in the first place.

Logically it does not work, moreover your duct can have a slope.

Im just looking for the surface of rectangular ducts, since for round once i will be using the centerline as reference, so 4 of those surfaces should always be vertical. Your script is actually what im looking for, but for some reason i cant turn the surfaces into references.
Im using the FaceReference.FromDynamoSurface node from CW but i gett Null values for every index for some reason. Any idea?

And i have to figure out a way to only get the actual sides of the ducts and not the vertical surfaces that are connected to surfaces of other ducts/bows etc.

Can you test this new node (Duct Surfaces References) ?

Dimension duct and wall.dyn (24.4 KB)

Whoa that looks like exactly what i need!! what version of genius loci are you using, im missing the duct surface references node with my current one.

Look at your private messages.
I sent you the custom node.