Table of Contents
Amazing! DynamoMEP samples
Information about DynamoMEP samples
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”:
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.
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.
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).
These controls mirror the family with their midplane serving as a mirror reference.
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.
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.
The full definition can be found here.
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.
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:
Obviously, this definition could be adapted for any type of face-based family.
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.
I then use the same list to create an area for each floor.
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:
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