Onion - new package

[edit: current node list is here : http://lubim.co/dynamo-nodes/]

Hi all!,

I have decided to put together some of my recent code pieces into a package. You can find it by the name ‘Onion’ in the package manager. As it is a 0.0.1 version I would love to here some comments from you:).
It is built for Dynamo 2.0.3
So far it contains modest eight nodes:

CurtainWall.VGridReferences and CurtainWall.UGridReferences - outputs references to gridlines of a curtain wall; extra ‘IncludeSides’ parameter allows you to get also references for sides/top/bottom of the wall

FamilyInstance.ReferenceByName - gives you a references to a named reference plane inside a family - eg. “Left”, “Center” etc.; can be useful for dimensioning

Grid.FindClosestIntersection - returns a closest grids intersection to a given point; outputs three lists grid A, grid B and an intersection point

Grid.Intersections - outputs intersection points for given grids; output is similar as above

Point.FindClosest - takes a point (A) and finds a closest point from another point list (B); outputs the closest point and it’s index in the list

Wall.Intersections (removed at 0.0.2 - replaced by Element.LinearIntersections) - returns intersection points of given walls, again outputs three lists - wallA, wallB and intersection point; extra bool parameter allows you to get duplicate intersections (if wall A intersects wall B then also wall B intersects wall A)

Wall.Split (removed at 0.0.2 - replaced by Element.Split) - splits a wall at a given point - like Revit’s slice tool; the point has to be located on the wall’s location curve - extra IgnoreZ parameter allows to take only X and Y coordinates into consideration (so you can use a point that is higher than wall’s base)

Hope it can be useful to somebody :slight_smile: Please let me know!



Cool! Thank you!

If i were to suggest something that is of a similar type to one of the above that is not currently out there.
(If not too hard?)

Can your “Wall.Split” Node be modified to split ducting?


It would be great if you could share a dynamo workflow with this wall.split node. @maciek.glowka

1 Like

Thanks for your comments guys!

@Fasher - I have never worked with MEP system in Revit, but I will take a look into it. Should be doable. Would a duct intersections also be handy? or maybe it already exists?

@karthi1015 - a basic scenario could look like that:

I have a model line extended to a wall centerline. Then the graph would look like that:

A more complex one, using another node Wall.Intersections:

It splits walls where they meet another walls (they have to be on the same level though). You can see here that only two walls got split (4 new walls in the output) - it is because the rest was intersected at their endpoints (touching by corners for instance).
The output of wall split node is either a pair of two walls (if the wall got split) or a null if the wall could not be split (split point not on the wall or exactly at the endpoint for example)

the .dyn files of the above:
wallSplit_1.dyn (7.5 KB) wallSplit_2.dyn (7.4 KB)


I’m unsure if duct intersect points are out there but i do know there is nothing to split a duct at a point on a MEP curve.

1 Like

Ok, so it turns out ducts and walls have some differences (like ducts can slope!).
But after some tweaking I have managed to make those two nodes more universal. They should in theory work for any elements that are based on a location curve (limited to a straight line).
The node names got changed to Element.LinearIntersections and Element.Split. They are uploaded in a 0.0.2 version of the package.

I have also added IgnoreZ option to Intersection node as well. If the ducts are sloped than it would not be handy propably to always have to aim a the exactly correct Z value.

What is interesting now is that you can split for instance ducts where they meet walls.

The Intersection node elements input is therefore split into two lists A and B. This allows you to be sure that you receive intersection points for the duct element (in this example) and not for the wall element.
It is important as when using the IgnoreZ option the final intersection point is projected onto a location curve of the A element from the intersecting pair. Walls location curve would be usually located much lower than the one of the duct.

If you want to intersect walls with walls you can just input the same list twice:

Also the split node can now split the same element in multiple points at one go. 0.0.1 version might not do so.


Hi again,

I have added a new node that allows to join geometry of elements. It takes two lists and tries to join each element from first list with each element from the second. It is written in c# for performance - I have tested it with quite large project and it is working well I think. As it might take some time to process all the geometry it displays a progress bar window.
I am afraid there might be an issue with automatic loading of the DLL together with the rest of the package - not sure how to handle it properly. If somebody has knowledge how to fix it - please let me know! :slight_smile:

All the nodes are described here http://lubim.co/dynamo-nodes/