Updating deployed routes for route length changes in three dimensional designs
A computer-based method updates the two-dimensional representation of wire harness models to reflect changes in three-dimensional segment lengths, preserving the visual layout and enhancing design efficiency and accuracy.
Patent Information
- Application Number
- JP2025113207
- 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 process of designing wire harness models is complex, inefficient, and error-prone, particularly when changes to route segment lengths are made in a three-dimensional model, as it often requires manual reconfiguration of the two-dimensional representation to maintain design integrity.
A computer-based method and system that generates and updates an unfolded two-dimensional representation of a wire harness model, allowing for changes in route segment lengths while preserving the visual layout of the initial model, thereby facilitating efficient and accurate design iterations.
This approach ensures that changes made to the three-dimensional model are seamlessly reflected in the two-dimensional representation without significant disruption to the visual layout, enhancing design accuracy and reducing errors, thus improving the efficiency of the design process.
Smart Images

Figure 2026016322000001_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. 202411051266, entitled "Update Flattened Route for changes in Route Length 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., changes to route segment lengths) 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. It 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 based on user input. The two-dimensional representation of the initial model has an initial visual layout. The method then includes modifying the initial three-dimensional model in response to additional user input to generate a modified three-dimensional model. Specifically, at least one route segment in the wire harness in the modified model has a different length than a corresponding route segment in the initial model. The method then includes generating, within the virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of the modified three-dimensional model. The unfolded two-dimensional visual representation of the modified model has the route segment length of the modified three-dimensional model but otherwise retains the visual layout of 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 that 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 based on user input. The two-dimensional representation of the initial model has an initial visual layout. The method then includes modifying the initial three-dimensional model in response to additional user input to generate a modified three-dimensional model. Specifically, at least one route segment in the wire harness in the modified model has a different length than a corresponding route segment in the initial model. The method then includes generating, within the virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of the modified three-dimensional model. The unfolded two-dimensional visual representation of the modified model has the route segment length of the modified three-dimensional model but otherwise retains the visual layout of the unfolded two-dimensional representation of the initial three-dimensional model.
[0007] In yet another aspect, 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 including generating, within a virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of an initial three-dimensional model of a wire harness based on user input. The two-dimensional representation of the initial model has an initial visual layout. The method then includes modifying the initial three-dimensional model in response to additional user input to generate a modified three-dimensional model. Specifically, at least one route segment in the wire harness in the modified model has a different length than a corresponding route segment in the initial model. The method then includes generating, within the virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of the modified three-dimensional model. The unfolded two-dimensional visual representation of the modified model has the route segment length of the modified three-dimensional model but otherwise retains the visual layout of 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, the process including generating, within a virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of an initial three-dimensional model of a wire harness based on user input. The two-dimensional representation of the initial model has an initial visual layout. The method then includes modifying the initial three-dimensional model in response to additional user input to generate a modified three-dimensional model. Specifically, at least one route segment in the wire harness in the modified model has a different length than a corresponding route segment in the initial model. The method then includes generating, within the virtual two-dimensional viewing environment, an unfolded two-dimensional visual representation of the modified three-dimensional model. The unfolded two-dimensional visual representation of the modified model has the route segment length of the modified three-dimensional model but otherwise retains the visual layout of 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 of 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 times 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. [Figure 2] 1 illustrates an example of a change made in one of the iterations represented in the image of the three-dimensional wire harness model of FIG. 1 , showing 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 re-expanded. [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 example of a computer-implemented process disclosed herein. [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 schematic diagram of an example of a computer-implemented process disclosed herein. [Figure 10]1 is a schematic diagram of exemplary results that may be achieved by embodiments of the computer processes disclosed herein.Like reference symbols refer 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 extends between two typically 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 junction in the wire harness. Every route segment has a "route segment length," which is the sum of the lengths of all the sketch segments that make up the route segment. Every route segment has a "start point" and an "end point," and the sketch segments that make up the route segment and typically extend between the start point and the end point.
[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-world 2D board). While 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 distinct concept from the 3D model itself. As described herein, when a 3D model is initially unfolded, 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 performs the unfolding procedure 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 that a designer may make to a three-dimensional model during the iterative design process of a wire harness is to change the length of one or more route segments in the wire harness by lengthening or shortening them. Such changes may also ensure that the subsequently manufactured wire harness better fits and / or functions in its target packaging environment. For example, when such changes are made to the three-dimensional model, it may be desirable to ensure that any updates to the three-dimensional model are incorporated into and / or shown as part of the corresponding unfolded two-dimensional form of the model without significantly affecting (or even at all affecting) the details of the previous visual layout of the corresponding unfolded two-dimensional form of the model, since the unfolded two-dimensional form of the model is already created either by configuration or by operations input into a computer by the designer. 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 the computer automatically generates in this example 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 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 model's 2D form, such as the multiple iterations (1-4) that generated the visual layout shown in the "Iteration 4: Add Bends" image, while also allowing the designer (e.g., within the 3D environment) to make additional changes to the model and generate a new 2D form of the modified 3D 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 illustrates an example of changes made to the three-dimensional wire harness model of FIG. 1 (after the "Iteration 4: Add Bends" step of FIG. 1) and shows how the changes 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 re-unfolded. Specifically, the figure illustrates a possible outcome when a computer uses the systems and techniques disclosed herein (the "Unfolded Route Refinement Outcome") and a possible outcome when a computer does not use the systems and techniques disclosed herein (the "Unfolded Route Update Undesirable Outcome"). Comparing these two outcomes (in FIG. 2) with the "Iteration 4: Add Bends" image of FIG. 1, it can be seen that the "Unfolded Route Refinement Outcome" image (in FIG. 2) is more similar in visual layout to the "Iteration 4: Add Bends" image of FIG. 1 than the "Undesired Update Unfolded Route Outcome" (in FIG. 2). Clearly, when a computer generates the "Undesired Results of Unfolded Route Update" image, the designer is more likely than not to take additional steps to edit the visual layout to more closely resemble the previous layout (in the "Iteration 4: Add Bends" image of FIG. 1). These additional steps can be avoided by having the computer perform the correction techniques disclosed herein to generate the visual layout shown in the "Unfolded Route Refinements Results" image, which is substantially identical in visual layout to the "Iteration 4: Add Bends" image, except for showing the length changes (made in the "3D Model Length Modification" image).
[0033] 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.
[0034] 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.
[0035] Processor 102 is configured to perform various computer-based functions disclosed herein, as well as support functions not explicitly 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).
[0036] 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 for implementing an operating system, configuration information, etc. The various system memory resources (e.g., 104, 106) may also store data.
[0037] 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.
[0038] 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.
[0039] 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 an electrical harness assembly design, as disclosed herein.
[0040] 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, displaying (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.
[0041] 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 these multiple forms may each 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 working together to cooperatively perform processes attributed to processor 102. A wide variety of possibilities for specific physical implementations are possible.
[0042] 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.
[0043] 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.
[0044] 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.
[0045] The computer 100, in an exemplary embodiment, stores the three-dimensional model 400 in memory 104 with a route-specific data structure for the model 400. The route-specific data structure may have the following structure:
[0046] [Table 1]
[0047] 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.
[0048] In the above data structure, RouteSegmentData3D_c is the name of a data structure class that logically corresponds to (and contains information about) 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 would include sketch segment 408a, sketch segment 408b, and sketch segment 408c. Of course, in various embodiments, other data related to model 400 may be stored in memory 104 as well.
[0049] 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.
[0050] 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.
[0051] In an exemplary embodiment, computer 100 stores data relating 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 relating to a particular visual layout. The route-specific data structure may have the following structure:
[0052] [Table 2]
[0053] This data structure contains data 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.
[0054] In the above data structure, RouteSegmentData2D_c is the name of a data structure class that logically corresponds to (and contains information about) a particular one of the route segments in an associated two-dimensional representation (e.g., of 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, 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.
[0055] 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.
[0056] In an exemplary embodiment, computer 100 may generate an unfolded 2D form of the model in response to the designer selecting a computer-generated "Unfold Route" command accessible on a graphical user interface presented to the designer. As part of the subsequent unfolding process, computer 100 updates the above-mentioned data structures as necessary to ensure that the data is up-to-date. However, in an exemplary embodiment, before updating the data structure(s) of the unfolded 2D form of the model, the computer compares the final version of the 3D model data structure (updated to reflect any changes made in the last session within the 3D modeling environment (e.g., changes to route segment lengths)) with a current data structure of the unfolded 2D form of the model that represents and corresponds to a previous iteration of the model (before any changes made in the last session within the 3D modeling environment). Typically, these data structures are accessed when the computer is generating an updated version of the unfolded 2D form of the model. More specifically, these data structures are used as pre-processing inputs in the route development update process (performed by computer 100) to identify changed route segments based on length modifications in the 3D route and adapt the changes accordingly within the 2D form.
[0057] 6 and 8 are flowcharts illustrating an embodiment of a computer-implemented process that facilitates creating a virtual three-dimensional model (e.g., of a wire harness), unfolding the three-dimensional model to generate an unfolded two-dimensional form of the model, editing the visual layout of the unfolded two-dimensional form of the model to generate an edited form of the unfolded two-dimensional form of the model, subsequently modifying the three-dimensional model (e.g., lengthening or shortening route segments in the modeled wire harness) to generate a modified form of the three-dimensional model, and subsequently unfolding the model to generate a two-dimensional form that incorporates the modifications introduced in the modified form of the three-dimensional model, while preserving the visual layout introduced in the previously edited form of the unfolded two-dimensional form of the model.
[0058] In an exemplary embodiment, the process of converting the three-dimensional model to an unfolded, two-dimensional form of the model may be performed in response to a user-initiated command. In versions of the SOLIDWORKS® CAD software with the Routing™ add-in, computer 100 may perform the process in response to a user-initiated Toggle Configuration (or “Unfold Route”) command, which may be available to a user by right-clicking to enter a context menu in the SOLIDWORKS® CAD software with the Routing™ add-in and selecting the Toggle Configuration command. In such an embodiment, when the user makes the indicated selection, computer 100 may read information about, and describe, all route segments present in, the associated three-dimensional electrical harness model (e.g., from one or more 3D route property data structures in memory, e.g., RouteSegmentData3D_c). This information may consist, for example, of a route segment ID (e.g., m_RouteSegmentID), a route segment length (e.g., m_RouteSegmentLength3D), start and end point IDs (e.g., m_StartPoint3DIndex and m_EndPoint3DIndex), and / or a collection of associated 3D sketch segments (e.g., m_ListofSketchSegments3D). This data may be stored in and retrieved from the m_RouteSegment3D_c data structure.
[0059] If a pre-extracted 2D form of the model has been created and / or edited, computer 100 may also (in response to an indicated user selection) read information about and describing all route segments present in the pre-extracted 2D form of the model (e.g., from one or more 2D route property data structures in memory, e.g., RouteSegmentData2D_c). This information may include, for example, information about the pre-extracted 2D form of the model, such as route length information (e.g., m_RouteSegmentLength2D), 2D route start and end point information (e.g., m_StartPoint2DIndex, m_EndPoint2DIndex), associated 3D route start and end point information (e.g., m_StartPoint3DIndex, m_EndPoint3DIndex), and a collection of associated 2D sketch segments (e.g., m_ListofSketchSegments2D). This data may be stored in and retrieved from the m_RouteSegment2D_c data structure.
[0060] At a high level, continuing with this example, after the user makes the displayed selection and computer 100 reads (accesses) the above-described data / data structures, a computer-implemented process may search for modified route segments (e.g., changes to route segment lengths) within the three-dimensional modeling environment. In an exemplary embodiment, this may involve computer 100 comparing data structure m_RouteSegment3D_c with data structure m_RouteSegment2D_c, and based on the results of that comparison, may update one or more portions of m_RouteSegment2D_c while preserving the remaining portions of m_RouteSegment2D_c.
[0061] In an exemplary embodiment, for unmodified route segments, computer 100 may determine, when performing the above-described comparison, that all route segments present in m_RouteSegment3D_c have the same information as the m_RouteSegment2D_c data structure. Specifically, computer 100 may determine that the comparison of the data structures indicates that the associated length, 3D start point ID, and 3D end point ID in both data structures are the same. In this case, computer 100 may simply recreate those unmodified route segments based on the existing data in the m_RouteSegment2D_c data structure.
[0062] In an exemplary embodiment, for a newly added route segment (e.g., a route segment added to the three-dimensional model but not present in the immediately preceding iteration of the model's unfolded two-dimensional form), computer 100 may determine that one of the route segments retrieved from m_RouteSegment3D_c is not represented in the corresponding m_RouteSegment2D_c data structure. In this case, computer 100 may perform a process of incorporating the identified newly added route segment into the new iteration of the model's unfolded two-dimensional form being generated. Further, in an exemplary embodiment, computer 100 may add new data about the newly added route segment to the corresponding data structure (e.g., m_RouteSegment2D_c) to generate the new iteration of the model's unfolded two-dimensional form. In an exemplary embodiment, computer 100 may leave the remainder of the corresponding m_RouteSegment2D_c data structure intact and use it, along with the newly added segment information, to generate the new iteration of the model's unfolded two-dimensional form.
[0063] In an exemplary embodiment, for newly deleted route segments (e.g., route segments that were deleted from the three-dimensional model but were present in the immediately preceding iteration of the model's unfolded two-dimensional form), computer 100 may determine that one or more route segments retrieved from m_RouteSegment2D_c are not represented in the corresponding m_RouteSegment3D_c data structure. In this case, computer 100 may exclude the newly deleted route segments from the process of generating a new iteration of the model's unfolded two-dimensional form. In an exemplary embodiment, computer 100 may leave the remaining portions of the corresponding m_RouteSegment2D_c data structure intact and use it to generate a new iteration of the model's unfolded two-dimensional form.
[0064] In an exemplary embodiment, for a changed route segment (e.g., a route segment that already exists in the model and has been modified, e.g., in length, compared to a previous iteration of the model), computer 100 may determine that although the corresponding route segment information read from m_RouteSegment3D_c has the same route segment ID with the same 3D start point ID and end point ID, a different length (i.e., m_routeSegmentLength) compared to m_RouteSegment2D_c represents a change in the geometry in 3D relative to the length.
[0065] 6, the process depicted in the illustrated flowchart begins at 602 and includes constructing a three-dimensional model of the wire harness (604). 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 would interact with a computer program such as the SOLIDWORKS® Electrical 3D computer program described above to construct the three-dimensional model of the wire harness.
[0066] 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.
[0067] 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).
[0068] According to the illustrated flowchart, the process (at 610) includes an editing process to make a drawing containing the unfolded two-dimensional form of the model cleaner, more user-friendly, or as desired or selected. 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.
[0069] FIG. 1 illustrates an example of a three-dimensional model (labeled “Electrical Wire Harness Assembly 3D”), a default, computer-generated, unfolded two-dimensional form of the model (labeled “Default 2D Unfolded Route”), and a series of iterations illustrating exemplary edits a user may make to the visual layout of the unfolded two-dimensional form of the model. As discussed above, these edits include a first iteration in which the user modifies the angle between two branches of the illustrated wire harness (labeled “Iteration 1: Angle Modification”), a second iteration in which the user adds a bend to one of the branches of the illustrated wire harness (labeled “Iteration 2: Add Bend”), a third iteration in which the user again modifies the angle between the two branches (labeled “Iteration 3: Change Angle of Other Route Segment”), and a fourth iteration in which the user adds a bend to the other branch of the illustrated wire harness (labeled “Iteration 4: Add Bend”). These are merely examples of the types of changes a user may make to the visual layout of the unfolded two-dimensional form of the model during the editing process (610). If, after making this series of edits, the designer wishes to change the length of one of the route segments of the electrical harness model (e.g., in a 3D modeling environment) (e.g., due to design requirements), it is desirable (and computer 100 will help ensure this) that the subsequently generated unfolded 2D form of the model retains as much of the edits (i.e., the result after iteration 4) as possible, while updating to include the change in length.
[0070] Referring again to Figure 6, the process represented by the illustrated flowchart includes (at 612) 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 that route segment's m_RouteSegmentData2D_c data structure. 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 that route segment's m_RouteSegmentData2D_c data structure. This step 612 is shown in the illustrated flowchart as occurring 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.
[0071] 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).
[0072] 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.
[0073] 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.
[0074] 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 by changing the length of one or more route segments in the wire harness model. Figure 7 shows an example of this type of change.
[0075] Specifically, FIG. 7 shows an initial image of a three-dimensional model 700 within a three-dimensional modeling environment (labeled “Electrical Harness in 3D”), an unfolded two-dimensional form of the three-dimensional model (labeled “Unfolded Result in 2D”), a next image of the three-dimensional model 700 within the three-dimensional modeling environment with one route segment extended (labeled “Route Segment Length Modification in 3D”), and a next unfolded two-dimensional form of the three-dimensional model with the extended route segment (labeled “Unfolded Update Result with Length Adjustment Retaining Previous Edits”). This is an example of a series of images that a computer may present to a designer on the screen in the order listed as the model evolves (as the designer increases the length of one of its route segments). It is noteworthy that changing the model within the three-dimensional modeling environment (such as by extending one of the model's route segments) does not significantly affect the visual layout of the unfolded two-dimensional form of the model by incorporating those changes into the model's unfolded two-dimensional form.
[0076] 7, except that the extended route segments are depicted as extended, the unfolded two-dimensional form of the model in the "Unfolded Update Result with Length Adjustment Retaining Past Edits" image can be seen to share the same visual layout characteristics as the unfolded two-dimensional form of the model in the previous (i.e., before the length modifications in 3D) "Unfolded Result in 2D" image. For example, in both images, the connectors are arranged along parallel lines, the central connector 702c is located on one side of the image and the other two connectors 702a, 702b are located on the other side of the image, the main portion of the route segments follow straight lines (either up and down or left and right), the 90-degree bends are rounded, the fanout to connector 702c extends to the left to reach a connection point on connector 702c, and the fanout of each of the other connectors 702a, 702b extends to the right to reach a connection point on the corresponding connector 702a or 702b. 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 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 Adjustment Retaining Previous Edits" image, computer 100 incorporates the final change to the model (i.e., extending one of the route segments), but retains the visual layout features from the previous "Unfolded Electrical Route Before Route Split Update" image, despite the incorporated design change. In this way, the visual layout features are retained 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.The design change made within the virtual 3D modeling environment (the extension of route segment 704b) results 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, m_RouteSegmentLength3D in m_RouteSegmentData3D_c is updated to reflect the increased length of route segment 702b. Thus, in the illustrated example, even though a length change was applied to route segment 702b, the connector positions (and thus the associated start and end points of any route segments, including route segment 702b) remain the same. Thus, while m_RouteSegmentLength3D in m_RouteSegmentData3D_c is updated to reflect the increased length of route segment 702b, at least in this example, neither m_StartPoint3DIndex nor m_EndPoint3DIndex is modified in any way.
[0077] Referring again to FIG. 6 , the designer then switches (at 622) computer 100 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 to activate the function). 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 that now matches the final form of the 3D model and includes all applicable final design changes.
[0078] 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 may already be 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 only one route segment is extended from the model, computer 100 (at 624) may update in m_RouteSegmentData3D_c only the data entries that change as a result of the route segment extension. Specifically, at this point, computer 100 may update the m_RouteSegmentLength3D portion of RouteSegmentData3D_c to reflect the extension of that route segment. The 3D positions and orientations of the connectors at both ends of the modified route segment remain unchanged in the 3D model, so m_StartPoint3DIndex (near one connector) and m_EndPoint3DIndex (near the other connector) may remain unchanged (at 624).
[0079] 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 and initially set to 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.
[0080] 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 data structure 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 data structure. If the computer 100 determines (at 628) that the 3D route segment ID, m_RouteSegmentID, from the m_RouteSegmentData3D_c data structure 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 a 3D model and / or that 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.
[0081] If the computer 100 determines (at 628) that the 3D route segment ID (e.g., m_RouteSegmentID) exists in the corresponding m_RouteSegmentData2D_c (e.g., because a matching m_RouteSegmentID was identified in m_RouteSegmentData2D_c), the computer 100 proceeds to 632 to determine whether the length of the three-dimensional route segment is different from the length of the corresponding two-dimensional route segment (the symbol "!=" in the flowchart means not equal). In an exemplary embodiment, the computer 100 performs this function by comparing m_RouteSegmentLength3D with m_RouteSegmentLength2D for that route segment. If the computer 100 determines (at 632) that m_RouteSegmentLength3D matches m_RouteSegmentLength2D, the computer 100 determines that the length of the three-dimensional route segment is different from the length of the corresponding two-dimensional route segment (in which case the computer follows the "Y" branch of the flowchart). If computer 100 determines (at 632) that m_RouteSegmentLength3D does not match m_RouteSegmentLength2D, computer 100 determines that the length of the three-dimensional route segment is not different from the length of the corresponding two-dimensional route segment (in which case computer follows the "N" branch of the flowchart).
[0082] If computer 100 determines (at 632) that the length of a three-dimensional route segment differs from the length of the corresponding two-dimensional route segment, computer 100 follows the "Y" branch of the flowchart and performs a length adjustment procedure (634). The length adjustment procedure, an example of which is outlined in FIG. 8, provides for incorporating any changes in route segment length into the unfolded two-dimensional form of the model. In an exemplary embodiment, these changes are incorporated in a manner that tends to preserve visual layout characteristics from previous iterations of the unfolded two-dimensional form of the model. After performing length adjustment procedure (634) for that route segment, computer 100 returns to step 626, increments i, and continues the process appropriately, according to the flowchart of FIG. 6.
[0083] 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 then 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 version of the unfolded 2D form of the model by continuing to edit changes based on the set of modified route segments. Additionally (also at 636), computer 100 ensures that all m_RouteSegment2D_c are stored in the unfolded route. Computer 100 then (possibly) continues the process to step 610 in the flowchart to perform further editing.
[0084] FIG. 8 is a flow chart illustrating an embodiment of the computer-implemented length adjustment procedure (634). The procedure represented by the flowchart begins at 802, with the computer 100 executing (at 804) a process for modified route segment data in which only the length has been modified. Processing at this step may be initiated, for example, when / if the route segment length data is modified. This may occur, for example, when the computer 100 determines (at 632) that the current value of m_RouteSegmentLength3D does not match the current value of m_RouteSegmentLength2D. In some embodiments, this may occur, for example, when the computer 100 determines (at 632) that m_RouteSegmentLength3D does not match m_RouteSegmentLength2D and that m_EndPoint3DIndex in m_RouteSegmentData3D_c remains unchanged (e.g., compared to the previous iteration). More specifically, the computer 100 may be initiated (at 804) to perform processing associated with route segments whose lengths have been modified in response to a change in the length of the route segments.
[0085] Next (at 806), the computer 100 calculates the change in length of the associated route segment. According to the illustrated flowchart, the computer 100 performs this function by calculating the difference between the length of the route segment in the two-dimensional environment (m_RouteSegmentLength2D) and the length of the route segment in the three-dimensional model (m_RouteSegmentLength3D). For example, at this point the computer 100 may calculate (and optionally store in memory 104) the length of the 3D data minus the length of the 2D data.
[0086] Next, computer 100 determines (at 808) whether the change in length (as calculated at 806) is greater than zero. For example, as shown in FIG. 7, if the length of the route segment in the three-dimensional model was extended, the calculated change in length (at 806) would be greater than zero, and computer 100 would reach this decision (at 808). If so, computer 100 proceeds along the "Y" branch of the flowchart to step 810. If the length of the route segment in the three-dimensional model was shortened, the calculated change in length (at 806) would not be greater than zero (it would be less than zero), and computer 100 would reach this decision (at 808). If so, computer 100 proceeds along the "N" branch of the flowchart to step 826.
[0087] If the computer 100 determines (at 808) that the change in length value (calculated at 806) is greater than zero, the computer 100 retrieves (at 810) the last 2D sketch segment from the corresponding m_RouteSegmentData2D_c data structure (e.g., retrieves or accesses it from memory 104). Next (at 812), the computer 100 retrieves (e.g., from the corresponding m_RouteSegmentData2D_c data structure) the route segment end point index m_EndPoint2DIndex, the start point index of the last sketch segment, and the end point index of the last sketch segment. Based on this data, the computer 100 calculates (at 814) a translation vector (Vt) that defines the direction and distance by which the end point of the last sketch segment should be moved and the direction and distance by which the last sketch segment should be modified (e.g., extended). The specific calculation performed in this regard, according to the illustrated example, is Vt = (EndPointLoc - StartPointLoc) * Change in Length, where EndPointLoc - StartPointLoc represents the direction vector from the start point of the last sketch segment to the end point of the last sketch segment, and Change in Length is a scalar representing how much the length of the last sketch segment needs to be changed. In an exemplary embodiment, computer 100 calculates the change in length based on the difference between the current length of the modified three-dimensional model (e.g., m_RouteSegmentLength3D) and the length of the two-dimensional form of the model before modification (e.g., m_RouteSegmentLength2D). Multiplying the direction vector by the scalar generates a scaled vector with the same direction as the direction vector but a length equal to the calculated change in length.
[0088] The computer 100 then checks (at 816) whether RSegEndPoint is equal to SketchSegEndPoint. If it is not equal (N), the computer then reverses (at 818) the direction of the calculated translation vector (Vt) by replacing the previous value of Vt with a new value that has the equation Vt = Vt * -1.0. These steps (816 and 818) essentially determine the direction (along the axis defined by Vt) to translate the endpoint of the last sketch segment (and extend the last sketch segment). The translation can be positive (e.g., lengthening the segment) or negative (e.g., shortening the segment). Next (at 820), the computer 100 moves the endpoint of the last sketch segment (e.g., 715 of 712) using the translation vector (Vt). The computer 100 then finds (at 822) any connected segments (e.g., one or more route segments connected to the endpoint being transformed) and translates (e.g., extends) them using the translation vector.
[0089] FIG. 7 includes an image (labeled "2D Unfolded Result") illustrating a two-dimensional view of an exemplary three-dimensional model 700 having a particular visual layout. The illustrated two-dimensional view of model 700 shows two route segments 702a, 702b of model 700 and includes a corresponding m_RouteSegmentData2D_c data structure. Route segment 704b, in the illustrated embodiment, is comprised of two or more sketch segments, each identified in the m_ListofSketchSegments2D_c of the corresponding m_RouteSegmentData2D_c data structure. Each sketch segment has a start point and an end point, which may also be represented in the corresponding m_RouteSegmentData2D_c data structure. For example, the "2D Unfolded Result" image in FIG. 7 illustrates the last sketch segment 712 of route segment 704b, the start point 713 of sketch segment 712, and the end point 715 of sketch segment 712. To accommodate the corresponding change in the three-dimensional model (i.e., the extension of route segment 704b), computer 100 modifies (increases) the length of sketch segment 712 (as reflected in the "Expansion Update Result with Length Adjustment Retaining Previous Edits" image in FIG. 7). As depicted in this image, the modified image reflects the connected route segment (i.e., the route segment connected to the end point of the modified sketch segment) updated with its modified length at its new location.
[0090] Referring again to Figure 8, computer 100 updates (824) the sketch, thereby producing a modified, unfolded two-dimensional form of the model, as shown, for example, in the "Unfolded Update Results with Length Adjustment Retaining Previous Edits" image in Figure 7. Computer 100 then (at 826) removes any root segments from the modified root segments array, and the subprocess ends (828).
[0091] If the computer 100 determines (at 808) that the change in length (calculated in 806) is less than or equal to zero, the computer 100 follows the "N" branch out of 808 and assigns a value of false to the IsPointFound flag (826). Initializing this variable at this point tells the computer that the point, described below, has been found. The initial value of this variable is set to false because, at this point in the process, the point in question has not been found. The value of the flag can later be changed to true, for example, if the point in question is found. As previously mentioned, this point, if present, may also be found in the array of sketch segments represented by the arrayofSketchSegment data structure.
[0092] Next (at 828), the computer 100 enters a function loop by setting a loop variable i equal to SketchSegment2DSize, where the loop continues to execute as long as the value of the loop variable i is greater than zero (i>0), and after each loop iteration, the value of the variable i is decremented by 1. SketchSegment2DSize is a numeric value that represents the number of sketch segments to consider when iterating through the loop function (until there are no more sketch segments to consider). In an exemplary embodiment, SketchSegment2DSize is a numeric value that identifies the number of sketch segments within a particular two-dimensional form of a model (e.g., within a particular two-dimensional root segment of a model).
[0093] Next (at 830), the computer 100 processes the first sketch segment from m_ListofSketchSegments2D for the corresponding 2D route segment. In an exemplary embodiment, the first sketch segment to consider may be the last sketch segment (e.g., the end) of two corresponding 2D route segments. This process involves determining whether a particular point is found along the associated sketch segment. There may be various ways to accomplish this function. In one example, the computer 100 compares the coordinates of that point with the coordinates located between the ends of the corresponding sketch segments. This is represented in the flowchart by the notation Sketch Segment=m_ListofSketchSegments2D[i].
[0094] If the computer 100 determines (at 832) that the point was found (within the currently processed sketch segment), the computer 100 adds (at 834) the currently processed segment to an array of sketch segments (arrayofSketchSegment) data structure. At that point, the computer 100 returns the process to 828 in the flowchart. If the computer 100 determines (at 832) that the point was found, the computer 100 checks (at 836) whether the length of the current sketch segment is greater than the Change in Length calculated in 806. If the computer 100 determines (at 836) that the length of the current sketch segment is less than or equal to the Change in Length calculated in 806, the computer 100 adds (at 838) the Change in Length value to the length value of the current sketch segment and stores the resulting value again in the Change in Length variable. The computer then removes the segment from the sketch (also as part of 838) and returns the process to 828 in the flowchart. If the computer 100 determines (at 836) that the length of the current sketch segment is greater than the Change in Length calculated at 806, the computer 100 searches (at 840) for a point in the processing entity that has the Change in Length value. The computer 100 then sets (also at 840) the found point as the "new end point." The computer 100 also adds (also at 840) the processing segment to the array of sketch segments (arrayofSketchSegment) and updates the IsPointFound flag to a true value. The computer 100 then calculates (also at 840) a translation vector (using techniques similar to those described herein) between the "new end point" and the old end point. The computer 100 then moves (also at 840) any connected segments using the translation vector.
[0095] The computer 100 then updates (at 842) the m_RouteSegmentData2D_c data structure with the new length, new endpoints, and the final form of the arraySketchSegments. The computer 100 then updates (at 824) the sketch accordingly. The computer 100 then removes (at 826) any route segments from the modified route segments array and ends the subprocess (828).
[0096] 9 shows an initial image of a three-dimensional model 900 within a three-dimensional modeling environment (labeled "Electrical Harness in 3D"), an unfolded and edited two-dimensional form of that three-dimensional model (labeled "Unfolded Route with Edits"), a next image of the three-dimensional model 900 within the three-dimensional modeling environment showing one route segment 904a shortened within the three-dimensional modeling environment (labeled "Length Reduction in 3D"), and a next unfolded two-dimensional form of the three-dimensional model with the shortened route segment (labeled "Unfolded Updated Route with Length Adjustment Retaining Previous Edits"). This is an example of a change that can be made and an example of a series of images that the computer 100 may sequentially display on the screen to the designer in the order listed as the model evolves (e.g., when the designer creates an initial model within the three-dimensional modeling environment, unfolds the design for display within a two-dimensional environment, and then unfolds it within the three-dimensional modeling environment after reducing the length of one of the model's route segments). It is noteworthy that modifying the model 900 within the three-dimensional modeling environment (such as by shortening one of the model's root segments) and incorporating those modifications into the model's unfolded two-dimensional form does not result in a significant modification of the overall visual layout of the model's unfolded two-dimensional form. Indeed, except for removing part of the root segment 904a (to shorten the 2D appearance of that root segment) and transforming some elements of the drawing (e.g., connected segments, connector 902a, and route segment endpoints), the visual layout of the remainder of the model's unfolded two-dimensional form remains the same.
[0097] FIG. 9 also includes a detailed schematic view (labeled "Unfolded Route Update Schematic") illustrating some of the modifications and functions performed by computer 100 when making the specified design changes according to the processes described in FIGS. 6 and 8. Specifically, this schematic view shows the old (or original) endpoint (i.e., the endpoint of the route segment before shortening), the new (or changed) endpoint (i.e., the endpoint of the route segment after shortening), and the calculated transformation vector (representing the direction of transforming the endpoint from its original position to its new position). This view shows that connected segments (i.e., segments connected to the endpoint being repositioned) need to be moved (and are moved by computer 100) to connect to the new endpoint at the new endpoint location. This view also shows the sketch segment(s) that need to be deleted (and are deleted by computer 100) to adjust the endpoint transformation. In an exemplary embodiment, computer 100 may make these route changes by modifying data associated with all affected route segments in memory (e.g., m_RouteSegmentLength2D and m_EndPoint2DIndex) and / or deleting all removed route segments by deleting their associated data (e.g., m_RouteSegmentData2D_c) from memory. Any changes to length (e.g., to m_RouteSegmentLength2D) may be made based on a comparison with the corresponding length change for the 3D geometry (e.g., m_RouteSegmentLength3D). As an example, computer 100 may calculate the length change as Length Change = m_RouteSegmentLength2D - m_RouteSegmentLength3D. Once the computer 100 has calculated the length change, the computer may subtract the length change from the corresponding value of m_RouteSegmentLength2D to generate a new value of m_RouteSegmentLength2D, and a new form of the corresponding 2D route segment may be displayed using the same pattern but with a different length (and therefore a different new end point).This view shows the sketch segments that should be kept (and that computer 100 keeps) even when marked as shortened.
[0098] Even though one of the route segment lengths in FIG. 9 is changing (from the "electrical harness in 3D" image to the "length reduced in 3D" image), the three-dimensional position and orientation of the connector at the end of the modified route segment remains unchanged. This type of change causes computer 100 to change the visual layout of the displayed three-dimensional model and, as described below, typically causes computer 100 to update m_RouteSegmentData3D_c for any affected route segments. Specifically, m_RouteSegmentLength3D in m_RouteSegmentData3D_c is updated to reflect the reduction in length of route segment 904a. In this particular example, because the position and orientation of the connector at the end of the modified route segment remains unchanged, the values of m_StartPoint3DIndex and m_EndPoint3DIndex also remain unchanged.
[0099] The image in FIG. 9 (labeled "Unfolded Route with Edits") shows an exemplary two-dimensional representation of a three-dimensional model 900 of an Electrical Harness 3D Model image having a particular visual layout. The illustrated two-dimensional representation of the model 900 shows two route segments 904a, 904b of the model 900 and includes a corresponding m_RouteSegmentData2D_c data structure. The route segment 904a, in the illustrated embodiment, consists of multiple sketch segments, each of which would be identified in the m_ListofSketchSegments2D_c of the corresponding m_RouteSegmentData2D_c data structure. Each sketch segment has a start point and an end point, which may also be represented in the corresponding m_RouteSegmentData2D_c data structure. The illustrated visual layout has already been edited (to improve the visual layout) according to the accompanying image.
[0100] 9 (labeled "Expanded Updated Route with Length Adjustment Retaining Past Edits") shows an exemplary two-dimensional representation of a three-dimensional model 900 in a "3D Length Reduction" image. The illustrated two-dimensional representation of model 900 shows two route segments 904a, 904b of model 900, including corresponding m_RouteSegmentData2D_c data structures. In the illustrated example, route segment 904a has been shortened, with the associated m_RouteSegmentData2D_c data structure updated accordingly.
[0101] FIG. 10 is a collection of images showing some examples of model modifications and subsequent model evolution (with and without the systems and techniques disclosed herein), illustrated to demonstrate the effectiveness of the systems and techniques disclosed herein.
[0102] Specifically, the top row of this figure shows three images: the initial 3D model of the wire harness (labeled "Electrical Harness in 3D"), the default unfolded form of the 3D model of the wire harness (labeled "Default 2D Unfolded Route"), and an edited form of the default unfolded form of the 3D model of the wire harness (labeled "Unfolded Route Design After Editing"). Once edits have been made (as shown in the "Unfolded Route Design After Editing" image), it is generally desirable to minimize the need to redo such edits.
[0103] The next (second) column of images shows a three-dimensional model of a wire harness with an extended route segment (labeled "Length Extension in 3D"), an unfolded 2D form of the three-dimensional model of the wire harness with an extended route segment without taking advantage of the systems and techniques disclosed herein (labeled "Previous Result After Unfolded Route Update"), and an alternative unfolded 2D form of the three-dimensional model of the wire harness generated with the benefits of the systems and techniques disclosed herein (labeled "Improved Result After Unfolded Route Update"). It is important to note that this second column of images represents possible results after the above-described editing operation (shown in the "Unfolded Route Design After Editing Operation" image) when the three-dimensional model is modified and unfolded again under different assumptions (i.e., with and without taking advantage of the systems and techniques disclosed herein). These images show that the unfolded route generated using the systems and techniques disclosed herein (in the image labeled "Improved Results After Unfolded Route Update") has a visual layout that is much closer to the originally edited form of the 3D model (in the "Unfolded Route Design After Editing Work" image) than the visual layout in the "Previous Results After Unfolded Route Update" image.
[0104] Similarly, the third (or bottom) row of images shows a three-dimensional model of a wire harness having shortened route segments (labeled "Length Reduction in 3D"), an unfolded 2D form of the three-dimensional model of the wire harness having extended route segments without taking advantage of the systems and techniques disclosed herein (labeled "Previous Result After Unfolded Route Update"), and an alternative unfolded 2D form of the three-dimensional model of the wire harness generated with the benefits of the systems and techniques disclosed herein (labeled "Improved Result After Unfolded Route Update"). It is important to note that this third row of images represents possible results after the above-described editing operations (shown in the "Unfolded Route Design After Editing Operations" image) when the three-dimensional model is modified and unfolded again under different assumptions (i.e., with and without taking advantage of the systems and techniques disclosed herein). These images show that the unfolded route generated using the systems and techniques disclosed herein (in the image labeled "Improved Results After Unfolded Route Update") has a visual layout that is much closer to the originally edited form of the 3D model (in the "Unfolded Route Design After Editing Work" image) than the visual layout in the "Previous Results After Unfolded Route Update" image.
[0105] In view of the above, in an exemplary embodiment, when a user (e.g., a designer) modifies the length of a route segment in a 3D route of an electrical harness and wishes to update these changes to the unfolded route form by switching configurations, the systems and techniques disclosed herein may be implemented to identify the modified route segments by comparing the m_routeSegment3D_c and m_routeSegment2D_c data structures. In some such embodiments, the computer 100 may identify route segments in the 3D model whose length alone has been modified. The computer 100 may do this by applying deductive logic when analyzing the data stored in the m_routeSegment3D_c and m_routeSegment2D_c data sets. When performing length adjustments, the route segment lengths may differ in the two data structures, but the indices of the 3D end points, i.e., m_StartPoint3DIndex and m_EndPoint3DIndex, may be the same in the 3D route segment data structure and the 2D route segment data structure.
[0106] In an exemplary embodiment of the systems and techniques disclosed herein, once a particular model of a wire harness has been deemed complete (e.g., by a designer or design team) and optionally designated as such in computer memory, and one or more final, unfolded, two-dimensional forms of the model (e.g., formboard drawing(s)) have already been generated (and optionally designated as final in computer memory), the designer may provide the formboard drawings to a manufacturer, and the manufacturer may use real machinery to manufacture an actual version of the object or system represented by the model (e.g., an actual wire harness) based at least primarily, if not entirely, on the formboard drawing(s). This manufacturing process may include, for example, sourcing materials (e.g., wire, bundling material, clips, tape, connectors, etc.), cutting and stripping wires, routing and combining wires, attaching connectors, etc., using real machinery and depending on the orientation in the formboard drawings.
[0107] 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. In essence, the systems and techniques can be applied to the design and subsequent assembly of any other physical object, especially objects that include physical elements (e.g., pipes, optical fibers, etc.) that need to be routed through real space, bundled, and / or interconnected to other physical objects.
[0108] 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 also possible.
[0109] The term computer-aided design should be interpreted broadly to include any computer-based software for designing, developing, simulating, and / or developing designs.
[0110] The specific process for adjusting modified route segment lengths when generating an updated, unfolded, two-dimensional form of the model may vary. Generally, when a designer changes the length of a route segment within a three-dimensional modeling environment and initiates a process (e.g., switching configurations) that results in computer 100 generating an updated form of the corresponding unfolded, two-dimensional form of the model, computer 100 typically identifies the modified route segment by comparing the m_routeSegment3D_c data structure with the m_routeSegment2D_c data structure. Furthermore, during the length adjustment process disclosed herein, computer 100 may identify route segments whose lengths have been modified within the 3D route (without modifying the start and end points of the route segment) by applying logic to the data stored in the m_routeSegment3D_c and m_routeSegment2D_c data structures. When performing length adjustments in this manner, the computer 100 may determine that the route segment lengths are different in both the 3D route segment data and the 2D route segment data, but the 3D end point indices (i.e., m_StartPoint3DIndex and m_EndPoint3DIndex) are the same. The computer 100 typically calculates the change in length in such cases based on the difference between the current actual length, i.e., the 3D length, and the previous length, i.e., the 2D length. This change in length may be either positive or negative. If the change in length is positive, the computer 100 determines that the route segment length has increased in 3D. If the change in length is negative, the computer 100 determines that the route segment length has decreased in 3D. However, variations are possible. For example, the data that the computer 100 evaluates in this regard may be stored in any number of different formats. In various embodiments, the computer may also identify route segments whose lengths have changed in other ways. Variations are also possible.
[0111] The specific process for adjusting for identified route segment length increases when generating an updated, unfolded 2D form of the model may vary widely. In an exemplary embodiment, as disclosed herein, the computer 100 adjusts length changes at the ends of the route segments to facilitate preserving the previous visual layout (and changes to the layout) within the unfolded configuration. In an exemplary embodiment, the computer 100 may do this by selecting the last sketch segment of the modified route segment from the m_routeSegment2D_c data structure. The computer 100 then moves or transforms the route segment so that its end point is tangent to the last sketch segment. In an exemplary embodiment, this involves the computer 100 calculating a translation vector that translates the last sketch segment, where the translation vector may be calculated from the location of the end point to the location of the start point. This translation may be applied to all connected route segments attached to the end point so that they remain properly connected after the end point translation. The updated route segment may be removed from the set of modified route segments when its length is updated for the 2D data. However, variations are possible. For example, the particular process for calculating the transformation vector may vary widely.
[0112] The specific process for adjusting for the increase in the length of an identified route segment when generating an updated, unfolded 2D form of the model may vary widely. In an exemplary embodiment, computer 100 may traverse a sketch segment from the end point of the identified route segment and search for a new end point along the route segment where the length of the route segment matches the shortened length of the route segment from the 3D data. In some embodiments, computer 100 may then calculate the length needed to remove the segment as the difference between the route segment length from the 3D data and the route segment length from the 2D data. The length to be removed may be significant when traversing the end of a sketch segment. If the length of the current sketch segment is shorter than the length to be removed, computer 100, in an exemplary embodiment, deletes the sketch segment from the sketch (and associated 2D data structure), and the length to be removed is updated by adding the length of the current sketch segment to it. This process may be repeated until the length of the current sketch segment is longer than the length to be removed. If this condition is met, the computer 100 calculates a point from the end point of the current sketch segment using the length to subtract (typically, the new point location may be calculated using the getPointAtLength() function, which obtains the coordinates (e.g., x, y) of a point at a specific distance (length) along the path). The current segment and any other remaining sketch segments may be stored by the computer 100 in a set of sketch segments in a corresponding data structure. The set of sketch segments and the new end point are then updated in the m_routeSegment_2D data structure. The route segment may then be removed from the modified route segment set. In an exemplary embodiment, the computer calculates a transformation vector / translation between the location of the new end point and the location of the old end point. The translation of the transformation is used to update the locations of connected route segments attached to the old end point. Variations are also possible.
[0113] The present systems and techniques are applicable to adjusting length changes to both open and closed route segments. In various embodiments, one or more computer components disclosed herein (e.g., applications, design tools, deployment tools, etc.) 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 across 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, whether contained within a single housing or distributed across different locations.
[0114] 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).
[0115] The systems and techniques disclosed herein can be implemented in a wide variety of ways. In one exemplary embodiment, the systems and techniques disclosed herein can 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 can be deployed in other ways.
[0116] 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 executes 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 should understand 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.
[0117] 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 in 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 additionally, 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.
[0118] Certain operations described herein (e.g., those aspects described in FIGS. 6 and 8 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.
[0119] 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 can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can 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 even initially claimed as such, one or more features from a claimed combination can, in some cases, be deleted from that combination, and the claimed combination can be directed to a subcombination or a variation of the subcombination.
[0120] Similarly, although operations may be described herein as occurring 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.
[0121] Other embodiments are within the scope of the claims.
Claims
1. 1. A 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; then modifying the initial three-dimensional model in a virtual three-dimensional modeling environment to generate a modified three-dimensional model, wherein route segments of the wire harness represented in the modified three-dimensional model have different lengths than corresponding route segments of the wire harness in the initial 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 having the root segment length of the modified three-dimensional model and otherwise having 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 changes in route segments in the modified three-dimensional model relative to 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, and setting a flag in the computer memory to indicate that the length of the particular one of the root segments has been changed in response to the comparison, the comparison comprising: the route segment ID associated with the particular route segment is in the model data structure and in the unfolded route data structure; the three-dimensional route segment start point associated with the particular route segment is the same in the model data structure and in the unfolded route data structure; the three-dimensional route segment end points associated with the particular route segment are the same in the model data structure and in the unfolded route data structure; the three-dimensional route segment length in the updated model data structure associated with the particular route segment is different from the unfolded route segment length in the unfolded route data structure associated with the particular route segment; Identifying The method comprises:
8. 8. The method of claim 7, further comprising: calculating a change in length of the particular route segment in the modified three-dimensional model relative to a previous iteration of the three-dimensional model based on a difference between the three-dimensional route segment length in the updated model data structure associated with the particular route segment and the unfolded route segment length in the unfolded route data structure associated with the particular route segment; Identifying whether the change in length was an increase or decrease based on whether the calculated change in length was a negative or positive result; The method comprises:
9. 9. The method of claim 8, If the change in length is identified as an elongation, generating the unfolded two-dimensional visual representation of the modified three-dimensional model adjusts for the change in length using a process; The process comprises: selecting a last one of the sketch segments in the list of two-dimensional sketch segments for the particular route segment in the developed route data structure; identifying a direction of a translation vector by subtracting a two-dimensional start point for the last one of the sketch segments stored in the computer memory from a two-dimensional end point for the last one of the sketch segments stored in the computer memory; translating the location of the two-dimensional route segment end point for the particular route segment a distance in the direction of the identified translation vector that corresponds to the calculated change in length; The method comprises:
10. 10. The method of claim 9, further comprising: translating the positions of any other route segments connected to the two-dimensional route segment end point for the particular route segment in the direction of the identified translation vector by a distance corresponding to the calculated change in length. The method comprises:
11. 9. The method of claim 8, further comprising: if the change in length is identified as a shortening, tracing the route segment from the two-dimensional route segment end point to a new end point that is a distance from the two-dimensional route segment start point that is the same as the three-dimensional route segment length from the model data structure. The method comprises:
12. 12. The method of claim 11 further comprising: determining whether the length of the last sketch segment for the particular route segment stored in the computer memory is less than the calculated change in length; In response to determining that the length of the last sketch segment in the particular route segment is less than the calculated change in length, removing the last sketch segment from the list of two-dimensional sketch segments in the unfolded route data structure; The method comprises:
13. 13. The method of claim 12, further comprising: working back from the last sketch segment, removing one or more additional sketch segments from the list of two-dimensional sketch segments until a particular one of the sketch segments is determined to be long enough to include a point that would correspond to the calculated change in length; calculating the location of the new end point from the particular one end point of the sketch segment; The method comprises:
14. 14. The method of claim 13, further comprising: updating the list of two-dimensional sketch segments to include only sketch segments that were not removed and to include new values for the two-dimensional route segment endpoints in the unfolded route data structure based on the locations of the new endpoints; The method comprises:
15. 15. The method of claim 14, further comprising: calculating a translation vector between the new endpoint location and the endpoint location immediately preceding the new endpoint location; updating the positions of any additional route segments connected to said end point according to said calculated transformation vector; The method comprises:
16. 16. The method of claim 15, 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, wherein route segments of the wire harness represented in the modified three-dimensional model have lengths that are different from corresponding route segments of the wire harness in the initial 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 having the root segment length of the modified three-dimensional model and otherwise having the visual layout of the unfolded two-dimensional representation of the initial three-dimensional model; A system comprising:
18. 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: 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, wherein route segments of the wire harness represented in the modified three-dimensional model have different lengths than corresponding route segments of the wire harness in the initial 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 having the root segment length of the modified three-dimensional model and 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: