Updating unfolded routes for route modification by splitting and merging in three dimensional route design
A computer-based method for generating two-dimensional representations of three-dimensional wire harness models addresses the inefficiencies in splitting or merging route segments by preserving visual layout, enhancing design efficiency and reducing errors in the wire harness design process.
Patent Information
- Application Number
- JP2025113208
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-07-04
- Filing Date
- 2025-07-03
- Publication Date
- 2026-02-03
AI Technical Summary
The design process for wire harnesses is complex, cumbersome, inefficient, and error-prone, particularly when splitting or merging route segments in a three-dimensional model, as it often requires repetitive adjustments in both two-dimensional and three-dimensional environments to maintain visual layout consistency.
A computer-based method and system that generates an unfolded two-dimensional representation of a three-dimensional wire harness model, allowing for splitting or merging route segments while preserving the visual layout, thus ensuring that changes made in the three-dimensional model are accurately reflected in the two-dimensional representation without significant alterations.
This approach enhances design efficiency by maintaining visual layout consistency across iterations, reducing errors, and improving the readability and cleanliness of the flattened harness design, thereby streamlining the design process.
Smart Images

Figure 2026016323000001_ABST
Abstract
Description
Detailed Description of the Invention
[0001] [CROSS-REFERENCE TO RELATED APPLICATIONS] This application claims the benefit of priority from Indian Patent Application No. 202411051267, entitled "Update Flattened Route for Split and Merge Route Modifications in 3D Route design," filed on July 4, 2024, the disclosure of which is incorporated herein by reference in its entirety.
[0002] [Field of the Invention] The present disclosure relates to the field of computer-aided design (CAD) of physical objects, such as wire harnesses, and more particularly to computer-implemented systems and techniques that update the unfolded two-dimensional form of a model to account for changes to the model (e.g., splitting or merging within a route segment) made within a virtual three-dimensional modeling environment.
[0003] [background] Wire harness design involves planning, creating, and documenting the arrangement of wires, cables, connectors, etc. within a system to safely and effectively transmit power and data signals, and typically involves creating a physical layout, selecting appropriate components, and ensuring the harness seamlessly integrates with its environment and other adjacent systems and components. As described herein, the design process may also include creating a three-dimensional model of the wire harness within a virtual three-dimensional modeling environment. A formboard is a digital representation of a wire harness, typically derived from the wire harness model, that can be used by a manufacturer to manufacture the modeled wire harness.
[0004] The process of designing such models and generating foamboard drawings (or other digital representations for manufacturing) from them has proven to be complex, cumbersome, inefficient, costly, and error-prone. Improvements would be helpful.
[0005] [Summary of the Invention] In one aspect, a computer-based method includes generating, within a virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of an initial three-dimensional model of a wire harness. The unfolded representation has an initial visual layout within the virtual two-dimensional viewing environment. The method then includes modifying the initial three-dimensional model within the virtual three-dimensional modeling environment to generate a modified three-dimensional model. The modification includes splitting a route segment or merging two route segments. The method includes generating, within the virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of the modified three-dimensional model that visually represents either the split or the merge and otherwise has the same visual layout as the unfolded two-dimensional representation of the initial three-dimensional model.
[0006] In another aspect, a system is disclosed that includes a computer having a computer processor and a computer-based memory operatively connected to the computer processor. The computer-based memory stores computer-readable instructions that, when executed by the computer processor, cause the computer system to perform a process comprising generating, within a virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of an initial three-dimensional model of a wire harness. The unfolded representation has an initial visual layout within the virtual two-dimensional viewing environment. The method then includes modifying the initial three-dimensional model within the virtual three-dimensional modeling environment to generate a modified three-dimensional model. The modification includes splitting a route segment or merging two route segments. The method includes generating, within the virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of the modified three-dimensional model that visually represents either the split or the merge or otherwise has the same visual layout as the unfolded two-dimensional representation of the initial three-dimensional model.
[0007] In yet another aspect, a non-transitory computer-readable medium is disclosed having computer-readable instructions stored thereon that, when executed by a computer-based processor, cause the computer-based processor to perform a process comprising generating, within a virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of an initial three-dimensional model of a wire harness. The unfolded representation has an initial visual layout within the virtual two-dimensional viewing environment. The method then includes modifying the initial three-dimensional model within the virtual three-dimensional modeling environment to generate a modified three-dimensional model. The modification includes splitting a route segment or merging two route segments. The method includes generating, within the virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of the modified three-dimensional model that visually represents either the split or the merge and otherwise has the same visual layout as the unfolded two-dimensional representation of the initial three-dimensional model.
[0008] In yet another aspect, a computer program product is provided that is operable to cause a computer to execute a process comprising generating, within a virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of an initial three-dimensional model of a wire harness. The unfolded representation has an initial visual layout within the virtual two-dimensional viewing environment. The method then includes modifying the initial three-dimensional model within the virtual three-dimensional modeling environment to generate a modified three-dimensional model. The modification includes splitting a route segment or merging two route segments. The method includes generating, within the virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of the modified three-dimensional model that visually represents either the split or the merge and otherwise has the same visual layout as the unfolded two-dimensional representation of the initial three-dimensional model.
[0009] In some embodiments, one or more of the following effects are present. For example, in various embodiments, changes made to route segments on a 3D model of a wire harness can be replicated (e.g., incorporated) into the flattened configuration (e.g., in a formboard drawing) while preserving the visual layout of previous iterations of the flattened configuration (and any previous edits made to the visual layout) and without significantly affecting the visual layout. Thus, certain limitations in conventional systems can be overcome by preserving previous edits in the 2D flattened route. Representative embodiments can increase the accuracy of updating mechanisms on the 2D flattened side whenever there are changes made to the 3D route assembly. This can improve the readability and cleanliness of the visual layout of the flattened harness, even as model updates are iterative. Various embodiments of the systems and techniques disclosed herein can enable improved design lead time before finalizing the flattened formboard design of an electrical harness.
[0010] Other features and advantages will become apparent from the following description and drawings, and from the claims. [Brief explanation of the drawings]
[0011] [Figure 1] 1 shows a series of images showing changing views of a relatively simple electrical wire harness assembly design in a computer-implemented environment. [Figure 2] 1 illustrates an example of a change made to the three-dimensional wire harness model of FIG. 1 and how the change in the three-dimensional wire harness model may affect the appearance of the corresponding two-dimensional form of the model when the modified form of the three-dimensional wire harness model is unfolded. [Figure 3] 1 is a schematic diagram of an exemplary computer 100 configured to carry out the systems and functions disclosed herein. [Figure 4] A detailed visual representation of the 3D wire harness model obtained from the "Electrical Wire Harness Assembly 3D" image in Figure 1. [Figure 5]2 is a visual representation of the unfolded 2D form of the wire harness model obtained from the "Iteration 4: Add Bend" image in FIG. 1. [Figure 6] 1 is a flow chart illustrating an embodiment of a computer-implemented process. [Figure 7] 1 is a schematic diagram of an electrical wiring harness model and its deployed configuration in various states. [Figure 8A] 1 is a flow chart illustrating an embodiment of a computer-implemented process. [Figure 8B] 1 is a flow chart illustrating an embodiment of a computer-implemented process. [Figure 9] 1 is a flow chart illustrating an embodiment of a computer-implemented process. [Figure 10] 1 is a schematic diagram of an electrical wiring harness model and its deployed configuration in various states. [Figure 11A] 1 is a flow chart illustrating an embodiment of a computer-implemented process. [Figure 11B] 1 is a flow chart illustrating an embodiment of a computer-implemented process. [Figure 12] 1 is a flow chart illustrating an embodiment of a computer-implemented process. [Figure 13] 1 is a schematic diagram of an electrical wiring harness model and its various states of deployment configuration, with like reference symbols referring to like elements. DETAILED DESCRIPTION OF THE INVENTION
[0012] [Detailed explanation] Various terms are used in this document to describe the inventive concepts. Terms shall be given their ordinary meaning and, unless otherwise indicated, may be understood to have a meaning consistent with what follows.
[0013] For example, the phrase "computer-aided design" (or CAD) generally refers to the use of a computer (or workstation) to assist in the creation, modification, analysis, or optimization of a design. A "design" refers to a plan or specification (e.g., a drawing) of an object or system, such as structural details of that object or system, typically stored in a computer-based memory. The SOLIDWORKS® computer program available from the assignee of the present application, Dassault Systèmes SolidWorks Corporation, is an example of a CAD software program. As used herein, the phrase "computer-aided design" or CAD should be interpreted broadly to include any computer software, device, or system that incorporates or can incorporate electrical harness assembly design development functionality.
[0014] The term "wire harness" (or "electrical harness," "cable harness," "wire harness," "cable assembly," "wiring assembly," etc.) refers to an assembly of electrical cables or wires capable of transmitting electrical signals and / or power. The cables or wires may be bound together along at least some of the length of the electrical harness by a durable material such as rubber, vinyl, insulating tape, conduit, woven fabric made from extruded yarn, or a combination thereof.
[0015] The term "model" or "3D model" generally refers to a digital or virtual representation of a physical object (e.g., a wire harness) or system. Models, including 3D models, are typically created using computer-aided design (CAD) software. A typical model includes information about the object's geometry and dimensions, and possibly other information, such as materials and / or material properties. For example, in an exemplary embodiment, a model may include a digital or virtual representation of a related physical object (e.g., a wire harness), such as details about the route segments that make up the wire harness. For each wire harness, such details may include one or more data structures stored in computer memory that represent / identify the route segment's name, length, start point, end point, associated sketch segments, etc. In an exemplary embodiment, a computer may execute CAD software to display a three-dimensional scaled representation of the object or system being designed and provide its user with interface elements that facilitate model creation and / or editing.
[0016] The term "unfolding" refers to a computer-implemented process of converting a virtual three-dimensional (3D) model of an object (e.g., a wire harness) into an unfolded two-dimensional (2D) form of the model within a virtual environment. "Unfolding" a model of a "wire harness" refers to a computer-implemented process of converting the 3D model of the wire harness, or a portion thereof, into the 2D form of the wire harness model within a virtual (e.g., CAD) environment. In an exemplary embodiment, for example, the length of each route segment in the 3D wire harness model becomes the 2D form of the 3D model during the unfolding process.
[0017] A "route segment" refers to a portion of a wire harness that typically extends between two distinct junction points. A route segment may include one or more sketch segments. A "sketch segment" may include a spline, line, arc, or curve. A route segment may be represented in computer memory by a data structure (one or more data structures) that defines one or more route properties. A "junction point" is a point on a wire harness where multiple route segments join or where multiple individual wires join to form a wire harness junction.
[0018] The term "visual layout" typically refers to the spatial configuration or arrangement of visual elements in a two-dimensional (2D) form in which a 3D model is unfolded onto a two-dimensional surface (e.g., a virtual 2D environment or a real 2D board). Although the visual representation of the unfolded 2D form of a 3D model shows the physical details of the 3D model, the concept of "visual layout" of the unfolded 2D form of a 3D model should be considered a separate concept from the 3D model itself. When a 3D model is initially unfolded as described herein, the resulting unfolded 2D form of the model may have a default visual layout. This default visual layout may be editable by the designer (e.g., by adding or removing bends, modifying angles, straightening lines, adjusting fanouts, reversing route segments, etc.). Any changes to the visual layout of the unfolded 2D form of the model do not affect the 3D model itself.
[0019] The term "processor," or similar terms, refers to any one or more computer-based processing devices that are physical components capable of performing the functions of a computer by executing computer-readable instructions stored in memory.
[0020] The term "memory," or similar terms, refers to any one or more computer-based memory devices, which are physical components capable of storing computer-readable instructions that, when executed by a processor, result in the computer functionality associated with the execution of the processor.
[0021] [Technical disclosure] The present disclosure relates to the design and manufacture of certain physical objects, such as electrical wire harness assemblies ("wire harnesses"), where the design process occurs in a computer-implemented virtual design environment. Wire harnesses can be used in a wide variety of industries and applications, such as automotive, aviation, marine, rail, industrial machinery, consumer electronics, medical equipment, and the military and defense industries. Typically, a wire harness is an assembly of electrical wires or cables capable of transmitting signals and / or power. The wires or cables may be bundled together (e.g., with a durable material such as rubber or vinyl). The wire harness design process typically involves both electrical and mechanical design. The electrical design portion of the process typically focuses on ensuring that the electrical characteristics of the wire harness are sufficient to meet the electrical requirements of the wire harness. The mechanical design portion of the process typically focuses on ensuring that the physical parameters of the wire harness are optimal to meet the physical requirements of the wire harness. The mechanical design portion of the process typically involves defining the target physical configuration of the wire harness, including, for example, path definitions, route segment start points, route segment end points, route segment lengths, and the like.
[0022] The design process is typically an iterative process, with design changes being made in response to new understanding and / or new information gained about the electrical or mechanical requirements of the wire harness being designed. Designers typically use computer software to facilitate the design of wire harnesses. One example of software traditionally used in connection with wire harness design is SOLIDWORKS® computer-aided design software available from Dassault Systèmes SolidWorks Corporation, particularly those incorporating the Routing™ add-in available from Dassault Systèmes SolidWorks Corporation. Computer systems running such software can be adapted in accordance with the systems and processes disclosed herein to improve the effectiveness and efficiency of the design process when using such adapted systems.
[0023] In an exemplary embodiment, such a system may provide a designer with access to a virtual three-dimensional modeling environment in which the designer can create and modify a three-dimensional model representing the physical configuration of a wire harness. The system also typically provides the designer with access to functionality for unfolding the three-dimensional model to generate an unfolded virtual two-dimensional representation of the wire harness based on the three-dimensional model. This unfolding functionality is desirable because it is generally easier to understand what is required for manufacturing when viewing an unfolded two-dimensional image of a wire harness compared to viewing a three-dimensional model of the wire harness. Thus, the unfolding functionality provides the designer with a simple and convenient way to create the unfolded two-dimensional drawing form preferred by manufacturers from the three-dimensional model created by the designer in a three-dimensional environment, which tends to be the preferred environment for designing the three-dimensional physical configuration of a wire harness. In an exemplary embodiment, the unfolding functionality is accessible (e.g., as a button or other user-selectable visual element) on the graphical user interface of the associated CAD program. Activating the unfolding functionality typically causes the unfolding procedure to occur automatically (i.e., without further input from the user).
[0024] Once unfolded, the visual layout of the resulting two-dimensional representation of the wire harness may be edited (e.g., by adding or removing bends, modifying angles, straightening lines, adjusting fanouts, flipping route segments, etc.). Such editing may be necessary and / or desirable to fit within the allotted space and present the most visually perceptible and usable image of the two-dimensional visual representation. After the three-dimensional model of the wire harness has been unfolded and the resulting two-dimensional visual representation of the harness has been optionally edited, the designer may 1) provide a printed or digital version of the unfolded two-dimensional representation of the harness to a manufacturer to manufacture a physical wire harness represented by the unfolded two-dimensional representation, or 2) return to the three-dimensional environment where the final three-dimensional model of the wire harness is displayed and presented for further possible modifications. In a typical design process, the designer may alternate between the two environments (i.e., the three-dimensional modeling environment and the two-dimensional environment) to iteratively make changes to the three-dimensional model in the three-dimensional modeling environment and / or make changes to the visual layout of the unfolded two-dimensional representation of the three-dimensional model in the two-dimensional environment. It is generally desirable that any changes made during such an iterative design process, particularly any changes to the visual layout of the unfolded 2D representation of the wire harness, be preserved as the designer alternates between the 3D modeling environment and the 2D environment, making additional changes along the way. In an exemplary embodiment, the systems and techniques disclosed herein facilitate preserving changes made to the visual layout of the unfolded 2D representation of the model even when the designer returns to the 3D environment to make additional changes to the 3D model and then generates a new unfolded form of the modified 3D model. In this case, the new unfolded form of the modified 3D model reflects the previous changes made and preserved in any previous iterations of the visual layout of the 2D representation of the model. In many cases, this preservation of previous changes avoids the need to repeat the same or similar changes to the visual layout of the 2D representation of the model as the design evolves or as additional changes to the visual layout of the unfolded form of the 3D model evolve.Such substantial preservation, in some embodiments, increases the efficiency of the overall design process and reduces the likelihood of errors in generating a two-dimensional image of the wire harness (e.g., form board, etc.) that is likely to be most useful to the wire harness manufacturer.
[0025] One type of design change a designer may make to a 3D model during the iterative design process of a wire harness is to split an existing route segment into two or more route sub-segments. The resulting two or more route segments may be connected to each other using connectors, splices, etc. Another type of design change a designer may make to a 3D model during the iterative design process is to merge two route segments that may have been connected to each other (e.g., end-to-end with connectors, splices, etc.) to create a single route segment from the two route segments. When such changes are made to a 3D model, it may be desirable to ensure that any updates to the model are incorporated into and / or shown as part of the corresponding unfolded 2D form of the model without significantly (or at all) affecting the visual layout details of previous iterations of the corresponding unfolded 2D form of the model. Various embodiments of the systems and techniques disclosed herein help to address and ameliorate these concerns.
[0026] FIG. 1 shows a series of images showing changing views of a relatively simple electrical wire harness assembly design. The view in the image labeled "Electrical Wire Harness Assembly 3D" shows an example of a three-dimensional view of a model of a wire harness. The model shown has three electrical connectors connected together by wires as shown. All other views in the figure show unfolded two-dimensional forms of the model. The unfolded two-dimensional forms in all of these other views are the same model (i.e., the model in the "Electrical Wire Harness Assembly 3D" image), but each has a different visual layout. For example, the image labeled "Default 2D Unfolded Route" shows an unfolded two-dimensional form of the model with a visual layout that, in this example, the computer automatically generates in response to the designer first activating the computer's unfold function, without the designer providing the computer with any other instructions or specifications for the desired visual layout of the unfolded two-dimensional form of the model. The unfolded, two-dimensional form of the model in the image labeled "Default 2D Unfolded Route" can be seen to include two-dimensional representations of the same model elements as the "Electrical Wire Harness Assembly 3D" image, including three connectors and the wires interconnecting the three connectors. The visual layout of the model elements in the "Default 2D Unfolded Route" image is shown as having a single connector in the upper left of the image, with wires extending from the right side of the connector, joining together in a bundle before splitting into two branches, the first branch continuing horizontally to the right and the second branch extending slightly downward and diagonally from where it split. Each branch terminates in a wire that connects to a corresponding one of the connectors. Both branches are generally straight. The wires are shown fanning out to connect to their respective connectors. The particular visual layout of the model elements shown in the "Default 2D Unfolded Route" image is merely an example of a default visual layout.In various embodiments, the initial (default) unfolded 2D form of the model, automatically generated by the computer without any further input from the designer into the visual layout, may have a completely different visual layout than that shown in the "Default 2D Unfolded Route" image.
[0027] The other images shown in this figure show a series of iterative changes made to the visual layout of the unfolded 2D form of the model in the "Default 2D Unfolded Route" image. For example, the image labeled "Iteration 1: Angle Modification" shows an unfolded two-dimensional form of the model similar to that shown in the "Default 2D Unfolded Route" image, but with the first branch bent vertically upward (rather than being positioned horizontally as shown in the "Default 2D Unfolded Route" image). In an exemplary embodiment, the computer provides the designer with access to tools and functionality to modify the visual layout within the virtual two-dimensional environment by modifying the angle of the first branch as shown, to generate an iteration of the unfolded two-dimensional form of the model shown in the "Iteration 1: Angle Modification" image.
[0028] Similarly, the image labeled "Iteration 2: Add Bend" shows an unfolded 2D form of a model similar to that shown in the "Iteration 1: Fix Angle" image, but with a bend added about halfway along the first branch. In an exemplary embodiment, the computer provides the designer with access to tools and functionality within the virtual 2D environment to create the bend in the first branch as shown, generating an iteration of the unfolded 2D form of the model shown in the "Iteration 2: Add Bend" image.
[0029] The image labeled "Iteration 3: Vary Angle of Another Route Segment" shows an unfolded 2D form of a model similar to that shown in the "Iteration 2: Add Bend" image, but with a bend added about halfway along the first branch. In an exemplary embodiment, the computer provides the designer with access to tools and functionality within the virtual 2D environment to create this bend in the first branch as shown and generate an iteration of the unfolded 2D form of the model shown in the "Iteration 3: Vary Angle of Another Route Segment" image.
[0030] Similarly, the image labeled "Iteration 4: Add Bend" shows an unfolded 2D form of a model similar to that shown in the "Iteration 3: Change Angle of Another Route Segment" image, but with a bend added about halfway along the second branch. In an exemplary embodiment, the computer provides the designer with access to tools and functionality within the virtual 2D environment to create the bend in the second branch as shown and generate an iteration of the unfolded 2D form of the model shown in the "Iteration 4: Add Bend" image.
[0031] In an exemplary embodiment, the computer provides the designer with access to tools and functionality that allow the designer to move from the 2D environment where the final one of the illustrated iterations (1-4) is displayed within the virtual 2D environment and return to the 3D modeling environment where a 3D model of the wire harness (e.g., as shown in the "Electrical Wire Harness Assembly 3D" image) is displayed and possible design modifications (e.g., adding wires, removing wires, changing wiring connectors and / or connections, changing wire lengths, etc.) are suggested. In an exemplary embodiment, the systems and techniques disclosed herein facilitate preserving any changes made to the visual layout of the 2D form of the model, such as the multiple iterations (1-4) that produced the visual layout shown in the "Iteration 4: Add Bends" image, while allowing the designer to make additional changes to the model (e.g., within the 3D environment) and generate a new 2D form of the modified model by applying a new unfold function to the modified 3D model. Thus, in an exemplary embodiment, the resulting unfolded 2D form of the modified 3D model is displayed with additional design changes (made within the 3D environment) but still with a visual layout that is very similar to the visual layout in the "Iteration 4: Add Bend" image (e.g., the visual layout may be identical except for incorporating the design changes).
[0032] FIG. 2 shows a series of images depicting changing views of a relatively simple electrical wire harness at various stages of the design process. The first stage (shown in the "Electrical Harness in 3D" image) shows a three-dimensional model of the wire harness within a virtual three-dimensional modeling environment. The second stage (shown in the "Unfolded Route Design After Various Editing Operations" image) shows an unfolded two-dimensional visual representation of the model within a virtual two-dimensional viewing environment. The third stage (shown in the "Electrical Harness in 3D After Route Split and Splice Insertion" image) shows modifications to the three-dimensional model within the virtual three-dimensional modeling environment, including the addition of a split / junction point and a splice to one of the wire harness route segments within the model. These modifications to the underlying design itself are made within the three-dimensional modeling environment. In an exemplary embodiment, the changes represented in the third stage (shown in the "Electrical Harness in 3D After Route Split and Splice Insertion" image) are made after the viewing and visual layout editing in the second stage (shown in the "Unfolded Route Design After Various Editing Operations" image).
[0033] Two other images in FIG. 2 (labeled "Flatten Update Route Results Without Using the Systems and Techniques Disclosed Herein" and "Flatten Update Route Improved Results") contrast the results obtained with and without the use of the systems and techniques disclosed herein in the next unfolding step performed on the third-stage three-dimensional model (shown in the "Electrical Harness in 3D After Route Splitting and Splice Insertion" image). Comparing these two results with the "Flatten Route Design After Various Editing Operations" image, it can be seen that the visual layout of the "Flatten Update Route Improved Results" image is much more similar to the "Flatten Route Design After Various Editing Operations" image than the "Flatten Update Route Results Without Using the Systems and Techniques Disclosed Herein" image. It is clear that when a computer generates the "Flatten Update Route Results Without Using the Systems and Techniques Disclosed Herein" image, the designer will most likely want to and will most likely decide to take additional steps to edit the visual layout to more closely resemble the previous layout (in the "Flatten Update Route Design After Various Editing Operations" image). These additional steps can be avoided by having the computer execute the modification techniques disclosed herein to generate the visual layout shown in the "Unfold Update Route Refinement Result" image, which is substantially identical to the visual layout of the "Unfold Update Route Refinement Result" image, except that this image shows the added split / joint and splice sections (added to create the "Electrical Harness in 3D After Route Split and Splice Insertion" image).
[0034] 3 is a schematic diagram of an exemplary computer 100 configured to execute the systems and functions disclosed herein. More specifically, in an exemplary embodiment, the computer 100 is configured to facilitate unfolding a three-dimensional model (e.g., of a wire harness) to generate an unfolded two-dimensional form of the three-dimensional model within a virtual environment. Additionally, the computer 100 is configured to perform an iterative unfolding process, with any design changes made to the model during successive unfolding processes, each iterative unfolding process largely (or completely) retaining visual layout details from previous iterations that can be applied to the unfolded two-dimensional form of the model.
[0035] The computer 100 includes a processor 102, computer-based memory 104, computer-based storage 106, a network interface 108, an input / output device interface 110, and a bus that serves as an interconnect between the components of the computer 100. The bus acts as a communication medium that allows the various components of the computer 100 to communicate and interact with one another.
[0036] Processor 102 is configured to perform various computer-based functions disclosed herein, as well as support functions not expressly disclosed herein. Generally, processor 102 performs these and other functions by executing computer-readable instructions stored on a computer-readable medium (e.g., 104 or 106). In various embodiments, some of these functions may be performed with reference to data stored on a computer-readable medium and / or received from some external source (e.g., an input / output (I / O) device via I / O device interface 110 and / or from an external network via network interface 108).
[0037] Computer 100 includes both volatile and non-volatile memory. In a representative embodiment, memory 104 comprises a form of volatile storage that stores computer-readable instructions that, when executed by processor 102, cause processor 102 to perform or facilitate some (or all) of the computer-based functions disclosed herein. Additionally, in a representative embodiment, storage 106 comprises a form of non-volatile memory that stores computer-readable instructions, such as instructions implementing an operating system, configuration information, etc. The various system memory resources (e.g., 104, 106) may store data as well.
[0038] In an exemplary embodiment, memory 104 stores computer-readable instructions that, when executed by processor 102, cause processor 102 to perform the functions disclosed herein as attributable to a computer (or computer system). In some embodiments, these instructions are for a computer-aided design program adapted to include the functions disclosed herein embedded therein. One example of a computer-aided design program suitable for adaptation to incorporate the functions disclosed herein in this regard is the SOLIDWORKS® computer program available from Dassault Systèmes SolidWorks Corporation, the assignee of the present application. When so adapted, a computer-aided design program is believed to include the design development functionality disclosed herein that efficiently develops or converts an electrical harness assembly design into a clean, readable, and highly usable 2D form of the electrical harness assembly design, preserving historical layout details in that 2D form.
[0039] Network interface 108 is a component that allows computer 100 to connect to any one or more of a variety of external computer-based communication networks, including, for example, a local area network (LAN), a wide area network (WAN) such as the Internet, etc. In various embodiments, network interface 108 may be implemented in hardware, software, or a combination of hardware and software.
[0040] Input / output (I / O) device interface 110 is a component that enables communication between computer 100 and any one or more input or output devices, such as a keyboard, mouse, display, microphone, speaker, printer, etc. In various embodiments, the I / O device interface can be implemented in hardware, software, or a combination of hardware and software. In a representative embodiment, a computer may have one or more I / O devices (e.g., a computer monitor, keyboard, mouse, printer, touchscreen device, etc.) connected to I / O device interface 110. These I / O devices (not shown in FIG. 3 ) function as a human-machine interface (HMI) and are generally configured to allow a human user to interact with system 100 to access and utilize functionality, particularly functionality related to computer-aided design (CAD), to develop electrical harness assembly designs, as disclosed herein.
[0041] In an exemplary embodiment, computer 100 is connected to a display device (e.g., via I / O device interface 110) and configured to present on the display device a visual representation of an interface to a product design environment adapted to include the functionality disclosed herein, such as that provided within the SOLIDWORKS® computer program. The interface, and its visual representation on the computer-based display device, in an exemplary embodiment, provides a user with access to the unfolding functionality disclosed herein and displays (e.g., on a display device coupled to I / O device interface 110) a visual representation of a 3D model of an unfolded electrical wire harness assembly design, an unfolded 2D form of the unfolded electrical harness assembly model, and other information that may be included in a formboard representation of the electrical harness.
[0042] In some embodiments, computer 100 and its various components may be contained within a single housing (e.g., a personal laptop) or a single workstation. In some embodiments, computer 100 and its various components may be distributed across multiple housings, possibly at multiple locations across a network. Each component of computer 100 may include multiple forms of these elements, which may cooperate, and which may be in different physical locations and connected via a network. For example, processor 102 in FIG. 3 may represent multiple individual processors in different physical locations operating together to cooperatively perform processes attributed to processor 102. A wide variety of possibilities regarding specific physical implementations are possible.
[0043] In various embodiments, computer 100 may include other elements not shown in Figure 3. These elements may include, for example, controllers, buffers (caches), drivers, repeaters, receivers, etc. Additionally, interfaces (e.g., 108 and 110) may include elements not specifically shown in Figure 3 to facilitate communication between the illustrated computer components, including, for example, address, control, and / or data connections.
[0044] 4 is a visual representation of a three-dimensional wire harness model (numbered 400 in FIG. 4) derived from the "Electrical Wire Harness Assembly 3D" image of FIG. 1. In an exemplary embodiment, computer 100 enables a designer to create and / or modify / edit the three-dimensional wire harness model. Further, computer 100 is configured to store three-dimensional wire harness model 400 in memory (e.g., 104) and to display a visual representation of three-dimensional wire harness model 400 to the designer for evaluation / modification / editing.
[0045] The depicted visual representation shows that the model 400 has three electrical connectors 402a, 402b, and 402c connected together by a wire as shown. The wire includes a first route segment 404a extending between a start point 406a (near connector 402a) and an end point 406c (near connector 402c), and a second route segment 404b extending between a start point 406b (near connector 402b) and an end point 406c (near connector 402c). The first route segment 404a in the image is represented by three sketch segments: a first sketch segment 408a, a second sketch segment 408b, and a third sketch segment 408c. The depicted wire harness 400 also includes a plurality of junctions 410.
[0046] Computer 100, in an exemplary embodiment, stores three-dimensional model 400 in memory 104 with a route-specific data structure for model 400. The route-specific data structure may have the following structure (in Table 1):
[0047] [Table 1]
[0048] This data structure contains data specific to a particular route segment, or possibly one of several route segments, in the corresponding model. Typically, a model as a whole may be represented by a collection of data containing multiple such data structures, one for each route segment in the model. Model 400, for example, includes two route segments 404a and 404b. Thus, model 400 may be represented in computer memory by a collection of data containing two such data structures: one for route segment 404a and one for route segment 404b. Of course, more complex models may have more such data structures.
[0049] In the above data structure, RouteSegmentData3D_c is the name of a data structure class that logically corresponds to a particular one of the route segments in the associated model (e.g., model 400). In an exemplary embodiment, RouteSegmentData2D_c may be stored as a member variable. Within the context of model 400, RouteSegmentData3D_c may logically correspond to route segment 404a. In that case, computer 100 may include a second data structure with a different RouteSegmentData3D_c name that corresponds to route segment 404b. Other data entries in the illustrated data structure represent various details (e.g., in the form of member variables) related to the corresponding route segment. For example, in the illustrated example, m_RouteSegmentID is a member variable that represents an identifier (ID) of the associated route segment, m_RouteSegmentLength3D is a member variable that contains a numeric value that represents the length of the associated route segment within the three-dimensional modeling environment, m_StartPoint3DIndex is a member variable that holds the index or location of the start point of the associated route segment within the three-dimensional modeling environment, m_EndPoint3DIndex is a member variable that holds the index or location of the end point of the associated route segment within the three-dimensional modeling environment, and m_ListofSketchSegments3D is a member variable that holds one or more member variables that represent a list of three-dimensional sketch segments that each make up part of the associated route segment. By way of example, the list of three-dimensional sketch segments in m_ListofSketchSegments3D of model 400 could include sketch segment 408a, sketch segment 408b, and sketch segment 408c. Of course, in various embodiments, other data related to model 400 could be stored in memory 104 as well.
[0050] Figure 5 is a visual representation of the unfolded two-dimensional form of wire harness model 400 obtained from the "Iteration 4: Add Bend" image of Figure 1. In an exemplary embodiment, computer 100 is configured to store data representing the unfolded two-dimensional form of wire harness model 400 in memory (e.g., 104) and to display a visual representation of two-dimensional wire harness model 500 to a designer for evaluation / modification / editing.
[0051] The illustrated visual representation shows that the model 400 has three electrical connectors 402a, 402b, and 402c, connected together by wires as shown. The wires represent a first route segment extending between a first point (near connector 402a) and a second point (near connector 402c) and a second route segment extending between the first point (near connector 402b) and the second point (near connector 402c). The visual representation of the model includes, for example, a first line sketch segment 512a, an arc sketch segment 514, and a second line sketch segment 512b. The first line sketch segment 512a, the arc sketch segment 514, and the second line sketch segment 512b extend between a start point 506b (near connector 402b) and an end point 506c (near connector 402c) in the illustrated visual representation.
[0052] In an exemplary embodiment, computer 100 stores data related to the two-dimensional form of model 400 in memory 104 with a route-specific data structure of the two-dimensional form of the model, which typically contains data related to a particular visual layout. The route-specific data structure may have the following structure (in Table 2):
[0053] [Table 2]
[0054] This data structure contains data that may be specific to a particular route segment, or possibly one of several route segments, in the two-dimensional representation of the corresponding model. In an exemplary embodiment, the creation of the data structure occurs when the corresponding three-dimensional model is unfolded to create the two-dimensional form of the associated model. Typically, a model as a whole may be represented by a collection of data that includes multiple such data structures, one data structure for each route segment in the model.
[0055] In the above data structure, RouteSegmentData2D_c is the name of a data structure class that logically corresponds to a particular one of the route segments of the associated model (e.g., model 400). In an exemplary embodiment, RouteSegmentData2D_c may be stored as a member variable. Within the context of model 400, RouteSegmentData2D_c may logically correspond to a portion of the model's two-dimensional form that corresponds to, overlaps with, or contains route segment 404a. In that case, computer 100 may include a second data structure with a different RouteSegmentData2D_c name that corresponds to a portion of the model's route segment 404b. In an exemplary embodiment, each RouteSegmentData2D_c data structure has a corresponding RouteSegmentData3D_c data structure, and vice versa.
[0056] Other data entries within the illustrated data structure represent various details (e.g., in the form of member variables) associated with the corresponding portion of the model's two-dimensional form. For example, as described above, in the illustrated example, m_RouteSegmentID is a member variable that represents the identifier (ID) of the associated route segment. In an exemplary embodiment, m_RouteSegmentID in RouteSegmentData2D_c has the same value as m_RouteSegmentID in the corresponding RouteSegmentData2D_c. Meanwhile, m_RouteSegmentLength2D is a member variable that contains a numeric value that represents the length of the portion of the model's two-dimensional form associated with the route segment, m_StartPoint2DIndex is a member variable that holds the index or location of the start point of the associated route segment within the two-dimensional virtual environment, and m_EndPoint2DIndex is a member variable that holds the index or location of the end point of the associated route segment within the two-dimensional virtual environment. As described above, m_StartPoint3DIndex is a member variable that holds the index or location of the start point of the associated route segment within the associated 3D model, and m_EndPoint3DIndex is a member variable that holds the index or location of the end point of the associated route segment within the associated 3D model. Finally, m_ListofSketchSegments2D is a member variable that holds one or more member variables that represent a list of 2D sketch segments, each of which constitutes part of the image associated with a corresponding route segment. By way of example, the list of 2D sketch segments in m_ListofSketchSegments2D for a portion of the unfolded 2D form of model 400 in FIG. 5 may include first line sketch segment 512a, arc sketch segment 514, and second line sketch segment 512b. Of course, in various embodiments, other data associated with the unfolded 2D form of model 400 may be stored in memory 104 (and optionally as part of RouteSegmentData2D_c) as well.Such other data may include, for example, a start point or a start point index of the two-dimensional location of the start point for each of the associated sketch segments, and an end point or an end point index of the two-dimensional location of the end point for each of the associated sketch segments.
[0057] In various embodiments, computer 100 can coordinate one or more of these modifications: A) splitting a route segment into two or more route segments; and B) merging two or more route segments into a single route segment. Specifically, computer 100 can generate an unfolded two-dimensional form of the model modified to include one or more of these modifications, while retaining, at least to a large extent, the visual layout characteristics of the pre-unfolded two-dimensional form of the model before it was so modified. Each of these are options for modifications (splitting a route segment and merging two or more route segments) that are described further below.
[0058] [Split a route segment into multiple route segments] The computer 100 is configured to allow a designer to split a route segment in a three-dimensional model of a wire harness into multiple route segments. This can be accomplished in a variety of ways. In one example, the computer 100 may run a SOLIDWORKS® computer program with an Electrical Routing™ add-in that presents a “Split Route” command to the designer. When the designer selects this command, the existing route segment in the model is split into multiple route segments. A particular route segment may include a collection of sketch segments. In such a case, the “Split Route” command may operate on a specific one of the sketch segments. In this case, the computer 100 splits the selected route segment by splitting the selected sketch segment of the selected route segment into two sketch entities (or two sketch segments) in response to input from the designer. In an exemplary embodiment, the computer 100 creates a split / junction point between the two sketch entities, and thus between the two route segments. In an exemplary embodiment, computer 100 is configured to allow a designer to add a splice to a route segment, thereby allowing the designer to split one route segment into two route segments.
[0059] In that situation (e.g., when a designer adds a division within a route segment of a wire harness model), computer 100 is configured to adjust the newly added division to accurately reflect the newly added division when creating the unfolded two-dimensional form of the model, while preserving the layout features (including any previous edits to the layout features) of the two-dimensional form in which the model was previously unfolded (not including the newly added division). Specifically, in an exemplary embodiment, computer 100 uses the m_RouteSegment3D_c and m_RouteSegment2D_c data structures to identify route segments that exist in the model after performing the route split function. By way of example, any route segments that have been changed in this way may be identified by computer 100 performing the process described in the flowchart of FIG. 6 (described below).
[0060] The flowchart of Figure 6 begins at 602 and includes constructing 604 a three-dimensional model of a wire harness. For example, a SOLIDWORKS® Electrical 3D computer program allows a designer to design wiring diagrams and routes, create three-dimensional paths for wires, cables, harnesses, etc., place connectors, clips, etc., calculate actual routing path lengths, etc. In an exemplary embodiment, a designer interacts with a computer program, such as the SOLIDWORKS® Electrical 3D computer program described above, to construct a three-dimensional model of a wire harness.
[0061] Next (at 606), the process represented in the illustrated flowchart includes executing a "Develop Route" command. In an exemplary embodiment, the software program used to build / create the three-dimensional model of the wire harness displays a graphical user interface (GUI) to the designer that includes user interface (UI) elements that are selectable to launch a computer-implemented unfolding process that is applied to the virtual three-dimensional wire harness model. In an exemplary embodiment, the designer may select (at 606) the "Develop Route" command to launch the process, and in response, the computer 100 may automatically apply the unfolding process (algorithm) to the three-dimensional model.
[0062] The unfolding algorithm generates (at 608) an unfolded two-dimensional form of the three-dimensional model. At this point, the computer 100 creates an m_RouteSegmentData2D_c (also referred to herein as RouteSegmentData2D_c) data structure(s) based on the corresponding three-dimensional model for the unfolded two-dimensional form of the three-dimensional model. The unfolding algorithm in the illustrated flowchart generates unfolded foam board features (including the unfolded two-dimensional form of the model).
[0063] According to the illustrated flowchart, the process (at 610) includes an editing process that makes a drawing containing the unfolded two-dimensional form of the model cleaner and more user-friendly. Specifically, the editing performed here (at 610) modifies the visual layout of the unfolded two-dimensional form of the model. The specific editing may vary depending on the preferences of the unfolded two-dimensional form of the model, the designer and / or manufacturer, and / or the intended use. The editing may be performed by the designer selecting one or more UI elements and interacting with associated computer-implemented functions that the computer software program provides to the designer (typically on a GUI). The functions and associated commands may include, for example, one or more of "apply straightening," "edit angle," "add bend," "flip," "adjust fanout," etc. In an exemplary embodiment, "apply straightening" refers to a computer command or function that straightens the path (e.g., between two points) of a wire or cable segment. In an exemplary embodiment, "edit angle" refers to a computer command or function that allows the designer to manually adjust an angle or bend at a specific point along a wire harness. In an exemplary embodiment, "add bend" refers to a computer command or function that allows a designer to manually insert a bend in a wire harness. In an exemplary embodiment, "flip" refers to a computer command or function that allows a designer to change the orientation or direction of, for example, a connector, harness branch, or route. In an exemplary embodiment, "adjust fanout" refers to a computer command or function that allows a designer to modify how individual wires exit or diverge from a common point, for example, the end of a bundled harness. In various embodiments, other editing commands and functions may be accessible and utilized by the designer to edit the visual layout (at 608). In some examples, the scope of edits made in this process may be extensive.Whether extensive or not, it is generally desirable that edits be at least largely preserved (barring subsequent intentional changes to the edits by the designer) even if one or more design details (e.g., route length) in the associated 3D model change at a subsequent point in the design process.
[0064] Next (at 612), the process represented by the illustrated flowchart includes updating the m_RouteSegmentData2D_c data structure(s) of the unfolded two-dimensional form of the model. For example, if the edits (made in 610) changed the location in two-dimensional space of the start point of a particular route segment within the unfolded two-dimensional form of the model, the computer updates (at 612) the corresponding m_StartPoint2DIndex in the m_RouteSegmentData2D_c data structure for that route segment. Similarly, if the edits (made in 610) changed the location in two-dimensional space of the end point of a particular route segment within the unfolded two-dimensional form of the model, the computer updates (at 612) the corresponding m_EndPoint2DIndex in the m_RouteSegmentData2D_c data structure for that route segment. This step 612 is shown in the illustrated flowchart as coming after step 610, which may be correct. However, in some embodiments, computer 100 may automatically perform step 612 for each edit or set of edits as the designer makes those edits, although in an exemplary embodiment computer 100 updates m_RouteSegmentData2D_c as necessary to take into account the edits made before proceeding to any steps following step 612.
[0065] If the three-dimensional model is complete (at 614) (e.g., no further changes need to be made in the three-dimensional model) and edits to the visual layout of the two-dimensional form of the model are completed (at 610), the unfolded route design (having the unfolded two-dimensional form of the model) is considered complete (at 616). In an exemplary embodiment, computer 100, in response to a designer's instructions, may set a designation in computer memory associated with the three-dimensional model and / or the unfolded two-dimensional form of the associated model indicating complete (i.e., the design is no longer a work in progress).
[0066] Once the model and / or its developed route design is designated as complete (616), one or more drawings (e.g., including formboard-style drawings) based on the model and including two-dimensional representations of the model may be provided to a manufacturer (e.g., by some type of electronic transmission, by printing or physical delivery, or by other means). The manufacturer typically uses the provided drawings to manufacture one or more associated instances of wire harnesses based on the wire harness design depicted in the provided drawings. The wire harnesses may be implemented in an end product (e.g., an automobile) to interconnect actual electrical and / or electronic components to carry electrical control, data, and / or power signals between those components.
[0067] If the three-dimensional model is not complete (at 614) (e.g., the designer determines that further changes will be made to the model), the designer interacts with computer 100 to cause computer 100 to switch back to the three-dimensional modeling environment (618). In an exemplary embodiment, the designer can move back and forth between the two-dimensional and three-dimensional modeling environments by selecting UI elements that computer 100 presents on the GUI. In response to switching back to the three-dimensional modeling environment, computer 100 typically ceases to display the unfolded two-dimensional form of the model, but instead displays the three-dimensional model itself within the three-dimensional modeling environment.
[0068] The 3D modeling environment allows the designer to make further design changes to the model, which is part of the process depicted in the illustrated flowchart. Specifically, according to the process depicted in the flowchart, the designer (at 620) modifies the wire harness model (e.g., by introducing a split into a route segment or by merging two route segments).
[0069] The designer then causes computer 100 to switch (at 622) from the 3D modeling environment back to the 2D route development environment. In an exemplary embodiment, the designer may accomplish this by activating a develop route function (e.g., by selecting an on-screen UI element). In response to activating the develop route function, computer 100 incorporates the design modifications made in the 3D modeling environment into the 2D form of the model that computer 100 displays in the 2D environment. As a result, computer 100 displays an updated 2D form of the 3D model, where the updated 2D form of the 3D model matches the final form of the 3D model and includes all applicable final design changes.
[0070] At 624, the process depicted in the flowchart includes computer 100 writing (or updating) m_RouteSegmentData3D_c in memory (e.g., 104) for all route segments that make up the three-dimensional model. In some embodiments, prior to 624, m_RouteSegmentData3D_c is already populated with data from a previous iteration of the model. In that case, writing to m_RouteSegmentData3D_c may simply involve overwriting only the data entries related to the final set of design changes. For example, if an update occurred in the last three-dimensional modeling environment session that added a division to a route segment, the associated m_RouteSegmentData3D_c data set may be updated at this time to reflect this division. Similarly, if an update occurred in the last three-dimensional modeling environment session that merged two route segments into one, the associated m_RouteSegmentData3D_c data set may be updated at this time to reflect this merge.
[0071] At 626, the computer 100 enters a functional loop that iterates the number of three-dimensional route segments (e.g., RouteSegmentData3D_c) that make up the wire harness in the three-dimensional wire harness model. This loop is initialized with i, a variable stored in memory with an initial value of zero (i=0), as shown at 626. The value assigned to i is incremented by one (i++) after each loop. This loop is repeated as long as the value of i is less than the total number of three-dimensional route segments in the three-dimensional wire harness model (e.g., i<3DRouteSeg, where 3DRouteSeg is the number of route segments in the model). The loop is executed once for each route segment. Thus, in an exemplary embodiment, by using this functional loop (which the computer 100 enters at 626), the computer 100 processes each three-dimensional route segment one at a time.
[0072] More specifically, according to the illustrated functional loop, for each three-dimensional route segment, computer 100 evaluates (at 628) whether the 3D route segment ID, m_RouteSegmentID, from the m_RouteSegmentData3D_c dataset is present in the corresponding m_RouteSegmentData2D_c of the unfolded two-dimensional form of the corresponding model. In an exemplary embodiment, this step (628) may be performed by computer 100 comparing the value of m_RouteSegmentID from the three-dimensional model with each m_RouteSegmentID value in the corresponding m_RouteSegmentData3D_c dataset. If the computer 100 determines (at 628) that the 3D route segment ID, m_RouteSegmentID, from the m_RouteSegmentData3D_c dataset is not present in the corresponding m_RouteSegmentData2D_c, the computer 100 adds (at 630) the missing route segment to a newly added set (e.g., a group of route segments stored in memory as data that corresponds to the newly added route segment in the 3D model and / or needs to be represented by a 2D route segment in the unfolded 2D form of the corresponding model). After adding the missing route segment (630), the computer returns to step 626, increments i, and continues the process as appropriate.
[0073] If the computer 100 determines (at 628) that a 3D route segment ID (e.g., m_RouteSegmentID) exists in the corresponding m_RouteSegmentData2D_c (e.g., because a matching m_RouteSegmentID has been identified in m_RouteSegmentData2D_c), the computer 100 proceeds to determine (632) whether, for that route segment, the three-dimensional start and end points in the m_RouteSegmentData3D dataset are the same as the three-dimensional start and end points in the m_RouteSegmentData2D dataset. Specifically, in an exemplary embodiment, the computer 100 compares (at 632) the m_StartPoint3DIndex in the m_RouteSegmentData3D dataset with the m_StartPointIndex3D in the m_RouteSegmentData2D dataset, and compares the m_EndPoint3DIndex in the m_RouteSegmentData3D dataset with the m_EndPointIndex3D in the m_RouteSegmentData2D dataset. If the computer 100 determines (at 632) that both the 3D start point and the 3D end point are the same in the m_RouteSegmentData3D dataset and the m_RouteSegmentData2D dataset ("Y" in the illustrated flowchart), the computer 100 continues the process by returning to step 626. However, if the computer 100 determines (at 632) that either the m_StartPoint3DIndex in the m_RouteSegmentData3D dataset is different from the m_StartPointIndex3D in the m_RouteSegmentData2D dataset, or the m_EndPoint3DIndex in the m_RouteSegmentData3D dataset is different from the m_EndPointIndex3D in the m_RouteSegmentData2D dataset, the computer 100 proceeds to a process referred to as a route segment split and merge case 634. This exemplary embodiment is detailed in FIG.Essentially, in an exemplary embodiment, if the computer 100 determines (at 628) that the same route segment ID exists in the 3D model dataset and at least one of the IDs of the start or end points of the route segment does not match (at 632) in the m_RouteSegment3D_c dataset and the m_RouteSegment2D_c dataset, the computer 100 essentially determines that a split or merge has been introduced in the route segment in the 3D model.
[0074] Process 634, detailed in Figure 8 below, adjusts the splits or merges made to the associated root segment model in its corresponding unfolded 2D form. In an exemplary embodiment, any changes introduced thereto are incorporated into the unfolded 2D form of the model being generated in a manner that tends to preserve visual layout characteristics from the previous iteration of the model's unfolded 2D form. After performing the split and / or merge adjustment procedure (634) on that root segment, computer 100 returns to step 626, increments i, and continues the process as appropriate, according to the flowchart of Figure 6.
[0075] If computer 100 determines (at 626) that no more route segments remain (i.e., all route segments in the 3D model have been subjected to the functional loop associated with the input point of 626), computer 100 creates (at 636) an updated version of the unfolded 2D form of the model. More specifically, according to the illustrated flowchart, computer 100 creates an updated unfolded 2D form of the model by retaining the editing changes based on the set of modified route segments. Further (also at 636), computer 100 ensures that all updated m_RouteSegment2D_c data is stored and reflected in the unfolded route. Thereafter, computer 100 (possibly in response to further layout edits from the designer, for example) returns the process to step 610 in the flowchart for further editing.
[0076] Table 3 shows exemplary data that may be stored (e.g., in computer memory) in logical association with a route segment (one or more route segments) in a model. More specifically, the table shows data structures that may be stored for a three-dimensional model (routeSegment3D) after divisions have been added to a route segment in the model, and for a corresponding unfolded two-dimensional form (routeSegment2D) of the model as it existed before the route segment was divided.
[0077] [Table 3]
[0078] FIG. 7 shows an initial image of a three-dimensional model 700 within the three-dimensional modeling environment (labeled “electrical harness before route split”), an unfolded two-dimensional form of the three-dimensional model (labeled “unfolded route of electrical harness before route split update”), a next image of the three-dimensional model 700 within the three-dimensional modeling environment with split / junction points added to each of two route segments (labeled “electrical harness after route split”), and a next unfolded two-dimensional form of the three-dimensional model with the added split / junction points (labeled “updated 2D unfolded route after route split in 3D”). This is an example of a series of images that the computer 100 may display to the designer on the screen in the order described as the model evolves (as the designer adds splits to the model's route segments). It is noteworthy that changes to the model within the three-dimensional modeling environment (such as adding splits to the model's route segments) do not significantly affect the visual layout of the unfolded two-dimensional form of the model once those changes are incorporated into the model's unfolded two-dimensional form.
[0079] Specifically, in Figure 7, it can be seen that, except for the addition of divisions to the route segments, the unfolded 2D form of the model in the "Updated 2D unfolded route after route division in 3D" image shares the same visual layout characteristics as the unfolded 2D form of the model in the previous form of the 2D (i.e., before addition of divisions) "Unfolded route of electrical harness before route division update" image. For example, in both images, the connectors are arranged along parallel lines, with the central connector 702c located on one side of the image and the other two connectors 702a and 702b located on the other side of the image, and the connecting route segments that begin with a straight line (either up or down) from a junction point, end with a 90-degree bend, followed by a horizontal straight section, then another 90-degree bend to the opposite route segment, followed by a short straight section, followed by another 90-degree bend, followed by another short straight section, followed by an outward 90-degree bend, a very short section, followed by another bend, and a short section that connects to the junction point of the corresponding one of connectors 702a and 702b. The fanout to connector 702c extends to the left to a connection point on connector 702c, and the fanouts of each of the other connectors 702a and 702b extend to the right to a connection point on the corresponding connector 702a or 702b. In particular, these visual layout features affect how the model is displayed on a two-dimensional surface (e.g., on a screen), but do not affect the design details of the model itself. Other visual layout features may contribute to the desired appearance (e.g., neatness and intuitiveness) of the model's unfolded two-dimensional form. In shifting from the "2D Unfolded Result" image to the "Unfolded Update Result with Length Adjustments Retaining Previous Edits" image, computer 100 incorporates the final changes to the model (i.e., adding route segment splits), but retains the visual layout features from the previous "Unfolded Route of Electrical Harness Before Route Split Update" image despite the incorporated design changes.In this way, the visual layout features are preserved from one iteration of the model's unfolded two-dimensional form to the next, despite design changes made during intervening three-dimensional modeling sessions. In an exemplary embodiment, computer 100 is configured to store information detailing the visual layout features of the model's unfolded two-dimensional form.
[0080] Design changes made within the virtual 3D modeling environment (adding subdivisions within route segments) result in a change to the visual layout of the 3D model displayed by computer 100, typically causing computer 100 to update m_RouteSegmentData3D_c for any affected route segments. Specifically, for each route segment that existed in m_RouteSegmentData3D_c before the subdivisions were added, computer 100 updates (i.e., shortens) the route segment length (m_RouteSegmentLength3D in m_RouteSegmentData3D_c), changes either the 3D start point index (m_StartPoint3Dindex) or the 3D end point index (m_EndPoint3Dindex) that existed in m_RouteSegmentData3D_c before the subdivisions were added, and changes the 3D sketch segment list (m_ListofSketchSegments3D that existed in m_RouteSegmentData3D_c) to reflect the changes made to accommodate the added subdivisions. Similarly, for each route segment added in m_RouteSegmentData3D_c by adding a division, the computer 100 adds a new route segment identifier (m_RouteSegmentID) to m_RouteSegmentData3D_c and specifies a three-dimensional route segment length (m_RouteSegmentLength3D), a three-dimensional start point index (m_StartPoint3Dindex), a three-dimensional end point index (m_EndPoint3Dindex), and a three-dimensional sketch segment list (m_ListofSketchSegments3D) for the new route segment identifier.
[0081] In the example represented in the three-dimensional model data structure (routeSegment3D) of Table 3, route segments with identifiers 1 and 2 appear to have existed before the division was added. This is evident from the fact that each of these route segment identifiers (1 and 2) is represented in the routeSegment2D(olddata) column. It can be seen that for these route segments (1 and 2), computer 100 updates (i.e., shortens) the route segment length (m_RouteSegmentLength3D in m_RouteSegmentData3D_c).
[0082] Specifically, the computer 100 shortens the route segment length of route segment 1 from 285 millimeters (mm) to 150 mm because adding a division to route segment 1 results in each of the two resulting route segments being shorter. In this case, the division is considered to have been added 150 mm from the start point of route segment 1. In this example, the computer 100 does not change the three-dimensional start point index (m_StartPoint3Dindex) because the start point of route segment 1 remained unchanged despite the introduction of the division. However, the computer 100 changes the three-dimensional end point index (m_EndPoint3Dindex) because the previous end of route segment 1 has been severed by the division, setting a new end point for route segment 1 (represented by an index number of 50 instead of 20). In the illustrated example, the computer 100 recalculates the list of sketch segments associated with route segment 1 (m_ListofSketchSegments3D) to include only one associated sketch segment. <1> to multiple related sketch segments <1,2,3,4,5,6,7,8,9,10,11>.
[0083] Similarly, the computer 100 shortens the route segment length of route segment 2 from 250 millimeters (mm) to 120 mm because adding the division to route segment 1 results in a shorter length for each of the two resulting route segments. In this case, the division is considered to have been added 120 mm from the start point of route segment 2. In this example, the computer 100 does not change the three-dimensional start point index (m_StartPoint3Dindex) of route segment 2 because the start point of route segment 2 remained unchanged despite the introduction of the division. However, the computer 100 changes the three-dimensional end point index (m_EndPoint3Dindex) of route segment 2 because the previous end of route segment 2 was severed by the division, setting a new end point for route segment 2 (represented by an index number of 60 instead of 30). In the illustrated example, the computer 100 recalculates the list of sketch segments associated with route segment 2 (m_ListofSketchSegments3D) to include only one associated sketch segment. <4> to multiple related sketch segments <12,13,14,15,16,17,18,19,20>.
[0084] In the example represented in the three-dimensional model data structure (routeSegment3D) of Table 3, the route segments with identifiers 3 and 4 appear to have been added as a result of splitting (route segment 1 split into route segment 1 and route segment 3, and route segment 2 split into route segment 2 and route segment 4). This is evident from the fact that neither of these route segment identifiers (3 or 4) is represented in the routeSegment2D (old data) column. It can be seen that for these route segments (3 and 4), computer 100 stores the entire route segment (routeSegment3D) of the model.
[0085] Specifically, for new route segment 3, computer 100 adds a new route segment identifier "3" (m_RouteSegmentID) to m_RouteSegmentData3D_c, and for the new route segment identifier 3, computer 100 specifies the three-dimensional route segment length (m_RouteSegmentLength3D) as 135 mm, the three-dimensional start point index (m_StartPoint3Dindex) as 50, the three-dimensional end point index (m_EndPoint3Dindex) as 20, and the three-dimensional sketch segment list (m_ListofSketchSegments3D) to include <2,3>.
[0086] Similarly, for new route segment 4, computer 100 adds a new route segment identifier “4” (m_RouteSegmentID) to m_RouteSegmentData3D_c, and for the new route segment identifier 4, computer 100 specifies the three-dimensional route segment length (m_RouteSegmentLength3D) as 130 mm, the three-dimensional start point index (m_StartPoint3Dindex) as 60, the three-dimensional end point index (m_EndPoint3Dindex) as 30, and the three-dimensional sketch segment list (m_ListofSketchSegments3D) to include <5,6>.
[0087] In an exemplary embodiment, computer 100 may update a storable data structure for the three-dimensional model after divisions have been added to the route segments in the model (routeSegment3D), and for the corresponding unfolded two-dimensional form of the model that existed before the route segments were divided (routeSegment2D).
[0088] FIG. 8 is a flow chart illustrating an embodiment of a computer-implemented process for identifying newly added root divisions within an unfolded three-dimensional model. In some embodiments, when a route segmentation update occurs, the m_RouteSegment3D_c dataset may be used to traverse the route segments. Unless otherwise indicated, the terminology used below from FIG. 8, as used herein with respect to the route segmentation function, refers to the following: the term routeSegment3D refers to a route segment from the m_RouteSegment3D_c dataset; the term routeSegment2D refers to a route segment from the m_RouteSegment2D_c dataset; the term new3DStartPoint refers to a start point index extracted from the routeSegment3D; the term new3DEndPoint refers to an end point index extracted from the routeSegment3D; the term old3DStartPoint refers to the old 3D start point index stored in the routeSegment2D; and the term old3DEndPoint refers to the old 3D end point index stored in the routeSegment2D. The term tracePoint refers to either a new3DStartPoint or a new3DEndPoint of a routeSegment3D that does not exist in a routeSegment2D. The term matchPoint refers to either an old3DStartPoint or an old3DEndPoint of a routeSegment2D that does not exist in a routeSegment3D. The term newLength3D refers to the value of m_RouteSegmentLength3D of a routeSegment3D.
[0089] The procedure represented by the flowchart begins at 802, and the computer 100 executes (at 804) the outarrayofSplitRouteSegmentData function, which, in an exemplary embodiment, takes route segments that have been split (to generate new shorter route segments) and produces as output an array with data associated with the new shorter route segments (e.g., the data in Tables 1 and 2 above). <long,std::vector<long>>, where map may refer to an associative container in computer memory (for storing the array just created), for example, this container stores key-value pairs, where the keys are unique and each key has an associated value, the keys are of type long, the elements in the std::map (e.g., the root segment) are automatically sorted (e.g., by key), and the second part is a std::vector <long>> specifies the type of the value associated with each key (see, for example, the features of the root segment, such as Tables 1 and 2 above). The processing in this step (802 and 804) may be activated, for example, when the root segment is split. This may occur, for example, when the computer 100 determines (at 632) that either the 3D start point or the 3D end point has different 3D data structures and 2D data structures.
[0090] Next (at 806), the computer 100 enters an iteration function loop. As shown at 806, this loop is a variable stored in memory, and i is initialized with an initial value of zero (i = 0). The value assigned to i is incremented by 1 after each loop (i++). This loop is repeated as long as the value of i is less than the number of modified root segments that have not been processed within the three-dimensional wire harness model (for example, i < ChangedRouteSegment, where ChangedRouteSegment is the number of modified root segments that have not been processed). The loop is executed once for each such root segment. Thus, in a representative embodiment, by using this function loop (into which the computer 100 enters at 626), the computer 100 processes each of the modified three-dimensional root segments one at a time.
[0091] According to the illustrated functional loop, for each modified 3D route segment, the computer 100 retrieves (at 808) various route data for that route segment (e.g., from computer memory). Specifically, according to the illustrated flowchart, the computer 100 retrieves m_RouteSegment3D and mRouteSegment2D for the route ID. The computer 100 retrieves new3DStartPoint, new3DEndPoint, old3DStartPoint, old3DEndPoint, tracepoint (which may be equal to new3DEndPoint under some circumstances), and matchPoint (which may be equal to old3DEndPoint under some circumstances). The flowchart shows that the computer 100 also retrieves connectedSegmentId(i), i.e., the route segment identifiers of any connected route segments connected to the route segment under consideration. According to the illustrated flowchart, this information is placed into an array (i.e., arrayofSplitData).
[0092] Next (at 810), the computer 100 determines whether the new3DStartPoint (in the model's data structure) is equal to the old3DStartPoint (in the model's unfolded data structure). If the computer 100 determines that the new3DStartPoint (in the model's data structure) is equal to the old3DStartPoint (in the model's unfolded data structure), the computer 100 sets (at 812) the new3DStartPoint as a tracePoint and the old3DStartPoint as a matchPoint. If the computer 100 determines that the new3DStartPoint (in the model's data structure) is not equal to the old3DStartPoint (in the model's unfolded data structure), the computer 100 does not set the new3DStartPoint as a tracePoint and does not set the old3DStartPoint as a matchPoint. Next, the computer 100 obtains (at 814) the connected route segments attached to the tracePoint. According to the illustrated flowchart, these connected route segments are stored in ConnectedRouteSegment. Computer 100 (also at 814) sets matchpointfound=false, where a value of false indicates that computer 100 has not yet found a matchPoint among all the data under consideration.
[0093] The computer 100 determines (at 816) whether the ConnectedRouteSegments dataset is empty. If the computer 100 determines (at 816) that the ConnectedRouteSegments dataset is empty, the computer 100 continues the process by returning to step 806 of the illustrated flowchart. The value of "i" is incremented at 806, and the process continues accordingly. If the computer 100 determines (at 816) that the ConnectedRouteSegments dataset is not empty, the computer 100 proceeds to step 818 of the illustrated flowchart and continues the process by performing the recursive function beginning at step 818.
[0094] The computer 100 establishes (at 818) a range-based loop for the recursive function by specifying the container ConnectedRouteSegments and setting the loop variable RSegItR to hold one element from ConnectedRouteSegments per loop. Thus, in an exemplary embodiment, the computer 100 loops through each element in ConnectedRouteSegments and assigns it to RSegItR. Next (at 820), the computer 100 obtains the end point from RSegItR (i.e., new3DEndPoint).
[0095] The computer 100 checks (at 822) whether new3DEndPoint is equal to matchPoint. If the computer 100 determines (at 822) that new3DEndPoint is equal to matchPoint ("Y" in the illustrated flowchart), the computer 100 changes (at 824) matchPointFound to true (indicating that a match point was found) and inserts the route segment ID into arrayofSplitData. The computer 100 then adds (at 830) all traversed route segments to arrayofSplitData, terminating the recursive function. If the computer 100 determines (at 822) that new3DEndPoint is not equal to matchPoint ("N" in the illustrated flowchart), the computer 100 then retrieves (at 826) the connected route segments attached to tracePoint and stores them in ConnectedRouteSegments. The computer 100 then checks (at 828) whether a matchPoint was found. If the computer 100 determines (at 828) that a matchPoint has been found ("Y" in the illustrated flowchart), the computer 100 adds (at 830) all traversed segments to arrayOfSplitData and terminates the recursive function. At that point, according to the illustrated flowchart, the computer 100 adds the current route segment and arrayofSplitData to arrayofSplitRouteSegmentData. The computer 100 then determines (at 834) whether i = changedRouteSegment-1. If the computer 100 determines (at 834) that i = changedRouteSegment-1, the computer 100 terminates the process illustrated in the flowchart of FIG. 8. Otherwise, the computer 100 returns to step 806 of the flowchart.
[0096] If the computer 100 determines (at 828) that no matchPoint was found ("N" in the illustrated flowchart), the computer 100 returns to step 818 and continues the process appropriately by considering the next route segment in ConnectedRouteSegments. If the computer 100 has looped through all of the elements in ConnectedRouteSegments ("N" in the illustrated flowchart) (at 818), the computer 100 ends the recursive function and proceeds to step 834, as depicted in the illustrated flowchart.
[0097] In some embodiments / cases, as shown in the flowchart, the computer 100 may return to step 818 after 826 in the illustrated flowchart. Referring again to the example of FIG. 7 (and similarly with respect to Table 3), by adding a split, after applying a route split command (e.g., within a 3D route), the route segment with ID 1 is transformed into 1 and 3, and the route segment with ID 2 is transformed into 2 and 4. Consider the route split case for route segment ID 1. routeSegment3D (ID=1) is the route segment that was changed within the 3D route. routeSegment3D (ID=1) will end up with new3DStartPoint and new3DEndPoint IDs (which are 10 and 50, respectively), while the old route segment (i.e., routeSegment2D (ID=1)) has data for old3DStartPoint and old3DEndPoint IDs (which are 10 and 20, respectively). In this case, both the new3DStartPoint and old3DStartPoint data structures are the same. Computer 100 makes this determination at 810. This causes the computer 100 (at 812) to set the end point of the routeSegment3D (i.e., new3DEndPoint(50)) as the tracePoint. The routeSegment3D data is used to trace connecting route segments. The computer 100 (also at 812) sets the end point of the old segment (i.e., old3DEndPoint(20)) as the matchPoint. In an exemplary embodiment, tracing route segments continues until the algorithm obtains a matchPoint (i.e., 20) from the routeSegment3D data. The computer 100 (at 830) attempts to find matchPoints and place them in arrayOfSplitData by adding all route segments that the tracing algorithm has intersected. The arrayOfSplitData stores the information {1,3}. The first element in arrayOfSplitData is typically the route segment that has been modified, and the other elements are the newly added route segments due to the execution of the route split function.This data may be added by computer 100 (at 832) within arrayOfSplitRouteSegmentData in the form of a map of {1,{1,3}}, where the key is typically the first element of arrayOfSplitData.
[0098] Next, the computer 100 executes a function to split all identified sketch segments within the unfolded route form of the model. This is depicted in the flowchart of FIG. 9 and described below. However, at a high level, this process may involve the computer 100 iterating over the arrayOfSplitData container. In an exemplary embodiment, this process involves the computer 100 extracting m_ListofSketchSegments2D from the routeSegment2D data structure for a particular route segment (e.g., route segment ID 1). The m_ListofSketchSegments2D is iterated over in a loop, and with each iteration, the computer 100 adds the sketch segment length to a travelLength variable. The travelLength variable may be used by the computer 100 as a decision variable to determine when to terminate the iteration (e.g., terminate the loop if m_RouteSegmentLength3D of a routeSegment3D is less than travelLength). Until that time (end), computer 100 may insert the iterated sketch segments into arrayNewSketchSegments and remove them from m_ListofSketchSegments2D. Computer 100 calculates the difference between travelLength and newLength3D, i.e., m_RouteSegmentLength3D, and divides the last sketch segment by this value into two sketch segments: the first sketch segment that computer 100 inserts into arrayNewSegments, and the other sketch segment that computer 100 adds to the existing array of m_ListofSketchSegments2D. arrayNewSketchSegments and newLength3D are updated to routeSegment2D.In an exemplary embodiment, this process is repeated as long as the list in arrayOfConnectedSegments contains multiple route segment IDs, creating new routeSegment2D objects and adding the necessary information therein (e.g., the information described herein as being part of the exemplary routeSegment2D). In Table 4, route segment ID 3 had no information in the old routeSegment2D, so the algorithm creates new data for route segment ID 3 and updates the necessary information therein.
[0099] [Table 4]
[0100] Next, the flowchart of FIG. 9 details a specific embodiment of the computer-implemented process described above for merging sketch segments within the unfolded root form of a model. The process begins at 902, where the computer 100 inputs (at 904) the old route segment ID and the information in arrayOfSplitData. Next, the computer 100 retrieves (at 906) m_ListofSketchSegments2D from the routeSegment2D.
[0101] Next (at 908), computer 100 enters an iteration function loop. This loop initializes a variable i (908), which is a variable stored in memory and has an initial value of zero (i = 0). The value assigned to i is incremented by 1 after each loop (i++). This loop repeats as long as the value of i is less than the number of unprocessed split roots identified by computer 100 within arrayOfSplitData (e.g., i < arrayOfSplitData, where arrayOfSplitData may be the number of unprocessed split root segments). The loop may be executed once for each such root segment. Thus, in a representative embodiment, by using this function loop (where computer 100 enters at 626), computer 100 processes each split root segment one at a time.
[0102] According to the illustrated function loop, for each split root segment, computer 100 (at 910) obtains newLength3D from routeSegment3D, initializes the travelLength variable to zero by assigning a value of 0.0 to the travelLength variable, sets the variable isContinue to the boolean value "true" to send a signal that the process should continue, sets the loop to i = 0, isize = size of ListofSketchSegments2D - 1 (where i = 0 indicates that the loop index starts at 0 and isize = size of ListofSketchSegments2D - 1 stores the last valid index of the ListOfSketchSegments2D container (subtracting 1 from the size)), and sets the arrayOfNewSketchSegments container.
[0103] Next, the computer 100 determines (at 912) whether isContinue is true and whether i is less than size (e.g., the number of elements in isize). If the computer 100 determines (at 912) that isContinue is not true and / or i is greater than or equal to size ("N" in the illustrated flowchart), the computer 100 ends (930) the process represented by the illustrated flowchart. However, if the computer 100 determines (at 912) that isContinue is true and i is less than size ("Y" in the illustrated flowchart), the computer 100 adds (at 914) the length of the root segment at index i in ListofSketchSegments2D to travelLength. Next, the computer 100 determines (at 916) whether travelLength is greater than newLength3D. If the computer 100 determines (at 916) that travelLength is less than or equal to newLength3D ("N" in the illustrated flowchart), the computer 100 adds (at 918) the sketch segment to arrayOfNewSketchSegment, increments the value of i, and returns to step 912 of the illustrated flowchart. If the computer 100 determines (at 916) that travelLength is greater than newLength3D ("Y" in the illustrated flowchart), the computer 100 subtracts (at 920) newLength3D from travelLength and stores the result as splitAtLength. Specifically, the computer 100 calculates (at 920) splitAtLength = travelLength - newLength3D.
[0104] Next (at 922), the computer 100 finds the location of the corresponding point on the sketch segment in splitAtLength. The computer 100 then splits the sketch segment at that point using the root split command (and function) (at 922). The computer 100 then adds the sketchSegment to arrayofNewSketchSegment (at 922). The computer 100 then removes arrayOfNewSketchSegment from m_ListofSketchSegments2D (at 922). The computer 100 then adds the newly created split entity to the beginning of m_ListofSketchSegments2D (at 922).
[0105] The computer 100 then checks (at 924) whether the variable i is equal to zero. If the computer 100 determines (at 924) that the variable i is equal to zero ("Y" in the illustrated flowchart), the computer 100 updates (at 926) arrayofNewSketchSegment and newLength to the routeSegment2D data. The computer 100 then returns to step 908 of the illustrated flowchart, increments the value in variable i, and continues the process accordingly. However, if the computer 100 determines (at 924) that the variable i is not equal to zero ("N" in the illustrated flowchart), the computer 100 creates (at 926) a new object for the route segment with an ID equal to arrayOfSplitData[i]. As explained, this is typically a newly created route segment within the three-dimensional modeling environment. The process depicted in the illustrated flowchart then ends (930).
[0106] Merge multiple route segments into one route segment The computer 100 is configured to allow a designer to merge multiple route segments in a three-dimensional model of a wire harness into a single route segment. This can be accomplished in a variety of ways. In one example, the computer 100 may run a SOLIDWORKS® computer program that has an Electrical Routing™ add-in that presents a "Route Merge" command to the designer, which, when selected by the designer, merges the route segments present in the model into a single route segment.
[0107] In that situation (e.g., where a designer has merged multiple route segments into one), computer 100 is configured to adjust the merger to accurately reflect the merger when creating the unfolded two-dimensional form of the model, while preserving the layout features (including any previous edits to the layout features) of the two-dimensional form in which the model was previously unfolded (not including the newly added divisions). Specifically, in an exemplary embodiment, computer 100 uses the m_RouteSegment3D_c and m_RouteSegment2D_c data structures to identify route segments that may have been merged and should be shown as merged in the unfolded form of the model displayed after execution of the unfold function. By way of example, any route segments that have been changed in this way may be identified by computer 100 performing the process described in the flowchart of FIG. 6 (described above).
[0108] Therefore, in an exemplary embodiment, if a user (designer) deletes a junction / split point in a 3D route, two route segments are converted into one route segment. This conversion process is called a route merge operation. During the merge process, two sketch segments with the same geometry type are combined into one sketch segment. Typically, the m_RouteSegment3D_c and m_RouteSegment2D_c data structures are used to identify the route segment created after the route merge operation. (See, for example, Figure 6.) The modified route segment is found / comes from the m_RouteSegment3D_c and m_RouteSegment2D_c data. In an exemplary embodiment of this algorithm, routeSegments2D's are traversed to find the end points of the routeSegment3D's.
[0109] Unless otherwise indicated, the terminology used below from FIG. 8, as used herein with respect to the Route Merge function, refers to the following: the term routeSegment3D refers to the route segment from the m_RouteSegment3D_c data structure, the term routeSegment2D refers to the route segment from the m_RouteSegment2D_c data structure, the term new3DStartPoint refers to the start point extracted from the routeSegment3D, the term new3DEndPoint refers to the end point extracted from the routeSegment3D, the term old3DStartPoint refers to the old 3D start point stored in the routeSegment2D, and the term old3DEndPoint refers to the old 3D start point stored in the routeSegment2D. , refers to the old 3D end point stored in the routeSegment2D, the term matchPoint refers to either the new3DStartPoint or new3DEndPoint of the routeSegment3D that is not present in the routeSegment2D, the term tracePoint refers to either the old3DStartPoint or old3DEndPoint of the routeSegment2D that is not present in the routeSegment3D, and the term newLength3D refers to the value of m_RouteSegmentLength3D of the routeSegment3D.
[0110] Table 5 shows exemplary data that may be stored (e.g., in computer memory) in logical association with a route segment(s) in a model. More specifically, the table shows data structures that may be stored for a three-dimensional model after a route merge in the model (routeSegment3D) and for a corresponding unfolded two-dimensional form of the model that existed before the route segments were merged (routeSegment2D).
[0111] [Table 5]
[0112] FIG. 10 shows an initial image of the three-dimensional model 1000 within the three-dimensional modeling environment (labeled “Electrical Harness Before Split Point Removal, or Merge”), an unfolded two-dimensional form of the three-dimensional model (labeled “Updated Unfolded Route Before Split Point Removal, or Route Merge”), a next image of the three-dimensional model 1000 within the three-dimensional modeling environment with each of two route segments merged (labeled “Electrical Harness After Route Segment Merging”), and a next unfolded two-dimensional form of the three-dimensional model with an added split / junction point (labeled “Updated Unfolded Route After Junction Point Removal”). This is an example of a series of images that the computer 100 may display to the designer on the screen in the listed order as the model evolves (as the designer merges route segments of the model). It is noteworthy that changes to the model within the three-dimensional modeling environment (by merging route segments of the model) and incorporating those changes into the unfolded two-dimensional form of the model do not significantly affect the visual layout of the unfolded two-dimensional form of the model compared to its past iterations. The image in Figure 10 corresponds to the information presented in Table 5.
[0113] In Figure 10, it can be seen that, except for the route segments being merged, the unfolded 2D form of the model in the “Updated Unfolded Route After Junction Point Removal” image shares the same visual layout characteristics as the unfolded 2D form of the model in the previous iteration of the 2D form (i.e., the form before merging, “Updated Unfolded Route Before Junction Point Removal, i.e., Route Merging” image). For example, in both images, the connectors are arranged along parallel lines, with the central connector 1002c located on one side of the image and the other two connectors 1002a, 1002b located on the other side of the image, and the beginning of the route segments connecting each other mostly follows a straight line (either up or down) from the junction, with a 90-degree bend at the end of the line, followed by a horizontal straight section, then another 90-degree bend towards the opposite route segment, followed by a short straight section, followed by another 90-degree bend, followed by another short straight section, followed by a 90-degree bend outward, followed by a very short section, followed by another bend and a short section that connects to the junction of the corresponding one of the connectors 1002a, 1002b. The fanout to connector 1002c extends to the left to a connection point on connector 1002c, and the fanout of each of the other connectors 1002a, 1002b extends to the right to a connection point on the corresponding connector 1002a or 1002b. Notably, these visual layout features affect how the model is displayed on a two-dimensional surface (e.g., on a screen) but do not affect the design details of the model itself. Other visual layout features can contribute to the desired appearance (e.g., neatness and intuitiveness) of the unfolded two-dimensional form of the model. In shifting from the “updated unfolded route before split point deletion, i.e., route merging” image to the “updated unfolded route after junction point deletion” image, computer 100 incorporates the final changes to the model (i.e., route segments are merged) but retains the visual layout features from the previous “updated unfolded route before split point deletion, i.e., route merging” image despite the incorporated design changes.In this way, the visual layout features are preserved from one iteration of the model's unfolded two-dimensional form to the next, despite design changes made during intervening three-dimensional modeling sessions. In an exemplary embodiment, computer 100 is configured to store information detailing the visual layout features of the model's unfolded two-dimensional form.
[0114] Design changes made within the virtual 3D modeling environment (route segment merging) result in a change to the visual layout of the 3D model displayed by computer 100, typically causing computer 100 to update m_RouteSegmentData3D_c for any affected route segments. Specifically, for each merged route segment that was present in m_RouteSegmentData3D_c, computer 100 deletes one of the merged route segments and extends the remaining route segment, changes either the 3D start point index (m_StartPoint3Dindex) or the 3D end point index (m_EndPoint3Dindex) that was present in m_RouteSegmentData3D_c before the merge, and changes the 3D sketch segment list (m_ListofSketchSegments3D that was present in m_RouteSegmentData3D_c) to reflect the changes made to adjust the merge.
[0115] In the example shown in Table 4, after deleting the junction points in the 3D route (to merge), the previous route segments with ID1 and ID3 are merged into new route segment 1, and the previous route segments with ID2 and ID4 are merged into route segment 2. Consider the route merge case for route segment ID1. routeSegment3D(ID=1) is the route segment that has changed in the 3D route. routeSegment3D(ID=1) has new3DStartPoint and new3DEndPoint IDs at 10 and 20, respectively, and the old route segment (i.e., routeSegment2D(ID=1)) has old3DStartPoint and old3DEndPoint at 10 and 50, respectively. In this case, the new3DStartPoint and old3DEndPoint are the same in both data structures (routeSegment3D and routeSegment2D). In this case, old3DEndPoint(50) is designated by the computer 100 as a tracePoint, and new3DEndPoint(20) is designated by the computer 100 as a matchPoint.
[0116] Typically, computer 100 uses the routeSegment2D data to traverse connecting route segments. In an exemplary embodiment, traversing the routeSegment2D data continues until computer 100 identifies a matchPoint, i.e., 20. Route segments intersected by computer 100 using this traversal algorithm to search for matchPoints are added to an arrayOfMergeData container. The arrayOfMergeData container stores the information {1, 3}. The first element in arrayOfMergeData is typically the route segment that was changed, and the other elements are all route segments that were removed due to the route segment merging. This data is added to arrayOfMergeRouteSegmentData in the form of a map of {1, {1, 3}}. The key in this map is typically the first element of arrayOfMergeData.
[0117] The flowchart of FIG. 11 provides a more detailed exemplary representation of these functions. The process depicted in the flowchart of FIG. 11 begins (at 1102) with the computer 100 executing (at 1104) the outarrayofMergeRouteSegmentData function, which, in an exemplary embodiment, takes route segments that have been merged (to create one new, longer route segment) and generates as output an array with data related to the merge (e.g., the data in Table 4). The processing at steps 802 and 804 may be invoked, for example, if / when route segments are merged. This may occur, for example, if the computer 100 determines (at 632) that either the 3D start point or the 3D end point have different 3D and 2D data structures.
[0118] Next (at 1106), computer 100 enters an iteration function loop. As shown at 1106, this loop initializes a variable i that is stored in memory and has an initial value of zero (i = 0). The value assigned to i is incremented by one after each loop (i++). This loop repeats as long as the value of i is less than the number of changed route segments that have not been processed within the 3D wire harness model (e.g., i < ChangedRouteSegment, where ChangedRouteSegments is the number of changed route segments that have not been processed). The loop is executed once for each such route segment. Thus, in a representative embodiment, by using this function loop (into which computer 100 enters at 1106), computer 100 processes each of the changed 3D route segments one at a time.
[0119] According to the illustrated function loop, for each changed 3D route segment, computer 100 obtains (at 1108) various route data for the associated route segment(s) (e.g., from computer memory). Specifically, according to the illustrated flowchart, computer 100 obtains m_RouteSegment3D and mRouteSegment2D for the route ID. Computer 100 obtains new3DStartPoint, new3DEndPoint, old3DStartPoint, and old3DEndPoint. Computer 100 obtains a matchpoint (which can be equal to new3DEndPoint in certain situations) and a tracePoint (which can be equal to old3DEndPoint in certain situations). The flowchart indicates that computer 100 also adds the connectedSegmentId(i), i.e., the route segment identifier of any connected route segment connected to the route segment of interest. According to the illustrated flowchart, this information is placed within an array (i.e., arrayofMergeData).
[0120] Next (at 1110), the computer 100 determines whether the new3DStartPoint (in the model's data structure) is equal to the old3DStartPoint (in the model's unwrapped data structure). If the computer 100 determines (at 1110) that the new3DStartPoint (in the model's data structure) is not equal to the old3DStartPoint (in the model's unwrapped data structure) ("N" in the illustrated flowchart), the computer 100 sets (at 1112) the old3DStartPoint as the tracePoint and the new3DStartPoint as the matchPoint. If the computer 100 determines (at 1110) that the new3DStartPoint (in the model's data structure) is equal to the old3DStartPoint (in the model's unwrapped data structure) ("Y" in the illustrated flowchart), the computer 100 does not set the new3DStartPoint as the matchPoint and does not set the old3DStartPoint as the tracePoint.
[0121] Next, computer 100 obtains (at 1114) the connected 2D route segments attached to the trace using the routeSegment2D data. According to the illustrated flowchart, these connected route segments are stored in ConnectedRouteSegment. Computer 100 also sets matchpointfound to false (also at 1114), where a value of false indicates that computer 100 has not yet found a matchPoint among all the data considered.
[0122] The computer 100 checks (at 1116) whether the ConnectedRouteSegments2D dataset is empty. If the computer 100 determines (at 1116) that the ConnectedRouteSegments2D dataset is empty ("Y" in the illustrated flowchart), the computer 100 continues the process by returning to step 1106 of the illustrated flowchart. The value of "i" is incremented at 1106, and the process continues accordingly. If the computer 100 determines (at 1116) that the ConnectedRouteSegments dataset is not empty ("N" in the illustrated flowchart), the computer 100 continues the process by establishing (1118) a range-based loop, specifying a container, ConnectedRouteSegments2D, and setting and advancing a loop variable RSegITR that holds one element from ConnectedRouteSegments2D for each round of the loop. Thus, in the exemplary embodiment, computer 100 loops through each element in ConnectedRouteSegments2D and assigns it to RsegITR. Next (at 1120), computer 100 obtains the end point from RsegITR (i.e., old3DEndPoint).
[0123] Next, computer 100 checks (at 1122) whether old3DEndPoint is equal to matchPoint. If computer 100 determines (at 1122) that old3DEndPoint is not equal to matchPoint ("N" in the illustrated flowchart), computer 100 then obtains (at 1124) the connected route segment attached to old3DEndPoint and adds it to ConnectedRouteSegments2D. Computer 100 then returns to the illustrated flowchart step 1118 to process the next element in ConnectedRouteSegments2D.
[0124] If the computer 100 determines (at 1122) that old3DEndPoint is equal to matchPoint ("Y" in the illustrated flowchart), the computer 100 changes (at 1126) matchPointFound to true (indicating that a match point was found) and inserts the route segment ID into arrayofMergeData. The computer 100 then adds (at 1130) all traversed route segments to arrayofMergeData. Next, the computer 100 adds (at 1132) the current route segment and arrayOfMergeData to arrayofMergeRouteSegmentData. Next, the computer 100 determines (at 1134) whether i == changedRouteSegment-1. If the computer 100 determines (at 1134) that i == changedRouteSegment-1, the computer 100 terminates (at 1136) the process illustrated in the flowchart of FIG. 11. If not, the computer 100 returns to step 1106 of the flowchart.
[0125] If computer 100 determines (at 1128) that no matchPoint was found ("N" in the illustrated flowchart), computer 100 returns to step 1118 and continues the process appropriately, considering the next route segment in ConnectedRouteSegments2D.
[0126] Next, the computer 100 executes a function to merge all identified sketch segments within the model's unfolded route form. This is depicted in the flowchart of FIG. 12 and described below. However, at a high level, this process may involve the computer 100 iterating through the arrayOfMergeData container. In an exemplary embodiment, the computer 100 extracts m_ListofSketchSegments2D from the routeSegment2D data of all route segments present in arrayOfMergeData and writes it into arrayOfNewSketchSegments2D. In addition, the computer 100 updates arrayOfNewSketchSegments2D and newLength3D in the m_routeSegment2D_c data structure for the modified via route segment ID. The computer 100 removes the deleted route segment data from m_routeSegment2D_c. This process is typically repeated for all entries in arrayOfMergeData. In an exemplary embodiment, computer 100 executes an algorithm along these lines to create new data for the merged route segments as shown in Table 6.
[0127] [Table 6]
[0128] Next, the flowchart of FIG. 12 details a specific embodiment of the computer-implemented process described above for merging sketch segments within the unfolded root form of a model. This process starts at 1202. The computer 100 inputs (at 1204) the old route segment ID and the information of arrayOfSplitData. When the process starts (from 1202), the computer 100 inputs (at 1204) the new route segment ID, the information from arrayOfSplitData, and the newLength3D from routeSegment3D. The computer 100 also declares (also at 1204) the variable arraysOfNewSketchSegments2D.
[0129] Next (at 1208), the computer 100 enters an iterative functional loop. This loop is a variable stored in memory, and i is initialized (at 1208) with an initial value of zero (i = 0). The value assigned to i is incremented by 1 after each loop (i++). This loop is repeated as long as the value of i is less than the number of split routes not processed within arrayOfMergeData identified by the computer 100 (for example, i < arrayOfMergeData, where arrayOfMergeData may be the number of unprocessed merge route segments). The loop may be executed once for each such route segment. Thus, in a representative embodiment, by using this functional loop (into which the computer 100 enters at 1206), the computer 100 processes each split route segment one at a time.
[0130] Next, the computer 100 sets (at 1208) routeSegmentID equal to arrayofMergeData[i]. The computer 100 obtains the routeSegment2D for the routeSegmentID from m_routeSegment2D_c. The computer 100 adds the m_ListofSketchSegment2D array into arrayOfNewSketchSegments2D. The computer 100 then checks (at 1210) to see if the variable i is not equal to zero. If the computer 100 determines (at 1210) that the variable i is not equal to zero ("Y" in the illustrated flowchart), the computer 100 returns to step 1206, where it increments i and continues the process as appropriate. If the computer 100 determines (at 1210) that the variable i is equal to zero ("Y" in the illustrated flowchart), the computer 100 removes (at 1212) the routeSegment2D information from m_routeSegment2D_c. The computer 100 may then return to step 1206, incrementing i and continuing the process as appropriate. If there are no more route segments to process (e.g., at 1206), the computer 100 updates (at 1214) arrayOfNewSketchSegments2D and newLength3D to the routeSegment2D. For example, the graphical representation of the "Updated Expanded Route After Junction Deletion" image in FIG. 10 may be displayed on a screen by the computer 100 utilizing this form of the routeSegment2D.
[0131] FIG. 13 shows a series of images depicting changing views of a relatively simple electrical wire harness at various stages of the design process. The first stage (shown in the "Electrical Harness in 3D with 'Route Split'" image) shows a 3D model of the wire harness with a route split, as so designated in a virtual 3D modeling environment. The second stage (shown in the "Unfolded Route Design" image) shows an unfolded 2D visual representation of the model (presumably after several editing steps) in a virtual 2D viewing environment. The third stage (shown in the "Electrical Harness in 3D After Split / Joint Removal" image) shows modifications to the 3D model in the virtual 3D modeling environment, including merging (removing split points) within the wire harness within the model. These modifications to the underlying design itself are made within the 3D modeling environment. In an exemplary embodiment, the changes represented in the third stage (shown in the "Electrical Harness in 3D After Split / Joint Removal" image) are made after viewing and editing the visual layout in the second stage (shown in the "Unfolded Route Design" image).
[0132] The other two images in FIG. 2 (labeled "Previous Result of Updated Unfolded Route" and "Improved Result of Updated Unfolded Route Retaining Past Editing Changes") contrast the results obtained with and without the use of the systems and techniques disclosed herein in the next unfolding procedure performed on the third-stage three-dimensional model (shown in the "Electrical Harness in 3D After Split / Joint Removal" image). Comparing these two results with the "Unfolded Route Design" image, it can be seen that the visual layout of the "Improved Result of Updated Unfolded Route Retaining Past Editing Changes" image is much more similar to the "Unfolded Route Design" image than the "Previous Result of Updated Unfolded Route" image. It is clear that when a computer generates the "Previous Result of Updated Unfolded Route" image, the designer will most likely want to and will likely decide to perform additional steps to edit the visual layout to more closely resemble the previous layout (in the "Unfolded Route Design" image). These additional steps can be avoided by having the computer perform the modification techniques disclosed herein to generate the visual layout shown in the "Improved Result of Updated Unfolded Route Retaining Past Editing Changes." This image is substantially identical in visual layout to the "Expanded Root Design" image, except that it accurately depicts merging.
[0133] Although a number of embodiments of the present invention have been described, it will be understood that various modifications can be made without departing from the spirit and scope of the invention. For example, the systems and techniques disclosed herein have been described as applied to the design of wire harnesses (e.g., electrical wire harnesses). However, the systems and techniques are not necessarily limited to this application. Essentially, the systems and techniques may be applied to the design and subsequent assembly of any other physical object, particularly objects that include physical elements (e.g., pipes, optical fibers, etc.) that need to be routed through physical space, bundled, and / or interconnected to other physical objects.
[0134] As disclosed herein, the design of a wire harness typically involves designing or constructing a 3D model of the wire harness within a virtual three-dimensional modeling environment. Finally, and typically, the resulting 3D model is deployed by a computer-implemented deployment function that deploys the model into a 2D viewing (e.g., non-modeling) environment, where the resulting unfolded 2D form of the model is displayed on a single surface. The unfolded 2D form of the model has a visual layout that the designer may modify by interacting with one or more interface elements that may be available in the computer-implemented 2D viewing environment. The design process may be an iterative process, with multiple editing operations required and performed within the 3D environment (facilitating changes to the 3D model) and the 2D viewing environment (facilitating changes to the 2D visual layout). In an exemplary embodiment, the computer 100 described herein retains visual layout information and, upon updating the unfolded route (e.g., to incorporate model updates), edits are made to the same things made in previous iterations to achieve accuracy and readability of the formboard drawing. Variations are possible.
[0135] The term computer-aided design should be interpreted broadly to include any computer-based software for designing, developing, simulating, and / or developing designs.
[0136] The particular process for adjusting modified route segment lengths when generating an updated, unfolded, two-dimensional form of the model may vary widely. Generally, when a designer changes the length of a route segment within the three-dimensional modeling environment and computer 100 initiates a process for generating an updated form of the corresponding unfolded two-dimensional form of the model (e.g., by switching configurations), computer 100 typically identifies the modified route segment by comparing the m_routeSegment3D_c data structure with the m_routeSegment2D_c data structure. However, variations are possible.
[0137] In various embodiments, one or more computer components (e.g., applications, design tools, deployment tools, etc.) disclosed herein may be executed by one or more computer-based processors (herein referred to as processors) that execute computer-readable instructions stored on a non-transitory computer-readable medium to perform the associated computer-based functionality. The one or more computer-based processors may be virtually any type of computer-based processor, whether contained within a single housing or distributed in different locations, and the non-transitory computer-readable medium may be or include any one or more of a variety of different computer-based hardware memory / storage devices, either contained within a single housing or distributed in different locations.
[0138] Certain functionality is described herein as being accessible or activated by a user selecting a button or the like displayed on the screen, which should be interpreted broadly to include any kind of user-selectable visual element or other user-interactive element (or combination thereof).
[0139] The systems and techniques disclosed herein may be implemented in a wide variety of ways. In one exemplary embodiment, the systems and techniques disclosed herein may be incorporated into the SOLIDWORKS® computer program available from Dassault Systèmes, the assignee of the present application. In various embodiments, the systems and techniques may be deployed in other ways.
[0140] It should be understood that the exemplary embodiments described herein may be implemented in many different ways. In some examples, the various methods and machines described herein may each be implemented by a general-purpose computer, such as a physical, virtual, or hybrid computer system, or a computer network environment, such as those described herein. A computer / system may be converted into a machine that performs the methods described herein, for example, by loading software instructions into either memory or non-volatile storage and executing them on a CPU. Those skilled in the art will appreciate that a computer / system and its various components may be configured to implement any embodiment or combination of embodiments of the present invention described herein. Furthermore, the system may implement the various embodiments described herein using any combination of hardware, software, and firmware modules internal to, externally operably connected to, or embedded in the computer / system.
[0141] Various aspects of the subject matter disclosed herein can be implemented in digital electronic circuitry, or in computer-based software, firmware, or hardware, including the structures disclosed herein and / or their structural equivalents, and / or combinations thereof. In some embodiments, the subject matter disclosed herein can be implemented in one or more computer programs, i.e., one or more modules of computer program instructions encoded on a computer storage medium, for execution by or to control the operation of one or more data processing devices (e.g., processors). Alternatively, or in addition, the program instructions can be encoded in an artificially generated propagated signal, such as a machine-generated electrical, optical, or electromagnetic signal generated to encode information for transmission to an appropriate receiving device for execution by a data processing device. The computer storage medium can be, or can be contained within, a computer-readable storage device, a computer-readable storage substrate, a random-access or serial-access memory array or device, or a combination thereof. Although a computer storage medium should not be considered solely to be a propagating signal, a computer storage medium may also be a source or destination for computer program instructions encoded in an artificially generated propagating signal. A computer storage medium may also be, or be included in, one or more separate physical components or media, such as, for example, multiple CDs, computer disks, and / or other storage devices.
[0142] Certain operations described herein (e.g., those aspects depicted in flowcharts and other operations disclosed herein) can be performed as operations executed by a data processing apparatus (e.g., a processor / specially programmed processor / computer) on data stored in one or more computer-readable storage devices or received from other sources, such as the computer systems and / or network environments described herein. The term "processor" (or its variants) encompasses all types of apparatus, devices, and machines that perform data processing, including, by way of example, a programmable processor, a computer, a system on a chip, or a combination thereof. An apparatus may include, for example, special-purpose logic circuitry such as an FPGA (field-programmable gate array) or an ASIC (application-specific integrated circuit). In addition to hardware, an apparatus may also include code that creates the execution environment for the computer program in question, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or one or more combinations thereof. The apparatus and execution environment may implement a variety of computing model infrastructures, such as web services, distributed computing, and grid computing infrastructures.
[0143] While the specification contains many specific example details, these should not be construed as limiting the scope of the invention or what may be claimed, but rather as descriptions of features specific to particular embodiments of a particular invention. Certain features that are described in this specification in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment may also be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, while features may be described above as acting in a particular combination, and may even initially be claimed as such, one or more features from a claimed combination may in some cases be deleted from that combination, and the claimed combination may be directed to a subcombination or a variation of the subcombination.
[0144] Similarly, although operations may be described herein as being performed in a particular order or manner, this should not be understood as requiring that such operations be performed in the particular order shown, or sequentially, or that all of the illustrated operations be performed, to achieve desirable results. Multitasking or parallel processing may be advantageous in certain situations. Furthermore, the separation of various system components in the above-described embodiments should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems may generally be integrated together into a single software product or packaged into multiple software products.
[0145] Other embodiments are within the scope of the claims.< / long> < / long>
Claims
1. 1. A computer-based method comprising: generating an unfolded two-dimensional visual representation of an initial three-dimensional model of a wire harness within a virtual two-dimensional viewing environment, the unfolded two-dimensional representation of the initial three-dimensional model having an initial visual layout within the virtual two-dimensional viewing environment; Next, modifying the initial three-dimensional model in a virtual three-dimensional modeling environment to generate a modified three-dimensional model, wherein modifying the initial three-dimensional model includes: splitting a route segment in the initial three-dimensional model to create a split route segment having two route sub-segments in the modified three-dimensional model; or merging two connected route segments in the initial three-dimensional model to generate one merged route segment in the modified three-dimensional model; and generating an unfolded two-dimensional visual representation of the modified three-dimensional model within the virtual two-dimensional viewing environment, wherein the unfolded two-dimensional visual representation of the modified three-dimensional model visually represents either the split route segment having the two route sub-segments or the merged single route segment, or otherwise has the visual layout of the unfolded two-dimensional representation of the initial three-dimensional model; The method comprises:
2. 10. The method of claim 1, generating the unfolded visually two-dimensional representation of the initial three-dimensional model of the wire harness, generating the initial three-dimensional model of the wire harness within the virtual three-dimensional modeling environment; unfolding the initial three-dimensional model of the wire harness to generate an unfolded version of the three-dimensional model having a default visual layout; editing the default visual layout to generate the unfolded visual two-dimensional representation of an initial three-dimensional model of a wire harness having the initial layout; The method comprises:
3. 10. The method of claim 1 further comprising: storing in computer memory a model data structure logically associated with each one of the three-dimensional route segments represented in a model, the model data structure identifying a route segment identifier, a three-dimensional route segment length, a three-dimensional route segment start point, a three-dimensional route segment end point, and a list of three-dimensional sketch segments that make up the route segment; storing in the computer memory an unfolded route data structure logically associated with each one of the two-dimensional route segments represented in the unfolded two-dimensional visual representation of the model, the unfolded route data structure identifying the route segment identifier of the corresponding route segment from the corresponding model, an unfolded route segment length, a two-dimensional route segment start point, a two-dimensional route segment end point, a three-dimensional route segment start point of the corresponding route segment from the corresponding model, a three-dimensional route segment end point of the corresponding route segment from the corresponding model, and a list of two-dimensional sketch segments comprising the two-dimensional route segment; The method comprises:
4. 4. The method of claim 3, further comprising: updating a data structure of the model after modifying the initial three-dimensional model in a virtual three-dimensional modeling environment to generate the modified three-dimensional model but before generating the unfolded two-dimensional visual representation of the modified three-dimensional model in the virtual two-dimensional viewing environment. The method comprises:
5. 5. The method of claim 4, generating the unfolded two-dimensional visual representation of the modified three-dimensional model, comparing the updated model data structure with the unfolded route data structure to identify changed route segments in the modified three-dimensional model, the changed route segments in the modified three-dimensional model being different from corresponding ones of the route segments in the unfolded two-dimensional visual representation of the initial three-dimensional model; then updating the expanded route data structure to reflect the changes in the route segments identified in the comparison, generating an updated expanded route data structure; The method comprises:
6. 6. The method of claim 5, The unfolded two-dimensional visual representation of the modified three-dimensional model is generated based on the updated unfolded route data structure.
7. 6. The method of claim 5, modifying the initial three-dimensional model comprises splitting the route segments; The method further comprises: designating, in computer memory, traversal points and coincidence points from the modified route segments; Tracing route segments connected to the modified route segment from the traversal point to the coincidence point; responsive to reaching the coincidence point, adding the traversed route segment into a first array stored in a computer memory such that the first array stores the modified route segment and the traversed route segment; The method comprises:
8. 8. The method of claim 7, the traversal point is either the three-dimensional route segment start point from the model data structure or the three-dimensional route segment end point from the model data structure, whichever point does not exist in the expanded route data structure; The method, wherein the coincident point is either the three-dimensional route segment start point from the developed route data structure or the three-dimensional route segment end point from the developed route data structure, whichever point does not exist in the model data structure.
9. 9. The method of claim 8, further comprising: for each route segment in the first array, extracting from the developed route data structure the associated list of 2D sketch segments that make up the 2D route segment; iterating through the extracted list, and at each iteration adding a sketch segment length of a corresponding one of the sketch segments to a move length variable; terminating said iterations if said move length variable is greater than or equal to said three-dimensional route segment length from said model data structure; The method comprises:
10. 10. The method of claim 9, further comprising: after completing the iterations, calculating the distance between the travel length variable and the three-dimensional route segment length from the model data structure; Dividing the last sketch segment whose length was added to the move length variable at a point along the last sketch segment that is the calculated distance from an end of the last sketch segment; The method comprises:
11. 11. The method of claim 10, further comprising: Displaying the new division at the point along the last sketch segment in the unfolded two-dimensional visual representation of the modified three-dimensional model. The method comprises:
12. 6. The method of claim 5, modifying the initial three-dimensional model comprises merging the two connected route segments; The method further comprises: designating, in computer memory, traversal points and coincidence points from the modified route segments; tracing from the tracing point to the coincidence point based on the expanded route data structure; responsive to reaching the coincidence point, adding any traversed route segments into a second array stored in a computer memory such that the second array stores the modified route segments and any traversed route segments, the traversed route segments in the second array being route segments to be excluded from the unfolded two-dimensional visual representation of the modified three-dimensional model; The method comprises:
13. 13. The method of claim 12, the traversal point is specified as either the three-dimensional route segment start point from the developed route data structure or the three-dimensional route segment end point from the developed route data structure, whichever point does not exist in the model data structure; The method, wherein the coincident point is specified as either the three-dimensional route segment start point from the model data structure or the three-dimensional route segment end point from the model data structure, whichever point does not exist in the unfolded route data structure.
14. 14. The method of claim 13, further comprising: for each route segment in the second array, extracting from the developed route data structure an associated list of 2D sketch segments that make up the 2D route segment; updating the unfolded route data structure to include the list of 2D sketch segments extracted from the unfolded route data structure and to include 3D route segment lengths from the model data structure, and to remove the route segments to be excluded from the unfolded 2D visual representation of the modified 3D model; The method comprises:
15. 11. The method of claim 10, further comprising: displaying merged route segments within the unfolded two-dimensional visual representation of the modified three-dimensional model according to updates to the unfolded route data structure. The method comprises:
16. 10. The method of claim 1 further comprising: producing an actual wire harness within the modified three-dimensional model based on the unfolded two-dimensional visual representation of the modified three-dimensional model; The method comprises:
17. 1. A system comprising: A computer is provided. The computer A computer processor; a computer-based memory operatively connected to said computer processor; Equipped with the computer-based memory stores computer-readable instructions that, when executed by the computer processor, cause the computer system to perform a process; The process comprises: generating an unfolded two-dimensional visual representation of an initial three-dimensional model of a wire harness within a virtual two-dimensional viewing environment, the unfolded two-dimensional representation of the initial three-dimensional model having an initial visual layout within the virtual two-dimensional viewing environment; then modifying the initial three-dimensional model in a virtual three-dimensional modeling environment to generate a modified three-dimensional model; Equipped with Modifying the initial three-dimensional model includes: splitting a route segment in the initial three-dimensional model to create a split route segment having two route sub-segments in the modified three-dimensional model; or merging two connected route segments in the initial three-dimensional model to generate one merged route segment in the modified three-dimensional model; generating an unfolded two-dimensional visual representation of the modified three-dimensional model within the virtual two-dimensional viewing environment, the unfolded two-dimensional visual representation of the modified three-dimensional model visually representing either the split route segment having the two route sub-segments or the merged single route segment, or otherwise having the visual layout of the unfolded two-dimensional representation of the initial three-dimensional model; A system comprising:
18. 1. A non-transitory computer-readable medium having stored thereon computer-readable instructions that, when executed by a computer-based processor, cause the computer-based processor to perform a process comprising: generating an unfolded two-dimensional visual representation of an initial three-dimensional model of a wire harness within a virtual two-dimensional viewing environment, the unfolded two-dimensional representation of the initial three-dimensional model having an initial visual layout within the virtual two-dimensional viewing environment; then modifying the initial three-dimensional model in a virtual three-dimensional modeling environment to generate a modified three-dimensional model; Equipped with Modifying the initial three-dimensional model includes: splitting a route segment in the initial three-dimensional model to generate a split route segment having two route sub-segments in the modified three-dimensional model; or merging two connected route segments in the initial three-dimensional model to generate one merged route segment in the modified three-dimensional model; generating an unfolded two-dimensional visual representation of the modified three-dimensional model within the virtual two-dimensional viewing environment, the unfolded two-dimensional visual representation of the modified three-dimensional model visually representing either the split route segment having the two route sub-segments or the merged single route segment, or otherwise having the visual layout of the unfolded two-dimensional representation of the initial three-dimensional model; 1. A non-transitory computer-readable medium comprising: