Visual evaluation method for light pollution degree of plane glass curtain wall based on dynamo
By combining Dynamo and Revit, a visualization evaluation method based on the sun's position and the incident angle of reflected light solves the complexity and cost problems of light pollution evaluation for planar glass curtain walls, and provides convenient and accurate light pollution level calculation and visualization results.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- KUNMING UNIV OF SCI & TECH
- Filing Date
- 2022-10-20
- Publication Date
- 2026-05-29
AI Technical Summary
In the current technology, there is a lack of unified standards for evaluating light pollution from planar glass curtain walls. The evaluation process is complex and costly, making it difficult for ordinary engineering technicians to apply it widely.
A Dynamo-based visualization evaluation method was adopted, using Revit software and Dynamo programming technology. The light pollution level of the planar glass curtain wall was calculated by using the sun's position, the angle of incidence of reflected light, and brightness as evaluation indicators. The visualization results were output in accordance with the evaluation standards of Shanghai Environmental Protection Assessment Document No. 522 of 2015.
It achieves convenience and accuracy in light pollution assessment, reduces computational costs, and improves the persuasiveness and universality of the results, making it applicable to the widely used BIM software Revit.
Smart Images

Figure CN115600292B_ABST
Abstract
Description
Technical Field
[0008] ,
[0007] ,
[0001] The present invention belongs to the field of building information technology, and specifically relates to a visual evaluation method for the degree of light pollution of plane glass curtain walls based on Dynamo. Background Technique
[0002] Plane glass curtain walls have shone brightly in the field of modern building wall decoration due to their characteristics such as beauty, lightness, and convenient installation. Due to the widespread use of plane glass curtain walls, the light pollution phenomenon they cause seriously affects the normal life of indoor and outdoor residents, causing hazards such as traffic accidents and indoor heat radiation. Nowadays, there is no unified environmental impact assessment standard for the degree of light pollution caused by plane glass curtain walls. Only a few cities such as Shanghai have introduced a quantitative assessment system for the impact of plane glass curtain wall light pollution. According to the corresponding indicators in the document "Notice of the Shanghai Municipal Environmental Protection Bureau on Further Standardizing the Demonstration Work on the Impact of Light Reflection of Building Glass Curtain Walls" (Shanghai Environmental Protection Assessment
[2015] No. 522) issued in December 2015, the impact degree of light pollution is evaluated and analyzed to confirm the pollution level, but the calculation process is complex and cumbersome and is extremely prone to errors. Currently, the evaluation methods for plane glass curtain wall light pollution include: model measurement, numerical simulation calculation, software and self-developed programs for evaluating the impact of light pollution. These methods have disadvantages such as high evaluation cost, complex process, lack of standard specifications as a basis, and narrow popularity of software, making it difficult to serve ordinary engineering and technical personnel.
[0003] In view of this, the present invention is specifically proposed. Summary of the Invention
[0004] The technical problem to be solved by the present invention is to overcome the deficiencies of the prior art and provide a visual evaluation method for the degree of light pollution of plane glass curtain walls based on Dynamo. To avoid the phenomenon of different evaluation results caused by diverse evaluation indicators for the light pollution of existing glass curtain walls, the present invention is based on the requirements for the compilation of the analysis report on the impact of light reflection of building glass curtain walls issued in Document No. 522 of Shanghai Environmental Protection Assessment
[2015] , and uses the sun position, the incident angle of reflected light (glare angle), and brightness as evaluation indicators. By using the BIM series software Revit, which is most widely used in the construction industry, and utilizing Dynamo visual programming technology, the light pollution level of the plane glass curtain wall is calculated.
[0005] The basic concept of the technical solution adopted by the present invention to solve the above technical problem is as follows:
[0006] A visual evaluation method for the degree of light pollution of plane glass curtain walls based on Dynamo includes the following steps:
[0007] S1. According to the drawing information, construct or open a building model to be measured containing a plane glass curtain wall structure in Revit;
[0008] S2. Import background information such as the geographical location and test time of the building model;
[0009] S3. Use Dynamo to evaluate and analyze the degree of light pollution based on the background information;
[0010] S4. Determine the analysis level and output the visualization results.
[0011] Furthermore, in the above method, background information such as S2, the geographical location of the building model, and test time information is imported, including:
[0012] Open the Revit Daylight Path and enter the Daylight Settings. Set the model parameters, including instance parameters such as location, date, time, presets, and daylight study, to run Dynamo background information.
[0013] Furthermore, in the above method, S3, using Dynamo to evaluate and analyze the degree of light pollution based on background information, includes:
[0014] S31. Using Dynamo, select the curtain wall to be tested in the same direction in the building model using the Select Model Elements node, and use Element.Geometry to display the curtain wall panel in the Dynamo interface.
[0015] S32. Using Dynamo, the CurtainPanel.PanelPlane node determines whether the curtain wall panel is a plane. The Plane.Normal and Plane.Origin nodes respectively obtain the normal direction and center point of the plane of a single panel.
[0016] S33. Using Dynamo, the SunSettings.Current node obtains the sunlight for the set region and time, and the SunSettings.SunDirection node calculates the direction of the sunlight;
[0017] Create a line segment using the Line.ByStartPointDirectionLength node, with the starting point being the center point of the curtain wall panel and the direction being the direction of sunlight. Use the Code Block node to input the value 5000, which is the line segment length of 5000mm, to create a line segment representing the incident light.
[0018] S34. Using the Dynamo, Plane.ByOriginXAxisYAxi node, create a plane, and make a series of reference planes with the center point of the curtain wall panel as the origin, the normal direction of the panel as the X direction, and the incident direction of sunlight as the Y direction.
[0019] The Plane.Normal node obtains the normal direction of the created reference plane;
[0020] The plane of symmetry between the reflected ray and the incident ray is perpendicular to the aforementioned reference plane and passes through the normal. The normal direction of the curtain wall panel and the normal direction of the created reference plane are respectively the X and Y axes. The center point of the curtain wall panel is used as the origin to create the plane of symmetry. The Geotry.Mieeor node obtains the symmetrical shape of the graphic. With the created reference plane as the plane of symmetry, the line segment representing the incident ray is the graphic that needs to be mirrored, and the line segment representing the reflected ray is output.
[0021] S35. Using Dynamo and Vector.ByCoordinates nodes to form vectors, starting from the origin and inputting the coordinates of the endpoint through the CodeBlock node to form a vector perpendicular to the ground and pointing downwards.
[0022] Furthermore, the Line.ByStartPointDirectionLength node generates line segments of the vector starting from the center point of the curtain wall panel;
[0023] The Line.Direction node retrieves the direction of the line segment, which is either the direction of reflected light or the direction perpendicular to the ground downwards.
[0024] The Vector.AngleWithVector node outputs the angle between the directions of the two vectors in the Line.Direction node mentioned above;
[0025] By connecting the output value of the Vector.AngleWithVector node to the Code Block node with the input value of 90-X, the incident angle of the reflected light can be obtained.
[0026] The List.GetItemAtIndex node retrieves the index of the list item to proceed to the next item calculation. It forms a table by matching the incident angle of reflected light to the number of curtain wall panels in each building model. The Code Block node takes a specific value and connects to the index to select the corresponding value in the list.
[0027] S36. Using Dynamo, connect the SunSettings.Altitude node to the SunSettings.Current node to output the solar altitude angle of the currently set local time;
[0028] The solar illuminance E of the curtain wall panel is calculated by connecting the above node output values to the Math.Sin, Math.Exp, *, \ nodes based on the formula in the Shanghai Environmental Protection Assessment
[2015] 522 document.
[0029] The brightness B of the curtain wall panel is calculated by connecting the above node output values to the Math.PI, CodeBlock, *, and \ nodes based on the formula in the Shanghai Environmental Protection Assessment
[2015] 522 document.
[0030] S37. Using the Dynamo Vector.AngleWithVector node, calculate the angle between the incident light ray and the curtain wall normal direction. If the angle is greater than 90 degrees, the direct sunlight is blocked by the roof and walls, and no sunlight shines directly on the curtain wall. If the angle is less than 90 degrees, proceed to the next Python Script node.
[0031] S38. Using Dynamo, the Python Script node inputs Python code based on the light pollution level in the Shanghai Environmental Protection Assessment
[2015] 522 document, and determines the light pollution level based on the above calculation results.
[0032] S39. Using Dynamo, select the model of the terrain category in the building model in the Categories node, and obtain the terrain primitives in the All Elements of Category node. This completes the import of the terrain module and the operation in the Dynamo interface.
[0033] The All Elements of Category node connects to the Element.Geometry node, allowing terrain primitives to be displayed graphically in Dynamo.
[0034] S310. Using Dynamo, connect the input of the Element.Faces node to the output of the AllElements of Category node in the glass curtain wall normal module to obtain the face of each curtain wall panel;
[0035] The List.GetItemAtIndex node extracts items from the list by index, the Code Block node obtains the corresponding index item by inputting a specific value, and by trying to find the sun-facing side of the panel, a new list is finally formed.
[0036] The node determines whether X is less than Y. If it is, it outputs true, which means that the direct sunlight is not blocked by the roof and walls, and the projection surface is output. Otherwise, it outputs false, which means that the direct sunlight is blocked by the roof and walls, and the projection surface does not exist. The X input is a Vector.AngleWithVector node (the node that calculates the angle between the direct sunlight and the curtain wall normal), and the Y input is connected to a 90 Code Block node.
[0037] The List.FilterByBoolMask node filters the above judgment results. List items judged as true are output from the output terminal in, and list items judged as false are output from the output terminal out, thus obtaining a list of all sun-facing surfaces of the model. If all judgments of the model are false, the program ends here, that is, there is no output of the affected area.
[0038] The Face.Edges node retrieves all edges of all sun-facing faces;
[0039] The Edge.CurveGeometry node retrieves the basic curves that make up the edges, collectively referred to as Curves;
[0040] The Curve.Project node projects the acquired Curve onto a specified curve or surface; the Plane.XY node projects the curved shape that forms the sunlit side of the panel onto the XY plane (ground plane); the baseGeomertry node projects according to the Plane.XY connected to the input end; and the projectDirection node connects to the direction of reflected light (Line.Direction).
[0041] The MapTo node converts the brightness value into a value between 0 and 1, connects it to the targetRangeMin and targetRangeMax inputs respectively, connects the minimum and maximum brightness values to the rangeMin and rangeMax inputs respectively, and connects the brightness value to the inputValue input. Finally, MapTo outputs a brightness value that is in the range of 0 to 1.
[0042] The Color Range node takes a color list as its input (colors) and an indexes input to adjust the sorting of the color list. The value input is a number between 0 and 1 to select a color. A value closer to 1 will result in a color closer to cyan, and a value closer to 0 will result in a color closer to red.
[0043] The Display.ByGeometryColor node connects the geometry input to be colored (an output of the Curve.Project node) and the color input to the display color (an output of the Color Range node). Finally, the projected grid is displayed using the selected color, thus completing the brightness visualization.
[0044] By adopting the above technical solution, the present invention has the following beneficial effects compared with the prior art.
[0045] (1) This invention is based on the evaluation indicators and standards in the document No. 522 of Shanghai Environmental Protection Assessment (2015). The program output results are more convincing. It is more convenient and accurate to calculate the specific parameters of light pollution by using the Dyanmo computer program.
[0046] (2) Compared with other existing evaluation methods, this method uses Revit software, which is currently the most widely used BIM software, to run on the platform, making it more universal and applicable to engineering professionals.
[0047] (3) This invention uses the Dyanmo program to calculate various specific parameters of light pollution. The program has low calculation cost, convenient evaluation process, low learning difficulty, and high visualization of output results, making it more widely applicable.
[0048] The specific embodiments of the present invention will now be described in further detail with reference to the accompanying drawings. Attached Figure Description
[0049] The accompanying drawings, which form part of this application, are used to provide a further understanding of the invention. The illustrative embodiments and descriptions of the invention are used to explain the invention, but do not constitute an undue limitation of the invention. Obviously, the drawings described below are merely some embodiments, and those skilled in the art can obtain other drawings based on these drawings without creative effort. In the drawings:
[0050] Figure 1 This is a schematic diagram of a method flow according to an embodiment of the present invention;
[0051] Figure 2 This is a schematic diagram of the sunlight path according to an embodiment of the present invention;
[0052] Figure 3 This is a schematic diagram of the location and time for setting sunlight according to an embodiment of the present invention;
[0053] Figure 4 This is a screenshot of the running program interface according to an embodiment of the present invention;
[0054] Figure 5 This is a detailed diagram of the node connections for calculating the incident angle of reflected light according to an embodiment of the present invention;
[0055] Figure 6 This is a detailed diagram of the node connections for calculating brightness according to an embodiment of the present invention;
[0056] Figure 7 This is a detailed diagram of the code and node connections used in the evaluation index module according to an embodiment of the present invention.
[0057] It should be noted that these accompanying drawings and textual descriptions are not intended to limit the scope of the invention in any way, but rather to illustrate the concept of the invention to those skilled in the art by referring to specific embodiments. Detailed Implementation
[0058] To make the objectives, technical solutions, and advantages of the embodiments of the present invention clearer, the technical solutions in the embodiments will be clearly and completely described below with reference to the accompanying drawings. The following embodiments are used to illustrate the present invention, but are not intended to limit the scope of the present invention.
[0059] See Figure 1-7 This embodiment provides a Dynamo-based method for visually evaluating the degree of light pollution from planar glass curtain walls, including:
[0060] S1. Based on the drawing information, construct or open the building model to be tested containing a planar glass curtain wall structure in Revit;
[0061] S2. Import background information such as the geographical location and test time of the building model;
[0062] S3. Use Dynamo to evaluate and analyze the degree of light pollution based on the background information;
[0063] S4. Determine the analysis level and output the visualization results.
[0064] See Figure 2 , Figure 3 In one embodiment of the Dynamo-based evaluation and analysis of light pollution levels around a planar glass curtain wall, the import of background data such as S2, the geographical location of the building model, and test time information includes:
[0065] Open the Revit Daylight Path and enter the Daylight Settings. Set the model parameters, including instance parameters such as location, date, time, presets, and daylight study, to run Dynamo background information.
[0066] See Figure 4-7 In one embodiment of the present invention, a light pollution level assessment and analysis of the surrounding environment of a planar glass curtain wall based on Dynamo, S3, using Dynamo to perform light pollution level assessment and analysis based on background information, includes:
[0067] First, Dynamo is used to obtain the background information of the project to be tested. The Select Model Elements node selects the curtain wall to be tested in the same direction in the building model. Element.Geometry displays the curtain wall panel in the Dynamo interface. The CurtainPanel.PanelPlane node determines whether the curtain wall panel is planar. The Plane.Normal and Plane.Origin nodes obtain the normal direction and center point of the plane of a single panel, respectively. The SunSettings.Current node obtains the sunlight of the set region and time.
[0068] Secondly, Dynamo was used to visualize the range of light pollution from the building under test. A line segment was created using the Line.ByStartPointDirectionLength node, with the starting point being the center point of the curtain wall panel and the direction being the direction of sunlight incidence. (Code) The `Block` node takes a value of 5000, representing a line segment length of 5000mm, and creates a line segment representing the incident ray. The `Plane.ByOriginXAxisYAxi` node creates a plane, with the center point of the curtain wall panel as the origin, the panel's normal direction as the X-axis, and the sunlight's incident direction as the Y-axis. The `Plane.Normal` node obtains the normal direction of the created reference planes. The plane of symmetry between the reflected and incident rays is perpendicular to these reference planes and passes through their normals. The normal directions of the curtain wall panel and the created reference planes are used as the X and Y axes, respectively. A plane of symmetry is created with the center point of the curtain wall panel as the origin. The `Gemotry.Mieeor` node obtains the symmetrical shape of the graphic, using the created reference plane as the plane of symmetry. The line segment representing the incident ray is the shape to be mirrored, and the line segment representing the reflected ray is output. The `Vector.ByCoordinates` node forms a vector, starting from the origin and passing through the `Code` node. The Block node takes the coordinate values of the endpoint as input to form a vector perpendicular to the ground and pointing downwards. The Line.ByStartPointDirectionLength node generates a line segment of the vector starting from the center point of the curtain wall panel. The Line.Direction node obtains the direction of the line segment, which is the direction of reflected light and the direction perpendicular to the ground and pointing downwards.
[0069] Dynamo is used to calculate the light pollution of the building under test. Specifically, the SunSettings.SunDirection node calculates the direction of sunlight, the Vector.AngleWithVector node outputs the angle between the Line.Direction node and the downward direction vector, and its output value is connected to the Code Block node with an input value of 90-X to obtain the incident angle of reflected light. The List.GetItemAtIndex node obtains the index item of the list to enter the next item calculation process. According to the number of curtain wall panels of each building model, a table is formed by corresponding the incident angle of reflected light. The Code Block node inputs the specific value and connects to the index to select the corresponding value in the list. The SunSettings.Altitude node is connected to the SunSettings.Current node to output the solar altitude angle of the current set local time. The output values of the above nodes are connected to the Math.Sin, Math.Exp, *, \ nodes based on the formula of Shanghai Environmental Protection Assessment
[2015] 522 to calculate the solar illuminance E of the curtain wall panel. The output values of the above nodes are connected to the Math.PI, Code, and \ nodes based on the formula of Shanghai Environmental Protection Assessment
[2015] 522 to calculate the solar illuminance E of the curtain wall panel. The Block, *, and \ nodes calculate the brightness B of the curtain wall panel. The Vector.AngleWithVector node calculates the angle between the incident light and the curtain wall normal. If the angle is greater than 90 degrees, the direct sunlight is blocked by the roof and walls, and no sunlight directly hits the curtain wall. If the angle is less than 90 degrees, proceed to the next Python Script node.
[0070] Finally, the terrain information of the project under test was imported into Dynamo to obtain the light pollution assessment level and visualize the degree and extent of impact. The Python Script node inputs Python code based on the light pollution level in the Shanghai Environmental Protection Assessment
[2015] 522 document. The light pollution level is determined based on the above calculation results. The Categories node selects the terrain category model in the building model. The All Elements of Category node obtains the terrain primitives, thus completing the import of the terrain module and performing operations in the Dynamo interface. The All Elements of Category node connects to the Element.Geometry node to display the terrain primitives graphically in Dynamo. The input end of the Element.Faces node connects to the output end of the All Elements of Category node in the glass curtain wall normal module to obtain the face of each curtain wall panel. The List.GetItemAtIndex node extracts the items of the list by index. Code The `Block` node takes a specific value as input to obtain the corresponding index item, attempts to find the sun-facing side of the panel, and finally forms a new list. The `<` node checks if X is less than Y. If so, it outputs `true`, indicating that the direct sunlight is not blocked by the roof and walls, and the projection surface is output; otherwise, it outputs `false`, indicating that the direct sunlight is blocked by the roof and walls, and the projection surface does not exist. The X input is a `Vector.AngleWithVector` node (the node that calculates the angle between the direct sunlight and the curtain wall normal), and the Y input is connected to the 90° `Code`. The Block node and List.FilterByBoolMask node filter the above judgment results. List items judged as true are output from the in output terminal, and list items judged as false are output from the out output terminal, resulting in a list of all sun-facing surfaces of the model. If all judgments for the model are false, the program ends here, meaning there is no output influence area. The Face.Edges node obtains all edges of all sun-facing surfaces, and the Edge.CurveGeometry node obtains the basic curves that make up the edges, collectively referred to as Curves. The Curve.Project node projects the obtained Curves onto a specified curve or surface. The Plane.XY node projects the curves that make up the sun-facing edges of the panel onto the XY plane (ground plane). The baseGeomertry node projects according to the Plane.XY connected to the input terminal, and the projectDirection node connects the reflected light direction (Line).The `MapTo` node converts the brightness value to a value between 0 and 1, connecting it to the `targetRangeMin` and `targetRangeMax` inputs respectively. The minimum and maximum brightness values are connected to the `rangeMin` and `rangeMax` inputs respectively. The brightness value is connected to the `inputValue` input. Ultimately, `MapTo` outputs brightness values within the range of 0 to 1. The `Color Range` node takes a list of colors as its input (`colors`), adjusts the order of the color list at its `indices` input, and selects a color by entering a value between 0 and 1 at its `value` input. The `Display.ByGeometryColor` node connects the `geometry` input to the graphic to be colored (an output of the `Curve.Project` node) and the `color` input to the display color (an output of the `Color Range` node). Finally, the projected grid is displayed using the selected color, completing the brightness visualization.
[0071] The above description is merely a preferred embodiment of the present invention and is not intended to limit the present invention in any way. Although the present invention has been disclosed above with reference to preferred embodiments, it is not intended to limit the present invention. Any person skilled in the art can make some modifications or alterations to the above-described technical content to create equivalent embodiments without departing from the scope of the present invention. Any simple modifications, equivalent changes, and alterations made to the above embodiments based on the technical essence of the present invention without departing from the scope of the present invention shall still fall within the scope of the present invention.
Claims
1. A visualization evaluation method for the degree of light pollution from planar glass curtain walls based on Dynamo, characterized in that, Includes the following steps: S1. Based on the drawing information, construct or open the building model to be tested containing a planar glass curtain wall structure in Revit; Import background information such as the geographical location and test time of the building model in S2; S3. Utilize Dynamo to evaluate and analyze the degree of light pollution based on background information; use Dynamo to obtain the geometric information of the glass curtain wall panels, including the normal direction and center point; use Dynamo to obtain the solar direction vector based on geographical location and test time; use Dynamo to calculate the direction of reflected light and the angle of incidence of reflected light based on the solar direction vector and the geometric information of the curtain wall panels; use Dynamo to calculate the solar illuminance E and the curtain wall brightness B based on the solar altitude angle h0; use Dynamo to determine the level of light pollution according to the preset level classification based on the angle of incidence of reflected light and brightness B. S4. Determine the analysis level and output the visualization results.
2. The method for visually evaluating the degree of light pollution from planar glass curtain walls based on Dynamo, as described in claim 1, is characterized in that... S2 specifically refers to: Open the Revit Daylight Path and enter the Daylight Settings. Set the model parameters, including instance parameters such as location, date, time, presets, and daylight study, to run Dynamo background information.
3. The method for visually evaluating the degree of light pollution from planar glass curtain walls based on Dynamo, as described in claim 1, is characterized in that... S3 specifically includes: S31. Using Dynamo, select the curtain wall to be tested in the same direction in the building model using the Select Model Elements node, and use Element.Geometry to display the curtain wall panel in the Dynamo interface; S32. Using Dynamo, the CurtainPanel.PanelPlane node determines whether the curtain wall panel is a plane, and the Plane.Normal and Plane.Origin nodes obtain the normal direction and center point of the plane of a single panel respectively. S33. Using Dynamo, the SunSettings.Current node obtains the sunlight for the set region and time, and the SunSettings.SunDirection node calculates the direction of the sunlight; The Line.ByStartPointDirectionLength node creates a line segment with the starting point being the center point of the curtain wall panel and the direction being the direction of sunlight. The Code Block node is used to input the value 5000, which is the line segment length of 5000mm, to create a line segment representing the incident light. S34. Using the Dynamo, Plane.ByOriginXAxisYAxi node, create a plane, and make a series of reference planes with the center point of the curtain wall panel as the origin, the normal direction of the panel as the X direction, and the incident direction of sunlight as the Y direction. The Plane.Normal node obtains the normal direction of the created reference plane; The plane of symmetry between the reflected ray and the incident ray is perpendicular to the aforementioned reference plane and passes through the normal. The normal direction of the curtain wall panel and the normal direction of the created reference plane are respectively the X and Y axes. The center point of the curtain wall panel is used as the origin to create the plane of symmetry. The Geotry.Mieeor node obtains the symmetrical shape of the graphic. With the created reference plane as the plane of symmetry, the line segment representing the incident ray is the graphic that needs to be mirrored, and the line segment representing the reflected ray is output. S35. Using Dynamo and Vector.ByCoordinates nodes to form vectors, starting from the origin and inputting the coordinates of the endpoint through the CodeBlock node to form a vector perpendicular to the ground and pointing downwards. The Line.ByStartPointDirectionLength node generates line segments of the vector starting from the center point of the curtain wall panel; The Line.Direction node retrieves the direction of the line segment, which is either the direction of reflected light or the direction perpendicular to the ground downwards. The Vector.AngleWithVector node outputs the angle between the directions of the two vectors in the Line.Direction node mentioned above; By connecting the output value of the Vector.AngleWithVector node to the Code Block node with the input value of 90-X, the incident angle of the reflected light can be obtained. The List.GetItemAtIndex node retrieves the index of the list item to proceed to the next item calculation. It forms a table by corresponding the incident angle of reflected light to the number of curtain wall panels in each building model. The Code Block node is entered with a specific value and connected to the index to select the corresponding value in the list. S36. Using Dynamo, connect the SunSettings.Altitude node to the SunSettings.Current node to output the solar altitude angle h0 of the currently set local time; The solar illuminance E of the curtain wall panel is calculated by connecting the above node output values to the Math.Sin, Math.Exp, *, \ nodes based on the luminance calculation formula. The brightness B of the curtain wall panel is calculated by connecting the above node output values to the Math.PI, Code Block, *, and \ nodes based on the brightness calculation formula; where the brightness calculation formula is: ; In the formula, ρ is the outdoor visible light reflectance, and π is pi. S37. Using the Dynamo Vector.AngleWithVector node, calculate the angle between the incident light ray and the curtain wall normal direction. If the angle is greater than 90 degrees, the direct sunlight is blocked by the roof and walls, and no sunlight shines directly on the curtain wall. If the angle is less than 90 degrees, proceed to the next Python Script node. S38. Using Dynamo, the Python Script node inputs Python code based on the preset light pollution level, and determines the light pollution level based on the above calculation results; S39. Using Dynamo, select the model of the terrain category in the building model in the Categories node, and obtain the terrain primitives in the All Elements of Category node. This completes the import of the terrain module and the operation in the Dynamo interface. The All Elements of Category node connects to the Element.Geometry node, allowing the terrain primitives to be displayed graphically in Dynamo. S310. Using Dynamo, connect the input of the Element.Faces node to the output of the All Elementsof Category node in the glass curtain wall normal module to obtain the face of each curtain wall panel; The List.GetItemAtIndex node extracts items from the list by index, the Code Block node obtains the corresponding index item by inputting a specific value, and by trying to find the sun-facing side of the panel, a new list is finally formed. The node determines whether X is less than Y. If it is, it outputs true, which means that the direct sunlight is not blocked by the roof and walls, and the projection surface is output. Otherwise, it outputs false, which means that the direct sunlight is blocked by the roof and walls, and the projection surface does not exist. The X input is a Vector.AngleWithVector node (the node that calculates the angle between the direct sunlight and the curtain wall normal), and the Y input is connected to a 90 Code Block node. The List.FilterByBoolMask node filters the results of the judgment on X. List items judged as true are output from the output terminal in, and list items judged as false are output from the output terminal out, thus obtaining a list of all sun-facing sides of the model. If all judgments of the model are false, the program ends here, that is, there is no output of the affected area. The Face.Edges node retrieves all edges of all sun-facing faces; The Edge.CurveGeometry node retrieves the basic curves that make up the edges, collectively referred to as Curves; The Curve.Project node projects the acquired Curve onto a specified curve or surface. The Plane.XY node projects the curve that forms the sunlit side of the panel onto the XY plane (ground plane). The baseGeomertry node projects according to the Plane.XY connected to the input end. The projectDirection node connects to the direction of reflected light (Line.Direction). The MapTo node converts the brightness value into a value between 0 and 1, connects it to the targetRangeMin and targetRangeMax inputs respectively, connects the minimum and maximum brightness values to the rangeMin and rangeMax inputs respectively, and connects the brightness value to the inputValue input. Finally, MapTo outputs a brightness value that is in the range of 0 to 1. The Color Range node takes a color list as its input (colors) and an indexes input to adjust the sorting of the color list. The value input is a number between 0 and 1 to select a color. A value closer to 1 will result in a color closer to cyan, and a value closer to 0 will result in a color closer to red. The Display.ByGeometryColor node connects the geometry input to be colored (an output of the Curve.Project node) and the color input to the display color (an output of the Color Range node). Finally, the projected grid is displayed using the selected color, thus completing the brightness visualization.