1. Field of the Invention
The present invention relates to computer-aided design, and more particularly to systems and methods for facilitating the display of an electronic drawing that spans multiple pages.
2. Background of the Related Art
Computer Aided Design (CAD) is a software-driven drawing tool for creating and modifying drawings using a computer. CAD is commonly used to prepare electronic technical drawings for buildings, machine parts, electronic circuits, and other structures. A CAD drawing may communicate technical details, such as dimensional information and material specifications, that can be used as a guide in making or manufacturing what is represented in the drawing.
A number of different CAD packages are available in the marketplace. A CAD package includes CAD software and sometimes proprietary hardware such as specialized input peripherals designed for use with the accompanying software. Some CAD packages are specific to or optimized for two-dimensional (2D) drawings, which may be preferably for drawing building floor plans and electrical circuits, for example. Other CAD packages are specific to, or optimized for, three-dimensional (3D) drawings, alternatively referred to as solid modeling.
Using the capabilities of modern computer systems, CAD enables the creation of large and technically complex drawings. A drawing that is too large to be displayed on a screen in its entirety may be separated into multiple pages, and the multiple pages may be selectively displayed. This separation of a drawing into multiple pages is commonly done, for example, in circuit designs, due to the very large number of elements that may be present in an electronic circuit. By separating the drawing into pages, however, components that are connected within a particular design may be located on different pages of the drawing. A computer system running CAD has plenty of capacity to handle drawings separated into many pages. However, it is challenging to communicate the large amount of graphical detail contained within such a drawing in a manner that allows a user to effectively visualize the drawing.
This disclosure includes a method of computer-aided design. In an example method, nets in an electronic drawing are identified, wherein each net represents a connection between two or more drawing elements located on separate pages of the electronic drawing. A connection preview is generated for each net, where each connection preview includes a calculated image of the two or more drawing elements connected by the net. The generated connection previews are stored in a preview database. User-selected pages from the electronic drawing are displayed along with a net reference uniquely associated with each net present on the pages. In response to a user-selection of one of the net references, the previously-generated connection preview for the associated net are obtained from the preview database and displayed. The method may be performed by a computer system executing computer usable program code for performing the described method steps.
A CAD package and related software and methods are disclosed that provide effective visualization of connected drawing elements located on different pages of an electronic drawing. In a disclosed example of a method, nets are used to represent the various connections between elements. According to the method, previews for these connections between drawing elements are automatically generated. For example, the connection previews may be automatically generated as the nets are created. Alternatively, an inventory of the electronic drawing may be taken, wherein all of the existing nets are identified and all of the connection previews associated with the identified nets are automatically generated. Such an inventory may be performed at times when the user is not actively editing the drawing, such as when the drawing is loaded, when the drawing is saved, or at predetermined intervals.
The connection previews each include a calculated image of elements connected by the respective net. The connection previews may also include positional information describing the relative position of the connected elements within the complete electronic drawing. The nets and connection previews are separate entities, with each net defining a connection between two or more drawing elements and each connection preview including a pre-calculated image of the elements as connected by a particular net. The automatically-generated connection previews are stored in memory, such as in a preview database, for subsequent recall and display in response to user input requesting to view the connection preview. It is also possible for the connection previews to be generated in response to selecting a particular net.
The connection previews are made available to a user when the user is working with the electronic drawing. In working with the electronic drawing, the user may select desired pages from the drawing. The selected pages may be displayed in one or more page view pane of a display device. Each page may include labels, as references for any nets contained within that page. To preview a connection, the user may select a net reference, such as by positioning or clicking a cursor in close proximity to the net reference. In response to this user selection of the net reference, a connection preview is displayed in a preview pane of the display device. For example, any connection previews already calculated and stored in a preview database for that net may be automatically recalled and displayed. The preview pane may be a pop-up window, for example. The user has the option to then select the displayed preview to be added to a dynamic workspace, such as by clicking on the connection preview using the pointing device. Elements and connections added to the dynamic workspace are fully editable from the dynamic workspace. Any changes made in the dynamic workspace are updated to the pages containing the changed elements.
According to the disclosed systems and methods, the preview function and dynamic workspace are especially efficient in terms of system resources, such as CPU cycles and system memory. When the user subsequently works with the drawing, the connection previews have already been calculated for prompt recall and display. Displaying a connection preview that has already been calculated and stored in advance is therefore faster and more efficient than it would be to generate the connection preview “live” while the user is working with the drawing.
An electronic drawing may be created and edited by a user who interfaces with the CAD package. An electronic drawing file is used to store an electronic representation of the drawing, which may be created and edited from within system memory, and stored indefinitely in non-volatile storage. The electronic drawing contains user-selected drawing elements, user-specified interconnections between the drawing elements, and positional and/or dimensional information about the drawing elements. For example, a drawing may be constructed from drawing elements such as relatively simple segments, arcs, geometric shapes, and lines or shapes drawn “free-hand” with a pointing device. More complex drawing elements may also be available from a menu, such as pre-defined representations of circuit board elements stored in the CAD package. The CAD package may generate a visual output on the display device representing the electronic drawing file (or portions thereof), including the drawing elements as calculated according to their specified interconnections and positional information. In
Very large drawings may be created using the CAD package. The size of the electronic drawing file may be limited only by system resources, such as by the amount of system memory available for retaining the electronic drawing file and the software instructions of the CAD package. For many applications, such as complex circuit designs, an electronic drawing may be prepared that is too large to be displayed in its entirety on the display device with a visually discernable level of detail. Therefore, the electronic drawing file may be separated electronically into pages that are sized for displaying at a scale sufficient to allow a user to view the details of the displayed page. The drawing files may be separated into many pages, such as hundreds of pages. The specific pages to be displayed at any one time may be selected by the user.
The scale and position of the pages may be adjusted so that several pages may be simultaneously shown on the display device. The user interface of the CAD package may include zoom and pan features, such as to zoom in/out and pan left/right and up/down. At the current level of zoom in
The CAD package may generate various display output on the display device relating to the electronic drawing. The display output includes, by way of example, the page view environment 10 and the preview pane 50. Each of pages 60, 76, and 90 in the page view environment 10 includes a different set of drawing elements from different locations within the electronic drawing. The drawing elements are shown in schematic form as rectangles, including drawing elements 20, 30, 40 on each of the pages 60, 76, 90, respectively. The different drawing elements 20, 30, 40 may be elements from anywhere in the electronic drawing, with different levels of detail and complexity, and their schematic representation as rectangles is not intended to convey actual shape details. For example, each drawing element 20, 30, 40 may actually represent a different circuit, wherein each circuit is connected at the location of an automatically-generated net named Foo_net_n.
Such nets may be used throughout the electronic drawing to identify connections between elements located on different pages. Each net may have a uniquely associated net reference. For example, the net having net reference “Foo_net_n” is illustrated schematically as the intersection between line segments 22, 32, 42 extending from the rectangles used to represent the drawing elements 20, 30, 40. Another example net in
The CAD package allows a user to preview drawing elements as interconnected by a selected net. These connection previews may have been previously generated for the existing nets contained within the drawing. The user may select a net using a peripheral input device, such as by maneuvering a pointing device to position a cursor 12 in proximity to the net reference associated with the net. In
Each of the possible connection previews for each net in the electronic drawing are preferably pre-calculated and stored in memory, in a previews database 54. The connection preview(s) for a particular net may be automatically generated in response to the creation of that net. Alternatively, a complete set of connection previews may be determined by inventorying the electronic drawing file. The inventorying may be performed automatically, such as in response to opening the CAD package, in response to opening the drawing file within the CAD package, in response to saving or closing the drawing file, or at predefined intervals. Generating each connection preview may entail, for example, making positional calculations to determine the relative placement and orientation of each drawing element connected by a net, and rendering an electronic image representative of the connected drawing elements.
This process of calculating a connection preview consumes memory and CPU resources. Desirably, calculating all possible connection previews and storing the connection previews in the previews database 54 in advance of the user working with the drawing avoids the need to generate connection previews live, i.e. “on-the-fly,” while the user is working with the CAD package. This liberates system resources such as processor cycles and system memory, which may be needed for other tasks involved in the user working with the CAD package. Previously calculated connection previews may be recalled from the previews database 54 faster and more efficiently than generating the connection previews live. By performing all of the calculations necessary for generating connection previews in advance, the image previews may be promptly recalled and displayed, with less lag time between the selection of a net and the display of the associated connection preview. This allows the user to navigate and visualize desired portions of an electronic drawing quickly and efficiently. The user may obverse different pages in the page view environment 10, quickly recalling and displaying previously-stored connection previews with simple gestures on a pointing device or other input peripheral.
Elements added to the dynamic workspace 80 may be positioned relative to any other elements previously added to the dynamic workspace 80. If the newly added elements have any connection with a previously added element, then the newly added elements may be positioned and connected to the previously added elements. For example, additional elements 42, 44 may be added to the dynamic workspace 80, either before or after the group of elements 20, 30, 40 have been added, by displaying and selecting a preview for the net “Foo_net_q.” Element 42 is shown to have a connection with element 40 at “Foo_net_z.” Thus, when elements 40, 42 are both present in the dynamic workspace 80, elements 40 and 42 may be positioned within the dynamic workspace 80 with the connection at Foo_net_z. As another example, additional elements 32, 34 have been added at some point. No direct connection currently exists between these additional elements 32, 34 and any of the other elements currently shown in the dynamic workspace 80. Thus, the additional elements 32, 34 may be positioned with the proper relative positioning to the other elements 20, 30, 40, 42, 44, but with no connection to these other elements.
If a redundant element is ever added to the dynamic workspace as a result of having selected two different nets with at least one element in common, the CAD package may identify the redundant element(s), and track and display only one instance of that element. For example, if Foo_net_n (connecting elements 20, 30, 40) had been added to the dynamic workspace 80 and Foo_net_z (connecting elements 40 and 42) is subsequently added to the dynamic workspace 80, then element 40 would be redundant. Thus, only one instance of element 40 would be placed in the dynamic workspace 80. This avoids the software having to keep track of multiple identical graphics objects in the same position within the dynamic workspace 80.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, components and/or groups, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. The terms “preferably,” “preferred,” “prefer,” “optionally,” “may,” and similar terms are used to indicate that an item, condition or step being referred to is an optional (not required) feature of the invention.
The corresponding structures, materials, acts, and equivalents of all means or steps plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but it is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.