A system and method for automatic analysis and calculation of constant load of s3d electrical support

The modularly designed S3D electrical support constant load automatic analysis system solves the problem of the lack of support constant load calculation in S3D software, realizes automated analysis, improves calculation efficiency and accuracy, supports multi-layer support analysis, and has a complete error reporting mechanism, thereby improving the quality of design models.

CN115238401BActive Publication Date: 2026-02-24SHANGHAI NUCLEAR ENGINEERING RESEARCH & DESIGN INSTITUTE CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202210527797.5
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2022-05-16
Publication Date
2026-02-24
Estimated Expiration
2042-05-16

AI Technical Summary

Technical Problem

The S3D software lacks mature functions for calculating and analyzing the constant load of supports, which requires designers to perform calculations manually, which is time-consuming and prone to human error, affecting the accuracy of the analysis results.

Method used

An S3D electrical support constant load automatic analysis and calculation system is provided, including modular design: cable tray and piping object analysis, user selection, topology relationship analysis, electrical support positioning, constant load calculation and result display, supporting multi-layer support analysis, and having an error reporting and exit mechanism.

Benefits of technology

It automates the mechanical calculation of electrical supports, improving calculation efficiency and quality. It supports multi-layer support analysis, displays the calculation process and results for easy user verification, and has a complete error reporting mechanism to improve the quality of design models.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115238401B_ABST
    Figure CN115238401B_ABST
Patent Text Reader

Abstract

The application discloses a system for automatically analyzing and calculating constant load of S3D electrical support, relates to the technical field of constant load of electrical support, and discloses an implementation method for automatically analyzing and calculating constant load of S3D electrical support. The system for automatically analyzing and calculating constant load of S3D electrical support has a complete error reporting and exiting mechanism and is robust. Meanwhile, the system can perform design checking on a design model during the process of calculation and analysis, thereby improving the design quality of the bridge support and the design model of the pipe arrangement.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention relates to the field of electrical support constant load technology, specifically to a system and method for automatic analysis and calculation of S3D electrical support constant load. Background Technology

[0002] S3D is a widely used 3D design software. In the process of nuclear power plant design, in order to ensure the safety of nuclear power plant design, it is necessary to conduct comprehensive mechanical analysis and calculation on various supports for cable trays and piping to ensure that the currently configured supports can safely and reasonably support the corresponding cable trays or piping. This part of the mechanical analysis and calculation includes the analysis and calculation of the dead load of the supports, that is, the analysis and calculation of the load on the support caused by the weight of the cable trays or piping and their components.

[0003] S3D software does not provide a mature and usable function module for calculating and analyzing the permanent load of electrical supports. Therefore, in order to complete the calculation and analysis of the permanent load of electrical supports, designers must manually perform the calculation and analysis of the permanent load of electrical supports based on the actual layout of the design model. This consumes a lot of working time for relevant personnel and is very easy to introduce human error, thus affecting the accuracy of the analysis results. Summary of the Invention

[0004] The purpose of this invention is to provide a system and method for automatic analysis and calculation of constant load on S3D electrical supports, in order to solve the problems mentioned in the background art.

[0005] To achieve the above objectives, the present invention provides the following technical solution:

[0006] A system for automatic analysis and calculation of the constant load of S3D electrical supports includes: an S3D cable tray and piping object parsing module, a user selection module, a cable tray and piping topology relationship parsing module, an electrical support positioning module, an electrical support constant load calculation and analysis module, a display analysis module, and a report output module. The S3D cable tray and piping object parsing module is used to parse out all S3D cable tray and piping objects under the current project, providing input data for the subsequent user selection module.

[0007] The user selection module is used to determine the scope of automatic analysis and calculation of electrical support constant load. The electrical supports involved in the subsequent calculation are the supports on the cable trays and pipes selected by the user. The selection data is provided by the aforementioned S3D cable tray and pipe object parsing module.

[0008] The cable tray and piping topology analysis module is used to construct an overall topology network model for the cable trays or piping selected by the user for calculation, providing a basis for subsequent analysis and calculation.

[0009] The electrical support positioning module is used to place the electrical supports that need to be calculated into the cable tray or piping topology network model constructed in the above steps according to the actual situation in the design model, so as to form a calculation and analysis model.

[0010] The electrical support constant load calculation and analysis module is used to perform constant load calculation and analysis on all electrical supports in the calculation and analysis model.

[0011] The display and analysis module is used to display the final calculation and analysis results of the electrical support constant load, as well as the path planning and intermediate parameter variables involved in the calculation process, to the user for result checking.

[0012] The report output module is used to output the final results and process parameters in the form of a report, which facilitates users to perform subsequent system integration and other uses.

[0013] A method for automatically analyzing and calculating the constant load of S3D electrical supports, characterized by the following steps:

[0014] S1, retrieve the list of all cable trays and piping in the project, then proceed to S2;

[0015] S2, the user selects the list of cable trays and piping that need to be automatically analyzed and calculated for electrical support constant load, then enters S3, and if you need to exit, enter S12;

[0016] S3: Obtain all support brackets on each cable tray or conduit from the user-selected list of cable trays and conduits to form a list of all electrical supports that need to be calculated and analyzed, then proceed to S4;

[0017] S4, create a set allExistRuns to store the cable trays and piping that have completed the analysis and calculation, create a set allErrorRuns to store the cable trays and piping that are judged to have design errors, and proceed to S5;

[0018] S5, loop through the electrical support structure. If the loop is complete, proceed to S22; otherwise, proceed to S6.

[0019] S6, check if the current stent currentSup has completed the analysis and calculation. If yes, return to S5; otherwise, proceed to S7.

[0020] S7. Since electrical supports may have multiple layers, they can support multiple pipes or cable trays at the same time. Therefore, obtain the set of pipes or cable trays supported by the current support, runCollection, and proceed to S8.

[0021] S8: Loop through the runCollection collection. If the loop is complete, proceed to S21; otherwise, proceed to S9.

[0022] S9, check if the current piping or cable tray is in allExistRuns or allErrorRuns. If it is, return directly to S8; otherwise, proceed to S10.

[0023] S10: Build a topology network model for the current piping or cable tray. If the process completes successfully, proceed to S11; otherwise, exit and proceed to S14.

[0024] S11, check if the extraRuns collection is empty. If it is empty, proceed to S15; otherwise, retrieve the first object extraRun from the extraRuns collection and proceed to S12.

[0025] S12, check if extraRun is in existRuns or allErrorRuns. If it is, remove extraRun from extraRuns and return to S11; otherwise, proceed to S13.

[0026] S13, build the topology network model for extraRun; if it completes normally, put extraRun into existRuns and remove extraRun from extraRuns, then return to S11; if an error occurs, exit and proceed to S14.

[0027] S14: Put all objects in the existRuns and extraRuns collections into allErrorRuns, clear UPDList, and return to S8;

[0028] S15: Loop through the existRuns set. If the loop is complete, proceed to S20; otherwise, proceed to S16.

[0029] S16, obtain the supportCol set of all supports on the currentRun, and proceed to S17;

[0030] S17, loop through supportCol. If the loop is complete, proceed to S19; otherwise, proceed to S18.

[0031] S18, perform constant load calculation and analysis of the current support supportCol on currentRun based on the topological relationship network model, and return to S17 after completion;

[0032] S19, put currentRun into allExistRuns, and return to S15;

[0033] S20, clear existRuns and UDPList, and return to S8;

[0034] S21, mark the current stent currentSup as completed analysis, and return to S5;

[0035] S22 processes all cable trays and pipe supports in allErrorRuns, displays the analysis results of these supports as errors and adds them to the final calculation results, and then proceeds to S23; if allErrorRuns is empty, proceed directly to S23;

[0036] S23, Display the final calculation result to the user and confirm whether download is required based on the user's needs; after completion, proceed to S24;

[0037] S24, End.

[0038] Preferably, in step S9, if the piping or cable tray is not in allExistRuns or allErrorRuns, an existRuns collection is created to store the piping or cable tray that has completed calculation and analysis in the current loop, and an extraRuns collection is created to store the piping and cable tray that requires additional calculation in the current loop. A custom object UDPItem is created to store the topological relationship structure of the cable tray feature and the piping feature. This structure should include the current feature object, the coordinate information of the feature, the cross-sectional width corresponding to the feature, the current feature type, and the connection unit of the current feature, including the feature object and its connection point coordinates. At the same time, a UDPItem object collection UDPList is created to store the topological relationship network in which the current piping is located. After completion, proceed to step S10.

[0039] Preferably, the step S10 of building a topology network model for the current piping or cable tray includes the following steps:

[0040] S10.1, Obtain all feature objects corresponding to the current piping or cable tray currentRun to form a features set, and then proceed to S10.2;

[0041] S10.2 Remove feature objects from the feature set that do not correspond to entity parts and are not branch points. These objects have no effect on the composition of the analysis model. After completion, proceed to S10.3.

[0042] S10.3, loop through the features set. If the loop is complete, proceed to S10.38; otherwise, proceed to S10.4.

[0043] S10.4, Create a UDPItem object udpitem; Set the current feature to currentFeature, check if currentFeature is turnFeature, if so, mark it as a turn item in udpitem; after completion, proceed to S10.5;

[0044] S10.5, Obtain the cross-sectional width of currentFeature through the corresponding interface. For variable diameter components, take the larger cross-sectional width as the width of currentFeature according to the conservative principle; after completion, proceed to S10.6.

[0045] S10.6 If the start and end points of currentFeature are the same, udpitem is marked as a branch and proceed to S10.7; otherwise, proceed to S10.11.

[0046] S10.7 Record the currentFeature and the center coordinates of the currentFeature in udpitem. Find the set of connectedFeatures that are connected to the main axis of the current branch point in the features set by using the coordinate matching principle. After completion, proceed to S10.8.

[0047] S10.8 Find the set of branch connection feature objects offlineFeatures corresponding to the current branch point feature, and put these features and connection point coordinates into udpitem as connection units; after completion, proceed to S10.9;

[0048] S10.9, loop through all the piping or cable trays corresponding to all features in offlineFeatures, and proceed to S10.10 after the loop is completed;

[0049] S10.10: Loop through the set connectedFeatures. If a feature in connectedFeatures is an object in offlineFeatures in S10.8, put the corresponding feature and connection point coordinates into udpitem as the connection unit of udpitem. After the loop is completed, proceed to S10.37.

[0050] S10.11, record the currentFeature and its center coordinates in udpitem; find the currentPart corresponding to the currentFeature; determine whether the currentPart is a straight section of the cable tray or a straight section of the piping. If it is, mark the currentPart as a straight section. If not, check whether the number of end faces of the current part exceeds two. If it does, mark the current UDP as a branch. After completion, proceed to S10.12.

[0051] S10.12, obtain the starting coordinates of the currentFeature, and confirm whether there is a connected feature at the starting end face of the currentFeature by the coordinate coincidence; if more than one feature is found, proceed to S10.13; otherwise, if exactly one feature is found, proceed to S10.14; otherwise, if no feature is found, proceed to S10.15.

[0052] S10.13, In this case, it must be connected to a branch. Therefore, find the branch feature with the same start and end points from multiple features. If it cannot be found, it means there is a design error. Put currentRun into errorRuns and go to S10.39. Otherwise, put the found branch feature together with the start coordinates into udpitem as a connection unit of udpitem. After completion, go to S10.16.

[0053] S10.14, put the found unique feature along with the starting coordinates into the UDP connection unit, and then proceed to S10.16;

[0054] S10.15, Place the empty object along with its starting coordinates into the UDP connection unit, and then proceed to S10.16.

[0055] S10.16 Obtain the endpoint coordinates of the currentFeature. Confirm whether there is a connected feature at the endpoint of the currentFeature by checking the coordinate coincidence. If more than one feature is found, proceed to S10.17. Otherwise, if exactly one feature is found, proceed to S10.18. Otherwise, if no feature is found, proceed to S10.19.

[0056] S10.17, In this case, it must be connected to a branch. Therefore, find the branch feature with the same start and end points from multiple features. If it cannot be found, it means there is a design error. Put currentRun into errorRuns and go to S10.39. Otherwise, put the found branch feature together with the end point coordinates into udpitem as a connection unit of udpitem. After completion, go to S10.20.

[0057] S10.18, put the unique feature found along with the endpoint coordinates into the UDP connection unit, and then proceed to S10.20;

[0058] S10.19, Place the empty object along with the endpoint coordinates into the UDP connection unit, and then proceed to S10.20;

[0059] S10.20, check if there are branch connections in the current component, and find the branch feature set offlineCol of currentFeature through the OffLineFeatures relationship; if offlineCol is not empty, mark udpitem as a branch component, and proceed to S10.21 after completion; if offlineCol is empty, proceed directly to S10.22;

[0060] S10.21, take the coordinates corresponding to the feature in offlineCol and the empty object as the connection unit of udpitem and put them into udpitem. After completion, proceed to S10.22.

[0061] S10.22 Since there may be gaps between the cable tray components and the straight sections, and there is also the possibility of branch access, it is impossible to find the corresponding connection feature from the start and end coordinates of the current feature. Therefore, check whether the part has a connection point with other parts through the RelConnectionAndPartOcc relationship of the part corresponding to the currentFeature. If it exists, obtain the connection point set connCol and proceed to S10.23. If it does not exist, proceed directly to S10.37.

[0062] S10.23, loop through the set of connection points. If the loop is complete, proceed to S10.37; otherwise, proceed to S10.24.

[0063] S10.24, find the DistribPort set corresponding to the current connection point conn, set two variables: cableTrayPos and cableTrayPartPos, and set the dpLocation variable. If currentPart was marked as a straight segment in S6.13, set dpLocation to the coordinates of cableTrayPartPos; if currentPart was not marked as a straight segment, set dpLocation to the coordinates of cableTrayPos. After completion, proceed to S10.25.

[0064] S10.25, loop through the connected units in udpitem that contain only coordinates. After the loop is complete, return to S10.23; otherwise, obtain the current coordinate currentPos and proceed to S10.26.

[0065] S10.26, check if the coordinates of dpLocation and currentPos are consistent. If they are consistent, proceed to S10.27; otherwise, return to S10.25.

[0066] S10.27 If currentPart is not a straight segment and cableTrayPartPos is not empty, in order to ensure that there are no gaps in the final length calculation, change the coordinates of the current connection element to cableTrayPartPos; otherwise, do not make any changes; after completion, proceed to S10.28.

[0067] S10.28, find the connection object connectedPart of currentPart through conn's RelConnectionAndPartOcc, and then find the collection of all features connectedFeatures corresponding to connectedPart; after completion, proceed to S10.29;

[0068] S10.29, based on the type of connectedPart, find the feature set possibleFeatures that are connected and linked in connectedFeatures, and then proceed to S10.30;

[0069] S10.30 If possibleFeatures is not empty, proceed to S10.31; otherwise, if no connectable feature can be found from the end face, it is necessary to consider whether the current part can be inserted into other parts as a branch component, and proceed to S10.33.

[0070] S10.31 If possibleFeatures is exactly an object, use this object as connectedFeature, put connectedFeature into the connection object of the current connection unit, and proceed to S10.32; otherwise, find the branch feature with the same start and end point from possibleFeatures, use it as connectedFeature, put connectedFeature into the connection object of the current connection unit, and proceed to S10.32.

[0071] S10.32, find the cable tray or piping otherRun corresponding to connectedFeature; if otherRun is in errorRuns, put currentRun into errorRuns and go directly to S10.39; otherwise, if otherRun is neither in existingRuns nor currentRun, put it into extraRuns and return to S10.33.

[0072] S10.33: Loop through the connectedFeatures collection. After the loop is complete, return to S10.23; otherwise, proceed to S10.34.

[0073] S10.34, find the branch feature set offLineFeatureCol of the current tempFeature through the OffLineFeatures relationship; if connectedPart is not a straight section of cable tray or straight section of piping, proceed to S10.35; otherwise, proceed to S10.36;

[0074] S10.35, check if there is a feature object with the same coordinates as cableTrayPos in offLineFeatureCol. If it exists, treat this feature as connectedFeature, store currentFeature in the connection object of the current connection unit, and go to S10.32. Otherwise, return directly to S10.33.

[0075] S10.36, Check if there is a feature object in offLineFeatureCol with the same coordinates as cableTrayPartPos. If it exists, treat this feature as connectedFeature, store currentFeature in the connection object of the current connection unit, and go to S10.32. Otherwise, return directly to S10.33.

[0076] S10.37, Remove connection units in udpitem that do not contain connection objects, and put udpitem into UDPList; return to S10.3 after completion;

[0077] S10.38, exit normally;

[0078] S10.39, error message and exit.

[0079] Preferably, in S10.9, the piping or cable tray corresponding to all features in offlineFeatures is iterated. If the corresponding piping or cable tray appears in errorRuns, currentRun is placed into errorRuns, and the process proceeds directly to S10.39; otherwise, if the found piping or cable tray is neither in existingRuns nor currentRun, it is placed into extraRuns. After the iteration is complete, the process proceeds to S10.10.

[0080] Preferably, in S10.24, cableTrayPos is used to record the coordinates of the CableTrayPort or ConduitPort in the DistribPort set, and cableTrayPartPos records the coordinates of the CableTrayStockPort or ConduitStockPort in the DistribPort set.

[0081] Preferably, in S10.29, if connectedPart is a straight section of cable tray or pipe, the set of possibleFeatures that has the same start and end point as cableTrayPos is searched in connectedFeatures; if connectedPart is not a straight section of cable tray or pipe, the set of possibleFeatures that has the same start and end point as cableTrayPartPos is searched in connectedFeatures; after completion, proceed to S10.30.

[0082] Preferably, step S18, which involves calculating and analyzing the constant load of the current support (supportCol) on currentRun based on the topological network model, includes the following steps:

[0083] S18.1, mark the current support as currentSupport; create the variable cablewayWidth to record the maximum width of the current cable tray or pipe, create the variable startLength to record the length of the cable tray or pipe upstream of the current support, create the variable endLength to record the length of the cable tray or pipe downstream of the current support, create the variable startCount to record the number of upstream supports, create the variable endCount to record the number of downstream supports, create the variable startList to record the upstream units to be calculated, and create the variable endList to record the downstream units to be calculated; after completion, proceed to S18.2;

[0084] S18.2, Considering that the electrical support can support multiple features of different cable trays and pipes at the same time, the calculation of the electrical support needs to be based on the unit formed by the support and the features supported by the support; find all the supporting feature objects of the current support, find the features belonging to currentRun to form a feature set object supportFeatures; after completion, proceed to S18.3.

[0085] S18.3, loop through supportFeatures; if the loop is complete, proceed to S18.29; otherwise, get the current feature and set it as supportFeature, then proceed to S18.4;

[0086] S18.4 Find the udpitem corresponding to supportFeature marked as currentUDP from UDPList; check if the calculation result of supportFeature corresponding to currentSupport already exists in the result list. If it exists, return directly to S18.3; otherwise, proceed to S18.5.

[0087] S18.5: Obtain all support brackets on supportFeature, and form a bracket set supportCol by removing the other brackets from currentSupport; after completion, proceed to S18.6.

[0088] S18.6, Determine the currentUDP type; if it is a turnaround, proceed to S18.7; otherwise, if it is a branch, proceed to S18.9; otherwise, proceed to S18.12.

[0089] S18.7 If supportCol is not empty, it means there are multiple bends on the current turning component, indicating a design error. Mark the calculation result of the supportFeature corresponding to currentSupport as an error and add it to the result list, then return to S18.3; otherwise, if the coordinate of currentSupport is not at the midpoint of supportFeature, it means there is a design error. Mark the calculation result of the supportFeature corresponding to currentSupport as an error and add it to the result list, then return to S18.3; otherwise, proceed to S18.8.

[0090] S18.8: Set the starting point of supportFeature to the upstream point, set startLength to the distance from the starting point of supportFeature to currentSupport, and set endLength to the distance from the ending point of supportFeature to currentSupport. If there is a connection unit in currentUDP with the same coordinates as the starting point, add it to startList. If there is a connection unit in currentUDP with the same coordinates as the ending point, add it to endList. After completion, proceed to S18.14.

[0091] S18.9 If the start and end coordinates of the supportFeature are the same, since the support cannot be placed on the branch point, the calculation result of the supportFeature corresponding to the currentSupport is marked as an error and added to the result list, and S18.3 is returned; otherwise, find which endpoint of the supportFeature the currentSupport is located on the line connecting the midpoint to the supportFeature, set this endpoint as startPos, and form the other endpoints into the otherPosCol set; after completion, proceed to S18.10.

[0092] S18.10: Check if there is a support in supportCol between startPos and currentSupport. If there is, increment startCount by 1, find the support startNearSup that is closest to currentSupport, set startLength to the distance between currentSupport and startNearSup, and proceed to S18.11. Otherwise, set startLength to the distance between startPos and currentSupport. If there is a connection unit in currentUDP with the same coordinates as startPos, add it to startList and proceed to S18.11.

[0093] S18.11, check if there is a support in supportCol between the midpoint of currentSupport and supportFeature. If there is, increment endCount by 1, find the support endNearSup that is closest to currentSupport, and set endLength to the distance between currentSupport and endNearSup. After completion, proceed to S18.14; otherwise, set endLength to the distance between currentSupport and the midpoint of supportFeature. After completion, proceed to S18.14.

[0094] S18.12, check if there is a support in supportCol between the starting point of supportFeature and currentSupport. If there is, increment startCount by 1, find the support startNearSup that is closest to currentSupport, set startLength to the distance between currentSupport and startNearSup, and proceed to S18.13; otherwise, set startLength to the distance between the starting point of supportFeature and currentSupport. If there is a connection unit in currentUDP with the same coordinates as the starting point of supportFeature, add it to startList and proceed to S18.13.

[0095] S18.13, check if there is a support in supportCol between the end point of supportFeature and currentSupport. If there is, increment endCount by 1, find the support endNearSup that is closest to currentSupport, set endLength to the distance between currentSupport and endNearSup, and proceed to S18.14; otherwise, set endLength to the distance between the end point of supportFeature and currentSupport. If there is a connection unit in currentUDP that has the same connection point as the end point of supportFeature, add it to endList and proceed to S18.14.

[0096] S18.14, mark currentUDP as completed, set cablewayWidth to the cross-section width of currentUDP, and proceed to S18.15 after completion;

[0097] In S18.15, set variables toDoList, currentCount, and currentLength, set the value of toDoList to startList, the value of currentCount to startCount, the value of currentLength to startLength, and set the variable isStart to true. After completing this, proceed to S18.16.

[0098] S18.16, check if toDoList is empty. If it is empty, proceed directly to S18.26; otherwise, proceed to S18.17.

[0099] S18.17, retrieve the first connection unit firstUnit from toDoList, find upditem in UDPList that matches the connection object of this unit and set it as currentItem. If the cross-sectional width of currentItem is greater than cablewayWidth, set cablewayWidth as the cross-sectional width of currentItem. After completion, proceed to S18.18.

[0100] S18.18, find the supportCol set on the currentFeature corresponding to the currentItem, and then proceed to S18.19;

[0101] S18.19, Determine the type of currentFeature. If it is a turning component, proceed to S18.20; otherwise, if it is a branch component, proceed to S18.23; otherwise, proceed to S18.24.

[0102] S18.20 If the number of supportCol is greater than 1, it means that more than one support is placed on the turning part, and there is a design error. Mark the calculation result of the supportFeature corresponding to currentSupport as error and add it to the result list, and return to 18.3; otherwise, if the number of supportCol is 1, go to S18.21; otherwise, if there is no support, go to S18.22.

[0103] S18.21 If the support coordinates and the center coordinates of currentFeature are inconsistent, there is a design error. Mark the calculation result of the supportFeature corresponding to currentSupport as error and add it to the result list, then return to 18.3; otherwise, supportCount +1, add the distance from the connection point of firstUnit to the center point of currentFeature to currentLength, and go to S18.25.

[0104] S18.22, add currentLength to the distance from the start point to the midpoint of currentFeature and the distance from the end point to the midpoint of currentFeature, find the endpoint coordinates otherPos where the connection point coordinates of currentFeature and firstUnit are inconsistent, and if there is a connection unit in the currentItem's connection unit set whose connection point coordinates are consistent with otherPos, put it into toDoList and go to S18.25;

[0105] S18.23, check if there is a support in supportCol between the connection point of firstUnit and the midpoint of currentFeature. If there is, find the support nearest to the connection point of firstUnit, nearSup, add the distance between the connection point of firstUnit and nearSup to currentLength, increment currentCount by 1, and go to S18.25; if there is no support, add the distance between the connection point of firstUnit and the midpoint of currentFeature to currentLength, and go to S18.25.

[0106] In S18.24, find the end face coordinates otherPos where the connection point coordinates of currentFeature and firstUnit are inconsistent; if supportCol is not empty, find the nearest support nearSup to the connection point of firstUnit, increment currentCount by 1, add currentLength to the distance between the connection point of firstUnit and nearSup, and proceed to S18.25; if supportCol is empty, add currentLength to the distance between the connection point of firstUnit and otherPos, and if there is a connection unit in the currentItem's connection unit set whose connection point coordinates are consistent with otherPos, add it to toDoList, and proceed to S18.25;

[0107] S18.25, mark currentItem as completed, then remove firstUnit from toDoList, and return to S18.16;

[0108] S18.26 If isStart is true, pass the value of currentLength to startLength and the value of currentCount to startCount, and proceed to S18.27; otherwise, pass the value of currentLength to endLength and the value of currentCount to endCount, and proceed to S18.28.

[0109] In S18.27, set the value of toDoList to endList, the value of currentCount to endCount, the value of currentLength to endLength, and set the variable isStart to false. After completing this, proceed to S18.16.

[0110] S18.28 Calculate the dead load of currentSupport for supportFeature. First, obtain the perLoad of cable tray or piping per unit length based on the calculated cablewayWidth. The result of the dead load of currentSupport for supportFeature is (startLength / startCount+endLength / endCount)*perLoad, in Newtons. Add the result to the result list and return to S18.3.

[0111] S18.29 Save the calculation results of currentSupport for various features and then end.

[0112] Preferably, in S18.23, there is no support in supportCol between the connection point of firstUnit and the midpoint of currentFeature, and currentLength is added to the distance between the connection point of firstUnit and the midpoint of currentFeature, then proceed to S18.25.

[0113] Preferably, in S18.24, if supportCol is empty, currentLength is increased by the distance between the connection point of firstUnit and otherPos. If there is a connection unit in the connection unit set of currentItem whose connection point coordinates are consistent with otherPos, it is added to toDoList and proceeds to S18.25.

[0114] Compared with the prior art, the beneficial effects of the present invention are:

[0115] 1. The S3D electrical support constant load automatic analysis and calculation system and method provided by the present invention can automatically analyze and calculate the electrical support constant load according to the support layout in the cable tray and piping model, realize the automation of the mechanical calculation and analysis of electrical supports, eliminate the corresponding calculation work of designers, and greatly improve the efficiency and quality of calculation and analysis work;

[0116] 2. The system and method for automatic analysis and calculation of constant load of S3D electrical support provided by the present invention supports the calculation and analysis of constant load of multi-layer support, and has strong integrity;

[0117] 3. The S3D electrical support constant load automatic analysis and calculation system provided by the present invention can display all objects involved in the calculation process and their corresponding parameters to the user, which greatly facilitates the user's verification and analysis of the calculation results;

[0118] 4. The S3D electrical support constant load automatic analysis and calculation system provided by the present invention allows users to freely define the range to be calculated, thereby improving the calculation efficiency;

[0119] 5. The S3D electrical support constant load automatic analysis and calculation system provided by the present invention can flexibly output the calculation results in various report formats, laying the foundation for the flexible application of subsequent calculation and analysis data;

[0120] 6. The S3D electrical support constant load automatic analysis and calculation system provided by the present invention has a complete error reporting and exit mechanism and strong robustness; at the same time, during the calculation and analysis process, it can also perform design checks on the design model, thereby improving the design quality of cable tray and piping design models. Attached Figure Description

[0121] Figure 1 This is a structural diagram of the S3D electrical support constant load automatic analysis and calculation system according to an embodiment of the present invention;

[0122] Figure 2 This is a flowchart illustrating the implementation method of automatic analysis and calculation of constant load on electrical supports according to an embodiment of the present invention. Detailed Implementation

[0123] The technical solutions of the embodiments of the present invention will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of the present invention, and not all embodiments. Based on the embodiments of the present invention, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of the present invention.

[0124] Please see Figure 1-2 The present invention provides a technical solution: such as Figure 1As shown, a system for automatic analysis and calculation of the constant load of S3D electrical supports includes: an S3D cable tray and piping object parsing module, a user selection module, a cable tray and piping topology relationship parsing module, an electrical support positioning module, an electrical support constant load calculation and analysis module, a display analysis module, and a report output module. The S3D cable tray and piping object parsing module is used to parse out all S3D cable tray and piping objects under the current project, providing input data for the subsequent user selection module.

[0125] The user selection module is used to determine the scope of automatic analysis and calculation of electrical support constant load. The electrical supports involved in the subsequent calculation are the supports on the cable trays and pipes selected by the user. The selection data is provided by the aforementioned S3D cable tray and pipe object parsing module.

[0126] The cable tray and piping topology analysis module is used to construct an overall topology network model for the cable trays or piping selected by the user for calculation, providing a basis for subsequent analysis and calculation.

[0127] The electrical support positioning module is used to place the electrical supports that need to be calculated into the cable tray or piping topology network model constructed in the above steps according to the actual situation in the design model, so as to form a calculation and analysis model.

[0128] The electrical support constant load calculation and analysis module is used to perform constant load calculation and analysis on all electrical supports in the calculation and analysis model.

[0129] The display and analysis module is used to display the final calculation and analysis results of the electrical support constant load, as well as the path planning and intermediate parameter variables involved in the calculation process, to the user for result checking.

[0130] The report output module is used to output the final results and process parameters in the form of a report, which facilitates users to perform subsequent system integration and other uses.

[0131] like Figure 2 As shown, a method for automatic analysis and calculation of constant load on S3D electrical supports includes the following steps:

[0132] S1, retrieve the list of all cable trays and piping in the project, then proceed to S2;

[0133] S2, the user selects the list of cable trays and piping that need to be automatically analyzed and calculated for electrical support constant load, then enters S3, and if you need to exit, enter S12;

[0134] S3: Obtain all support brackets on each cable tray or conduit from the user-selected list of cable trays and conduits to form a list of all electrical supports that need to be calculated and analyzed, then proceed to S4;

[0135] S4, create a set allExistRuns to store the cable trays and piping that have completed the analysis and calculation, create a set allErrorRuns to store the cable trays and piping that are judged to have design errors, and proceed to S5;

[0136] S5, loop through the electrical support structure. If the loop is complete, proceed to S22; otherwise, proceed to S6.

[0137] S6, check if the current stent currentSup has completed the analysis and calculation. If yes, return to S5; otherwise, proceed to S7.

[0138] S7. Since electrical supports may have multiple layers, they can support multiple pipes or cable trays at the same time. Therefore, obtain the set of pipes or cable trays supported by the current support, runCollection, and proceed to S8.

[0139] S8: Loop through the runCollection collection. If the loop is complete, proceed to S21; otherwise, proceed to S9.

[0140] S9: Check if the current piping or cable tray is in allExistRuns or allErrorRuns. If it is, return directly to S8; otherwise, create an existRuns collection to store the piping or cable tray that has completed calculations and analyses in the current loop, and create an extraRuns collection to store the piping and cable tray that requires additional calculations in the current loop. Create a custom object UDPItem to store the topological relationship structure of the cable tray feature and piping feature. This structure should include the current feature object, the feature's coordinate information, the cross-sectional width corresponding to the feature, the current feature type, and the connection unit of the current feature (including the feature object and its connection point coordinates). At the same time, create a UDPItem object collection UDPList to store the topological relationship network where the current piping is located. After completion, proceed to S10.

[0141] S10: Build a topology network model for the current piping or cable tray. If the process completes successfully, proceed to S11; otherwise, exit and proceed to S14.

[0142] S11, check if the extraRuns collection is empty. If it is empty, proceed to S15; otherwise, retrieve the first object extraRun from the extraRuns collection and proceed to S12.

[0143] S12, check if extraRun is in existRuns or allErrorRuns. If it is, remove extraRun from extraRuns and return to S11; otherwise, proceed to S13.

[0144] S13, build the topology network model for extraRun; if it completes normally, put extraRun into existRuns and remove extraRun from extraRuns, then return to S11; if an error occurs, exit and proceed to S14.

[0145] S14: Put all objects in the existRuns and extraRuns collections into allErrorRuns, clear UPDList, and return to S8;

[0146] S15: Loop through the existRuns set. If the loop is complete, proceed to S20; otherwise, proceed to S16.

[0147] S16, obtain the supportCol set of all supports on the currentRun, and proceed to S17;

[0148] S17, loop through supportCol. If the loop is complete, proceed to S19; otherwise, proceed to S18.

[0149] S18, perform constant load calculation and analysis of the current support supportCol on currentRun based on the topological relationship network model, and return to S17 after completion;

[0150] S19, put currentRun into allExistRuns, and return to S15;

[0151] S20, clear existRuns and UDPList, and return to S8;

[0152] S21, mark the current stent currentSup as completed analysis, and return to S5;

[0153] S22 processes all cable trays and pipe supports in allErrorRuns, displays the analysis results of these supports as errors and adds them to the final calculation results, and then proceeds to S23; if allErrorRuns is empty, proceed directly to S23;

[0154] S23, Display the final calculation result to the user and confirm whether download is required based on the user's needs; after completion, proceed to S24;

[0155] S24, End;

[0156] Preferably, the step S10 of building a topology network model for the current piping or cable tray includes the following steps:

[0157] S10.1, Obtain all feature objects corresponding to the current piping or cable tray currentRun to form a features set, and then proceed to S10.2;

[0158] S10.2 Remove feature objects from the feature set that do not correspond to entity parts and are not branch points. These objects have no effect on the composition of the analysis model. After completion, proceed to S10.3.

[0159] S10.3, loop through the features set. If the loop is complete, proceed to S10.38; otherwise, proceed to S10.4.

[0160] S10.4, Create a UDPItem object udpitem; Set the current feature to currentFeature, check if currentFeature is turnFeature, if so, mark it as a turn item in udpitem; after completion, proceed to S10.5;

[0161] S10.5, Obtain the cross-sectional width of currentFeature through the corresponding interface. For variable diameter components, take the larger cross-sectional width as the width of currentFeature according to the conservative principle; after completion, proceed to S10.6.

[0162] S10.6 If the start and end points of currentFeature are the same, udpitem is marked as a branch and proceed to S10.7; otherwise, proceed to S10.11.

[0163] S10.7 Record the currentFeature and the center coordinates of the currentFeature in udpitem. Find the set of connectedFeatures that are connected to the main axis of the current branch point in the features set by using the coordinate matching principle. After completion, proceed to S10.8.

[0164] S10.8: Find the set of branch connection feature objects (offlineFeatures) corresponding to the current branch point feature through the OffLineFeatures relationship, and put these features and connection point coordinates into udpitem as connection units; after completion, proceed to S10.9;

[0165] S10.9: Loop through all the pipes or cable trays corresponding to all features in offlineFeatures. If the corresponding pipe or cable tray appears in errorRuns, put currentRun into errorRuns and proceed directly to S10.39; otherwise, if the found pipe or cable tray is neither in existingRuns nor currentRun, put it into extraRuns; after the loop is completed, proceed to S10.10.

[0166] S10.10: Loop through the set connectedFeatures. If a feature in connectedFeatures is an object in offlineFeatures in S10.8, put the corresponding feature and connection point coordinates into udpitem as the connection unit of udpitem. After the loop is completed, proceed to S10.37.

[0167] S10.11, record the currentFeature and its center coordinates in udpitem; find the currentPart corresponding to the currentFeature; determine whether the currentPart is a straight section of the cable tray or a straight section of the piping. If it is, mark the currentPart as a straight section. If not, check whether the number of end faces of the current part exceeds two. If it does, mark the current UDP as a branch. After completion, proceed to S10.12.

[0168] S10.12, obtain the starting coordinates of the currentFeature, and confirm whether there is a connected feature at the starting end face of the currentFeature by the coordinate coincidence; if more than one feature is found, proceed to S10.13; otherwise, if exactly one feature is found, proceed to S10.14; otherwise, if no feature is found, proceed to S10.15.

[0169] S10.13, In this case, it must be connected to a branch. Therefore, find the branch feature with the same start and end points from multiple features. If it cannot be found, it means there is a design error. Put currentRun into errorRuns and go to S10.39. Otherwise, put the found branch feature together with the start coordinates into udpitem as a connection unit of udpitem. After completion, go to S10.16.

[0170] S10.14, put the found unique feature along with the starting coordinates into the UDP connection unit, and then proceed to S10.16;

[0171] S10.15, Place the empty object along with its starting coordinates into the UDP connection unit, and then proceed to S10.16.

[0172] S10.16 Obtain the endpoint coordinates of the currentFeature. Confirm whether there is a connected feature at the endpoint of the currentFeature by checking the coordinate coincidence. If more than one feature is found, proceed to S10.17. Otherwise, if exactly one feature is found, proceed to S10.18. Otherwise, if no feature is found, proceed to S10.19.

[0173] S10.17, In this case, it must be connected to a branch. Therefore, find the branch feature with the same start and end points from multiple features. If it cannot be found, it means there is a design error. Put currentRun into errorRuns and go to S10.39. Otherwise, put the found branch feature together with the end point coordinates into udpitem as a connection unit of udpitem. After completion, go to S10.20.

[0174] S10.18, put the unique feature found along with the endpoint coordinates into the UDP connection unit, and then proceed to S10.20;

[0175] S10.19, Place the empty object along with the endpoint coordinates into the UDP connection unit, and then proceed to S10.20;

[0176] S10.20, check if there are branch connections in the current component, and find the branch feature set offlineCol of currentFeature through the OffLineFeatures relationship; if offlineCol is not empty, mark udpitem as a branch component, and proceed to S10.21 after completion; if offlineCol is empty, proceed directly to S10.22;

[0177] S10.21, take the coordinates corresponding to the feature in offlineCol and the empty object as the connection unit of udpitem and put them into udpitem. After completion, proceed to S10.22.

[0178] S10.22 Since there may be gaps between the cable tray components and the straight sections, and there is also the possibility of branch access, it is impossible to find the corresponding connection feature from the start and end coordinates of the current feature. Therefore, check whether the part has a connection point with other parts through the RelConnectionAndPartOcc relationship of the part corresponding to the currentFeature. If it exists, obtain the connection point set connCol and proceed to S10.23. If it does not exist, proceed directly to S10.37.

[0179] S10.23, loop through the set of connection points. If the loop is complete, proceed to S10.37; otherwise, proceed to S10.24.

[0180] In S10.24, find the DistribPort set corresponding to the current connection point conn, and set two variables: cableTrayPos and cableTrayPartPos. cableTrayPos records the coordinates of the CableTrayPort or ConduitPort in the DistribPort set, and cableTrayPartPos records the coordinates of the CableTrayStockPort or ConduitStockPort in the DistribPort set. At the same time, set the dpLocation variable. If currentPart was marked as a straight segment in S6.13, dpLocation is set to the coordinates of cableTrayPartPos; if currentPart is not marked as a straight segment, dpLocation is set to the coordinates of cableTrayPos. After completion, proceed to S10.25.

[0181] S10.25, loop through the connected units in udpitem that contain only coordinates. After the loop is complete, return to S10.23; otherwise, obtain the current coordinate currentPos and proceed to S10.26.

[0182] S10.26, check if the coordinates of dpLocation and currentPos are consistent. If they are consistent, proceed to S10.27; otherwise, return to S10.25.

[0183] S10.27 If currentPart is not a straight segment and cableTrayPartPos is not empty, in order to ensure that there are no gaps in the final length calculation, change the coordinates of the current connection element to cableTrayPartPos; otherwise, do not make any changes; after completion, proceed to S10.28.

[0184] S10.28, find the connection object connectedPart of currentPart through conn's RelConnectionAndPartOcc, and then find the collection of all features connectedFeatures corresponding to connectedPart; after completion, proceed to S10.29;

[0185] S10.29, If connectedPart is a straight section of cable tray or pipe, search for the set of possibleFeatures in connectedFeatures whose start and end points match cableTrayPos; if connectedPart is not a straight section of cable tray or pipe, search for the set of possibleFeatures in connectedFeatures whose start and end points match cableTrayPartPos; after completion, proceed to S10.30;

[0186] S10.30 If possibleFeatures is not empty, proceed to S10.31; otherwise, if no connectable feature can be found from the end face, it is necessary to consider whether the current part can be inserted into other parts as a branch component, and proceed to S10.33.

[0187] S10.31 If possibleFeatures is exactly an object, use this object as connectedFeature, put connectedFeature into the connection object of the current connection unit, and proceed to S10.32; otherwise, find the branch feature with the same start and end point from possibleFeatures, use it as connectedFeature, put connectedFeature into the connection object of the current connection unit, and proceed to S10.32.

[0188] S10.32, find the cable tray or piping otherRun corresponding to connectedFeature; if otherRun is in errorRuns, put currentRun into errorRuns and go directly to S10.39; otherwise, if otherRun is neither in existingRuns nor currentRun, put it into extraRuns and return to S10.33.

[0189] S10.33: Loop through the connectedFeatures collection. After the loop is complete, return to S10.23; otherwise, proceed to S10.34.

[0190] S10.34, find the branch feature set offLineFeatureCol of the current tempFeature through the OffLineFeatures relationship; if connectedPart is not a straight section of cable tray or straight section of piping, proceed to S10.35; otherwise, proceed to S10.36;

[0191] S10.35, check if there is a feature object with the same coordinates as cableTrayPos in offLineFeatureCol. If it exists, treat this feature as connectedFeature, store currentFeature in the connection object of the current connection unit, and go to S10.32. Otherwise, return directly to S10.33.

[0192] S10.36, Check if there is a feature object in offLineFeatureCol with the same coordinates as cableTrayPartPos. If it exists, treat this feature as connectedFeature, store currentFeature in the connection object of the current connection unit, and go to S10.32. Otherwise, return directly to S10.33.

[0193] S10.37, Remove connection units in udpitem that do not contain connection objects, and put udpitem into UDPList; return to S10.3 after completion;

[0194] S10.38, exit normally;

[0195] S10.39, error message and exit;

[0196] Preferably, the step S18, which involves calculating and analyzing the constant load of the current support (supportCol) on currentRun based on the topological network model, includes the following steps:

[0197] S18.1, mark the current support as currentSupport; create the variable cablewayWidth to record the maximum width of the current cable tray or pipe, create the variable startLength to record the length of the cable tray or pipe upstream of the current support, create the variable endLength to record the length of the cable tray or pipe downstream of the current support, create the variable startCount to record the number of upstream supports, create the variable endCount to record the number of downstream supports, create the variable startList to record the upstream units to be calculated, and create the variable endList to record the downstream units to be calculated; after completion, proceed to S18.2;

[0198] S18.2, Considering that the electrical support can support multiple features of different cable trays and pipes at the same time, the calculation of the electrical support needs to be based on the unit formed by the support and the features supported by the support; find all the supporting feature objects of the current support, find the features belonging to currentRun to form a feature set object supportFeatures; after completion, proceed to S18.3.

[0199] S18.3, loop through supportFeatures; if the loop is complete, proceed to S18.29; otherwise, get the current feature and set it as supportFeature, then proceed to S18.4;

[0200] S18.4 Find the udpitem corresponding to supportFeature marked as currentUDP from UDPList; check if the calculation result of supportFeature corresponding to currentSupport already exists in the result list. If it exists, return directly to S18.3; otherwise, proceed to S18.5.

[0201] S18.5: Obtain all support brackets on supportFeature, and form a bracket set supportCol by removing the other brackets from currentSupport; after completion, proceed to S18.6.

[0202] S18.6, Determine the currentUDP type; if it is a turnaround, proceed to S18.7; otherwise, if it is a branch, proceed to S18.9; otherwise, proceed to S18.12.

[0203] S18.7 If supportCol is not empty, it means there are multiple bends on the current turning component, indicating a design error. Mark the calculation result of the supportFeature corresponding to currentSupport as an error and add it to the result list, then return to S18.3; otherwise, if the coordinate of currentSupport is not at the midpoint of supportFeature, it means there is a design error. Mark the calculation result of the supportFeature corresponding to currentSupport as an error and add it to the result list, then return to S18.3; otherwise, proceed to S18.8.

[0204] S18.8: Set the starting point of supportFeature to the upstream point, set startLength to the distance from the starting point of supportFeature to currentSupport, and set endLength to the distance from the ending point of supportFeature to currentSupport. If there is a connection unit in currentUDP with the same coordinates as the starting point, add it to startList. If there is a connection unit in currentUDP with the same coordinates as the ending point, add it to endList. After completion, proceed to S18.14.

[0205] S18.9 If the start and end coordinates of the supportFeature are the same, since the support cannot be placed on the branch point, the calculation result of the supportFeature corresponding to the currentSupport is marked as an error and added to the result list, and S18.3 is returned; otherwise, find which endpoint of the supportFeature the currentSupport is located on the line connecting the midpoint to the supportFeature, set this endpoint as startPos, and form the other endpoints into the otherPosCol set; after completion, proceed to S18.10.

[0206] S18.10: Check if there is a support in supportCol between startPos and currentSupport. If there is, increment startCount by 1, find the support startNearSup that is closest to currentSupport, set startLength to the distance between currentSupport and startNearSup, and proceed to S18.11. Otherwise, set startLength to the distance between startPos and currentSupport. If there is a connection unit in currentUDP with the same coordinates as startPos, add it to startList and proceed to S18.11.

[0207] S18.11, check if there is a support in supportCol between the midpoint of currentSupport and supportFeature. If there is, increment endCount by 1, find the support endNearSup that is closest to currentSupport, and set endLength to the distance between currentSupport and endNearSup. After completion, proceed to S18.14; otherwise, set endLength to the distance between currentSupport and the midpoint of supportFeature. After completion, proceed to S18.14.

[0208] S18.12, check if there is a support in supportCol between the starting point of supportFeature and currentSupport. If there is, increment startCount by 1, find the support startNearSup that is closest to currentSupport, set startLength to the distance between currentSupport and startNearSup, and proceed to S18.13; otherwise, set startLength to the distance between the starting point of supportFeature and currentSupport. If there is a connection unit in currentUDP with the same coordinates as the starting point of supportFeature, add it to startList and proceed to S18.13.

[0209] S18.13, check if there is a support in supportCol between the end point of supportFeature and currentSupport. If there is, increment endCount by 1, find the support endNearSup that is closest to currentSupport, set endLength to the distance between currentSupport and endNearSup, and proceed to S18.14; otherwise, set endLength to the distance between the end point of supportFeature and currentSupport. If there is a connection unit in currentUDP that has the same connection point as the end point of supportFeature, add it to endList and proceed to S18.14.

[0210] S18.14, mark currentUDP as completed, set cablewayWidth to the cross-section width of currentUDP, and proceed to S18.15 after completion;

[0211] In S18.15, set variables toDoList, currentCount, and currentLength, set the value of toDoList to startList, the value of currentCount to startCount, the value of currentLength to startLength, and set the variable isStart to true. After completing this, proceed to S18.16.

[0212] S18.16, check if toDoList is empty. If it is empty, proceed directly to S18.26; otherwise, proceed to S18.17.

[0213] S18.17, retrieve the first connection unit firstUnit from toDoList, find upditem in UDPList that matches the connection object of this unit and set it as currentItem. If the cross-sectional width of currentItem is greater than cablewayWidth, set cablewayWidth as the cross-sectional width of currentItem. After completion, proceed to S18.18.

[0214] S18.18, find the supportCol set on the currentFeature corresponding to the currentItem, and then proceed to S18.19;

[0215] S18.19, Determine the type of currentFeature. If it is a turning component, proceed to S18.20; otherwise, if it is a branch component, proceed to S18.23; otherwise, proceed to S18.24.

[0216] S18.20 If the number of supportCol is greater than 1, it means that more than one support is placed on the turning part, and there is a design error. Mark the calculation result of the supportFeature corresponding to currentSupport as error and add it to the result list, and return to 18.3; otherwise, if the number of supportCol is 1, go to S18.21; otherwise, if there is no support, go to S18.22.

[0217] S18.21 If the support coordinates and the center coordinates of currentFeature are inconsistent, there is a design error. Mark the calculation result of the supportFeature corresponding to currentSupport as error and add it to the result list, then return to 18.3; otherwise, supportCount +1, add the distance from the connection point of firstUnit to the center point of currentFeature to currentLength, and go to S18.25.

[0218] S18.22, add currentLength to the distance from the start point to the midpoint of currentFeature and the distance from the end point to the midpoint of currentFeature, find the endpoint coordinates otherPos where the connection point coordinates of currentFeature and firstUnit are inconsistent, and if there is a connection unit in the currentItem's connection unit set whose connection point coordinates are consistent with otherPos, put it into toDoList and go to S18.25;

[0219] S18.23, check if there is a support in supportCol between the connection point of firstUnit and the midpoint of currentFeature. If there is, find the support nearest to the connection point of firstUnit, nearSup, add the distance between the connection point of firstUnit and nearSup to currentLength, increment currentCount by 1, and go to S18.25; if there is no support, add the distance between the connection point of firstUnit and the midpoint of currentFeature to currentLength, and go to S18.25.

[0220] In S18.24, find the end face coordinates otherPos where the connection point coordinates of currentFeature and firstUnit are inconsistent; if supportCol is not empty, find the nearest support nearSup to the connection point of firstUnit, increment currentCount by 1, add currentLength to the distance between the connection point of firstUnit and nearSup, and proceed to S18.25; if supportCol is empty, add currentLength to the distance between the connection point of firstUnit and otherPos, and if there is a connection unit in the currentItem's connection unit set whose connection point coordinates are consistent with otherPos, add it to toDoList, and proceed to S18.25;

[0221] S18.25, mark currentItem as completed, then remove firstUnit from toDoList, and return to S18.16;

[0222] S18.26 If isStart is true, pass the value of currentLength to startLength and the value of currentCount to startCount, and proceed to S18.27; otherwise, pass the value of currentLength to endLength and the value of currentCount to endCount, and proceed to S18.28.

[0223] In S18.27, set the value of toDoList to endList, the value of currentCount to endCount, the value of currentLength to endLength, and set the variable isStart to false. After completing this, proceed to S18.16.

[0224] S18.28 Calculate the dead load of currentSupport for supportFeature. First, obtain the perLoad of cable tray or piping per unit length based on the calculated cablewayWidth. The result of the dead load of currentSupport for supportFeature is (startLength / startCount+endLength / endCount)*perLoad, in Newtons. Add the result to the result list and return to S18.3.

[0225] S18.29, Save the calculation results of currentSupport for multiple features and then end;

[0226] The beneficial effects of the present invention are as follows: 1. The system and method for automatic analysis and calculation of the constant load of S3D electrical supports provided by the present invention can automatically analyze and calculate the constant load of electrical supports according to the support layout in the cable tray and piping model, realize the automation of mechanical calculation and analysis of electrical supports, eliminate the corresponding calculation work of designers, and greatly improve the efficiency and quality of calculation and analysis work.

[0227] 2. The system and method for automatic analysis and calculation of constant load of S3D electrical support provided by the present invention support the calculation and analysis of constant load of multi-layer support, with strong integrity;

[0228] 3. The S3D electrical support constant load automatic analysis and calculation system provided by the present invention can display to the user all objects involved in the calculation process and the corresponding parameters, which greatly facilitates the user's verification and analysis of the calculation results;

[0229] 4. The S3D electrical support constant load automatic analysis and calculation system provided by the present invention allows users to freely define the range to be calculated, thereby improving the calculation efficiency;

[0230] 5. The S3D electrical support constant load automatic analysis and calculation system provided by the present invention can flexibly output the calculation results in various report formats, laying the foundation for the flexible application of subsequent calculation and analysis data;

[0231] 6. The S3D electrical support constant load automatic analysis and calculation system provided by the present invention has a complete error reporting and exit mechanism and strong robustness; at the same time, during the calculation and analysis process, it can also perform design checks on the design model, thereby improving the design quality of cable tray and piping design models.

[0232] Although embodiments of the invention have been shown and described, it will be understood by those skilled in the art that various changes, modifications, substitutions and alterations can be made to these embodiments without departing from the principles and spirit of the invention, the scope of which is defined by the appended claims and their equivalents.

Claims

1. A method for automatically analyzing and calculating the constant load of S3D electrical supports, characterized in that, Includes the following steps: Retrieve a complete list of cable trays and piping in the project; Users select the list of cable trays and piping that require automatic analysis and calculation of electrical support constant loads; Obtain all support brackets on each cable tray or conduit selected by the user to form a list of all electrical supports that need to be calculated and analyzed. Create a collection allExistRuns to store the cable trays and piping that have completed analysis and calculations, and create a collection allErrorRuns to store the cable trays and piping that are determined to have design errors. Loop through the electrical support structure to check if the analysis and calculation have been completed. Get the collection of pipes or cable trays currently supported by the support (runCollection) and iterate through the collection; check if the current pipe or cable tray is in allExistRuns or allErrorRuns; Build a topology network model for the current piping or cable trays; Create an extraRuns collection to store other bridges and piping, view the extraRuns type, and build a topology network model for extraRuns; Put all objects from the existRuns and extraRuns collections into allErrorRuns; Iterate through the `existRuns` collection; retrieve the `supportCol` collection of all supports on `currentRun`; iterate through `supportCol`. Based on the topological network model, perform constant load calculation and analysis on the current run of the current support; Organize all cable trays and pipe supports in allErrorRuns, display the analysis results of these supports as errors, and add them to the final calculation results; Display the final calculation results to the user; If the piping or cable tray is not in allExistRuns or allErrorRuns, create an existRuns collection to store the piping or cable tray that has completed the calculation and analysis in the current loop, and create an extraRuns collection to store the piping and cable tray that needs additional calculation in the current loop. Create a custom object UDPItem to store the topological relationship structure of the cable tray feature and the piping feature. This structure includes the current feature object, the coordinate information of the feature, the cross-sectional width corresponding to the feature, the current feature type, and the connection unit of the current feature. The connection unit of the current feature includes the feature object and its connection point coordinates. At the same time, create a UDPItem object collection UDPList to store the topological relationship network in which the current piping is located.

2. The method for automatic analysis and calculation of constant load on S3D electrical supports according to claim 1, characterized in that, The steps for building the topological relationship network model are as follows: Get all feature objects corresponding to the current piping or cable tray currentRun and form a features collection; Remove feature objects from the feature set that do not correspond to an entity part and are not branch points; Iterate through the features collection; if complete, exit successfully. Create a UDPItem object udpitem; set the current feature to currentFeature, check if currentFeature is turnFeature, and mark it as a turnfeature in udpitem; Record the currentFeature and its center coordinates in udpitem. Find the set of branch connection feature objects offlineFeatures corresponding to the current branch point feature. Put these features and connection point coordinates into udpitem as connection units. Loop through all the piping or cable trays corresponding to all features in offlineFeatures; loop through the connectedFeatures collection. Record the currentFeature and its center coordinates in udpitem; find the currentPart corresponding to the currentFeature; determine whether the currentPart is a straight section of cable tray or a straight section of piping. Obtain the starting coordinates of the currentFeature, and confirm whether there is a connected feature at the starting end face of the currentFeature by checking the coordinate coincidence; determine the number of features. Obtain the endpoint coordinates of the currentFeature, and confirm whether there is a connected feature at the endpoint of the currentFeature by checking the coordinate coincidence; determine the number of features. Check if there are branch connections in the current component, and find the feature set offlineCol of the currentFeature through the OffLineFeatures relationship; Find the DistribPort set corresponding to the current connection point conn, and set two variables to cableTrayPos and cableTrayPartPos respectively; Loop through the connected units in udpitem that contain only coordinates; check if the coordinates dpLocation and currentPos are consistent. Based on the type of connectedPart, find the set of possibleFeatures for the connected features in connectedFeatures; determine whether connectedPart is a straight section of cable tray or a straight section of piping. Check if possibleFeatures is empty; find the cable tray or piping otherRun corresponding to connectedFeature and check if otherRun is in errorRuns; Find the branch feature set offLineFeatureCol of the current tempFeature through the OffLineFeatures relationship; determine whether connectedPart is a straight section of cable tray or straight section of piping; Remove connection units in udpitem that do not contain connection objects, and add udpitem to UDPList.

3. The method for automatic analysis and calculation of constant load on S3D electrical supports according to claim 2, characterized in that, The cableTrayPos is used to record the coordinates of the CableTrayPort or ConduitPort in the DistribPort set, and the cableTrayPartPos records the coordinates of the CableTrayStockPort or ConduitStockPort in the DistribPort set.

4. The method for automatic analysis and calculation of constant load on S3D electrical supports according to claim 3, characterized in that, If the connectedPart is a straight section of cable tray or pipe, search for the set of possibleFeatures in connectedFeatures whose start and end points match cableTrayPos; if the connectedPart is not a straight section of cable tray or pipe, search for the set of possibleFeatures in connectedFeatures whose start and end points match cableTrayPartPos.

5. The method for automatic analysis and calculation of constant load on S3D electrical supports according to claim 4, characterized in that, If the connectedPart is not a straight section of cable tray or pipe, check if there is a feature object with coordinates consistent with cableTrayPos in offLineFeatureCol. If it exists, use the feature as connectedFeature. If the connectedPart is a straight section of cable tray or pipe, check if there is a feature object with coordinates consistent with cableTrayPartPos in offLineFeatureCol.

6. The method for automatic analysis and calculation of constant load on S3D electrical supports according to claim 5, characterized in that, The steps for performing the constant load calculation and analysis of the current support Col on currentRun are as follows: Mark the current support as currentSupport; Create a variable `cablewayWidth` to record the maximum width of the current cable tray or pipe; create a variable `startLength` to record the length of the cable tray or pipe upstream of the current support; create a variable `endLength` to record the length of the cable tray or pipe downstream of the current support; create a variable `startCount` to record the number of upstream supports; create a variable `endCount` to record the number of downstream supports; create a variable `startList` to record the upstream units to be calculated; and create a variable `endList` to record the downstream units to be calculated. Find all supporting feature objects of the current scaffold, and extract the features belonging to currentRun to form the supportFeatures set of feature objects; Loop through supportFeatures; obtain all support brackets on supportFeature, and form a bracket set supportCol by removing the brackets from currentSupport; determine the type of currentUDP; Mark currentUDP as completed and set cablewayWidth to the cross-section width of currentUDP; Check if toDoList is empty; Find the supportCol set on the corresponding currentFeature in currentItem; Determine the type of currentFeature; mark currentItem as completed, and then remove firstUnit from toDoList; Determine if isStart is true, then decide whether to pass the value of currentLength to startLength or endLength, and decide whether to pass the value of currentCount to startCount or endCount; calculate the constant load of currentSupport for supportFeature; Save the calculation results of currentSupport for various features.

7. The method for automatic analysis and calculation of constant load on S3D electrical supports according to claim 6, characterized in that, The currentUDP is a turning point. supportCol is not empty. The starting point of supportFeature is set as the upstream point, startLength is set as the distance from the starting point of supportFeature to currentSupport, and endLength is set as the distance from the ending point of supportFeature to currentSupport. If there is a connection unit in currentUDP with the same coordinates as the starting point, it is added to startList. If there is a connection unit in currentUDP with the same coordinates as the ending point, it is added to endList.

8. The method for automatic analysis and calculation of constant load on S3D electrical supports according to claim 6, characterized in that, If currentUDP is a branch, and the start and end coordinates of supportFeature are the same, find which endpoint of supportFeature the currentSupport is located on the line connecting to the midpoint of supportFeature, and set this endpoint as startPos. The other endpoints form the set otherPosCol. Determine if there is a support in supportCol between startPos and currentSupport. Check if there is a support in supportCol between currentSupport and the midpoint of supportFeature. If currentUDP is not a branch, determine if there is a support in supportCol between the start of supportFeature and currentSupport. Check if there is a support in supportCol between the end of supportFeature and currentSupport.

9. A system for automatic analysis and calculation of S3D electrical support constant load using the implementation method of S3D electrical support constant load automatic analysis and calculation as described in claim 1, characterized in that, include: The S3D cable tray and piping object parsing module is used to parse all S3D cable tray and piping objects in the current project, providing input data for users to select modules in the future. The user selection module is used to determine the scope of automatic analysis and calculation of electrical support constant load. The electrical supports involved in the subsequent calculation are the supports on the cable trays and pipes selected by the user, and their data is provided by the S3D cable tray and pipe object parsing module. The cable tray and piping topology analysis module is used to construct an overall topology network model for the cable trays or piping selected by the user, providing a foundation for subsequent analysis and calculation; The electrical support positioning module is used to place the electrical supports that need to be calculated into the completed cable tray or piping topology network model according to the actual situation, forming a calculation and analysis model; The electrical support constant load calculation and analysis module is used to perform constant load calculation and analysis on all electrical supports in the calculation and analysis model. The display and analysis module is used to show users the final calculation and analysis results of the electrical support constant load, as well as the path planning and intermediate parameter variables involved in the calculation process, so that users can check the results. The report output module is used to output the final results and process parameters in the form of reports, which facilitates users to perform subsequent system integration and other uses.

Citation Information

Patent Citations

  • Automatic calculation method and system for pipeline load

    CN106777547A

  • System and method for converting S3D bridge model into MapGIS model

    CN112948911A