Use of trunk line in flattening electrical harness assembly design
Patent Information
- Application Number
- JP2022173424
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-11-18
- Filing Date
- 2022-10-28
- Publication Date
- 2025-11-04
AI Technical Summary
Generating a clean, accurate, and comprehensible two-dimensional (2D) representation of a three-dimensional (3D) electrical harness assembly design with many branches is challenging, requiring significant time and effort, and often results in a less-than-optimal final product.
A computer-based method and system that identifies the trunk of the electrical harness assembly by storing data on route segment identifiers, diameters, and lengths, and generates a flattened 2D representation with the trunk as straight horizontal lines and branches extending from it, preserving the 3D connections.
The method produces a clear, accurate, and understandable 2D representation that requires minimal editing, maintaining the integrity of the electrical harness design for manufacturing purposes.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
Technical Field
[0003]
[0001] Field of the Invention The present disclosure relates to the field of design, and more particularly to computer-based systems and methods involved in using trunks when flattening electrical harness assembly designs, for example, in a computer-aided design environment.
Background Art
[0002] Background Computer-aided design (CAD) software can facilitate the design of a vast number of objects, including electrical harnesses. Electrical harness assembly designs can be flattened from a three-dimensional (3D) format to a two-dimensional (2D) format. Generating a clear, accurate, and understandable 2D representation of a 3D electrical harness assembly design through flattening can be challenging, especially when the electrical harness has many branches extending from its trunk. Considerable time and effort may be required to edit and / or manipulate the 2D representation to produce a clear, accurate, and understandable representation, and in many cases, the ultimate end product of the editing and manipulation may still not be optimal.
Summary of the Invention
[0004] In another embodiment, a computer-based system for generating a flattened version of a three-dimensional (3D) electrical harness assembly design in a computer-aided design environment is disclosed. The computer-based system includes one or more computer processing devices; and computer-based memory operably coupled to one or more processing devices. The computer-based memory stores computer-readable instructions that, when executed by one or more processors, cause the computer-based system to: store in the computer-based memory data identifying the root segment identifier of a root segment in an electrical harness assembly design, the diameter of each root segment of a root segment, the length of each root segment of a root segment, and the endpoint location of each root segment of a root segment; one or more computer-based processing devices, based on the stored data, designate one or more of the root segments as forming the trunk of the electrical harness assembly design; generate a flattened two-dimensional (2D) version of the electrical harness assembly design; and display the flattened 2D version of the electrical harness assembly design on a display screen of the computer-based system. All route segments designated as forming a trunk line are represented in a flattened 2D version of the electrical harness assembly design by straight lines that are connected to each other and have a specific orientation on the 2D Cartesian coordinate plane, and each of the route segments not designated as forming a trunk line is represented in a flattened 2D version of the electrical harness assembly design that extends outward from the trunk line. The orientation of all straight lines representing the route segments designated as forming a trunk line is flat and horizontal on the 2D Cartesian coordinate plane.
[0005] In yet another embodiment, a non-temporary computer-readable medium is disclosed on which computer-readable instructions are stored, and when executed by a computer-based processor, the computer-readable instructions cause the computer-based processor to generate a flattened version of a three-dimensional (3D) electrical harness assembly design in a computer-aided design environment by: storing in computer-based memory data identifying the root segment identifier of the root segments in the electrical harness assembly design, the diameter of each root segment of the root segments, the length of each root segment of the root segments, and the endpoint location of each root segment of the root segments; designating one or more of the root segments as forming the trunk lines of the electrical harness assembly design based on the stored data; generating a flattened two-dimensional (2D) version of the electrical harness assembly design; and displaying the flattened 2D version of the electrical harness assembly design on a computer display screen. All route segments designated as forming a trunk line are represented in a flattened 2D version of the electrical harness assembly design by straight lines connected to each other and having a specific (e.g., horizontal) orientation on a 2D Cartesian coordinate plane, and each route segment not designated as forming a trunk line is represented in a flattened 2D version of the electrical harness assembly design extending outward from the trunk line.
[0006] Some implementations offer one or more of the following advantages:
[0007] For example, in various implementations, the systems and technologies disclosed herein generate a clear, accurate, and easily understandable flattened 2D representation of an electrical harness assembly design, requiring little to no editing or manipulation for the flattened 2D representation to serve its intended purpose. The flattened 2D representation of the electrical harness assembly design generated in this manner can be incorporated into a flattened (or template) drawing, which is a document containing various information relating to the electrical harness assembly design (e.g., not only the flattened 2D representation of the electrical harness but also other information such as the wires used, wire connections, and tracks). In a typical implementation, the flattened 2D representation of the electrical harness and other information in the template drawing help a manufacturer, referring to the template drawing during manufacturing, to manufacture the electrical harness and (optionally) any other articles that may be represented in the drawing.
[0008] Other features and advantages will become apparent from this specification, the accompanying drawings, and the claims. [Brief explanation of the drawing]
[0009] Brief explanation of the drawing [Figure 1] This is an illustrative computer schematic diagram for generating a flattened version of a 3D electrical harness assembly design in a computer-aided design environment. [Figure 2A] This shows a side-by-side comparison illustrating an example of a flattened 2D representation of an electrical harness assembly design. [Figure 2B] This shows a side-by-side comparison illustrating an example of a flattened 2D representation of an electrical harness assembly design. [Figure 3] This is a schematic diagram of an exemplary computer network environment that may be used to implement the functions disclosed herein (including, for example, flattening functions). [Figure 4] Figure 3 is a schematic diagram showing the detailed implementation configuration of the network environment. [Figure 5A]This flowchart illustrates the implementation of the computer-based electrical harness assembly design flattening process. [Figure 5B] This flowchart illustrates the implementation of the computer-based electrical harness assembly design flattening process. [Figure 5C] This flowchart illustrates the implementation of the computer-based electrical harness assembly design flattening process. [Figure 6] This shows an example of an electrical harness assembly design in which one main line and multiple branches are identified within it. [Figure 7A] Figure 6 shows a portion of the electrical harness assembly design. [Figure 7B] Figure 6 shows a portion of the electrical harness assembly design. [Figure 7C] Figure 6 shows a portion of the electrical harness assembly design. [Figure 7D] Figure 6 shows a portion of the electrical harness assembly design. [Figure 7E] Figure 6 shows a portion of the electrical harness assembly design. [Figure 8] Figure 6 is a screenshot showing an exemplary implementation of a user interface (e.g., on a computer display) with design fields that display the electrical harness assembly design and the flattened route characteristic manager. [Figure 9A] This shows a flattened 2D representation of the electrical harness assembly design at various stages of construction. [Figure 9B] Figure 6 shows a portion of the electrical harness assembly design. [Figure 9C] Figure 6 shows a portion of the electrical harness assembly design. [Figure 9D] Figure 6 shows a portion of the electrical harness assembly design. [Figure 9E] Figure 6 shows a portion of the electrical harness assembly design. [Figure 10A] This shows an electrical harness assembly design where a labeled "root segment" extends between two labeled "branch points." [Figure 10B] Shows the same electrical harness assembly design having a plurality of labeled "sketch segments" that make up the labeled "route segment" of FIG. 10A. [Figure 11] An example of an electrical harness assembly design having two labeled "branch points" where a plurality of labeled "route segments" merge is shown. [Figure 12] Shows a labeled "cpoint" and "cpoint direction". [Figure 13] An example of a loop formed by a plurality of route segments is shown. **DETAILED DESCRIPTION OF THE INVENTION**
[0010] Like reference characters refer to like elements.
[0011] Detailed Description This document uses a variety of technical terms to explain its inventive concept. Unless otherwise indicated, the following technical terms and their variations should be understood to have meanings consistent with the following.
[0012] For example, generally, the phrase "computer-aided design" refers to the use of a computer (or workstation) to assist in the generation, modification, analysis, or optimization of a design. "Design" typically refers to a plan or specification (e.g., a drawing) of an object or system stored in a computer-based memory (including the structural details of the object or system). The SolidWorks® computer program available from Dassault Systems SolidWorks (the applicant of this application) is an example of a computer-aided design software program. As used herein, the phrase "computer-aided design" should be construed broadly to include any computer software, device, or system that incorporates or can incorporate the ability to flatten electrical harness assembly designs.
[0013] The term "flattening" refers to the process by which a three-dimensional (3D) representation of a design, or a part thereof, is converted into a two-dimensional (2D) representation in a computer-aided design environment.
[0014] The phrase “electrical harness” (also called cable harness, wire harness, wiring harness, cable assembly, wiring assembly, or wiring loom) refers to an assembly of electrical cables or wires capable of transmitting electrical signals and / or power. Typically, the cable or wire bundles are bundled together along at least some extent of the electrical harness by a durable material such as rubber, vinyl, electrical tape, conduit, extruded string fabric, or a combination thereof. An “electrical harness” typically includes a main line and several branches.
[0015] The phrase "trunk" typically refers to the main part of an electrical harness as represented in a design, from which one or more branches may diverge. The trunk can be identified by a human user (manually) or by a computer algorithm (automatically). In a typical implementation, the trunk is the longest continuous length of the electrical harness with the largest diameter of all route segments. The trunk may contain one or more route segments.
[0016] The phrase "branch" refers to one or more electrical cables or wires within an electrical harness that extends from a main line. Typically, branches terminate at an electrical connector or connection point on an electrical component.
[0017] "Flattening an electrical harness assembly design" refers to the process of converting a 3D representation of an electrical harness assembly design, or a portion thereof, into a 2D representation in a computer-aided design environment. In a typical implementation, the length and connections of each route segment in the 3D representation of the electrical harness assembly design are maintained in the flattened 2D representation of the electrical harness assembly design.
[0018] A "root segment" is part of an electrical harness assembly design in a computer-aided design environment. Typically, a root segment consists of one or more sketch segments that extend between two branching points, each containing one or more sketch segments. Figure 10A shows an electrical harness assembly design where a labeled "root segment" extends between two labeled "branching points." Figure 10B shows the same electrical harness assembly design with multiple (a total of six) labeled "sketch segments" that constitute the "root segment." A root segment also typically has one or more root characteristics stored in computer-based memory (these define one or more features of the root segment, such as diameter, color, and the wires that pass through it).
[0019] A "branch point" is a point in the design of an electrical harness assembly in a computer-aided design environment where multiple root segments merge. Figure 11 shows an example of an electrical harness assembly design with two labeled "branch points" where multiple labeled "root segments" merge. Root segments 1, 2, and 3 merge at the leftmost labeled "branch point." Root segments 1, 4, and 5 merge at the rightmost labeled "branch point."
[0020] The "reference route segment" is the route segment in an electrical harness assembly design that is identified as having the largest diameter or as being the longest route segment with the largest diameter in the electrical harness assembly design.
[0021] The phrase "center point" refers to the central position along the length of the main wire in the design of an electrical harness assembly.
[0022] The phrase "flattened route center" refers to the end of a route segment in an electrical harness assembly design that is closest to the center point of the trunk line in the electrical harness assembly design. In a typical implementation, the trunk line is flattened from its flattened route center.
[0023] A "connection point" or "CPoint" is a point in the design of an electrical harness assembly in a computer-aided design environment where a wire or core begins. Typically, every connection point has a point and direction (referred to as the "cpoint direction") which may be stored, for example, in computer-based memory. An example of this is shown in Figure 12, which shows labeled "cpoint" and "cpoint direction". In some implementations, the connection point or cpoint direction also has routing characteristics such as the diameter of the route segment and the route type (e.g., electrical, plumbing, tubing) which may be stored in computer-based memory.
[0024] The phrase "loop" is a part of electrical harness assembly design in a computer-aided design environment, where route segments are connected to each other in a way that forms a closed loop with periodic connectivity. Figure 13 shows an example of a loop formed by route segments labeled 2, 3, 4, and 5. A closed loop can be formed by starting at a node, passing through a set of other nodes, and returning to the starting node without passing through any node more than twice.
[0025] A "splice" is a connection point in the design of an electrical harness assembly between two (or more) electrical cables or wires in a computer-aided design environment. Splices can be modeled in any number of ways (for example, as a cylinder containing a single connection point).
[0026] The phrase "processor," etc., refers to any one or more computer-based processing devices. A computer-based processing device is a physical component that can perform computer functions by executing computer-readable instructions stored in memory.
[0027] The phrase "memory," etc., refers to any one or more computer-based memory devices. Computer-based memory devices are physical components that can store computer-readable instructions, which, when executed by a processor, result in the processor performing the associated computer function.
[0028] Conventional technology Software exists for flattening 3D designs in computer-aided design environments. For example, the SolidWorks® computer program, available from Dassault Systemes SolidWorks (applicant of this application), has a routing add-in that facilitates the design of electrical harnesses. Electrical harnesses are designed in 3D and then converted to 2D for manufacturing (this involves flattening). However, the flattening process in the program, as disclosed herein, did not involve taking trunk lines into account, flattening from a center point, and / or oriented trunk lines in the flattened version (e.g., linearly and horizontally). Due to these differences, it was not uncommon for multiple editing operations to be performed on a flattened electrical harness assembly design to make it clear and readable to the manufacturer and / or to fit into a space of given dimensions. Editing operations, especially for larger designs, were time-consuming and difficult, sometimes requiring multiple iterations, and often resulting in errors.
[0029] The systems and technologies disclosed herein differ from conventional software in terms of technical methods, execution, and output, and in themselves overcome or significantly minimize the technical limitations of conventional systems. Other technical differences may exist between various conventional technologies and the systems and technologies disclosed herein.
[0030] Technical disclosure Figure 1 is a schematic diagram of an exemplary computer 100 configured to facilitate the flattening of an electrical harness assembly design from a three-dimensional (3D) format to a two-dimensional (2D) format. In a typical implementation, the computer 100 considers the trunk lines of the electrical harness assembly design and performs the flattening process while flattening from the center point of the electrical harness. In some cases, trunk lines can be identified by a human user by designating several segments of the electrical harness assembly design as trunk line segments. In some cases, the system 100 automatically identifies trunk lines as the longest continuous segments of the electrical harness assembly design having the largest diameter. In a typical implementation, once trunk lines are identified, the computer 100 automatically generates a flattened 2D representation of the electrical harness by showing the trunk lines in a specific orientation (e.g., flat and horizontal) and by adding arbitrary branches to the trunk lines (e.g., as splines and / or lines).
[0031] In a typical implementation, the flattened 2D representation of an electrical harness assembly design produced in this manner requires little to no editing or manipulation to make the flattened 2D representation clear, accurate, easy to understand, and easy to use for its intended purpose. Often, the flattened 2D representation of an electrical harness assembly design produced in this manner is incorporated into a flattened (or template) drawing, which is a document containing various information about the electrical harness assembly design (e.g., not only the flattened 2D representation of the electrical harness but also other information such as the wires used, wire connections, and track layouts). In a typical implementation, the flattened 2D representation of the electrical harness and other information in the template drawing help the manufacturer, who refers to the template drawing during manufacturing, to produce the electrical harness and (optionally) any other items that may be represented in the drawing.
[0032] Figures 2A and 2B show a side-by-side comparison of examples of flattened 2D representations of electrical harness assembly designs. The example in Figure 2A is flattened without incorporating the techniques disclosed herein and without any consideration for the main lines of the electrical harness. On the other hand, the example in Figure 2B corresponds to the example in Figure 2A, but is flattened by taking the main lines of the electrical harness into consideration and using the techniques disclosed herein, and is flattened, for example, from their center points. Thus, the electrical harness represented in the example in Figure 2B has main lines (which occur and are identified in some drawings) that are on a flat and horizontal line with branches extending upward or downward at various angles from the main lines. The electrical harness assembly design represented in the example in Figure 2B is not only accurate but also clearer and easier to read, and the main lines are more easily identifiable than in the example in Figure 2A.
[0033] Referring again to Figure 1, the computer 100 has 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 acts as an interconnection between the components of the computer 100. The bus acts as a communication medium through which the various components of the computer 100 can communicate and interact with each other.
[0034] The processor 102 is configured to perform various computer-based functions disclosed herein as well as other support functions not expressly disclosed herein. Some such functions include enabling a user to convert a 3D version of an electrical harness assembly design to its flattened 2D version. Typically, the processor also enables the user to generate the original 3D version of the electrical harness assembly design. In various implementations, the conversion includes automatically identifying (or enabling a user to identify) the trunk lines in the 3D version of the electrical harness assembly design and utilizing the identified trunk lines and the center points of the electrical harness in order to generate a clear, accurate, and highly readable flattened 2D version of the electrical harness assembly design. Typically, the processor 102 performs these and other functions by executing computer-readable commands stored on a computer-readable medium (e.g., 104 or 106). In various implementations, some of these functions may be performed by referencing data stored in a computer-readable medium and / or received from an external source (e.g., an input / output device via the input / output (I / O) device interface 110 and / or an external network via the network interface 108).
[0035] Computer 100 has volatile and non-volatile memory. More specifically, in a typical implementation, memory 104 provides volatile storage in a form that stores computer-readable instructions that, when executed by processor 102, cause or facilitate some (or all) of the computer-based functions disclosed herein to be performed by processor 102. Furthermore, in a typical implementation, storage 106 provides a form of non-volatile memory that stores computer-readable instructions (such as instructions for implementing the operating system, configuration information, etc.). Various system memory resources (e.g., 104, 106) may also store data.
[0036] In a typical implementation, memory 104 stores computer-readable commands that, when executed by processor 102, cause processor 102 to execute functions (functions disclosed and incorporated herein) that present a computer-aided design program to a user in computer 100. An example of a computer-aided design program suitable for adaptation to incorporate the functions disclosed herein is the SolidWorks® computer program available from Dassault Systemes SolidWorks (applicant of this application). Such an adapted computer-aided design program would include design flattening functions disclosed herein that efficiently flatten or convert a 3D electrical harness assembly design into a clear, readable, and highly useful 2D version of the electrical harness assembly design. In some implementations, processor 102 automatically identifies (or enables user identification of) the trunk lines and center points of the electrical harness assembly design, represents the trunk lines in a specific orientation (e.g., typically horizontal and linear) in the flattened 2D version of the electrical harness assembly design, and positions any branches to extend from such oriented trunk lines. As mentioned above, this has been found to improve clarity, precision, and readability of the flattened version of the electrical harness assembly design while minimizing or eliminating the amount of manual editing required to achieve those objectives.
[0037] The network interface 108 is a component that enables the computer 100 to connect to any one or more of the various external computer-based communication networks (including, for example, local area networks (LANs), wide area networks (WANs) such as the Internet, etc.). In various implementations, the network interface 108 can be implemented in hardware, software, or a combination of hardware and software.
[0038] The input / output (I / O) device interface 110 is a component that enables the computer 100 to interface with any one or more input or output devices (such as a keyboard, mouse, display, microphone, speaker, printer, etc.). In various implementations, the I / O device interface may be implemented in hardware, software, or a combination of hardware and software. In a typical implementation, the computer may include one or more I / O devices (e.g., a computer screen, keyboard, mouse, printer, touchscreen device, etc.) connected to the I / O device interface 110. These I / O devices (not shown in Figure 1) act as a human-machine interface (HMI) and are typically configured to allow a human user to interact with the system 100 to access and utilize the functions disclosed herein (particularly those relating to computer-aided design, flattening, and 2D orientation centered on trunk lines in electrical harness assembly design).
[0039] In an exemplary implementation, the computer 100 is connected to a display device (e.g., via an I / O device interface 110) and configured to present a visual representation of the interface to the product design environment (such as those provided by and within the SolidWorks® computer program) on the display device. The interface and its visual representation on the computer-based display device in a typical implementation provide the user with access to the flattening function disclosed herein and display a visual representation of the 3D electrical harness assembly design before flattening and the flattened 2D electrical harness assembly design after flattening (e.g., on a display device coupled to the I / O device interface 110), as well as other information that may be included in the electrical harness pattern drawings.
[0040] In some implementations, computer 100 and its various components may be contained within a single enclosure (e.g., a personal laptop) or a single workstation. In some implementations, computer 100 and its various components may be distributed across multiple enclosures (perhaps in numerous locations on a network). Each component of computer 100 may include multiple versions of that component (perhaps working together), and these multiple versions may be located in various physical locations and connected via a network. For example, processor 102 in Figure 1 may represent multiple discrete processors in various physical locations working together to perform processes attributable to processor 102 in a coordinated manner. A wide variety of possibilities exist regarding specific physical implementations.
[0041] In various implementations, computer 100 may have additional elements not shown in Figure 1. These may include, for example, controllers, buffers (caches), drivers, repeaters, receivers, etc. Furthermore, interfaces (e.g., 108, 110) may include elements not specifically shown in Figure 1 (e.g., address, control, and / or data connections to facilitate communication between the computer components shown).
[0042] Figure 3 is a schematic diagram of an exemplary computer network environment 300 that may be used to implement the functions disclosed herein (including, for example, flattening functions).
[0043] The illustrated computer network environment 300 comprises a server 302 and several client devices (or "clients") 304a, 304b, ... 304n connected to each other via a communication network 306. The communication network 306 enables the server 302 and clients 304a, 304b, ... 304n to communicate and interact with each other. In various implementations, each of the clients 304a, 304b, ... 304n has the same or similar types of components as those shown in computer 100 in Figure 1. For example, in various implementations, each client 304a, 304b, ... 304n has a processor, computer-based memory, computer-based storage, a network interface, an (optional) I / O device interface 110, and an internal bus that acts as an interconnection between internal client components. Similarly, in various implementations, the server 302 has a processor, computer-based memory, computer-based storage, a network interface, an (optional) I / O device interface 110, and an internal bus that acts as an interconnection between internal client components.
[0044] In some implementations, each client 304a, 304b, ... 304n may be configured to perform any one or more (or all) of the flattening functions disclosed herein without requiring the involvement of server 302. In some implementations, the flattening functions disclosed herein may be distributed between server 302 and any one or more of clients 304a, 304b, ... 304n (e.g., a client where a human user is generating a flattened design). In some implementations, a significant portion (or all) of the flattening functions disclosed herein may be performed by server 302, and the client may simply provide a user interface for the user to access and utilize the flattening functions. Various implementations may include one or more servers 302. In some implementations including two or more servers, the servers 302 may cooperate with each other and / or with one or more of clients 304a, 304b, ... 304n to provide or perform flattening functions.
[0045] Figure 4 is a schematic diagram showing the detailed implementation configuration of the network environment 300 represented in Figure 3.
[0046] The network environment 300 shown in Figure 3 includes a cloud-based collaborative product design and development platform 301 that can be accessed and used by any one or more users (User A, User B, ... User N) from any one or more of the multiple computer-based user workstations 304a, 304b, ... 304n. Each workstation (304a, 304b, ... 304n) provides a virtual environment within which users (User A, User B, ... User N) can work individually and / or collaboratively to design one or more real-world parts or assemblies (e.g., electrical harnesses and / or components, or systems including electrical harnesses) as well as to flatten 2D representations of electrical harnesses or other systems or components. The network environment 300 shown in Figure 3 is particularly suitable for facilitating the generation of 3D electrical harness assembly designs and / or the efficient conversion of 3D electrical harness assembly designs into clear, readable, and highly useful flattened 2D versions of the electrical harness assembly designs.
[0047] The product design and development platform 301 in the illustrated network environment 300 includes multiple software applications (App A, App B, App C, App D, ... App N) 324 and a database 326 that stores data related to the software applications. In a typical implementation, each software application exists as a set of computer-readable instructions on a computer-readable medium (such as 104 or 106 in Figure 1), and the database 326 exists as a collection of data organized into a system on a computer-readable medium (such as 104 or 106 in Figure 1). The data in the database 326 can be input into the network environment 300 by one or more users (A, B, ... N) on one or more workstations (304a, 304b, ... 304n), and / or can be generated or used by one or more software applications (e.g., in a 3D-2D flattening process).
[0048] The product design and development platform 301 can take any one of a variety of configurations. In one exemplary implementation, the product design and development platform 301 may be based on the 3DEXPERIENCE® computer software platform available from Dassault Systèmes (applicant of the current application). Essentially, the 3DEXPERIENCE® platform provides a collaborative environment that empowers companies and users to innovate in a highly effective and efficient manner. The 3DEXPERIENCE® platform provides organizations with a holistic, real-time view of their business activities and ecosystem, connecting people, ideas, data, and solutions together in a single environment.
[0049] Application 324 may include any one or more of a variety of different types of computer software applications. Some examples include applications that enable a user to design parts or assemblies (including, for example, electrical harnesses) individually or in conjunction. Examples of such applications that may be deployed on Dassault's 3DEXPERIENCE® platform include Solidworks® computer software with routing capabilities for use in computer-aided design, computer-aided engineering, computer-aided manufacturing, and visualization. In the exemplary implementation, the software application (App A) in the illustrated implementation is merely such a design program.
[0050] In the illustrated embodiment, application A includes a harness flattening component 327 that assists and facilitates at least some of the functions disclosed herein for efficiently converting a 3D electrical harness assembly design into a clear, readable, and highly useful flattened 2D version of the electrical harness assembly design. In the illustrated implementation, the computer-based harness flattening component 327 is shown as being directly incorporated into application A. However, in some implementations, the computer-based harness flattening component 327 may reside elsewhere (including in a physical component separate from application A or any of the illustrated applications 324). Regardless of where and how the harness flattening component 327 is deployed, any one or more of application A and, in some cases, applications 324 may be configured to access, utilize, and / or leverage its functions.
[0051] The network environment 300 is configured to present a user-specific virtual workspace (referred to as “user interfaces” 330a, 330b, ... 330n) at each user workstation (304a, 304b, ... 304n). Typically, each user interface (330a, 330b, ... 330n) generates an on-screen appearance on the workstation's display screen that includes at least a viewing / editing area from which the user can view and / or edit the design, and a variety of user-accessible and user-selectable graphic control elements that, when selected or interacted with, give the user access to design flattening functions disclosed herein, as well as any one or more of a variety of other computer-based viewing and / or editing / design tools.
[0052] In various implementations, database 326 may be built on any one or more of a diverse range of different computer-based database platforms. Generally speaking, a database contains an organized collection of data (in this case, the data would be at least related to electrical harness assembly design) that is stored electronically (e.g., in 104 or 106 in Figure 1) and is usually accessible from one or more computers (e.g., 304a, 304b, ..., 304n) via a database management system. Some of the data stored in database 326 may be immutable and accessible (but not modifiable) by various authorized users of the system (e.g., from any of the user interface devices 304a, 304b, ..., 304n). One concrete example of database 326 is Microsoft SQL Server (including RDBMS developed by Microsoft), a relational database system that stores and retrieves data on demand (e.g., by a user or other software application (e.g., 324)). Other database platforms are possible. The stored data may, alone or in conjunction with, product designs (e.g., electrical harness assembly designs) developed or under development by users (User A, User B, ... User N) through the use of one or more of the applications 324 (e.g., Application A). In various implementations, the SQL query engine may interpret user requests as SQL commands and language for accessing data stored, for example, in a relational database system. Some examples of such query engines are Presto, Apache Drill, Cloudera Impala, and Apache Spark.
[0053] User interfaces (330a, 330b, ... 330n) appear on the screen of a workstation (304a, 304b, ... 304n) as a virtual workspace. In a typical implementation, each workspace displays a design (e.g., of an electrical harness) for the user to view and / or modify and / or flatten as desired. In a typical implementation, if a user (in one of the user workstations) requests access to a design (e.g., stored in database 326), the network platform 301 returns a copy of the requested design to that user's workspace. Copies of requested objects appearing in the user interface are usually subject to change. In other words, the user can modify the copy of the requested design appearing in the workspace. The user can also flatten any such design by using the functions disclosed herein. In some implementations, the user may utilize one or more of the system's applications to make any modifications and / or use the flattening component 327 to make any flattening. If a user also makes any desired changes (including flattening) to a copy of an object that appears in the workspace, that user may publish (or save) the modified / flattened object to database 326. When this happens, a new version of the design is saved to database 326. The new version includes the modifications (or flattening) made by the user in the workspace. Once the new version of the design is added to database 326, that new version is usually no longer mutable.
[0054] Various components of the product design and development platform 301 and other parts of the network environment 300 are coupled together in a way that allows them to interact with each other and provides users with access to functions related to converting 3D electrical harness assembly designs to 2D flattened versions of electrical harness assembly designs.
[0055] The network environment 300 in Figure 3 has multiple individual components that may be located in several different physical locations. However, in some implementations, the systems and functions disclosed herein may be located within and made available within a single user computer (e.g., a laptop or desktop computer) such as computer 100 in Figure 1 (which has appropriate I / O devices such as a display screen, keyboard, mouse, etc.). In some such cases, the database may be hosted within computer 100 (e.g., 104 or 106). In other cases, the database may be outside computer 100 and accessible via a network interface 108 to an external database.
[0056] Figures 5A–5C are flowcharts illustrating implementations of the computer-based electrical harness assembly design flattening process. For the sake of simplicity, the illustrated process is described herein as being performed by and with a computer 100, such as the one shown in Figure 1, which would typically include appropriate I / O devices connected to an I / O device interface 110 to facilitate user interaction and visibility. These I / O devices may include a display screen (touch-sensitive or otherwise), a keyboard, a mouse, a printer, or any of the various I / O devices, or a combination thereof that would allow the user to access and utilize the functions described herein. The following description assumes that this process is performed by computer 100, but it should be noted that the illustrated process would be performed in any one of a variety of computer-based environments, including, for example, those shown in Figures 3 and / or 4.
[0057] More specifically, Figure 5A shows an implementation of the process by which the computer 100 automatically identifies trunk lines in an existing electrical harness assembly design (after user prompting), Figure 5B shows an implementation of the process by which the computer 100 automatically identifies flattened route centers in an electrical harness assembly design, and Figure 5C shows an implementation of the process by which the computer 100 automatically generates and displays a 2D flattened representation of the electrical harness assembly design based on the identified trunk lines and flattened route centers.
[0058] These processes begin in Figure 5A (at 552) with computer 100 storing data representing a pre-configured electrical harness assembly design. The data may be stored in association with, for example, an electrical harness assembly design application (such as the routing application add-in for the Solidworks® computer application). Generally, a routing application allows the user to generate specialized types of subassemblies (including electrical harness assembly designs composed of, for example, components (e.g., electrical connectors), route parts (e.g., wires, cables), and route features (e.g., 3D sketches of the centerlines of the route paths)). In a typical implementation, the electrical harness is initially designed in 3D by a human user and then converted (i.e., flattened) to 2D (e.g., in the XY plane) for manufacturing. Figure 6 shows an example of an electrical harness assembly design in which one trunk and multiple branches are identified.
[0059] The special type of data stored for the electrical harness assembly design (in 552) can vary. In one exemplary implementation, the special type of data stored for the electrical harness assembly design (in 552) includes input data such as root segment identifiers (IDs), root segment diameters, root segment lengths, root segment start points, and root segment end points. More specifically, in a typical implementation, the data may include: a list of root segment identifiers, the root segment diameter for each enumerated root segment identifier, the root segment length for each enumerated root segment identifier, the root segment start point for each root segment identifier, and the root segment end point for each root segment identifier. Typically, this data is entered by one or more human users (e.g., from computer 100 or one or more other computers) when generating the electrical harness assembly design. The data is stored in a computer-readable medium (e.g., 104 or 106 in Figure 1), for example, in the form of a database.
[0060] Next, according to the illustrated flowchart, computer 100 receives a prompt (or request) from a human user (in computer 100) (in 554) to automatically perform root flattening. The automatic nature of this root flattening means that "after the prompt, computer 100 performs the steps involved in root flattening without any further subsequent input from the human user." More specifically, for example, the root flattening process is performed by computer 100 without the user manually specifying the main lines of the electrical harness, the center point of the main lines, and / or the center route of the flattened main lines. There are many ways in which computer 100 can enable a human user to input this kind of prompt (or request). Typically, computer 100 will present buttons or some other graphic control elements on its display screen (for example, the selection of which causes computer 100 to perform the subsequent steps shown in the illustrated flowchart).
[0061] Next, according to the illustrated flowchart, the computer 100 identifies the root segment with the largest diameter in the electrical harness assembly design (at 556). As mentioned above, in a typical implementation, the computer 100 already stores input data that identifies the diameter of each root segment in the electrical harness assembly design, among many others (at 552). Therefore, identifying the root segment with the largest diameter is relatively straightforward and can be done by the computer 100 in any one of several ways. In one implementation, the computer processor 102 may query the database entry corresponding to the root segment of the root segment with the largest diameter.
[0062] This process (556) can be carried out in any number of different ways. For example, the computer processor 102 iteratively compares various entries for the diameter of each root segment in the electrical harness assembly design to identify which of the root segments has the largest diameter. More specifically, the computer processor 102 may begin by comparing the diameters of a first root segment and a second root segment represented in the database. If the computer processor 102 determines that one of those root segments has a larger diameter than the other, the computer processor 102 stores the root segment with the larger diameter in a designated storage location (e.g., in a buffer), and the root segment with the smaller diameter is not stored. If the computer processor 102 determines that the two root segments have the same diameter, the computer processor 102 stores both root segments in the designated storage location. Next, in this example, the computer processor 102 compares the diameters of the stored root segments with the diameters of the next root segments enumerated or represented in the database. If the computer processor 102 determines that the diameter of a previously saved root segment is greater than the diameter of the next root segment, the computer processor 102 retains the previously saved root segment in the designated storage location and does not save the next root segment to the designated storage location. On the other hand, if the computer processor 102 determines that the diameter of the next root segment is greater than the diameter of a previously saved root segment, the computer processor 102 removes the previously saved root segment from the designated memory space and saves the next root segment in the designated memory space. If the computer processor 102 determines that the next root segment has the same diameter as the previously saved root segment, the computer processor 102 adds the next root segment to the designated memory space so that the previously saved root segment and the next root segment are saved together in the designated storage location.The computer processor 102 traverses through all the root segments enumerated or represented in the database, and at the end, all the root segments with the largest (or maximum) diameter are stored in the designated memory space. Of course, there are other ways in which the computer 100 can identify the root segment with the maximum value in the electrical harness assembly design (in 556).
[0063] Next, according to the illustrated implementation, the computer 100 considers whether two or more root segments have been identified as having the largest diameter (in 556) (in 558). There are several possible ways in which this function can be performed. In one exemplary implementation, the computer processor 102 performs this function by counting the number of entries (or represented individual root segments) in a designated memory space (e.g., a buffer). If the number of entries (or represented root segments) is 1, the computer processor 102 concludes that only one root segment has been identified as having the largest diameter in the electrical harness assembly design (in step 556). If the number of entries (or represented root segments) is 2 or more, the computer processor concludes that two or more root segments have been identified as having the largest diameter in the electrical harness assembly design (in step 556).
[0064] If the computer 100 determines that only one route segment has been identified as having the largest diameter (in 556) (in 558), the computer proceeds to step 562 and designates the identified route as the reference route segment.
[0065] If the computer 100 determines that two or more root segments have been identified as having the largest diameter (in 556) (in 558), the computer 100 determines which of the identified (largest diameter) root segments is the longest (in 560). As described above, in a typical implementation, the computer 100 already stores input data that identifies the length of each root segment in the electrical harness assembly design, among many others (in 552). Therefore, determining which of the identified (largest diameter) root segments is the longest is relatively straightforward and can be done by the computer 100 in any one of several ways. In one implementation, the computer processor 102 may query a database entry (or corresponding entry in a specified memory space) of the identified (largest diameter) root segments for the length dimensions of various root segments.
[0066] This step (558) can be carried out in any number of different ways. For example, the computer processor 102 iteratively compares various entries of the diameter of each root segment in the electrical harness assembly design to identify which of the root segments has the largest diameter. Similar to the discussion of step 556 above, this process is an iterative process that, in a typical implementation, involves comparing the lengths of the identified root segments to identify the longest root segment.
[0067] When the computer 100 determines which of the identified route segments in 556 has the longest length (in 560), the computer designates that identified route segment as the reference route segment (in 562). Next, according to the illustrated implementation, the computer 100 designates the reference route segment as part of the trunk in the electrical harness assembly design (in 564). In a typical implementation, this may result in storing the route segment information of the reference route segment in a TrunkLineArray (e.g., a file) associated with the corresponding electrical harness assembly.
[0068] Next, the computer 100 identifies any route segment connected to the branching point (or endpoint) of the reference route segment (in 566). As described above, in a typical implementation, the computer 100 already stores input data that identifies, among many, the start point and the endpoint of each route segment (in 552). Therefore, identifying any connected route segment is a relatively straightforward task and can be performed by the computer 100 in any one of a variety of ways.
[0069] In one implementation, the computer processor 102 (in 566) may compare the start point of a reference root segment represented in the database with the start and end points of other root segments (e.g., other identified maximum diameter segments). If the computer processor 102 identifies any consistency between the start point of the reference root segment and any start or end point of other root segments, the computer processor 102 may designate any such consistent root segment as a connected root segment.
[0070] If the computer processor 102 finds only one connected route segment at the starting point of the reference route segment (in 566), according to the illustrated implementation, the computer processor 102 (in 572) designates that connected route segment as an extension of the trunk line in the electrical harness assembly design (in memory). In a typical implementation, this may result in storing the route segment information of the connected route segment in a TrunkLineArray associated with the corresponding electrical harness assembly. If the computer processor 102 determines that there are more route branching points to consider (in 574) (for example, at the opposite end of the reference route segment, or at the distal end of one or more route segments subsequently designated as part of the trunk line), the computer processor 102 proceeds to consider one of these other route branching points (in 570).
[0071] If the computer processor 102 does not identify any connected route segments at the starting point of the reference route segment (see 568) (in 566), then, according to the illustrated flowchart, the computer processor 102 does not designate another route segment as part of the trunk, but instead proceeds to 570 and considers a different branching point (in 570). For example, if the computer processor 102 does not identify any connected route segments at the starting point of the reference route segment (in 566), the computer processor may then consider the ending point of the reference route segment (on the opposite side of its starting point). In this case, the computer processor 102 may compare the ending point of the reference route segment represented in the database with the starting and ending points of other route segments (e.g., other identified maximum diameter segments) (again in 566). If the computer processor 102 identifies any consistency between the ending point of the reference route segment and any starting or ending point of other route segments, the computer processor 102 may designate any such consistent route segment as a connected route segment.
[0072] If the computer processor 102 identifies two or more connected root segments (for example, at the starting point of a reference root segment) (in 566), the computer processor 102 (see 568) identifies which of those connected root segments has the largest (i.e., maximum) diameter (in 578). This can be done in a manner similar to the one described above (see 556). If only one of the connected root segments is identified as having the largest (i.e., maximum) diameter (in 578), the computer processor designates that section as an extension of the trunk line (in 572). In a typical implementation, this may result in storing the root segment information of the connected root segment with the largest diameter in a TrunkLineArray associated with the corresponding electrical harness assembly.
[0073] Otherwise, if two or more of the identified connected root segments have the same largest (or longest) diameter (in 578), the computer processor 102 determines which of them has the longest length (in 580). This can be done in a manner similar to the one described above (see 560). Next, according to the illustrated implementation, the computer processor 102 designates the connected root segment having the largest (longest) diameter and longest length as the trunk extension (in 572). As described above, this may result in storing the root segment information of the connected root segment having the largest diameter in the TrunkLineArray associated with the corresponding electrical harness assembly.
[0074] Next, the computer processor 102 (in 574) considers whether other branching points exist within the electrical harness assembly design. If so, the computer processor 102 proceeds to consider the next branching point (in 570). Otherwise, the route segments designated as part of the trunk are stored in TrunkLineAssembly in relation to the corresponding electrical harness assembly design (see 582). As discussed below, these route segments are the segments that will be flattened in a specific orientation (e.g., horizontally) in the following processes when the electrical harness assembly design is flattened.
[0075] Figure 5B shows an implementation of the process by which computer 100 automatically identifies the flattened route center in the design of an electrical harness assembly.
[0076] First, according to the illustrated implementation configuration, the computer processor 102 accesses a TrunkLineArray (in 584) which contains various route segment information relating to the route segments that constitute the identified trunk lines of the electrical harness assembly design. This information may include, for example, the route segment identifier (ID), route segment diameter, route segment length, route segment start point, and route segment end point for each route segment identified as part of the trunk line (for example, by the process shown in Figure 5A).
[0077] Next, in the illustrated implementation, the computer processor 102 calculates the trunk length based on the root segment information in the TrunkLineArray (in 586). As mentioned above, the information in the TrunkLineArray includes, among other things, the root segment length of each root segment that forms part of the trunk. In a typical implementation, the computer processor 102 simply sums these distances to determine the total length of the trunk. Furthermore, in a typical implementation, this value (total trunk length (e.g., in inches or centimeters)) is stored in memory (e.g., in relation to electrical harness assembly design).
[0078] Next, according to the illustrated implementation, the computer processor 102 calculates half the length of the trunk (in 588). This is a simple calculation, and typically the processor is involved in dividing the value of the total trunk length by 2. The resulting value (half of the total trunk length (e.g., in inches or centimeters)) is stored in memory (e.g., in relation to electrical harness assembly design).
[0079] The illustrated implementation then involves the computer processor 102 finding a branch point (e.g., start or end point) on one of the route segments constituting the trunk that is closest to half the total trunk length from the end of the trunk (in 590). This approximates the trunk center point and identifies the route segments and branch points closest to the trunk center point. There are various ways in which this process can be carried out. In one example, the computer processor 102 starts at one end of the route segments identified as constituting the trunk and adds the length of each segment one by one until the sum exceeds a previously calculated value of half the total trunk length. Upon reaching this point, the computer processor 102 concludes that the route segment corresponding to the last added length is the route segment on which the trunk center point is located. Next, the computer processor 102 may determine which end (e.g., start or end point) of the last added route segment is closest to the trunk center point.
[0080] Next, the computer processor 102 designates a point identified as being closest to the trunk center point (e.g., the start or end point of a route segment) as the flattened route center (in 591). In a typical implementation, the computer processor 102 stores this flattened route center (a point along the identified trunk) in memory as a FlattenRouteCenter related to the electrical harness assembly design and TrunkLineArray (in 592).
[0081] Figure 5C illustrates an implementation of the process by which computer 100 automatically generates and displays a 2D flattened representation of an electrical harness assembly design based on identified trunk lines (represented in TrunkLineArray) and flattened route centers (represented in FlattenRouteCenter). As discussed herein, in a typical implementation, the flattening process or algorithm performed by computer 100 flattens the route segments represented in TrunkLineArray horizontally. For example, this can be done by keeping the y-coordinate constant in the 2D XY plane when placing the route segments in the 2D XY plane.
[0082] According to the illustrated implementation, this process includes the computer processor 102 accessing the TrunkLineArray and FlattenRouteCenter (at 593).
[0083] Next, the computer processor 102 identifies the starting route segment (at 594). In a typical implementation, the computer processor 102 identifies the route segment connected to FlattenRouteCenter as the starting route segment.
[0084] Next, in the illustrated implementation, the computer processor 102 flattens the starting root segment in a 2D Cartesian coordinate system (at 595). In a typical implementation, this is done in a way that preserves the length of the starting root segment (represented in TrunkLineArray).
[0085] According to the illustrated flowchart, the computer processor 102 flattens any trunk route segments (e.g., within the TrunkLineArray) identified as directly or indirectly connected to the start route segment (in 596 and 597). In the illustrated embodiment, the computer processor 102 traverses the connected trunk route segment from the first end of the start route segment (in 596), and then traverses the connected trunk route segment from the second end of the start route segment (in 597). Every route segment is positioned in the same orientation (e.g., horizontal and flat) as the start route segment. Thus, in a typical implementation, the route segments constituting the trunk, when displayed, can appear as horizontal and flat features having a scaled-down representation of the actual length of the trunk in the electrical harness assembly design, or a corresponding length. In a typical implementation, the computer processor 102 represents any non-trunk portion of the electrical harness assembly design in a flattened 2D version of the electrical harness assembly design as splines or lines (characterized, for example, within Solidworks® routing software) branching off from the trunk at appropriate locations along the trunk.
[0086] The illustrated process ends with the trunk lines of the electrical harness assembly design being automatically identified and oriented on the screen in a specific manner (e.g., flat and horizontal), and the branches spreading out from appropriate positions along the flattened trunk lines (up or down, and sometimes diagonally) on a computer display (of computer 100) (in 598). An example of a flattened 2D representation of an electrical harness assembly design produced according to the technique disclosed herein is shown in Figure 6 (and Figure 8). In typical implementations, the flattened design on the display can be printed, for example, or otherwise shared or transmitted across a network.
[0087] Figure 6 shows an example of an electrical harness assembly design 601 having a main line 603 and multiple branches 605 extending from different points along the main line 603.
[0088] The following description refers to Figures 7A-7E and details specific implementations of computer-based algorithms that may be performed, for example, by computer 100 to flatten the electrical harness assembly design 601 of Figure 6. The processes described below as being attributable to computer 100 may include processes performed by one or more sub-components of computer 100, such as processor 102 and memory 104. For the sake of easier reference in the following discussion, various segments and points along the electrical harness assembly design are labeled in Figures 7A-7E.
[0089] First, this algorithm automatically identifies the main lines and the center of the flattened harness in the electrical harness assembly design. In a typical implementation, this may involve several steps.
[0090] The first step in this example involves identifying a reference route segment. Typically, in this step, the computer 100 identifies the route segment having the largest diameter in the electrical harness assembly design. In Figure 7A, we consider that "the computer 100 identifies route segment "1" as having the largest diameter compared to any other route segments present within the harness." For this purpose, route segment "1" is considered by the computer 100 as a reference route segment for identifying the trunk that will be flattened in a desired orientation (e.g., horizontally). The route segment ID of the largest diameter route segment "1" (and possibly other route segment information) is placed in the TrunkLineArray.
[0091] Next, in this example, computer 100 discovers the connected root segments. Referring now to Figure 7B, computer 100 identifies that root segment "2" is connected to root segment "1" at one end (i.e., at point "A") and that root segments "9" and "10" are connected to the opposite end of root segment "1" (i.e., at point "B"). In a typical implementation, computer 100 would traverse the entire electrical harness assembly design to identify the connected root segments. This means, for example, identifying the segments that connect to the endpoints of root segments located within the TrunkLineArray, indicated by the arrows in the figure. In the illustrated example, since only one root segment (i.e., "2") is connected to root segment "1" at point "A", computer 100 adds the root segment ID of this root segment ("2") into the TrunkLineArray without typically checking or verifying the diameter or length of root segment ("2").
[0092] According to the following steps in this example, the computer discovers connected root segments by traversing root segment "2" which is attached to root segment "1" at point "A". In a typical implementation, computer 100 will select the next root segment based on its largest diameter. If two or more of the connected root segments have the same diameter, computer 100 will select the root segment with the longest length among those connected root segments. Next, referring to Figure 7C, computer 100 determines that the distal endpoint of root segment "2" is connected to root segments "3" and "4". Computer 100 will select which of these root segments ("3" or "4") should be added to the TrunkLineArray based on the one with the larger diameter, or, if the diameters are equal, computer 100 will select which of those root segments ("3" or "4") should be added to the TrunkLineArray based on the one with the longer length. In this example, root segments "3" and "4" have the same diameter, but as is clear from the scale representation in Figure 7C, root segment "3" is longer than root segment (4). Therefore, in this example, when computer 100 determines that root segment "3" is longer than root segment "4", computer 100 adds the root segment ID (and possibly other information) of root segment "3" into TrunkLineArray.
[0093] Referring now to Figure 7D, in a typical implementation, computer 100 will traverse the root segment to its end based on the larger diameter and length criteria discussed above, as shown by the dotted arrow lines in the figure. In short, computer 100 continues in this manner until no other connected root segments are found at the endpoint of the identified root segments in the TrunkLineArray. In the illustrated example, this occurs at root segment 7. Thus, in the example shown in Figure 7D, computer 100 will find root segments IDs 2, 3, 5 and 7 by traversing from point "A" at the first end of the flattened root segment "1".
[0094] Next, and referring to Figure 7E, the computer 100 discovers connected route segments by traversing the electrical harness assembly design from the opposite end (point "B") of the flattened route segment "1". Thus, after completing the traverse from one end (i.e., point "A") of the flattened route segment "1", the computer 100 will attempt to discover any route segments that connect to the other end (i.e., from point "B") of the flattened route segment "1".
[0095] Next, referring to Figure 7E, computer 100 determines that there are two root segments (i.e., root segments "9" and "10") connected to point "B". Computer 100 applies the same logic to evaluate the connected root segments (e.g., "9" and "10") while traversing from point "B", as it was applied while traversing from point "A". Finally, computer 100 adds the root segment IDs (and possibly other root segment information) of root segments 9 and 11 to the TrunkLineArray, as reflected by the dotted arrow lines in Figure 7E, while traversing the electrical harness assembly design from the point "B" end of the flattened root segments in this example.
[0096] In this example, the computer 100 identifies root segments 1, 2, 3, 5, 7, 9, and 11 as constituting the main lines of the electrical harness assembly through the process described above. This is done automatically by the computer 100 (usually in response to user prompts in the computer 100). These identified root segments (1, 2, 3, 5, 7, 9, and 11) are the root segments that the computer 100 will flatten in a specific orientation (e.g., horizontally) when it performs a subsequent flattening operation.
[0097] However, in some implementations, the computer 100 is configured to automatically identify the route segments that constitute the trunk lines, such as electrical harness assemblies. Alternatively (or additionally), in some implementations, the computer 100 is configured to allow a human user to manually identify the route segments that constitute the trunk lines of the electrical harness assemblies.
[0098] Figure 8 is a screenshot showing an exemplary implementation of a user interface (e.g., on the display of computer 100) having a design field 810 showing the electrical harness assembly design of Figure 6. Each route segment in the electrical harness assembly design appearing within the design field 810 is selectable by the user (e.g., by mouse click or other means of selection). The illustrated screenshot also has a flattened route characteristic manager 812 on one side of the design field 810. The menu 812 has user-selectable features, and the user's selection causes computer 100 to perform one or more functions related to generating a flattened representation of the illustrated electrical harness assembly design.
[0099] The illustrated menu 812 includes two flattened type options (represented by user-selectable buttons): 1) Annotation, which can be selected by the user (according to the illustrated menu 812) to generate an unscaled flattened route, and 2) Manufacturer, which can be selected by the user (according to the illustrated menu 812) to generate a scaled flattened route. In the illustrated screenshot, the button corresponding to the Manufacturer flattened route option is selected.
[0100] Below the flattened type button, menu 812 contains a header that reads “Flattened Parameters” and a list of root segment IDs below the header. The root segment IDs enumerated in the illustrated screenshot include segment ID 80, segment ID 79, segment ID 62, segment ID 75, segment ID 72, segment ID 71, and segment ID 69. In some implementations, the root segments corresponding to the enumerated root segment IDs are manually selected by a human user (e.g., via mouse operations, pointing, and clicking for selection) to be included as part of the trunk of an electrical harness assembly design. In some implementations, the root segments corresponding to the enumerated root segment IDs are automatically selected by computer 100 (according to the procedures described herein). In a typical implementation, the root segment IDs (and possibly other root segment data) of the root segments manually or automatically identified as forming the trunk are stored in TrunkLineArray.
[0101] Below the "Flattened Parameters" list is a box containing a point identifier (i.e., a code that identifies the point on the electrical harness assembly design corresponding to the flattened center point). In the illustrated screenshot, the point identifier box identifies "point 393" as the flattened center point of the electrical harness assembly design. In some implementations, the point corresponding to the point identifier is manually selected by a human user (e.g., via mouse operations, pointing, and clicking for selection). In some implementations, the flattened harness center point is automatically identified by computer 100 and is the endpoint of the route segment closest to the trunk center. Exemplary processes that computer 100 may use to automatically identify the flattened route center are discussed in detail below. In a typical implementation, the flattened center point identifier, whether manually or automatically identified, is stored in FlattenRouteCenter.
[0102] Below the flattened center point box in the flattened route characteristics manager 812 are two user-selectable options that allow the user to specify whether 1) the flattened route should be generated using only lines, or 2) components should be selected to maintain a three-dimensional (3D) orientation. If the user selects the first option (1), the flattened 2D representation generated by the computer 100 will be formed from 2D lines only. If the user selects the second option (2), the flattened 2D representation generated by the computer will retain (or preserve) the 3D appearance of some components (e.g., connectors) of the electrical harness assembly design.
[0103] Below these two user-selectable options are a pair of user-selectable options that allow the user to define the segment orientation (e.g., portrait or landscape) of the flattened 2D representation of the electrical harness assembly design. Below that are other options.
[0104] The graphical user interface in the illustrated screenshot is based on the SOLIDWORKS® program. In this interface, the user can select one or more route segments to define a trunk line, regardless of the maximum diameter or length of any of the route segments. In a typical implementation, the criteria that system 100 imposes on the user-selected trunk line route segments is that "the selected route segments must form a continuous path from end to end and must not have any parts that form a loop."
[0105] There are various ways in which the computer 100 can perform these checks. In one implementation, the computer 100 checks the endpoints of each selected route segment to determine whether there are three or more endpoints within the selected route segment that connect to other route segments within the user-selected trunk. If there are only two endpoints within the selected route segment that do not connect to other route segments within the user-selected trunk, the computer concludes that these are the endpoints of the trunk, and the trunk is considered to satisfy the criterion that the selected route segments form a single continuous path.
[0106] In one implementation, the computer 100 determines whether the user-selected route segment has parts that form a loop by examining the endpoint of the user-selected route segment to determine whether any given point appears three or more times. If any single point appears three or more times, the computer 100 concludes that a loop exists.
[0107] If computer 100 determines that a user-selected route segment does not form a single continuous path or that a user-selected route segment has a portion that forms a loop, computer 100 sends an appropriate error message to the user (for example, on computer 100's display). In an exemplary implementation, the error message for a non-contiguous path selection can be read as "The selection does not form a continuous route segment." Furthermore, in an exemplary implementation, the error message for a loop can be read as "The selected route segment is part of a loop, is connected to a splice, and is not supported within this selection list." Variations of these messages are also possible.
[0108] This implementation allows users to define custom trunk lines, and route segments within the defined trunk lines will be flattened as horizontal lines. In a typical implementation, users can define trunk lines by selecting consecutive route segments. These selected route segment IDs are stored in a TrunkLineArray. Route segment IDs are listed in a selection list box. In addition, users can define a FlattenRouteCenter by selecting route segment IDs from the list box and toggling between two endpoints (by selecting toggle point buttons), or by selecting route segment endpoints from the GUI.
[0109] In some implementations, the flattened route center point can be automatically defined by computer 100. The prerequisites for this process are, in the example described below, a TrunkLineArray, and the steps performed by computer 100 are as follows: a) obtain the stored TrunkLineArray of the electrical harness assembly, b) calculate the length of the trunk by summing the lengths of all selected route segments represented in the TrunkLineArray, c) calculate the center point position based on the total length of the trunk (for example, if x is the length of the trunk, the center point of the trunk will be located x / 2 from any endpoint of the trunk), and d) traverse each route segment to find the start or end point of the route segment closest to the length x / 2, starting from one endpoint of the trunk. The identified point is stored as FlattenRouteCenter in relation to the electrical harness assembly design.
[0110] Once the route segments of the electrical harness assembly design that constitute the TrunkLineArray and FlattenRouteCenter are identified, the computer 100 may proceed to flatten the electrical harness assembly design.
[0111] In typical implementations, flattening an electrical harness assembly design involves placing the entire electrical harness on the XY plane and, in some embodiments, configuring each route segment so that its length and connections are maintained based on the original 3D version of the design.
[0112] In an exemplary implementation, computer 100 begins generating a flattened representation of an electrical harness assembly design (for example, on the computer 100's display) from a starting route segment (or "start segment"). The starting segment may be, for example, a route segment connected to FlattenRouteCenter (for example, a route segment containing the midpoint of a trunk line). In a typical implementation, computer 100 generates a point of the starting segment (for example, a first endpoint) at the origin of the XY plane on the display (i.e., 0.0, 0.0) while maintaining a constant y-coordinate, and then generates the next point (for example, a second endpoint opposite the first point) at a location determined based on the length of the starting route segment. If the length of the route segment is, for example, "x", then the first endpoint of the starting route segment will be at (0.0, 0.0) and the second endpoint at (x, 0.0), and the starting route segment will be drawn as a flat and horizontal (relative to the XY plane) line from the first endpoint to the second endpoint.
[0113] For example, consider the identified TrunkLineArray (consisting of root segments 1, 2, 3, 5, 7, 9, and 11) discussed above and the FlattenRouteCenter (connected to root segment 1) discussed above. In this example, root segment 1 will be the starting segment and will be the first to be flattened by computer 100. The starting segment will extend horizontally from point a(0.0,0.0) to point b(-x,0.0) on the XY plane, where x is the length of the starting segment. This is shown, for example, in Figure 9A. The x-axis of the XY plane is shown in the same figure, but will not necessarily appear on the display screen together with the starting segment "1" (or with part or all of the flattened version of the electrical harness assembly design). The coordinates along the x-axis (b(-x,0.0), a(0.0,0.0)) are also shown in the same figure, but will not necessarily appear on the display screen together with the starting segment "1".
[0114] Next, computer 100 flattens the connected route segments by traversing the electrical harness assembly design (for example, from both ends of the starting route segment (e.g., at point A in Figure 9A / 9B)). More specifically, continuing the above example, computer 100 determines that route segment 2 is connected to point A (e.g., from the endpoints of route segments 1 and 2), and notes that route segment 2 has been identified as part of the trunk (from TrunkLineArray). Thus, computer 100 generates a flattened representation of route segment 2 as a horizontal straight line extending from point A on the starting route segment. In this example, route segment 2 has a length of x1. Therefore, the distal end of route segment 2 will be located at point c(x-x1, 0.0) on the XY plane.
[0115] This results in what is shown in Figure 9B. Figure 9B shows two root segments (start root segment 1 and connected root segment 2) having lengths corresponding to their lengths in an electrical harness assembly design (both are flagged as part of a trunk line shown as a connected horizontal and flat line). The coordinates of the endpoints of the flattened root segment 2 are b(x, 0.0) and c(x-x1, 0.0), where x1 is the length of root segment 2.
[0116] Next, in this example, root segments 3 and 4 are connected to root segment 2 (at point c). Since computer 100 identified root segment 3 as part of the trunk line, root segment 3 will be flattened as a horizontal, flat line (straight line) extending from point c away from root segment 2. However, since computer 100 did not identify root segment 4 as part of the trunk line, root segment 4 will be flattened by a combination of splines and lines to maintain contact, as shown in Figure 9C.
[0117] Continuing this example, root segments 5 (part of the trunk), 6 (not part of the trunk), 7 (part of the trunk), and 8 (not part of the trunk) are flattened in much the same way as discussed above. The flattening of all these root segments is shown in Figure 9D. Here, root segments 5 and 7 are generated as flat and horizontal extensions, while root segments 6 and 8 are generated by a combination of splines and arcs.
[0118] Once computer 100 has traversed all root segments originating from point A in starting segment 1, computer 100 begins traversing (and flattening) the root segments originating from point B in starting segment 1. The same logic is used to flatten these root segments (i.e., root segments 9, 10, 11, 12, 13, 14, 15, 16) as root segments 2, 3, 4, 5, 6, 7, 8. Figure 9E shows the final result of this flattening procedure.
[0119] Numerous embodiments of the present invention have been described. Nevertheless, it will be understood that various other modifications can be made without departing from the spirit and scope of the invention.
[0120] For example, the phrase “computer-aided design” should be interpreted broadly to include any computer-based software for design, engineering, simulation, and / or flattening design.
[0121] In various implementations, some computer components disclosed herein (e.g., applications, design tools, flattening tools, etc.) may be implemented by one or more computer-based processors (hereinafter referred to as processors) executing computer-readable instructions stored on a non-temporary computer-readable medium to perform the associated computer-based functions. One or more computer-based processors may be substantially any type of computer-based processor and may be contained within a single enclosure or distributed in various locations, and the non-temporary computer-readable medium may be or include any one or more of a variety of different computer-based hardware memory / storage devices that are either contained within a single enclosure or distributed in various locations.
[0122] In this specification, some functions are described as being accessible or activated by the user selecting buttons or other elements on the screen. This should be interpreted broadly to include any kind of visible and user-selectable element or other user-interactive element.
[0123] The systems and technologies disclosed herein can be implemented in many different ways. In one exemplary implementation, the systems and technologies disclosed herein can be incorporated into a Solidworks® computer program available from Dassault Systemes (applicant of the current application). In various other implementations, the systems and technologies can be deployed in other ways.
[0124] It should be understood that the exemplary embodiments described herein can be implemented in many different ways. In some cases, the various methods and machines described herein can be implemented by a physical, virtual, or hybrid general-purpose computer, such as a computer system, or by a computer network environment as described herein. The computer / system can be transformed into a machine that performs the methods described herein by, for example, loading software instructions into either memory or non-volatile storage for execution by the CPU. Those skilled in the art should understand that the computer / system and its various components can be configured to perform any embodiment or combination thereof of the embodiments of the present invention described herein. Furthermore, the system can perform the various embodiments described herein by utilizing any combination of hardware modules, software modules, and firmware modules that are operably coupled to or incorporated into the computer / system, either internally or externally.
[0125] Various aspects of the subject matter disclosed herein may be implemented in digital electronic circuit configurations including the structures disclosed herein and / or their structural equivalents and / or combinations thereof, or in computer-based software, firmware, or hardware. In some embodiments, the subject matter disclosed herein may be implemented in one or more computer programs (i.e., one or more modules of computer program directives) encoded on a computer storage medium for execution by one or more data processing devices (e.g., processors) or for controlling the operation of one or more data processing devices (e.g., processors). Alternatively or additionally, program directives may be encoded on artificially generated propagating signals (e.g., mechanically generated electrical, optical, or electromagnetic signals generated to encode information for transmission to a receiver device suitable for execution by a data processing device). The computer storage medium may be or may be a computer-readable storage device, a computer-readable storage board, a random or serial access memory array or device, or a combination thereof. While the computer storage medium should not be considered merely a propagating signal, it may be the source or destination of computer program directives encoded on artificially generated propagating signals. Computer storage media may also be or be contained within one or more separate physical components or media (e.g., multiple CDs, computer disks, and / or other storage devices).
[0126] Some of the operations described herein (e.g., those shown in Figures 5A–5C, or otherwise aspects of operations disclosed herein) may be performed as operations carried out by a data processing device (e.g., a processor / specially programmed processor / computer) on data stored on one or more computer-readable storage devices or received from other sources (e.g., computer systems and / or network environments described herein). The term “processor” (etc.) encompasses all kinds of devices, equipment, and machines for processing data (e.g., programmable processors, computers, systems on chips, or a combination of the foregoing). The equipment may include dedicated logic circuit configurations, such as FPGAs (field programmable gate arrays) or ASICs (application-specific integrated circuits). In addition to hardware, the equipment may also include code that generates the execution environment for the computer program (e.g., code that constitutes processor firmware, protocol stacks, database management systems, operating systems, cross-platform runtime environments, virtual machines, or a combination of one or more of these). This device and execution environment can realize various different computing model infrastructures, such as web services, distributed computing, and grid computing infrastructure.
[0127] This specification includes many specific implementation details, which should not be construed as limitations on the scope of any invention or claim, but rather as descriptions of features specific to particular embodiments of a particular invention. Some features described herein in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be provided separately or in any preferred sub-combination in multiple embodiments. Furthermore, features may be described above as working in several combinations and may even be initially claimed as such, but one or more features from a claimed combination may be removed from the combination in some cases, and the claimed combination may be directed towards a sub-combination or a variation of a sub-combination.
[0128] Similarly, while 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 a specific order or sequentially as shown, or that all illustrated operations are performed to achieve a desired result. In some environments, multitasking and parallel processing may be advantageous. Furthermore, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can typically be integrated within a single software product or packaged within multiple software products.
[0129] Other implementation forms are covered by the claims. [Explanation of symbols]
[0130] 1. Starting segment 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 Root Segments 100 Computers 102 processors 104 memory 106 storage 108 Network Interfaces 110 I / O Device Interfaces 300 Network Environment 301 Product Design and Development Platform 302 Server 304a Client 304b Client 304n client 306 Communication Network 324 applications 326 databases 327 Harness flattening parts 330a User Interface 330b User Interface 330n User Interface 601 Electrical Harness Assembly Design 603 Main line 605 Branch 810 Design Field 812 Flattened Route Characteristics Manager
Claims
1. 1. A computer-based method for generating a flattened version of a three-dimensional (3D) electrical harness assembly design in a computer-aided design environment, comprising: storing data in a computer-based memory identifying route segment identifiers for route segments in the electrical harness assembly design, a diameter of each of the route segments, a length of each of the route segments, and an end location of each of the route segments; designating, by a computer-based processor, one or more of the route segments as forming a backbone of the electrical harness assembly design based on the stored data; generating a flattened two-dimensional (2D) version of the electrical harness assembly design; all of the route segments designated as forming the trunk are represented in the flattened 2D version of the electrical harness assembly design by straight lines connected to one another and having a particular orientation on a 2D Cartesian coordinate plane; each of the route segments not designated as forming the trunk line is represented in a flattened 2D version of the electrical harness assembly design as radiating out from the trunk line; and displaying the flattened 2D version of the electrical harness assembly design on a computer display screen.
2. The computer-based method of claim 1 , wherein the particular orientation of all of the straight lines representing the route segments designated as forming the trunk line is flat and horizontal on the 2D Cartesian coordinate plane.
3. 2. The computer-based method of claim 1, wherein each route segment represented in the flattened 2D version of the electrical harness assembly design has a length that corresponds to a length of the route segment in the stored data.
4. Designating one or more of the route segments as forming the backbone of the electrical harness assembly design comprises: identifying, by the computer-based processor, a reference route segment for the route segment represented in the stored data; 2. The computer-based method of claim 1, wherein the reference route segment is a selected one of the route segments having a larger diameter than all other route segments, or the longest one of the route segments having a larger diameter than all other route segments.
5. 5. The computer-based method of claim 4, wherein designating one or more of the route segments as forming the trunk of the electrical harness assembly design further comprises: using the stored data, by the computer-based processor, designating any other of the route segments other than the reference route segment as part of the trunk of the electrical harness assembly design based on diameter or diameter and length.
6. 2. The computer-based method of claim 1, further comprising: identifying, by the computer-based processor, a flattened route center of the trunk line based on the stored data and the one or more route segments of the route segments designated as forming the trunk line of the electrical harness assembly design.
7. Identifying the flattened root center comprises: summing, by the computer processor based on the stored data, lengths of every segment designated as forming the trunk of the electrical harness assembly design to generate a calculated length of the trunk; and dividing the calculated length of the trunk line by two to identify a calculated center point of the trunk line.
8. 8. The computer-based method of claim 7, wherein identifying the flattened route center further comprises identifying as the flattened route center an end point of one of the route segments designated as forming a trunk line closest to the calculated center point of the trunk line.
9. generating the flattened two-dimensional (2D) version of the electrical harness assembly design; designating a particular one of the route segments connected to the flattened route center as a starting route segment for flattening the electrical harness design; and flattening the starting route segment by forming a flat line having a length corresponding to a length of the starting route segment as reflected in the stored data in a horizontal orientation in the 2D Cartesian coordinate plane.
10. generating the flattened two-dimensional (2D) version of the electrical harness assembly design; flattening any of the route segments designated as forming the trunk line by forming flat lines extending horizontally from the end of a previous flat horizontal line; flattening any of the route segments not designated as forming the trunk line with visual elements extending in a non-horizontal orientation from the flat horizontal line; and 10. The computer-based method of claim 9, further comprising traversing the electrical harness assembly design from a first endpoint of the starting route to flatten each route segment by:
11. The computer-based method of claim 1 , wherein the one or more route segments designated as forming the trunk are connected to one another without breaks and do not form a closed loop.
12. presenting an option for a user to manually designate one or more of the route segments of the electrical harness assembly design as forming the trunk line; identifying whether the one or more route segments manually designated as forming the trunk line are connected to each other without breaks and do not form a closed loop; 2. The computer-based method of claim 1, further comprising generating an alert if any breaks are identified or if one or more route segments manually designated as forming the trunk form a closed loop.
13. 1. A computer-based system for generating a flattened version of a three-dimensional (3D) electrical harness assembly design in a computer-aided design environment, the system comprising: one or more computer processing devices; and a computer-based memory operatively coupled to the one or more processing devices; The computer-based memory, when executed by the one or more processors, provides the computer-based system with: storing data in a computer-based memory identifying route segment identifiers for route segments in the electrical harness assembly design, a diameter of each of the route segments, a length of each of the route segments, and an end location of each of the route segments; designating, by the one or more computer-based processing devices, one or more of the route segments as forming a backbone of an electrical harness assembly design based on the stored data; generating a flattened two-dimensional (2D) version of the electrical harness assembly design; generating a flattened 2D version of the electrical harness assembly design in which all of the route segments designated as forming the trunk line are represented in the flattened 2D version of the electrical harness assembly design by straight lines connected to each other and having a particular orientation on a 2D Cartesian coordinate plane, and each of the route segments not designated as forming the trunk line is represented in the flattened 2D version of the electrical harness assembly design as radiating out from the trunk line; displaying the flattened 2D version of the electrical harness assembly design on a display screen of the computer-based system, wherein a specific orientation of all of the straight lines representing the route segments designated as forming the trunk line is flat and horizontal on the 2D Cartesian coordinate plane; a computer-based system storing computer readable instructions for causing a
14. 1. A non-transitory computer-readable medium having stored thereon computer-readable instructions for generating a flattened version of a three-dimensional (3D) electrical harness assembly design, the computer-readable instructions, when executed by a computer-based processor, comprising: storing data in a computer-based memory identifying route segment identifiers for route segments in the electrical harness assembly design, a diameter of each of the route segments, a length of each of the route segments, and an end location of each of the route segments; designating, by a computer-based processor, one or more of the route segments as forming a backbone of the electrical harness assembly design based on the stored data; generating a flattened two-dimensional (2D) version of the electrical harness assembly design, wherein all of the route segments designated as forming the trunk line are represented in the flattened 2D version of the electrical harness assembly design by straight lines connected to each other and having a particular orientation on a 2D Cartesian coordinate plane, and each of the route segments not designated as forming the trunk line is represented in the flattened 2D version of the electrical harness assembly design as radiating out from the trunk line; displaying the flattened 2D version of the electrical harness assembly design on a computer display screen; and a computer-based processor for generating a flattened version of a three-dimensional (3D) electrical harness assembly design in a computer-aided design environment by performing a step of: