CN114549776B - Rectangular family batch placement method based on Dynamo and Revit - Google Patents
Rectangular family batch placement method based on Dynamo and Revit Download PDFInfo
- Publication number
- CN114549776B CN114549776B CN202210097416.4A CN202210097416A CN114549776B CN 114549776 B CN114549776 B CN 114549776B CN 202210097416 A CN202210097416 A CN 202210097416A CN 114549776 B CN114549776 B CN 114549776B
- Authority
- CN
- China
- Prior art keywords
- list
- point
- rectangular
- family
- line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/53—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/13—Architectural design, e.g. computer-aided architectural design [CAAD] related to design of buildings, bridges, landscapes, production plants or roads
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/13—Edge detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
- G06T7/62—Analysis of geometric attributes of area, perimeter, diameter or volume
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Architecture (AREA)
- Civil Engineering (AREA)
- Structural Engineering (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computer Graphics (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
The invention discloses a rectangular family batch placement method for Dynamo and Revit, which comprises the steps of sorting drawing information containing rectangular family outline information; establishing a rectangular family model; separating the rectangular family contour and the direction determination line according to a drawing, and recombining and de-duplicating the separated rectangular family contour; creating a rectangular outline short side connecting line according to the generated polygon; generating a rectangular group placing point according to the separated direction determination line and the created short side connecting line of the rectangular outline; the geometric center point of the rectangular outline and the generated rectangular family placing points are inverted in groups, then the rectangular families are placed in batches, and corresponding family parameters are configured; the invention has high modeling efficiency, can be placed and modified in batch and has important significance for modeling of decorative models and decorative components.
Description
Technical Field
The invention belongs to the field of building engineering modeling, and particularly relates to a rectangular family batch placement method based on Dynamo and Revit.
Background
The BIM is called a Building Information model (Building Information Modeling) in its entirety, and it is based on various data of the Building engineering as a model, and builds the model and performs various real simulations through digital Information. At present, revit is software which is most applied in BIM technology, dynamo is a programming tool based on parameter design of Revit, the program of the Revit is very flexible, and functions which cannot be realized by Revit can be realized through various batteries or codes.
However, at the present stage, revit cannot place decoration models in batch, and usually some two-division software is used for batch processing, but the two-division software has a small application range, an inaccurate placing direction and no input of specified parameters, and finally, even if batch processing is possible, correction is performed on components with wrong placement and relevant parameters are supplemented, and the method at the present stage cannot meet the requirements of design modeling.
Disclosure of Invention
The invention aims to provide a Dynamo and Revit-based rectangular family batch placement method, which can be used for quickly placing a model containing a rectangular family in batches.
The rectangular family batch placement method based on Dynamo and Revit provided by the invention comprises the following steps:
s1, obtaining design drawing information, separating graphic information containing rectangular group outlines, adding direction determination lines to rectangular groups with directions, and establishing an initial rectangular group model;
s2, picking up graphic information of the rectangular group contour, and separating the multiple line segments from the line segments to obtain a rectangular group contour list and a direction determination line list;
s3, sequentially splitting each multi-segment line in the rectangular group profile list into single line segments, and sequentially extracting curve starting points of all line segments in the obtained multi-segment line segment three-level list to obtain a line segment starting point three-level list;
s4, sequentially carrying out polygon recombination on all point positions in each secondary list in the three-level list of the line segment starting points to obtain a polygon graph list, and sequentially extracting midpoints of polygons in each item in the obtained polygon graph list to finally obtain a polygon midpoint list;
s5, performing tolerance judgment on all points in the polygon midpoint list to obtain each point location in the polygon midpoint duplicate removal list, and obtaining indexes in the polygon midpoint list where each point location in the polygon midpoint duplicate removal list is located to finally obtain an index value list;
s6, sequentially exporting the graphs of the corresponding index values in the polygonal graph list by combining the index values in the index value list, and sequentially splitting all the multiple lines in the obtained polygonal graph duplicate removal list to finally obtain a three-level list of the multiple lines;
s7, sequencing each line segment in each secondary list of the multi-line segment tertiary list according to the length of the line segment, and sequentially and independently extracting a first item and a second item in each secondary list of the obtained line segment sequencing tertiary list to finally obtain a short edge segment list I and a short edge segment list II;
s8, sequentially extracting midpoint positions of all line segments in the first list of the short-edge line segments and the second list of the short-edge line segments, sequentially and correspondingly connecting all point positions in the first list of the short-edge midpoints and the second list of the short-edge midpoints with all point positions in the de-duplication list of the midpoints of the polygons, and finally obtaining a first list of the short-edge connecting lines of the rectangular outline and a second list of the short-edge connecting lines of the rectangular outline;
s9, performing intersection analysis on each line segment in the first rectangular outline short-edge connecting line list and all items in the direction judging line list, and performing total judgment on each second-level list in the obtained three-level list of intersection results, if all the items in the second-level list are all the items, outputting a result of yes, otherwise outputting a result of no, and sequentially judging to obtain a judging result list;
s10, combining all items in the first rectangular outline short edge connecting line list and the second rectangular outline short edge connecting line list in sequence to generate a rectangular outline short edge connecting line combination list, then converting all items in the judgment result list, converting the item with the output result of yes into an index value 1, converting the item with the output result of no into an index value 0, and finally obtaining a judgment index value list;
s11, extracting each secondary list in the rectangular outline short side connecting line combination list through judging each index value of the index value list, extracting each line segment in the obtained rectangular outline short side connecting line list III, and extracting a corresponding direction vector to finally obtain a direction vector list;
s12, obtaining an offset line segment after each point position in the polygon midpoint duplicate removal list and each direction vector in the direction vector list correspond to a preset numerical value in sequence, and obtaining an offset line segment list after sequential operation. Sequentially extracting line segment end points of all line segments in the offset line segment list to obtain a rectangular family placement point list;
s13, performing list combination on the polygon midpoint duplicate removal list and the rectangle group placing point list to obtain a combined point location three-level list, and inverting the obtained combined point location three-level list to obtain a placing point location three-level list;
s14, sequentially extracting the lengths of the line sections in the three-level list of the multi-line section information, and deriving the longest length and the shortest length in each two-level list in the list to obtain a longest length list and a shortest length list; and finally, sequentially inputting the longest length list and the shortest length list into corresponding family parameters of all the rectangular families of the rectangular family list, and sequentially placing the rectangular families in batches.
The step S1 comprises the steps of arranging a drawing containing rectangular group outline information, separating all graphs containing rectangular group outlines, and if the rectangular group is a rectangular group with a direction, adding a corresponding direction determination line in each group of rectangular graphs; establishing an initial rectangular family model, wherein the establishment of two self-adaptive point locations is included, and the initial point of the self-adaptive point location of the initial rectangular family model is positioned at the geometric midpoint of the rectangular outline of the initial rectangular family model; after the end point is positioned at the right rectangular group placing point, the initial point moves a preset displacement point along the connecting line direction of the short side of the right rectangle in the rectangular outline, and the end point is used as a rectangular group placing point; and setting the numerical values of the Z axes of all the self-adaptive point positions as the initial plane numerical value zero, and setting corresponding family parameters.
Family parameters including length and width.
The step S2 comprises picking up graphic information of the outline of the rectangle, converting the graphic information into a graphic list, converting the converted graphic list into a character list, judging whether the character list contains Poly character information, outputting the information as true when the character list contains the Poly character information, and outputting the information as False when the character list does not contain the Poly character information; obtaining a judgment result list, and separating the graph list through the judgment result list to obtain a rectangular family outline list and a direction judgment line list; the rectangular family outline list includes all the multi-segment lines, and the direction determination line list includes all the segment lines.
And S4, connecting each point in the current list with the next point of the point by using a line segment, and connecting the last point of the list with the initial point in the list by using the line segment after connecting in sequence to finally obtain the end-to-end connected polygon.
And (4) judging tolerance, namely measuring the distances between the current point and the points in the rest list in sequence, and then deleting the points with the distances within the tolerance range to obtain each point position in the polygon midpoint duplicate removal list.
Step 7, obtaining each line segment in each secondary list in the multi-line segment tertiary list according to the length of the line segment, and performing ascending sorting to obtain a line segment sorting tertiary list; and sequentially and independently extracting the first item and the second item in each secondary list in the line segment sorting tertiary list to finally obtain a short edge line segment list I and a short edge line segment list II.
The step S8 comprises the steps of sequentially extracting the midpoint positions of all line segments in the short edge line segment list I and the short edge line segment list II to obtain a short edge midpoint list I and a short edge midpoint list II; and then, sequentially connecting each point location in the short side middle point list I and the short side middle point list II with each point location in the polygon middle point duplicate removal list to form a line, and finally obtaining a rectangular outline short side connecting line list I and a rectangular outline short side connecting line list II.
And S9, judging whether the first input geometric figure is intersected with the second input geometric figure or not, wherein when the first input geometric figure is intersected with the second input geometric figure, the output information is True, and when the first input geometric figure is not intersected with the second input geometric figure, the output information is False.
Step S9, the total-False determination specifically refers to inquiring whether all items in the current list are False items, the output information is True when all items in the list are False items, and the output information is False when other items except the False items are included in the list.
The Dynamo and Revit-based rectangular family batch placement method provided by the invention is characterized in that after the geometric center point of the rectangular outline and the generated rectangular family placement point are grouped and inverted, the rectangular family is placed in batch and corresponding family parameters are configured. The invention has high modeling efficiency, can be placed and modified in batches, and has important significance for modeling of decoration models and decoration components.
Drawings
FIG. 1 is a schematic flow diagram of the process of the present invention.
FIG. 2 is a schematic diagram of the geometry of the rectangular family of the process of the present invention.
Fig. 3 is a drawing of the lamp finished in step S1 according to the embodiment of the present invention.
Fig. 4 is a schematic structural diagram of the fire hydrant after being finished in step S1 according to the embodiment of the present invention.
FIG. 5 is a schematic view of a rectangular family of fire hydrants according to an embodiment of the present invention.
Fig. 6 is a schematic structural view of the decoration post finished in step S1 according to the embodiment of the present invention.
Fig. 7 is a schematic view of a parking space line structure sorted in step S1 according to an embodiment of the present invention.
Fig. 8 is a schematic view of the crash barrier structure completed in step S1 according to the embodiment of the present invention.
Fig. 9 is a schematic view of a rectangular family structure of a lamp according to an embodiment of the invention.
Fig. 10 is a schematic view of a rectangular family structure of decorative columns according to an embodiment of the present invention.
Fig. 11 is a schematic view of a rectangular group of parking space lines according to an embodiment of the present invention.
Fig. 12 is a schematic view of a rectangular family of crash barriers in accordance with an embodiment of the present invention.
Fig. 13 is a schematic structural diagram of a rectangular group of lamps in the embodiment of the present invention.
FIG. 14 is a schematic structural diagram of a rectangular cluster of fire hydrants in accordance with an embodiment of the present invention.
FIG. 15 is a schematic structural diagram of a rectangular family of decorative posts according to an embodiment of the present invention.
Fig. 16 is a schematic structural diagram of the rectangular group of vehicle location lines according to the embodiment of the invention.
Fig. 17 is a schematic structural view of a rectangular cluster of crash barriers according to an embodiment of the present invention.
Detailed Description
FIG. 1 is a schematic flow chart of the method of the present invention: the rectangular family batch placement method based on Dynamo and Revit provided by the invention comprises the following steps:
s1, obtaining design drawing information, separating graphic information containing rectangular group outlines, adding direction determination lines to rectangular groups with directions, and establishing an initial rectangular group model;
s2, picking up graphic information of the rectangular group contour, and separating the multi-line segments from the line segments to obtain a rectangular group contour list containing all the multi-line segments and a direction determination line list containing all the line segments;
s3, sequentially splitting each multi-segment line in the rectangular group profile list into single line segments, and sequentially extracting curve starting points of all line segments in the obtained multi-segment line segment three-level list to obtain a line segment starting point three-level list;
s4, sequentially carrying out polygon recombination on all point positions in each secondary list in the three-level list of the line segment starting points, sequentially extracting midpoints of polygons in each item in the obtained polygon graph list, and finally obtaining a polygon midpoint list; the polygon recombination comprises connecting each point in the current list with the next point of the point by a line segment, connecting the last point of the list with the initial point in the list by the line segment after connecting in sequence, and finally obtaining the end-to-end connected polygon;
s5, tolerance judgment is carried out on all points in the polygon midpoint list, the tolerance judgment is that the distances between the current point and the points in the remaining list are measured in sequence, then the points with the distances within the tolerance range are deleted, all the point positions in the polygon midpoint duplicate removal list are obtained, indexes in the polygon midpoint list where all the point positions in the polygon midpoint duplicate removal list are located are obtained, and finally an index value list is obtained;
s6, sequentially deriving graphs of corresponding index values in the polygonal graph list by combining all index values in the index value list, and sequentially splitting all the multiple lines in the obtained polygonal graph duplicate removal list to finally obtain a multiple line segment three-level list;
s7, sequentially sorting the line segments in each secondary list of the multi-line segment tertiary list in an ascending order according to the length of the line segments, sequentially and independently extracting a first item and a second item in each secondary list through a Dynamo tool in the obtained line segment sorting tertiary list, and finally obtaining a short edge line segment list I and a short edge line segment list II;
s8, sequentially extracting midpoint positions of all line segments in the first list of the short-edge line segments and the second list of the short-edge line segments, sequentially and correspondingly connecting all point positions in the first list of the short-edge midpoints and the second list of the short-edge midpoints with all point positions in the de-duplication list of the midpoints of the polygons, and finally obtaining a first list of the short-edge connecting lines of the rectangular outline and a second list of the short-edge connecting lines of the rectangular outline;
s9, performing intersection analysis on each line segment in the first rectangular outline short-edge connecting line list and all items in the direction judging line list, and performing total judgment on each secondary list in the obtained three-level list of intersection results, wherein if all the items in the secondary list are all or not, the output result is yes, otherwise, the output result is no, and a judging result list is obtained after sequential judgment; the intersection analysis comprises judging whether the first input geometric figure is intersected with the second input geometric figure, wherein the output information is True when the first input geometric figure is intersected with the second input geometric figure, and False when the first input geometric figure is not intersected with the second input geometric figure; the total or non-total judgment comprises the steps of inquiring whether all the items in the current list are False items, wherein when all the items in the list are False items, the output information is True, and when other items except the False items are included in the list, the output information is False items;
s10, combining all items in the first rectangular outline short edge connecting line list and the second rectangular outline short edge connecting line list in sequence to generate a rectangular outline short edge connecting line combination list, then converting all items in the judgment result list, converting the item with the output result of yes into an index value 1, converting the item with the output result of no into an index value 0, and finally obtaining a judgment index value list;
s11, extracting each secondary list in the rectangular outline short side connecting line combination list by judging each index value of the index value list, obtaining each line segment in the third rectangular outline short side connecting line list, and finally obtaining a direction vector list by extracting a corresponding direction vector;
s12, obtaining a migration line segment after each point position in the polygon midpoint duplicate removal list, each direction vector in the direction vector list and a number with a value of 100 are sequentially corresponding, and obtaining a migration line segment list after sequential operation. Sequentially extracting line segment end points of all line segments in the offset line segment list to obtain a rectangular family placement point list;
s13, performing list combination on the polygon midpoint duplicate removal list and the rectangle group placing point list to obtain a combined point location three-level list, and inverting the obtained combined point location three-level list to obtain a placing point location three-level list;
s14, sequentially extracting the lengths of the line segments in the three-level list of the multi-segment line segment information, and independently exporting the longest length and the shortest length in each two-level list in the list to obtain a longest length list and a shortest length list; and finally, sequentially inputting the longest length list and the shortest length list into corresponding family parameters of all the rectangular families of the rectangular family list, and sequentially placing the rectangular families in batches.
In this embodiment:
the adaptive model represents a model built by an adaptive metric conventional model template in the Revit family template. The adaptive model point location represents an adaptive placement point location set in the adaptive metric conventional model. The rectangle family represents an adaptive model whose plane figure is a rectangle. The family of directional rectangles represents an adaptive model whose plan view is rectangular, and has a model specifying the direction of placement, e.g., parking space, fire hydrant. The family of rectangles without direction represents an adaptive model in which the plane figure is rectangular, but does not have a model specifying the direction of placement, such as a rectangular luminaire, a rectangular decorative post. The connecting line of the short sides of the rectangular outline represents the line segment connecting the geometric midpoint of the rectangular outline and the midpoint of the short side of the rectangular outline. The direction determination line represents a line segment intersecting a line connecting the short sides of the right rectangle in the rectangle outline when the rectangle family is placed right (i.e., the long side is parallel to the X axis and the short side is parallel to the Y axis), and the line segment is located within the rectangle outline and does not intersect a line connecting the short sides of the left rectangle in the rectangle outline. A list represents a sequence of ordered sets of variable elements, each element or item in the list is assigned a number or index, the first item index is 0, the second item index is 1, and so on. For convenience of indicating a list with a bracket and a comma separating the list, for example, the list [ a, P ] indicates that the item value with an index value of 0 in the list is a and the item value with an index value of 1 is P. The definition of a tertiary list is that if the corresponding item in the list is a single list, then the list is a tertiary list. For example, a three-level list [ [ A, P ], [ A, D ] ] indicates that the item value with index value 0 in the list is list [ A, P ], and the item value with index value 1 is list [ A, D ].
For a better understanding of the invention, the method according to the invention will be explained in more detail below with reference to the accompanying drawings and the accompanying table of examples.
Fig. 2 is a schematic diagram of the geometric structure of the rectangle family according to the method of the present invention, where 1 is the midpoint of the short side, 2 is the connection line of the short sides of the rectangle outline, 3 is the outline of the rectangle family, 4 is the geometric midpoint of the rectangle outline, 5 is the midpoint of the long side, and 6 is the direction determination line; step one, a CAD drawing containing outline information of a rectangle group is arranged, as shown in fig. 3, the drawing of the lamp apparatus arranged in step S1 according to the embodiment of the present invention is a drawing of the lamp apparatus, as shown in fig. 3, all figures containing outlines of the rectangle group are separated, if the rectangle group is a rectangle group with a direction, a corresponding direction determination line needs to be added in each group of the rectangle figures, as shown in fig. 4, a schematic diagram of a fire hydrant structure arranged in step S1 according to the embodiment of the present invention is shown. A rectangular family model is established through a Revit family function, the rectangular family model only establishes two self-adaptive point locations, and the initial point of the self-adaptive point location of the rectangular family model is located at the geometric midpoint of the rectangular outline of the rectangular family model. The end point is located at a point position, namely a rectangular group placing point, after the rectangular group is placed, and the initial point moves 100mm along the direction of the connecting line of the short sides of the right rectangle in the rectangular outline, as shown in fig. 5, which is a schematic diagram of the rectangular group of the fire hydrant according to the embodiment of the invention, and in fig. 5, a schematic diagram of the rectangular group placing point at the bottom of the fire hydrant is shown. And the numerical values of the Z axes of all the self-adaptive point positions are set to be zero as the initial plane numerical value. The rectangular family model contains self-adaptive point location information, and also needs to set corresponding family parameters including material name, material specification, provider, material use, angle, volume, length, width, image, annotation, marking, creating stage, dismantling stage, self-adaptive construction and symbol import, and the like.
And secondly, picking up the whole graph separated in the S1 by a Dynamo tool, converting the CAD graph into a Dynamo graph list by an element. The Poly text information is specifically the text information of beginning of Polycurve when the picked CAD graphics information is a plurality of lines, and the plurality of lines can be distinguished from other graphics information by using Poly english letters.
Rectangle family outline list part content: [ PolyCurve (NumberOfCurves = 4), polyCurve (NumberOfCurves = 4), polyCurve (NumberOfCurves = 4), polyCurve (NumberOfCurves = 4), polyCurve (NumberOfCurves = 4), polyCurve (NumberOfCurves = 4), polyCurve (NumberOfCurves = 4), polyCurve (NumberOfCurves = 4), polyCurve (NumberOfCurves = 4), polyCurve (NumberOfCurves = 4), polyOfCurves (NumberOfCurves = 4), polyOfCurve (NumberOfCurves = 4) ].
Direction decision line list section content: <xnotran> [ Line (StartPoint = Point (X = -208022.500,Y = -298698.436,Z=0.000), endPoint = Point (X = -208005.500,Y = -298866.436,Z=0.000), direction = Vector (X =17.000,Y = -168.000,Z=0.000,Length=168.858)), line (StartPoint = Point (X = -194121.181,Y = -301614.436,Z=0.000), endPoint = Point (X = -194138.181,Y = -301446.436,Z=0.000), direction = Vector (X = -17.000,Y=168.000,Z=0.000,Length=168.858)), line (StartPoint = Point (X = -206509.811,Y = -284501.439,Z=0.000), endPoint = Point (X = -206480.811,Y = -284686.439,Z=0.000), direction = Vector (X =29.000,Y = -185.000,Z=0.000,Length=187.259)), line (StartPoint = Point (X = -208565.500,Y = -263851.436,Z=0.000), endPoint = Point (X = -208536.500,Y = -264036.436,Z=0.000), direction = Vector (X =29.000,Y = -185.000,Z=0.000,Length=187.259)), line (StartPoint = Point (X = -187492.420,Y = -257014.440,Z=0.000), endPoint = Point (X = -187509.420,Y = -256846.440,Z=0.000), direction = Vector (X = -17.001,Y=168.000,Z=0.000,Length=168.858)), line (StartPoint = Point (X = -192249.702,Y = -247895.538,Z=0.000), endPoint = Point (X = -192090.258,Y = -247951.130,Z=0.000), direction = Vector (X =159.444,Y = -55.593,Z=0.000,Length=168.858)), line (StartPoint = Point (X = -178457.500,Y = -265298.440,Z=0.000), endPoint = Point (X = -178440.500,Y = -265466.440,Z=0.000), direction = Vector (X =17.000,Y = -168.000,Z=0.000,Length=168.858)), </xnotran> Line (StartPoint = Point (X = -177922.310, y = -307589.440, z =0.000), endPoint = Point (X = -177737.310, y = -307560.440, z =0.000), direction = Vector (X =185.000, y =29.000, z =0.000, length = -187.259)), line (StartPoint = Point (X = -9999. 754, y = -285846.421, z =0.000), endPoint = Point (X = -99308.754, y = -285829.421, z 0.000), direction = Vector (X168.000, y =17.000, z =0.000, length =, 168.858), direction = Vector (X =17.000, z =, 0.000, length =, 168.858, 168). Line (StartPoint = Point (X = -124272.530, y = -334887.893, z = -0.000), endPoint = Point (X = -124087.530, y = -334858.893, z = -0.000), direction = Vector (X =185.000, y = -29.000, z = -0.000, length = -187.259)), line (StartPoint = Point (X = -142616.107, y = -270116.421, z = -0.000), endPoint = Point (X = -142784.107, y = -270133.421, z = -0.000), direction = Vector (X = -168.000, y = -17.000, z = -0.000, length)) ].
And thirdly, sequentially splitting all the multiple lines in the rectangular group outline list through a PolyCurve. And then sequentially extracting curve starting points of all line segments in the three-level list of the multi-segment line segments through cut.
The three-level list part content of the segment starting point: [ [ Point (X = -207432.500, y = -298896.437, z = -0.000), point (X = -208132.500, y = -298896.436, z = -0.000), point (X = -208132.500, y = -298656.436, z = -0.000), point (X = -207432.500, y = -298656.437, z = -0.000) ], [ Point (X = -194711.181, y = -301416.z = -0.000), point (X = -011.181, y = -301416.436, z = -0.000), point (X = -194, 181, y = -301656.436, z = -436, zero, point (X = -194, 301181, y = -301656, spiral-4706, z-4706, 439), point (X = -194, 181, 301, 18, 376, z-656, spiral, z-4706, 439, zero), point (X = -207076.811, Y = -284466.439, Z = -0.000), point (X = -206376.811, Y = -284466.439, Z = -0.000) ], [ Point (X = -208432.500, Y = -264056.436, Z = -0.000), point (X = -209132.500, Y = -263816.436, Z = -0.000), point (X = -208432.500, y = -263816.436, z = -0.000) ], [ Point (X = -188082.420, y = -256816.442, z = -0.000) ], point (X = -187382.420, y = -256816.439, z = -0.000), point (X = -187382.420, y = -257056.439, z = -0.000), point (X = -188082.420, y = -257056.442, z = -0.000) ] ];
and step four, sequentially carrying out polygon recombination on all point positions in each secondary list in the tertiary list of the line segment starting points through a polygon. And then extracting point positions of each polygon in the polygon graph list by utilizing polygon nodes, and sequentially processing to obtain a polygon midpoint list.
Polygon midpoint list part content: [ Point (X = -207782.500, Y = -298776.437, Z = 0.000), point (X = -194361.181, Y = -301536.436, Z = 0.000), point (X = -206726.811, Y = -284586.439, Z = 0.000), point (X = -208782.500, Y = -263936.436, Z = 0.000), point (X = -732.420, Y = -256936.441, Z = 0.000), point (X = -192077.582, Y = -241870.771988, Z = 0.000), point (X = -178217.500, y = -265376.440, z = -0.000), point (X = -177837.310, y = -307806.440, z = -0.000), point (X = -99398.754, y = -285606.421, z = -0.000), point (X = -124187.530, y = -335104.893, z = -0.000), point (X = -142694.107, y = -270356.421, z = -0.000) ];
and fifthly, carrying out tolerance judgment on all points in the polygon midpoint list through the point. And then, according to each point position in the polygon midpoint duplicate removal list, using a list.
Index value list part content: [0,1,2,3,4,5,6,7,8,9,10];
and step six, firstly, sequentially deriving graphs corresponding to index values in a polygonal graph list through index values in an index value list by virtue of a List.
Part of the multi-segment line three-level list: [ [ StartPoint = Point (X = -207432.500, Y = -298896.437,Z = -0.000), endPoint = Point (X = -208132.500, Y = -298896.436, Z = -0.000)), curve (StartPoint = Point (X = -132.500, Y = -298896.436, Z = -0.000)), endPoint = Point (X = -208132.500, Y = -298656.436, Z = -0.000)), curve (StartPoint = Point (X = -208132.500, Y = -298656.436, Z = -0.000)), and Curve (StartPoint = Point (X = -2086.500, Y = -298656.436, Z = -0.000)), endPoint = Point (X = -207432.500, y = -298656.437, z = -0.000)), curve (StartPoint = Point (X = -207432.500, y = -298656.437, z = -0.000), endPoint = Point (X = -207432.500, y = -298896.437, z = -0.000)) ], [ Curve (StartPoint = Point (X = -194711.181, y = -301416.436, z = -0.194), endPoint = Point (X = -011.181, y = -301416.436, z = -0.000)) ], endPoint = Point (X = -011.181, y = -301416.436, z = -0.000)), curve (StartPoint = Point (X = -194011.181, y = -301416.436, z =) 0.000), endPoint = Point (X = -194011.181, y = -301656.436, z =0.000)), curve (StartPoint = Point (X = -194011.181, y = -301. 436, z =0.000), endPoint = Point (X = -194711.181, y = -656.436, z = 0.000)), curve (StartPoint = Point (X = -711.181, y = -301656, z = -656, z =) 0.000), endPoint = Point (X = -194. 181, y = -416.436, z =) 0.000, endPoint = Point (X = -194-301. 811, z =) 0.811, spiral (X = -074706, z =) 0.811, z = (X = -074706, z =) 2070.439), endPoint (X = -070.811, z-47000), endPoint (X =) and (X = -079.811, z-4706, z =) 0.439), and (X =) 0.811, z =) 0.811, 8.000), endPoint = Point (X =) and (X =) 0.811, 8.811, z = (X =) and 074.811, 8.000), and 73, 8.06, z = (X =) of each dot). Curve (StartPoint = Point (X = -207076.811, Y = -284466.439, Z = -0.000), endPoint = Point (X = -206376.811, Y = -284466.439, Z = -0.000)), curve (StartPoint = Point (X = -206376.811, Y = -284466.439, Z = -0.000)), endPoint = Point (X = -206376.811, Y = -284706.439, Z = -0.000)) ], [ Curve (StartPoint = Point (X = -432.500, Y = -264056.436, Z = -0.000)) ], [ Curve (StartPoint = Point (X = -432.500, Y = -264056.436, Z = -0.000), endPoint = Point (X = -209132.500, y = -264056.436, z = -0.000)), curve (StartPoint = Point (X = -209132.500, y = -264056.436, z = -0.000), endPoint = Point (X = -209132.500, y = -263816.436, z = -0.000)), curve (StartPoint = Point (X = -209132.500, y = -263816.436, z = -0.000)), endPoint = Point (X = -208432.500, y = -263816.436, z = -0.000)), curve (StartPoint = Point (X = -208432.500, Y = -263816.436, Z = -0.000), endPoint = Point (X = -208432.500, Y = -264056.436, Z = -0.000)) ], [ Curve (StartPoint = Point (X = -082188420, Y = -256.442, Z = -0.000) ], [ Curve (X = -187382.420, Y = -256816.439, Z = -0.000) ], curve (StartPoint = Point (X = -187382.420, Y = -256816.439, Z = -0.000)), endPoint = Point (X = -187382.420, y = -257056.439, z = -0.000)), curve (StartPoint = Point (X = -187382.420, y = -257056.439, z = -0.000), endPoint = Point (X = -082188188420, y = -257056.442, z = -0.000)), curve (StartPoint = Point (X = -188082.420, y = -257056.442, z = -0.000), endPoint = Point (X = -082188420, y = -188681.420, y = -256816.442, z = -0.000)) ] ].
And seventhly, acquiring the line segment sorted three-level lists sorted according to the line segment lengths of the line segments in the two-level lists in the multi-segment line segment three-level list by using List.
List of short edge segments part of the contents: [ Curve (StartPoint = Point (X = -208132.500, Y = -298896.436, Z = -0.000), endPoint = Point (X = -208132.500, Y = -298656.436, Z = -0.000)), curve (StartPoint = Point (X = -194711.181, Y = -301656.436, Z = -0.000)), endPoint = Point (X = -194711.181, Y = -301416.436, Z = -0.000)), curve (StartPoint = Point (X = -207076.811, Y = -284706.439, Z = -0.000)), endPoint = Point (X = -207076.811, y = -284466.439, z = -0.000)), curve (StartPoint = Point (X = -209132.500, y = -264056.436, z = -0.000), endPoint = Point (X = -209132.500, y = -263816.436, z = -0.000)), curve (StartPoint = Point (X = -382.420, y = -256816.439, z = -0.000), endPoint = Point (X = -187382.420, y = -25382.420, y = -257056.439, z = -0.000)), curve (StartPoint = Point (X = -192116.741, Y = -248078.910, Z = -0.000), endPoint = Point (X = -192334.255, Y = -247977.482, Z = -0.000)), curve (StartPoint = Point (X = -178567.500, Y = -265496.439, Z = -0.000), endPoint = Point (X = -178567.500, Y = -265256.439, Z = -0.000)), curve (StartPoint = Point (X = -177.310, Y = -308156.440, Z = -0.000)), endPoint = Point (X = -177957.310, y = -308156.440, z = -0.000)), curve (StartPoint = Point (X = -99278.754, y = -285956.421, z = -0.000), endPoint = Point (X = -99518.754, y = -285956.421, z = -0.000)), curve (StartPoint = Point (X = -124067.530, y = -3354893, z = -0.000), endPoint = Point (X = -124307.530, y = -335454.893, z = -0.000)), curve (StartPoint = Point (X = -142814.107, Y = -270006.421, Z = -0.000), endPoint = Point (X = -142574.107, Y = -270006.421, Z = -0.000)) ]
The short edge line segment list comprises two parts: [ Curve (StartPoint = Point (X = -207432.500, Y = -298656.437, Z = -0.000)), endPoint = Point (X = -207432.500, Y = -298896.437, Z = -0.000)), curve (StartPoint = Point (X = -011.194181, Y = -301416.436, Z = -0.000)), endPoint = Point (X = -194011.181, Y = -301656.436, Z = -0.000)), curve (StartPoint = Point (X = -206376.811, Y = -284466.439, Z = -0.000)), endPoint = Point (X = -206376.811, y = -284706.439, z = -0.000)), curve (StartPoint = Point (X = -208432.500, y = -263816.436, z = -0.000), endPoint = Point (X = -208432.500, y = -264056.436, z = -0.000)), curve (StartPoint = Point (X = -188082.420, y = -257056.442, z = -0.000), endPoint = Point (X = -188082.420, y = -257056.442, z = -0.000)), endPoint = Point (X = -188082.420, y = -256816.442, z = -0.000)), curve (StartPoint = Point (X = -192038.422, Y = -247343.066, Z = -0.000), endPoint = Point (X = -191820.908, Y = -247444.494, Z = -0.000)), curve (StartPoint = Point (X = -177867.500, Y = -265256.440, Z = -0.000)), endPoint = Point (X = -177867.500, Y = -265496.440, Z = -0.000)), curve (StartPoint = Point (X = -177957.310, Y = -3056.440, Z = -0.000)), endPoint = Point (X = -177717.310, y = -307456.440, z = -0.000)), curve (StartPoint = Point (X = -99518.754, y = -285256.421, z = -0.000), endPoint = Point (X = -99278.754, y = -285256.421, z = -0.000)), curve (StartPoint = Point (X = -124307.530, y = -334754.893, z = -0.000), endPoint = Point (X = -124067.530, y = -334754.893, z = -0.000)), curve (StartPoint = Point (X = -142574.107, Y = -270706.421, Z = -0.000), endPoint = Point (X = -142814.107, Y = -270706.421, Z = -0.000)) ]
And step eight, sequentially extracting the midpoint positions of all line segments in the short edge line segment list I and the short edge line segment list II through the cut. And then, sequentially connecting each point in the short side middle point list I and the short side middle point list II with each point in the polygon middle point duplicate removal list to form a line by using a line.
Part of the rectangular outline short-side connecting line list: [ Line (StartPoint = Point (X = -207782.500, y = -298776.437, z = -0.000), endPoint = Point (X = -208132.500, y = -298776.436, z = -0.000), direction = Vector (X = -350.000, y = -0.000, z = -0.000, length = -350.000)), line (StartPoint = Point (X = -194361.181, y = -301536.436, z = -0.000), endPoint = Point (X = -194. 181, y = -301536.436, z = -0.000), direction = Vector (X = -350.000, y = -0.000, z = -350.000, length = -350.000)), (X = -350.000, y = -0.000, z = -350.000, length =, z = -350.000)),000) Line (starpoint = Point (X = -206726.811, y = -284586.439, z = -0.000), endPoint = Point (X = -207076.811, y = -284586.439, z = -0.000), direction = Vector (X = -350.000, y = -0.000, z = -0.000, length = -350.000)), line (starpoint = Point (X = -208782.500, y = -263936.436, z = -0.000), endPoint = Point (X = -209132.500, y = -263936.436, z = -0.000)), direction = Vector (X = -350.000,y = -0.000,z = -0.000,length = -350.000)), line (StartPoint = Point (X = -187732.420,y = -256936.441,z = -0.000), endPoint = Point (X = -187382.420, y = -256936.439, z = -0.000), direction = Vector (X =350.000, y = -0.001,z = -0.000,length = -350.000)), line (StartPoint = Point (X = -192077.582, y = -247710.988,z = -0.000)), endPoint = Point (X = -192225.498, y = -248028.196, z = -0.000), direction = Vector (X = -147.916, y = -317.208, z = -0.000, length = -350.000)), line (StartPoint = Point (X = -178217.500, y = -265376.440, z = -0.000), endPoint = Point (X = -178567.500, y = -265376.439, z = -0.000), direction = Point (X = -350.000, y = -0.000, z = -0.000, length = -350.000, 350.000)),000, direction = Vector (X = -350.000, y = -0.000, z = -0.000, length = -350.000)), line (StartPoint = Point (X = -177837.310, y = -307806.440, z =0.000), endPoint = Point (X = -177837.310, y = -308156.440, z =0.000), direction = Vector (X =0.000, y = -350.000, z =0.000, length =350.000)), line (StartPoint = Point (X = -99398.754, y = -285606.421, z =0.000), endPoint = Point (X = -99398.754, y = -285956.421, z =0.000), direction = Vector (X =0.000, y = -350.000, z =0.000, length 350.000)), line (StartPoint = Point (X = -124187.530, y = -335104.893, z = -0.000), endPoint = Point (X = -124187.530, y = -335454.893, z = -0.000), direction = Vector (X =0.000, y = -350.000, z = -0.000, length = -350.000)), line (StartPoint = Point (X = -142694.107, y = -270356.421, z = -0.000), endPoint = Point (X = -142694.107, y = -270006.421, z = -0.000), direction = Vector (X =0.000, y = -350.000, z = -350.000, length = -350.000)) ], direction = Vector (X =0.000, y = -350.000, z = -350.000, length) }
The rectangular outline short side connection list comprises two parts: [ Line (StartPoint = Point (X = -207782.500, y = -298776.437,z = -0.000), endPoint = Point (X = -207432.500, y = -298776.437,z = -0.000), direction = Vector (X =350.000, y = -0.000, z = -0.000, length = -350.000)), line (StartPoint = Point (X = -194361.181, y = -301536.436, z = -0.000), endPoint = Point (X = -194011.181, y = -301536.436, z = -0.000), direction = Vector (X =350.000, y = -0.000, z = -0.000, length = -350.000)), line (starpoint = Point (X = -206726.811, y = -284586.439, z = -0.000), endPoint = Point (X = -206376.811, y = -284586.439, z = -0.000), direction = Vector (X =350.000, y = -0.000, z = -0.000, length = -350.000)), line (starpoint = Point (X = -208782.500, y = -263936.436, z = -0.000), endPoint = Point (X = -208432.500, y = -3936.436, z = -0.000), direction = Vector (X =350.000,y =0.000,z =0.000,000,z =0.000,length = 350.000)), line (StartPoint = Point (X = -187732.420,y = -256936.441,z = 0.000), endPoint = Point (X = -188082.420,y = -256936.442,z = 0.000), direction = Vector (X = -350.000,y = -0.001,z =0.000,length = 350.000), line (StartPoint = Point (X = -192077.582,y = -247710.988,z = 0.000), endPoint (X191 = -929,y = -24737,780,780,y = -247710.000), direction = Vector (X =147.916, y =317.208, z =0.000, length = 350.000)), line (StartPoint = Point (X = -178217.500, y = -265376.440, z = 0.000), endPoint = Point (X = -177867.500, y = -265376.440, z = 0.000), direction = Vector (X =350.000, y = -0.000, z = -0.000, length = 350.000)), line (StartPoint = Point (X = -177837.310, y = -307806.440, z = -0.000)), endPoint = Point (X = -177837.310, y = -307456.440, z = -0.000), direction = Vector (X =0.000, y = -350.000, z = -0.000, length = -350.000)), line (StartPoint = Point (X = -99398.754, y = -285606.421, z = -0.000), endPoint = Point (X = -99398.754, y = -285256.421, z = -0.000), direction = Vector (X =0.000, y = -350.000, z = -0.000, length = -350.000)), line (StartPoint = Point (X = -187.530, y = -334.893, z = -5100.124000)), endPoint = Point (X = -124187.530, y = -334754.893, z = -0.000), direction = Vector (X =0.000, y = -350.000, z = -0.000, length = -350.000)), line (StartPoint = Point (X = -142694.107, y = -270356.421, z = -0.000), endPoint = Point (X = -142694.107, y = -270706.421, z = -0.000), direction = Vector (X =0.000, y = -350.000, z = -0.000, length = -350.000)) ]
And step nine, performing intersection analysis on each line segment in the first rectangular outline short edge connecting line list and all items in the direction judgment line list through a geometry node and a DoesIntersect node to sequentially obtain a three-level list of intersection results. And then, carrying out total judgment on each secondary list in the three-level lists of the intersection results by using a List-AllFalse node, if all items in the secondary lists are all the items, otherwise, outputting a result, namely yes, otherwise, outputting a result, namely no, and sequentially judging to obtain a judgment result list.
Determination result list part content: [ FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE ]
Combining the first List of the short side connecting lines of the rectangular outline and the second List of the short side connecting lines of the rectangular outline in sequence through a List and List Create node to generate a combined List of the short side connecting lines of the rectangular outline, wherein the first item in the second List is an item in the first List of the short side connecting lines, and the last item is an item in the second List of the short side connecting lines. And then, converting each result in the judgment result list by using the If node, converting the item with the output result of yes into an index value 1, converting the item with the output result of no into an index value 0, and finally obtaining a judgment index value list.
Judging the content of the index value list part: [0,1, 0,1,0];
step eleven, extracting each secondary list in the rectangular outline short edge connecting line combination list through judging each index value of the index value list through a List. And then extracting corresponding direction vectors of all line segments in the third rectangular outline short edge connecting line list by using line.
Direction vector list part content: [ Vector (X =350.000,Y =0.000,Y =0.000,Z =0.000,Length = 350.000), vector (X =350.000,Y =0.000,000,Z =0.000,Length = 350.000), vector (X =350.000,Y =350.000,000,Length 350.000), vector (X =350.000,Y =0.000,Z =0.000,000,Z =0.000,Length = 350.000), vector (X =350.000,Y =0.001,Z =0.000,Length = 350.000), vector (X = -147.916,Y = -317.208,Z = -0.000,Length = 350.000), vector (X =350.000,y =0.000,y =0.000,z =0.000,length = 350.000), vector (X =0.000,y =350.000,000,z =0.000,length = 350.000), vector (X =0.000,y = -350.000,z =0.000,length =350.000), vector (X =0.000,y =350.000,z =0.000,000,000,z = 350.000), vector (X =0.000,y =350,000,z =350.000,length =350.000), vector (X =0.000,y =350.000,z =0.000,length =350.000) ]
And step twelve, sequentially corresponding each point position in the polygon midpoint duplicate removal list, each direction vector in the direction vector list and the number with the value of 100 through a line. And sequentially extracting line segment end points of all line segments in the offset line segment list through the cut.
Part of the contents of the rectangular family placement point list: [ Point (X = -207882.500, Y = -298776.436, Z = 0.000), point (X = -194261.181, Y = -301536.436, Z = 0.000), point (X = -206626.811, Y = -284586.439, Z = 0.000), point (X = -208682.500, Y = -263936.436, Z = 0.000), point (X = -632.420, Y = -256936.440, Z = 0.000), point (X = -192119.844, Y = -247801.619, Z1870.000), point (X = -178317.500, y = -265376.440, z = -0.000), point (X = -177837.310, y = -307706.440, z = -0.000), point (X = -99398.754, y = -285706.421, z = -0.000), point (X = -124187.530, y = -335004.893, z = -0.000), point (X = -142694.107, y = -270256.421, z = -0.000) ]
And thirteen, performing List combination on the polygon midpoint deduplication List and the rectangle group placement point List through a List Create node to obtain a combined point location three-level List. And inverting the obtained three-level list through a List node to obtain a three-level list of placement point locations, wherein the first item in the two-level list is an item of a polygon midpoint duplicate removal list, and the tail item is an item of a rectangle group placement point list. And finally, placing the rectangular family combined with the placement point three-level list in batches by utilizing AdaptionComponent.
The placed rectangular family list part content: [ Family = two-point adaptive fire hydrant, type = two-point adaptive fire hydrant, family = two-point adaptive fire hydrant, type = two-point self-adaptive fire hydrant, family = two-point self-adaptive fire hydrant, type = two-point self-adaptive fire hydrant ]
And fourthly, sequentially extracting the line lengths in the multi-segment line segment information three-level list through the cut. And finally, sequentially inputting the longest length list and the shortest length list into corresponding family parameters of each item rectangular family of the rectangular family list through an element.
FIG. 6 is a schematic view of the structure of the decoration post finished in step S1 according to the embodiment of the present invention; fig. 7 is a schematic view of a parking space line structure processed in step S1 according to the embodiment of the present invention; fig. 8 is a schematic view of the crash barrier structure completed in step S1 according to the embodiment of the present invention; fig. 9 is a schematic view of a rectangular family structure of a lamp according to an embodiment of the present invention; FIG. 10 is a schematic view of a rectangular family structure of decorative pillars according to an embodiment of the present invention; fig. 11 is a schematic view of a rectangular group structure of parking space lines according to an embodiment of the present invention; fig. 12 is a schematic view of a rectangular family structure of the crash barrier according to an embodiment of the present invention; FIG. 13 is a schematic diagram of a rectangular family of lamps according to an embodiment of the present invention; FIG. 14 is a schematic structural diagram of a fire hydrant with a rectangular cluster according to an embodiment of the present invention; FIG. 15 is a schematic structural diagram of a rectangular family of decorative pillars according to an embodiment of the present invention; FIG. 16 is a schematic diagram illustrating a structure of a rectangular cluster of parking lot lines according to an embodiment of the present invention; FIG. 17 is a schematic structural diagram of a rectangular cluster of crash barriers according to an embodiment of the present invention; as shown in FIGS. 6-17, the invention can be used for batch placement of different members containing rectangular families in construction engineering, thereby greatly improving the modeling speed and accuracy.
Claims (10)
1. A rectangular family batch placement method based on Dynamo and Revit, characterized by comprising the steps of:
s1, obtaining design drawing information, separating graphic information containing rectangular group outlines, adding direction determination lines to rectangular groups with directions, and establishing an initial rectangular group model;
s2, picking up graphic information of the rectangular family outline, and separating the multiple line segments from the line segments to obtain a rectangular family outline list and a direction determination line list;
s3, sequentially splitting each multi-segment line in the rectangular group profile list into single line segments, and sequentially extracting curve starting points of all line segments in the obtained three-level list of the multi-segment line segments to obtain a three-level list of line segment starting points;
s4, sequentially carrying out polygon recombination on all point positions in each secondary list in the tertiary list of the line segment starting points to obtain a polygon graph list, and sequentially extracting midpoints of polygons in each item in the obtained polygon graph list to finally obtain a polygon midpoint list;
s5, performing tolerance judgment on all points in the polygon midpoint list to obtain each point location in the polygon midpoint duplicate removal list, and obtaining indexes in the polygon midpoint list where each point location in the polygon midpoint duplicate removal list is located to finally obtain an index value list;
s6, sequentially exporting the graphs of the corresponding index values in the polygonal graph list by combining the index values in the index value list, and sequentially splitting all the multiple lines in the obtained polygonal graph duplicate removal list to finally obtain a three-level list of the multiple lines;
s7, sequencing each line segment in each secondary list of the multi-line segment tertiary list according to the length of the line segment, and sequentially and independently extracting a first item and a second item in each secondary list of the obtained line segment sequencing tertiary list to finally obtain a short edge segment list I and a short edge segment list II;
s8, sequentially extracting midpoint positions of all line segments in the first short-edge line segment list and the second short-edge line segment list, sequentially and correspondingly connecting all point positions in the obtained first short-edge midpoint list and the obtained second short-edge midpoint list with all point positions in the polygon midpoint de-duplication list, and finally obtaining a first rectangular outline short-edge connecting line list and a second rectangular outline short-edge connecting line list;
s9, performing intersection analysis on each line segment in the first rectangular outline short edge connecting line list and all items in the direction judging line list, and performing total judgment on each secondary list in the obtained three-level list of intersection results, wherein if all the items in the secondary list are all or not, the output result is yes, otherwise, the output result is no, and a judging result list is obtained after sequential judgment;
s10, combining all items in the rectangular outline short side connecting line list I and the rectangular outline short side connecting line list II in sequence to generate a rectangular outline short side connecting line combination list, then converting all items in the judgment result list, converting the item with the output result of yes into an index value 1, converting the item with the output result of no into an index value 0, and finally obtaining a judgment index value list;
s11, extracting each secondary list in the rectangular outline short edge connecting line combined list through judging each index value of the index value list, extracting each line segment in the obtained rectangular outline short edge connecting line list III, extracting a corresponding direction vector, and finally obtaining a direction vector list;
s12, obtaining a deviation line segment after each point position in the polygon midpoint duplicate removal list and each direction vector in the direction vector list correspond to a preset numerical value in sequence, and obtaining a deviation line segment list after sequential operation; sequentially extracting line segment end points of all line segments in the offset line segment list to obtain a rectangular family placement point list;
s13, performing list combination on the polygon midpoint duplicate removal list and the rectangle group placing point list to obtain a combined point location three-level list, and inverting the obtained combined point location three-level list to obtain a placing point location three-level list; creating a list node, performing row-list combination on a polygon midpoint duplicate removal list and a rectangle group placement point list to obtain a combined point location three-level list; inverting the obtained three-level list through a List.Transpose node to obtain a placing point position three-level list, wherein the first item in the two-level list is an item of a polygon midpoint duplicate removal list, and the tail item is an item of a rectangle group placing point list; finally, placing the rectangular family in a batch mode by utilizing AdaptionComponent.ByPoints nodes in combination with the three-level list of the placement points to finally obtain a placed rectangular family list;
s14, sequentially extracting the lengths of the line sections in the three-level list of the multi-line sections, and deriving the longest length and the shortest length in each two-level list in the list to obtain a longest length list and a shortest length list; and finally, sequentially inputting the longest length list and the shortest length list into corresponding family parameters of all the rectangular families of the rectangular family list, and sequentially placing the rectangular families in batches.
2. The Dynamo and Revit-based rectangle family batch placing method according to claim 1, wherein the step S1 comprises collating a drawing containing rectangle family outline information, separating all figures containing rectangle family outlines, and if the rectangle family is a rectangle family with a direction, adding a corresponding direction determination line in each group of rectangle figures; establishing an initial rectangular family model, wherein the establishment of two self-adaptive point locations is included, and the initial point of the self-adaptive point location of the initial rectangular family model is positioned at the geometric midpoint of the rectangular outline of the initial rectangular family model; after the end point is positioned at the right position of the rectangle group, the initial point moves a preset displacement point along the direction of the connecting line of the short side of the right rectangle in the rectangle outline, and the end point is used as a placing point of the rectangle group; and setting the numerical values of the Z axes of all the self-adaptive point positions as the initial plane numerical value zero, and setting corresponding family parameters.
3. The Dynamo and Revit based rectangular family batch placement method of claim 2, wherein family parameters include length and width.
4. The Dynamo and Revit rectangular family batch placing method according to claim 3, wherein step S2 comprises picking up graphic information of the outline of the rectangular family, converting the graphic information into a graphic list, converting the converted graphic list into a text list, and determining whether the text list contains Poly text information, wherein output information is Ture when the text list contains Poly text information, and output information is False when the text list does not contain Poly text information; obtaining a judgment result list, and separating the graph list through the judgment result list to obtain a rectangular family outline list and a direction judgment line list; the rectangular family outline list comprises all multi-segment lines, and the direction determination line list comprises all the segment lines; in specific implementation, the whole graph separated in the step S1 is picked up by a Dynamo tool, then the CAD graph is converted into a Dynamo graph list through an element. The Poly character information is specifically the graphic information displayed in Dynamo when the picked CAD graphic information is a multi-segment line, which is the beginning character information of Polycurve, and the multi-segment line is distinguished from other graphic information by using Poly english letters.
5. The Dynamo and Revit-based rectangular family batch placement method according to claim 4, wherein in step S4, the polygon reorganization comprises connecting each point in the current list with a point next to the point by a line segment, connecting the last point in the list with the first point in the list by a line segment after connecting the points in the current list in sequence, and finally obtaining an end-to-end polygon.
6. The Dynamo and Revit based rectangular family batch placement method of claim 5, wherein the tolerance decision is to measure the distance between the current point and the points in the remaining list in turn, and then delete the points whose distance is within the tolerance range to obtain the points in the polygon midpoint deduplication list.
7. The Dynamo and Revit-based rectangular family batch placement method according to claim 6, wherein in step S7, segment lengths of segments in each secondary list in a multi-segment tertiary list are obtained, and the segment lengths are sorted in ascending order to obtain a segment-sorted tertiary list; and sequentially and independently extracting a first item and a second item in each secondary list in the line segment sorting tertiary list to finally obtain a short edge line segment list I and a short edge line segment list II.
8. The Dynamo and Revit-based rectangular family batch placement method according to claim 7, wherein step S8 comprises sequentially extracting midpoint positions of each line segment in the short edge line segment list i and the short edge line segment list ii to obtain a short edge midpoint list i and a short edge midpoint list ii; and then, sequentially connecting each point location in the short side middle point list I and the short side middle point list II with each point location in the polygon middle point duplicate removal list to form a line, and finally obtaining a rectangular outline short side connecting line list I and a rectangular outline short side connecting line list II.
9. The Dynamo and Revit-based rectangular cluster batch placement method of claim 8, wherein in step S9, said intersection analysis is to determine whether a first input geometric figure item intersects a second input geometric figure item, and the output information is True when the first input geometric figure item intersects the second input geometric figure item, and False when the first input geometric figure item does not intersect the second input geometric figure item.
10. The Dynamo and Revit-based rectangular cluster batch placement method of claim 9, wherein in step S9, said all-no determination is to inquire whether all of the items in the current list are False, and the output information is True when all of the items in the list are False, and False when other items than False are included in the list.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210097416.4A CN114549776B (en) | 2022-01-27 | 2022-01-27 | Rectangular family batch placement method based on Dynamo and Revit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210097416.4A CN114549776B (en) | 2022-01-27 | 2022-01-27 | Rectangular family batch placement method based on Dynamo and Revit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114549776A CN114549776A (en) | 2022-05-27 |
CN114549776B true CN114549776B (en) | 2023-03-07 |
Family
ID=81674083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210097416.4A Active CN114549776B (en) | 2022-01-27 | 2022-01-27 | Rectangular family batch placement method based on Dynamo and Revit |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114549776B (en) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110580376A (en) * | 2019-07-30 | 2019-12-17 | 浙江大学 | revit and Dynamo-based pile foundation model creation method |
CN113486424A (en) * | 2021-07-05 | 2021-10-08 | 中铁一局集团有限公司 | Method and model for realizing Revit room modeling and naming labeling based on Dynamo |
CN113506364A (en) * | 2021-06-29 | 2021-10-15 | 中铁北京工程局集团有限公司 | Model creation method, system, device and storage medium |
CN113505424A (en) * | 2021-07-12 | 2021-10-15 | 南昌大学 | Interactive construction method for derived component of linear engineering |
CN113721903A (en) * | 2021-08-05 | 2021-11-30 | 安徽建工建筑工业有限公司 | Prefabricated part model modeling method based on Revit and Dynamo |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8600706B2 (en) * | 2007-05-01 | 2013-12-03 | Auto Prep, Llc | Systems and methods for identifying crash sources in a CAD environment |
CN113779683A (en) * | 2020-12-22 | 2021-12-10 | 中材海外工程有限公司 | Method and device for drawing design drawing of steel bar family placed in batch in laminated slab |
CN113779670B (en) * | 2021-08-26 | 2023-08-29 | 中铁一局集团建筑安装工程有限公司 | Method and system for realizing dual-control modeling of Revit pile foundation based on Dynamo |
-
2022
- 2022-01-27 CN CN202210097416.4A patent/CN114549776B/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110580376A (en) * | 2019-07-30 | 2019-12-17 | 浙江大学 | revit and Dynamo-based pile foundation model creation method |
CN113506364A (en) * | 2021-06-29 | 2021-10-15 | 中铁北京工程局集团有限公司 | Model creation method, system, device and storage medium |
CN113486424A (en) * | 2021-07-05 | 2021-10-08 | 中铁一局集团有限公司 | Method and model for realizing Revit room modeling and naming labeling based on Dynamo |
CN113505424A (en) * | 2021-07-12 | 2021-10-15 | 南昌大学 | Interactive construction method for derived component of linear engineering |
CN113721903A (en) * | 2021-08-05 | 2021-11-30 | 安徽建工建筑工业有限公司 | Prefabricated part model modeling method based on Revit and Dynamo |
Non-Patent Citations (2)
Title |
---|
BIM技术在桥梁设计阶段的应用;王晓;《工程科技Ⅱ辑》;20210615;全文 * |
张吉怀铁路绿豆坪大桥施工BIM技术研究与应用;周剑;《工程科技Ⅱ辑》;20210415;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114549776A (en) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096828B (en) | Building information modeling and construction method of upper through long rib or erection rib of floor frame beam based on BIM technology | |
CN108427818A (en) | One kind being based on BIM prefabricated member reinforcing bar data processing methods and device | |
CN108959694A (en) | BIM geometric model construction method for large-volume complex building | |
CN110162856B (en) | Intelligent beam stirrup generation method based on dynamo | |
CN101727521A (en) | Simplified attributive analysis method for automatic coding of three-dimensional ship modeling part | |
CN113806392A (en) | Building project list data processing method, project pricing method and device | |
CN102968539A (en) | Method for massively and quickly generating format drawing | |
CN114549776B (en) | Rectangular family batch placement method based on Dynamo and Revit | |
CN109992865B (en) | Method for processing elevation in AutoCAD engineering drawing | |
CN101458726A (en) | Wire cutting program generating system and method | |
CN112734934A (en) | STL model 3D printing slicing method based on intersecting edge mapping | |
KR102054756B1 (en) | Method for designing optimizationally 3D model library to International standard standard product in Shipbuilding Marine | |
CN102841988A (en) | System and method for matching nucleotide sequence information | |
CN113505411B (en) | Digital forming method for structure construction drawing | |
CN115578530A (en) | Method for creating three-dimensional tunnel geological model based on Dynamo | |
JP2701003B2 (en) | Solid model synthesizing apparatus and solid model synthesizing method | |
CN108280292A (en) | Tunnel excavation list side wall drift method based on BIM technology | |
CN108170989A (en) | Engineering construction model deriving method based on BIM technology | |
CN113779684B (en) | Revit-based roadbed slope lattice beam construction model construction method | |
CN108256242A (en) | Tunnel excavation based on BIM technology stays core indigenous method | |
CN108170987A (en) | The automatic hooking method of PBS structures based on BIM technology | |
CN116342738B (en) | Automatic extraction and graphic display manufacturing method of forbidden vector range based on GIS | |
CN113449359B (en) | Intelligent arrangement method for two-way laminated plate gluten based on close-splicing type seam connection technology | |
CN108170988A (en) | Three step of tunnel excavation, seven one step process based on BIM technology | |
CN107832537A (en) | A kind of method for numerical simulation of complex form residual stress |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |