DynamoMEP samples

Amazing! DynamoMEP samples

Information about DynamoMEP samples

Phil Puccio

I released a new version of my DynamoMEP dynamo package last week. To help you with the new functionality, I’ve created a few examples that use these nodes.

Get the opening side of a door

Under the new nodes, the FamilyInstance nodes allow the use of family references. These references give you access to reference levels that are included in the family. In this example, I’ll show you how to use these references to determine whether a door opens inside or outside the room.

For all door families, I make sure that there is a reference plane “front” on the opening side. Such a reference level usually already exists in the OOTB Revit families, I will change its name and type to “Front”:

The front level in the door family

In the model, I call up all the rooms and use the DynanoMEP “Room.Doors” node to get all the doors that are assigned to a specific room. Then I use the “FamilyInstance.GetReferencesPlanesByType” to get the “Front” level for each door instance.

With “CoordinateSystem.ByPlane” I get a coordinate system aligned with the door. This coordinate system allows me to create a point on the opening side of the door.

The coordinate system of the front plane

To find out in which room the door opens, we simply find out whether the point is in the room or not. I’m using the Revit Node Room.IsInsideRoom. At the end we get a list of Boolean values ​​for each room, which indicates whether the corresponding door in the room is opened or not.

The full definition

This simple example can be adapted to any family as long as it includes named reference planes.

The full definition can be found here.


A word about the mirrored family instance and reference level

Each family instance can have up to two flip controls, a horizontal (the “hand” orientation) and a vertical (the “face” orientation).

Two flip controls

These controls mirror the family with their midplane serving as a mirror reference.

Mirror family instance

If your reference plane is aligned with the hand or gaze direction, mirroring the family will not change the orientation of that plane. In all other cases, the plane is mirrored like the rest of the family’s geometry.

Mirror family instance


Create area boundaries from a DWG

In France, the legal definition of building area (“Surface de Plancher”) differs slightly from the area calculated by Revit rooms. In this area, for example, we have to include the floor plans of interior walls and pillars. The Revit room area is sufficient during the development of the project. Before submitting the building permit, however, a quantity surveyor must measure a more precise area. These areas are measured with polylines in AutoCAD.

Since I wanted to get these polylines in Revit, I created special nodes to create space, room or area boundaries in Dynamo.

I import the DWG file with the polylines into Revit and create an area plan “Area – Level 0” to draw my area boundaries in it. The definition is then quite simple, I use the “CAD.CurvesFromCADLayers” node from BimorphNodes to get the curve from the DWG. I manually select the area plan view and use «AreaBoundary.ByCurveAndView» to create the area boundaries.

Area limits from CAD

The full definition can be found here.

The created boundaries

Place lighting fixtures along a grid in a room

DynamoMEP contains a node for generating a grid of points in a room. These points can be used to create regularly spaced elements in a room. In this example we will use this node to place lighting fixtures in a room.

To get the corresponding points on the ceiling, we use the “RayBounce.ByOriginDirection” node. This node creates a “ray” and returns the intersection point and the intersecting elements.

The RayBounce node

We then use these points and elements to get the bottom of the ceiling and place our instance of the face-based pendant light family:

The resulting pendant lights

Obviously, this definition could be adapted for any type of face-based family.

The resulting pendant lights

The full definition can be found here.

Create areas from floors

The last example aims to answer a question from Tom, who wanted to create surfaces based on a ceiling profile.

To do this, I first manually create an area plan for each level. I extract their surfaces from a selection of plates and find the top surface using the Z coordinate of the surface normal vector. With another “Surface.PointAtParameter” I find the height of each plate and use this value to group and sort plates according to their height.

In the end, I have a group of slab faces for each level. I create the corresponding list of the area plan views manually in the same order. I extract the boundary curves of the grouped areas and use them with my list of area plans to create a series of area boundaries on each area view plan.

The resulting areas

I then use the same list to create an area for each floor.

The definition for creating area boundaries from slabs

The full definition can be found here.

Since the boundaries are linked to the slab geometry, they are updated every time the geometry is updated, like when I create this star-shaped manhole through all the planes:

The updated areas

Many workflows can use DynamoMEP. I hope these few examples will help you get started.

Breaking Story – DynamoMEP samples

The Latest News on DynamoMEP samples

Original Source: https://www.bim42.com/2020/08/dynamomep-samples
Category – BIM

© 2021 welcometoabode.com - WordPress Theme by WPEnjoy