Revit terrain and family one-key alignment method based on Dynamo

By automatically aligning family models and terrain in Revit using the Dynamo program, the problem of not being able to align them in one go in existing technologies is solved, and efficient alignment of family models on terrain is achieved.

CN122020790APending Publication Date: 2026-05-12CHINA CONSTR EIGHTH ENG DIV CORP LTD ZHEJIANG CONSTR CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
CHINA CONSTR EIGHTH ENG DIV CORP LTD ZHEJIANG CONSTR CO LTD
Filing Date
2026-01-27
Publication Date
2026-05-12

AI Technical Summary

Technical Problem

In Revit software, it is not possible to align a large number of family models with the undulating terrain at once, requiring manual adjustment, which leads to inefficiency.

Method used

The primitive positions of the family model are obtained through the Dynamo program, the terrain is converted into a mesh, index points and triangular face points are obtained, and the alignment of the family model with the terrain is achieved by using Dynamo's node operations, including face intersection operations and position adjustment, and the offset of the family model on the terrain surface is controlled.

Benefits of technology

It enables one-click alignment of family models with complex terrain, avoiding manual adjustments, improving operational efficiency, and simplifying the alignment process of family models on terrain.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122020790A_ABST
    Figure CN122020790A_ABST
Patent Text Reader

Abstract

The invention discloses a one-key alignment method for a revit terrain and a family based on Dynamo, relates to the technical field of constructional engineering design, realizes one-key alignment of a model of any family and a complex and rugged terrain in the revit by running a Dynamo program, solves the problem that a native Revit cannot perform one-key alignment on the rugged terrain in batches, and improves the accuracy of the one-key alignment. And the up-down offset distance of the family model on the terrain surface can be controlled through the distance data input in the Nuber node, a large number of family models do not need to be manually adjusted and aligned one by one, and the operation is convenient and efficient.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention relates to the field of architectural engineering design technology, and in particular to a one-click alignment method for Revit terrain and families based on Dynamo. Background Technology

[0002] When designing architectural structures using Revit software, it is often necessary to place family models on complex and uneven terrain. Due to the varying terrain, the elevation of each family model needs to be adjusted individually. For example, in a landscape model, a large number of tree families (i.e., family models) need to be placed on uneven terrain, and each of these tree families needs to be adjusted to align with the terrain.

[0003] Currently, Revit cannot align a large number of family models with uneven terrain at once. Each family model needs to be manually aligned and adjusted individually, which is time-consuming and inefficient. Therefore, a one-click alignment method for Revit terrain and families based on Dynamo is needed to solve the problem that Revit cannot align a large number of family models with undulating terrain at once. Summary of the Invention

[0004] The purpose of this invention is to provide a one-click alignment method for Revit terrain and families based on Dynamo, which can solve the problem in the prior art that Revit cannot align a large number of family models with undulating terrain at one time.

[0005] This invention is implemented as follows:

[0006] A one-click alignment method for Revit terrain and families based on Dynamo includes the following steps:

[0007] Step 1: Create a terrain in Revit and place several family models on top of the terrain. Open Dynamo in the Revit management interface.

[0008] Step 2: Obtain the primitive positions of all family models placed in Step 1 using Dynamo;

[0009] Step 3: Convert the terrain created in Step 1 into a mesh and obtain all the index points in the mesh;

[0010] Step 4: Connect the Dynamo Mesh.Facelndices node to the group of index points;

[0011] Step 5: Obtain the points of each triangle face in the mesh using Dynamo;

[0012] Step 6: Connect the three List.GetltemAtlndex nodes of Dynamo to the List Create node, and combine all the points of the triangle into a list. Connect the List Create node to the List.Transpose node, and combine the three points in each triangle into a group.

[0013] Step 7: Connect the Dynamo List Create node to the Surface.ByPerimeterPoints node for calculation, connect the Surface.ByPerimeterPoints node to the PolySurface.ByoinedSurfaces node, and combine all the combinations from Step 6 into a single surface;

[0014] Step 8: Connect the Element.GetLocation node of Dynamo to the Geometry.Translate node, and add points downwards to the family model;

[0015] Step 9: Connect the Vector.ZAxis node of Dynamo to the Vector.Reverse node, and connect the Vector.ZAxis node to the Geometry.Translate node;

[0016] Step 10: Input the distance of the family model downwards into the Number node of Dynamo, and connect the Vector.ZAxis node and the Number node to the Geometry.Translate node;

[0017] Step 11: Connect the Dynamo Geometry.Translate node to the Line.ByStartPointEndPoint node, and also connect the Dynamo Element.GetLocation node to the Line.ByStartPointEndPoint node;

[0018] Step 12: Connect the Line.ByStartPointEndPoint node of Dynamo to the Geometry.Intersect node, and connect the PolySurface.ByoinedSurfaces node to the Geometry.Intersect node to obtain the part where each line of the mesh intersects with the terrain;

[0019] Step 13: Connect the Geometry.Intersect node of Dynamo to the List.Flatten node and flatten it. Connect the List.Flatten node to the Line.ByStartPointEndPoint node. Also connect the Element.GetLocation node from Step 11 to the Line.ByStartPointEndPoint node.

[0020] Step 14: Connect the Line.ByStartPointEndPoint node of Dynamo to the Curve.Length node to obtain the length of each family model to the terrain;

[0021] Step 15: Write the "Elevation of the elevation height" property of the family model into the String node of Dynamo; use the Number node and Code Block node to control the offset of the family model on the line and vertically, enter "-a+b" in the Code Block node of Dynamo, and connect both the Curve.Length node and the Number node of Dynamo to the Code Block node.

[0022] Step 16: Connect the Select Model Elements node of Dynamo to the ElementSetParameterByName node, the Code Block node to the ElementSetParameterByName node, and the String node to the ElementSetParameterByName node; control the offset of the family model on the terrain surface using the distance data in the Number node.

[0023] Step 2 includes the following sub-steps:

[0024] Step 21: Use Dynamo's Select Model Elements node to retrieve all the family models placed in Step 1;

[0025] Step 22: Use Dynamo's Element.GetLocation node to obtain the primitive positions of the family model obtained in Step 21.

[0026] Step 3 includes the following sub-steps:

[0027] Step 31: Use Dynamo's Select Model Elements node to select the terrain created in Step 1;

[0028] Step 32: Connect the Select Model Elements node of Dynamo to the Topography.Mesh node to convert the terrain into a mesh that can perform point and line intersection calculations. Each mesh cell of this mesh is a triangular face composed of three index points.

[0029] Step 33: Connect the Topography.Mesh node of Dynamo to the Mesh.Facelndices node, extract the groups of index points, and form three groups with the three index points of all mesh cells, denoted as IndexGroup.A, IndexGroup.B, and IndexGroup.C respectively;

[0030] Step 34: Connect the Topography.Mesh node to the Mesh.VertexPositions node to obtain all index points.

[0031] Step 5 includes the following sub-steps:

[0032] Step 51: Create three List.GetltemAtlndex nodes in Dynamo, and connect the Mesh.VertexPositions node to each of the three List.GetltemAtlndex nodes;

[0033] Step 52: Connect the IndexGroup.A, IndexGroup.B, and IndexGroup.C nodes to the three List.GetltemAtlndex nodes respectively to obtain the points that make up each triangle face.

[0034] In step 10, each distance data input through the Number node does not exceed the distance between the corresponding family model and the terrain.

[0035] Compared with the prior art, the present invention has the following advantages:

[0036] This invention enables one-click alignment of arbitrary family models with complex, uneven terrain in Revit by running the Dynamo program. It solves the problem that native Revit cannot perform batch one-click alignment of uneven terrain. Furthermore, the vertical offset distance of the family model on the terrain surface can be controlled by the distance data input in the Number node, eliminating the need to manually adjust the alignment of a large number of family models one by one. The operation is convenient and efficient. Attached Figure Description

[0037] Figure 1 This is a diagram of the operation interface for step 1 of the one-click alignment method for terrain and families in Revit based on Dynamo in this invention;

[0038] Figure 2 This is a diagram of the operation interface in step 2 of the one-click alignment method for terrain and families in Revit based on Dynamo in this invention;

[0039] Figure 3 This is an operation interface diagram of steps 31 and 32 in the one-click alignment method of terrain and families in Revit based on Dynamo in this invention;

[0040] Figure 4 This is an operation interface diagram of steps 33 and 34 in the one-click alignment method of terrain and families in Revit based on Dynamo in this invention;

[0041] Figure 5 This is a diagram of the operation interface in step 4 of the one-click alignment method for terrain and families in Revit based on Dynamo in this invention;

[0042] Figure 6 This is a diagram of the operation interface in step 5 of the one-click alignment method for terrain and families in Revit based on Dynamo in this invention;

[0043] Figure 7 This is a diagram of the operation interface for step 6 in the one-click alignment method of terrain and families in Revit based on Dynamo in this invention;

[0044] Figure 8-1 and Figure 8-2 This is a diagram of the operation interface in step 7 of the one-click alignment method for terrain and families in Revit based on Dynamo in this invention;

[0045] Figure 9 This is a diagram of the operation interface in step 8 of the one-click alignment method for terrain and families in Revit based on Dynamo in this invention;

[0046] Figure 10 This is a diagram of the operation interface for step 9 in the one-click alignment method of terrain and families in Revit based on Dynamo in this invention;

[0047] Figure 11 This is a diagram of the operation interface for step 10 in the one-click alignment method of terrain and families in Revit based on Dynamo in this invention;

[0048] Figure 12 This is a diagram of the operation interface for step 11 of the one-click alignment method for terrain and families in Revit based on Dynamo in this invention;

[0049] Figure 13 This is a diagram of the operation interface for step 12 in the one-click alignment method of terrain and families in Revit based on Dynamo in this invention;

[0050] Figure 14-1 and Figure 14-2 This is a diagram of the operation interface for step 13 in the one-click alignment method of terrain and families in Revit based on Dynamo in this invention;

[0051] Figure 15 This is a diagram of the operation interface for step 14 of the one-click alignment method for terrain and families in Revit based on Dynamo in this invention;

[0052] Figure 16 and Figure 17 This is a diagram of the operation interface in step 15 of the one-click alignment method for terrain and families in Revit based on Dynamo in this invention;

[0053] Figure 18 This is a diagram of the operation interface for step 16 in the one-click alignment method of terrain and families in Revit based on Dynamo in this invention. Detailed Implementation

[0054] The present invention will be further described below with reference to the accompanying drawings and specific embodiments.

[0055] A one-click alignment method for terrain and families in Revit based on Dynamo includes the following steps:

[0056] Please see the appendix Figure 1 Step 1: Create a terrain in Revit (e.g., an undulating terrain) and place several family models on top of the terrain (e.g., a large number of tree families and construction vehicle families). Open Dynamo in the Revit management interface.

[0057] Please see the appendix Figure 2 Step 2: Obtain the primitive positions of all family models placed in Step 1 using Dynamo.

[0058] Step 2 includes the following sub-steps:

[0059] Step 21: Use Dynamo's Select Model Elements node to retrieve all the family models placed in Step 1.

[0060] Step 22: Use Dynamo's Element.GetLocation node to obtain the primitive positions of the family model obtained in Step 21.

[0061] Step 3: Convert the terrain created in Step 1 into a mesh and obtain all the index points in the mesh.

[0062] Please see the appendix Figure 3 and attached Figure 4 Step 3 includes the following sub-steps:

[0063] Step 31: Use Dynamo's Select Model Elements node to select the terrain created in Step 1.

[0064] Step 32: Connect the Select Model Elements node of Dynamo to the Topography.Mesh node to convert the terrain into a mesh that can perform point and line intersection calculations. Each mesh cell of this mesh is a triangular face composed of three index points.

[0065] Step 33: Connect the Topography.Mesh node of Dynamo to the Mesh.Facelndices node, extract the groups of index points, and form three groups with the three index points of all mesh cells, denoted as IndexGroup.A, IndexGroup.B, and IndexGroup.C respectively.

[0066] Step 34: Connect the Topography.Mesh node to the Mesh.VertexPositions node to obtain all index points.

[0067] Please see the appendix Figure 5 Step 4: Connect the Dynamo Mesh.Facelndices node to the group of index points.

[0068] Please see the appendix Figure 6 Step 5: Obtain the points of each triangle face in the mesh using Dynamo.

[0069] Step 5 includes the following sub-steps:

[0070] Step 51: Create three List.GetltemAtlndex nodes in Dynamo, and connect the Mesh.VertexPositions node to each of the three List.GetltemAtlndex nodes.

[0071] Step 52: Connect the IndexGroup.A, IndexGroup.B, and IndexGroup.C nodes to the three List.GetltemAtlndex nodes respectively to obtain the points that make up each triangle face.

[0072] Please see the appendix Figure 7 Step 6: Connect the three List.GetltemAtlndex nodes of Dynamo to the ListCreate node, combine all the points of the triangle into a list, connect the ListCreate node to the List.Transpose node, and combine the three points in each triangle into a group.

[0073] Step 7: Connect the Dynamo List Create node to the Surface.ByPerimeterPoints node for calculation, as shown in the attached diagram. Figure 8-1 As shown, connect the Surface.ByPerimeterPoints node to the PolySurface.ByoinedSurfaces node, merging all the combinations from step 6 into a single, unified surface, as shown in the attached diagram. Figure 8-2 As shown.

[0074] Please see the appendix Figure 9 Step 8: Connect the Element.GetLocation node of Dynamo to the Geometry.Translate node to add points downwards to the family model.

[0075] Please see the appendix Figure 10 Step 9: Connect the Vector.ZAxis node of Dynamo to the Vector.Reverse node, and connect the Vector.ZAxis node to the Geometry.Translate node.

[0076] Please see the appendix Figure 11 Step 10: Input the distance of the family model downwards into the Number node of Dynamo, and connect the Vector.ZAxis node and the Number node to the Geometry.Translate node.

[0077] In step 10, each distance data input through the Number node does not exceed the distance between the corresponding family model and the terrain.

[0078] Please see the appendix Figure 12 Step 11: Connect the Geometry.Translate node of Dynamo to the Line.ByStartPointEndPoint node, and also connect the Element.GetLocation node of Dynamo to the Line.ByStartPointEndPoint node.

[0079] Please see the appendix Figure 13 Step 12: Connect the Line.ByStartPointEndPoint node of Dynamo to the Geometry.Intersect node, and connect the PolySurface.ByoinedSurfaces node to the Geometry.Intersect node to obtain the part where each line of the mesh intersects with the terrain.

[0080] Step 13: Connect the Dynamo Geometry.Intersect node to the List.Flatten node and flatten it, as shown in the attached image. Figure 14-1 As shown, connect the List.Flatten node to the Line.ByStartPointEndPoint node, and also connect the Element.GetLocation node from step 11 to the Line.ByStartPointEndPoint node, as shown in the attached diagram. Figure 14-2 As shown.

[0081] Please see the appendix Figure 15 Step 14: Connect the Line.ByStartPointEndPoint node of Dynamo to the Curve.Length node to obtain the length of each family model to the terrain.

[0082] Step 15: Write the "Elevation of Standard Level" property into the String node of the Dynamo model, as shown in the attached image. Figure 16 As shown; Number nodes and Code Block nodes are used to control the linear and vertical offsets of the family model. Entering "-a+b" in the Dynamo Code Block node allows you to call the built-in function within the Code Block node to calculate the length from the family model to the terrain. Distance calculation using the built-in function of the Code Block node is a standard practice in this field and will not be elaborated upon here. Both the Dynamo Curve.Length node and Number node are connected to the Code Block node, as shown in the attached diagram. Figure 17 As shown.

[0083] Please see the appendix Figure 18 Step 16: Connect the Select Model Elements node of Dynamo to the ElementSetParameterByName node, the Code Block node to the ElementSetParameterByName node, and the String node to the ElementSetParameterByName node; the distance data in the Number node can be used to control the offset of the family model on the terrain surface.

[0084] The above are merely preferred embodiments of the present invention and are not intended to limit the scope of protection of the invention. Therefore, any modifications, equivalent substitutions, improvements, etc., made within the spirit and principles of the present invention should be included within the scope of protection of the present invention.

Claims

1. A one-click alignment method for Revit terrain and families based on Dynamo, characterized by: Includes the following steps: Step 1: Create a terrain in Revit and place several family models on top of the terrain. Open Dynamo in the Revit management interface. Step 2: Obtain the primitive positions of all family models placed in Step 1 using Dynamo; Step 3: Convert the terrain created in Step 1 into a mesh and obtain all the index points in the mesh; Step 4: Connect the Dynamo Mesh.Facelndices node to the group of index points; Step 5: Obtain the points of each triangle face in the mesh using Dynamo; Step 6: Connect the three List.GetltemAtlndex nodes of Dynamo to the List Create node, and combine all the points of the triangle into a list. Connect the List Create node to the List.Transpose node, and combine the three points in each triangle into a group. Step 7: Connect the Dynamo List Create node to the Surface.ByPerimeterPoints node for calculation, connect the Surface.ByPerimeterPoints node to the PolySurface.ByoinedSurfaces node, and combine all the combinations from Step 6 into a single surface; Step 8: Connect the Element.GetLocation node of Dynamo to the Geometry.Translate node, and add points downwards to the family model; Step 9: Connect the Vector.ZAxis node of Dynamo to the Vector.Reverse node, and connect the Vector.ZAxis node to the Geometry.Translate node; Step 10: Input the distance of the family model downwards into the Number node of Dynamo, and connect the Vector.ZAxis node and the Number node to the Geometry.Translate node; Step 11: Connect the Dynamo Geometry.Translate node to the Line.ByStartPointEndPoint node, and also connect the Dynamo Element.GetLocation node to the Line.ByStartPointEndPoint node; Step 12: Connect the Line.ByStartPointEndPoint node of Dynamo to the Geometry.Intersect node, and connect the PolySurface.ByoinedSurfaces node to the Geometry.Intersect node to obtain the part where each line of the mesh intersects with the terrain; Step 13: Connect the Geometry.Intersect node of Dynamo to the List.Flatten node and flatten it. Connect the List.Flatten node to the Line.ByStartPointEndPoint node. Also connect the Element.GetLocation node from Step 11 to the Line.ByStartPointEndPoint node. Step 14: Connect the Line.ByStartPointEndPoint node of Dynamo to the Curve.Length node to obtain the length of each family model to the terrain; Step 15: Write the "Elevation of the elevation height" property of the family model into the String node of Dynamo; use the Number node and Code Block node to control the offset of the family model on the line and vertically, enter "-a+b" in the Code Block node of Dynamo, and connect both the Curve.Length node and the Number node of Dynamo to the Code Block node; Step 16: Connect the Select Model Elements node of Dynamo to the ElementSetParameterByName node, the Code Block node to the ElementSetParameterByName node, and the String node to the ElementSetParameterByName node; control the offset of the family model on the terrain surface using the distance data in the Number node.

2. The one-click alignment method for Revit terrain and families based on Dynamo according to claim 1, characterized in that: Step 2 includes the following sub-steps: Step 21: Use Dynamo's Select Model Elements node to retrieve all the family models placed in Step 1; Step 22: Use Dynamo's Element.GetLocation node to obtain the primitive positions of the family model obtained in Step 21.

3. The one-click alignment method for Revit terrain and families based on Dynamo according to claim 1, characterized in that: Step 3 includes the following sub-steps: Step 31: Use Dynamo's Select Model Elements node to select the terrain created in Step 1; Step 32: Connect the Select Model Elements node of Dynamo to the Topography.Mesh node to convert the terrain into a mesh that can perform point and line intersection calculations. Each mesh cell of this mesh is a triangular face composed of three index points. Step 33: Connect the Topography.Mesh node of Dynamo to the Mesh.Facelndices node, extract the groups of index points, and form three groups with the three index points of all mesh cells, denoted as IndexGroup.A, IndexGroup.B, and IndexGroup.C respectively; Step 34: Connect the Topography.Mesh node to the Mesh.VertexPositions node to obtain all index points.

4. The one-click alignment method for Revit terrain and families based on Dynamo according to claim 1, characterized in that: Step 5 includes the following sub-steps: Step 51: Create three List.GetltemAtlndex nodes in Dynamo, and connect the Mesh.VertexPositions node to each of the three List.GetltemAtlndex nodes; Step 52: Connect the IndexGroup.A, IndexGroup.B, and IndexGroup.C nodes to the three List.GetltemAtlndex nodes respectively to obtain the points that make up each triangle face.

5. The one-click alignment method for Revit terrain and families based on Dynamo according to claim 1, characterized in that: In step 10, each distance data input through the Number node does not exceed the distance between the corresponding family model and the terrain.