BACKGROUND OF THE INVENTION The present invention relates to computer graphics, and more particularly, to methods and systems for viewing three-dimensional (3-D) geometry of an object model generated by a computer aided design (CAD) tool.
Engineers use conventional CAD applications or systems to design and visualize an object, such as a building, a car, an airplane (and its respective components or elements), in three dimensions (3-D). The CAD systems often use hundreds of thousands of polygons (e.g., triangles in a three-vector coordinate system) to represent the geometry of the object, such as surfaces, volumes, or elements of the object, in 3-D scenes for display on a video terminal. The 3-D scenes typically are generated using multiple two-dimensional computer images representing a corresponding portion of the geometry of the object and together reflect a cubic volume of the object. CAD systems often allow the user to change his viewpoint or change the geometry in real time, requiring the CAD system to render new 3-D scenes of the object on the fly in real time. As a result, CAD applications commonly are hosted on high-speed graphic work stations (such as workstation-class computers available from Sun Microsystems, Inc. or Silicon Graphics, Inc., or PC-type computers with exceptional amounts of memory or high-end graphics cards) to enable the CAD applications to process very large amounts of data for generating and displaying the 3-D scenes within a rapid response time.
But high-speed graphic work stations often are expensive and generally not purchased by a user for project employees other than design engineers. Thus, for collaborative engineering designs, engineers each must have or share high-speed graphic work stations with a direct link to the geometry database where the collaborative CAD design application or model of the object is stored. In addition, for project reviews and other events, engineers use static reproductions of the 3-D scenes to share design information with others (e.g., customers). This limits the design review activity to small meetings where reviewers are brought to the computing machinery to view the design information.
Therefore, a need exists for systems and methods that overcome the problems noted above and others previously experienced for producing and viewing on a low-end machine geometry of an object generated by a CAD system or other legacy graphic image generator.
SUMMARY OF THE INVENTION Methods, systems, and articles of manufacture consistent with the present invention allow one or more users on respective client computer systems on a network to collaboratively view, manipulate, redline, and measure geometry of an object model generated by a computer-aided design (CAD) tool hosted on a server computer system on the network.
In accordance with systems consistent with the present invention, a data processing system is provided. The data processing system comprises: a plurality of client computer systems operatively connected to a network, a first server computer system operatively connected to the network and having a first CAD tool, means for receiving, via a first of the client computer systems, an object model selection associated with the first CAD tool, means for providing the first CAD tool with an ICAD application associated with the object model selection, means for commanding the first CAD tool to generate an object model using the ICAD application, the object model having one or more elements, means for displaying, on the first client computer system, a structure identifying the one or more elements of the object model, means for receiving a request, via the first client computer system, to view a selected one of the elements, means for commanding the first CAD tool to generate an image file describing geometry of the selected element in response to the request to view the selected element, and means for displaying the geometry of the selected element on the first client computer system in accordance with the image file.
In accordance with systems consistent with the present invention, a data processing system is provided that includes a plurality of client computer systems operatively connected to a network. Each client computer system has an image viewer. The data processing system also includes a first server computer system operatively connected to the network. The first server computer system has a first CAD tool. The data processing system further includes a memory that has an image server program operatively connected, via the network, to the image viewer on each of the plurality of client computer systems and to the first CAD tool. The image server program receives, via a first of the client computer systems, an object model selection associated with the first CAD tool, provides the first CAD tool with an ICAD application stored on the network and associated with the object model selection, commands the first CAD tool to generate an object model having one or more elements using the ICAD application, provides the image viewer on each of the client computer systems with a structure identifying the one or more elements of the object model, receives a request, via the first client computer system, to view a selected one of the elements, commands the first CAD tool to generate an image file describing geometry of the selected element in response to the request to view the selected element, and causes the image viewer on each of the client computer systems to display the geometry of the selected element on the client computer system in accordance with the image file. The data processing system also includes a processor to run the image server program.
In accordance with articles of manufacture consistent with the present invention, a computer-readable medium containing instructions causing a program in a data processing system to perform a method is provided. The data processing system has a plurality of client computer systems operatively connected to a network and a server computer system operatively connected to the network and having a CAD tool. The method comprises: receiving, via a first of the client computer systems, an object model selection associated with the first CAD tool, providing the first CAD tool with an ICAD application associated with the object model selection, commanding the first CAD tool to generate an object model using the ICAD application, the object model having one or more elements, receiving a structure identifying the one or more elements of the object model, providing the structure to at least the first client computer system, receiving a request to view a selected one of the elements, commanding the first CAD tool to generate an image file describing geometry of the selected element in response to the request to view the selected element, and providing one of the image file or a representative object model generated from the image file to each of the client computer systems so that each client computer system displays the geometry of the selected element in accordance with the image file.
Other systems, methods, features, and advantages of the present invention will be or will become apparent to one with skill in the art upon examination of the following figures and detailed description. It is intended that all such additional systems, methods, features, and advantages be included within this description, be within the scope of the invention, and be protected by the accompanying claims.
BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate an implementation of the present invention and, together with the description, serve to explain the advantages and principles of the invention. In the drawings:
FIG. 1 depicts a block diagram of a data processing system suitable for viewing geometry of an object model generated by one of multiple CAD tools across a network consistent with the present invention;
FIGS. 2A-2K depict a flow diagram illustrating steps in a process for remotely controlling a first CAD tool via an image server in the data processing system to generate and view geometry of the object model;
FIG. 3 depicts an exemplary user interface generated by the image viewer on a client computer system in the data processing system to receive information from a user seeking access to the image viewer;
FIG. 4 depicts an exemplary user interface generated by the image viewer, where the user interface provides an option for joining an existing session managed to collaborate in a CAD environment, including allowing each network user to view geometry of the object model;
FIG. 5 depicts an exemplary user interface generated by the image viewer, where the user interface provides a tag for each CAD tool supported by the image server in accordance with systems and methods consistent with the present invention;
FIG. 6 depicts an exemplary user interface generated by the image viewer, where the user interface provides selections corresponding to CAD Applications associated with the first CAD tool in the data processing system;
FIG. 7 depicts an exemplary configuration file associated with a respective CAD application that may be retrieved by the image server and loaded on the first CAD tool to generate an object model of an application part;
FIG. 8 depicts an exemplary user interface generated by the image viewer to allow users to change a default value for an input element identified in the configuration file inFIG. 7 and used to generate the object model of the application part;
FIG. 9 depicts an exemplary user interface generated by the image viewer to display progress of the first CAD tool in loading the selected CAD application used to generate the object model of the application part;
FIG. 10 depicts an exemplary user interface generated by the image viewer to display elements that define the application part object model generated by the first CAD tool;
FIG. 11 depicts an exemplary user interface generated by the image viewer to allow users to selectively request to view geometry of the application part object model or one of its elements;
FIG. 12 depicts an exemplary user interface generated by the image viewer to display a list of one or more object models generated by the second CAD tool, where a user is able to selectively request to view and manipulate geometry of an object model identified in the list;
FIG. 13 depicts an exemplary user interface generated by the image viewer to allow users to hide previously displayed geometry of the object model inFIG. 12;
FIG. 14 depicts an exemplary user interface generated by the image viewer to allow users to rotate previously displayed geometry of the object model inFIG. 12;
FIG. 15 depicts an exemplary user interface generated by the image viewer to allow users to selectively create a mark-up of the geometry of an application part object model generated by the first CAD tool;
FIG. 16 depicts an exemplary user interface generated by the image viewer to allow users to selectively create a markup of the geometry of an object model generated by either the first CAD tool, the second CAD tool, or both;
FIG. 17 depicts an exemplary user interface generated by the image viewer to allow users to hide a previously displayed markup of the geometry of the object model;
FIG. 18 depicts an exemplary user interface generated by the image viewer to allow users to selectively redline geometry of an application part object model generated by the first CAD tool;
FIG. 19 depicts an exemplary user interface generated by the image viewer to allow users to selectively create a mark up of the geometry of an object model generated by either the first CAD tool, the second CAD tool, or both;
FIG. 20 depicts an exemplary user interface generated by the image viewer to allow users to selectively make a measurement of geometry of an application part object model generated by the first CAD tool;
FIG. 21 depicts an exemplary user interface generated by the image viewer to allow users to selectively make a measurement between a first point associated with geometry of an object model generated by the first CAD tool and a second point associated with geometry of another object model generated by the second CAD tool, or both; and
FIGS. 22-24 depict an exemplary user interface generated by the image viewer to allow users to create and rotate a cross section of an object model generated by either the first or second CAD tool.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT Reference now will be made in detail to an implementation in accordance with methods, systems, and products consistent with the present invention as illustrated in the accompanying drawings. The same reference numbers may be used throughout the drawings and the following description to refer to the same or like parts.
FIG. 1 depicts a block diagram of adata processing system100 suitable for allowing a user to remotely view, alone or collaboratively with other users, geometry of an object model generated by a CAD tool consistent with the present invention. Thedata processing system100 includes aserver computer system102 and one or moreclient computer systems104 and106. In the implementation shown inFIG. 1, theserver computer system102 is operatively connected to the firstclient computer system104 via aninternal network108 and to the second client computer system106 via anexternal network110 and a commerciallyavailable firewall server112. Theserver computer system102 and theclient computer systems106 and108 may be any general-purpose computer system such as an IBM compatible (based on a Windows or Unix operating system), Apple, or other equivalent computer.
Thenetworks108 and110 may be any known communication network, such as a local area network (“LAN”), WAN, or Peer-to-Peer, using standard communications protocols. Theexternal network110 may be the Internet. Thenetworks108 and110 may include hardwired, as well as wireless branches.
Thedata processing system100 also includes one or more CADserver computer systems114 and116 operatively connected to theserver computer system102 via the network106. In the implementation shown inFIG. 1, the first CADserver computer system114 hosts afirst CAD tool118, such as ICAD 8.1 commercially available from Knowledge Technologies International, that allows an engineer to develop a CAD software program or application (e.g.,CAD Application120A) for generating a geometric model (not shown inFIG. 1) of an object based on a set of engineering rules related to the design and manufacturing of the object. The first CADserver computer system114 may be any general-purpose computer system likeserver computer system102. Alternatively, for increased processing speed for controlling theCAD Tool118, the first CADserver computer system114 may be a workstation-class computer available from Sun Microsystems, Inc. or Silicon Graphics, Inc. For brevity in the description and understanding the present invention, assume that an engineer previously developedCAD Applications120A-120N for a first object through an Nth object using thefirst CAD tool118 while operating on the first CADserver computer system114.
The second CADserver computer system116 hosts asecond CAD tool122 that is an integrated suite of CAD, computer-aided engineering (“CAE”), and computer-aided manufacturing (CAM”) applications, such as the commercially-available “CATIA” application from Dassault Systems and “UNIGRAPHICS” available from Unigraphics Solutions, Inc. of Cypress, Calif. Thesecond CAD tool122 allows the user to develop a 3-D photo-realistic product definition of an object's geometry through development of acorresponding object model124A-124N, known as a “solid model.” The object model generated by thefirst CAD tool118 using arespective CAD Application120A-120N may be translated by thefirst CAD tool118 in a format corresponding to the object model (e.g.,object model124A) using known translation techniques, such as the technique supported by ICAD 8.1 for translating an ICAD object model format to a CATIA V5 object model format.
When hosting thesecond CAD tool122, the second CADserver computer system116 is preferably a workstation-class computer available from Sun Microsystems, Silicon Graphics, or other vendors. In this implementation, the second CADserver computer system116 may be operatively connected to amodel object database126 to store theobject model124A-124N. Themodel object database126 may be incorporated in a separate general-purpose computer system having a known remote file server (RFS) for accessing theobject model124A or124N.
As discussed in detail, theserver computer system102 is operatively configured to allow users usingclient computer system104 or106 to view, alone or in collaboration with other affiliates using anotherclient computer system106 or104, geometry of an object model generated by thefirst CAD tool118 using a selectedCAD application120A-120N or geometry of a selectedobject model124A-124N generated by thesecond CAD tool122.
As shown inFIG. 1,server computer system102 comprises a central processing unit (CPU)128, an input output I/O unit130, amemory132, asecondary storage device134, and adisplay136.Server computer system102 may further comprise standard input devices such as akeyboard138, amouse140, or speech processing means (not illustrated). TheCPU128 may be a low-end processor, such as an Intel Pentium II™ processor having a processing speed as low as about 400 MHz. These various components of aserver computer system102 may be physically located remotely from each other and connected via the network106. Although not shown for brevity,client computer systems104 and106 also comprisecomponents128,130,132,134,136, and standard input devices (e.g.,keyboard138 and mouse140).
Memory108 of theserver computer system102 stores animage server142 program including afirst CAD server144 and asecond CAD server146 operatively configured to communicate across thenetwork108 with thefirst CAD tool118 and thesecond CAD tool122, respectively. In one implementation, thefirst CAD server144 is configured to communicate with thefirst CAD server144 using known application program interface (API) commands for the first CAD server144 (e.g., known API commands for interfacing with an ICAD system). Thesecond CAD server146 similarly may be configured for communicating with thesecond CAD server144. Alternatively, to expedite communication across thenetwork108 to thefirst CAD tool118, the first CAD server's144 functionality for communicating directly with thefirst CAD tool118 may be incorporated into a firstCAD launch server148 hosted on CADserver computer system114. Similarly, the second CAD server's146 functionality for communicating directly with thesecond CAD tool118 may be incorporated into a secondCAD launch server150 hosted on CADserver computer system116. In this implementation, theCAD launch server148 is configured to cause thefirst CAD tool118 to launch and manage runningCAD application120A-120N in response to corresponding directives sent by theCAD Server144. TheCAD launch server150 is configured to cause thesecond CAD tool118 to launch and load in response to corresponding directives sent by theCAD Server144.
Memory132 of theserver computer system102 also may include a web server184, such as Tomcat 4.1 available from the Apache Software Foundation, and animage viewer170 that may be accessed as a servlet via the web server184. Theimage viewer170 provides a graphical user interface (GUI) for communicating with theimage server142.Client computers104 and106 each include abrowser156,158 to access or upload theimage viewer170. Thebrowsers156 and158 may be any standard browser, such as Netscape™ or Internet Explorer™.
Memory132 ofserver computer system102 also may include Java 3-D SDK160 software from Sun Microsystems, Inc. or other equivalent 3-D support tool to enable theimage server142 to build, render, and control the behavior of a 3-D object image162 generated in accordance with methods consistent with the present invention for display usingimage viewer154.Client computer systems104 and106 may include a Java 3-D Runtime Environment or other equivalent that is operatively configured to respond to Java 3-D API commands from theimage viewer154 for rendering and manipulating the 3-D object image162 provided via theimage server142.
In one implementation,image server142 also includes acollaboration server166, such as Collab View™ commercially available from Geometric Software Solutions, enabling theimage server142 to manage collaborative viewing of geometry (e.g., object 3-D image162) of an object model generated by the first CAD tool or the second CAD tool. In one implementation, theimage server142 maintains a representative copy (e.g.,model167A-167Z) of each object model generated by the first CAD tool and the second CAD tool to facilitate manipulation and collaborative viewing of geometry of therepresentative model167A-167Z individually or in multiples.
In accordance with systems and methods consistent with the present invention, the image server allows users using theimage viewer154 onclient computer system104 or106 to select aconfiguration file168A-168N associated with arespective CAD application120A-120N and to modify an element in the selected configuration file so that thefirst CAD tool118 generates an object model using therespective CAD application120A-120N and reflecting the modified element. In the implementation shown inFIG. 1, the configuration files168A-168N are stored insecondary storage134 onserver computer system102. Alternatively, the configuration files168A-168N may be stored on CADServer Computer System114,Client Computer Systems104 and106, or other computer systems in thedata processing system100.
In addition, although aspects of one implementation shown inFIG. 1 are depicted as being stored in memory, one skilled in the art will appreciate that all or part of systems and methods consistent with the present invention may be stored on or read from other computer-readable media, such as secondary storage devices, like hard disks, floppy disks, and CD-ROM; a carrier wave received from a network such as the Internet; or other forms of ROM or RAM either currently known or later developed. Further, although specific components ofdata processing system100 have been described, a data processing system suitable for use with methods, systems, and articles of manufacture consistent with the present invention may contain additional or different components.
FIGS. 2A-2E depict a flow diagram illustrating steps in aprocess200 for remotely controlling one ormore CAD tools114 and116 in thedata processing system100 to generate and view geometry of an object model generated by the respective CAD tool. Users operating on theclient computer system104 or106 may initiate theprocess200 by launching theimage viewer154 via therespective browser158 or156. The user's affiliate may launch theimage viewer154 by providing the URL address (not shown in figures) of theimage viewer154 to thebrowser158 or156 to cause theweb server152 to upload or allow access to theimage viewer154 on theserver computer system102. After theimage viewer154 is launched on theclient computer system104 or106, theimage viewer154 receives user information from the user (step202). In the implementation shown inFIG. 3, theimage viewer154 generates alogon screen300 to receiveuser information302 from the user. The user information may include auser name304 and apassword306.
After receiving theuser information302, theimage viewer154 determines whether the user is authorized to access a object model generated by CAD tools (e.g.,CAD tools118 and122) controlled by the image server (step204). Theimage viewer154 may determine that the user is authorized for access by using standard user authentication techniques, such as by verifyinguser information302 is contained in a user profile (not shown in figures) stored on theserver computer system102 or other computer onnetwork108. Alternatively, theimage viewer154 may transfer theuser information302 to theimage server142 so that theimage server142 is able to determine if the user is authorized for access.
If the user is not authorized for access, theimage viewer154 ends processing. If the user is authorized for access, theimage viewer154 via theimage server142 determines whether there is an existing work session in which another user is using theimage server142 to view geometry of an object model generated by theCAD tool118 or122 (step206). Theimage server142 creates and manages, via the collaboration server, each work session for users authorized for access instep204. Thus,image server142 is able to inform theimage viewer154 of each existing work session currently being managed by theimage server142. If there is not an existing work session, theimage server142 creates a new work session for the user (step208) and identifies the user as the master of the work session (step210). In one implementation, theimage server142 sends the request to create a new work session to theCAD Launcher server148 or150 associated with therespective CAD tool118 or122 in accordance with the object model selection (e.g.,CAD Application120A orobject model124A) identified by the user as discussed in further detail below.
If there is an existing work session, theimage viewer154 displays an identifier for each existing session being managed by the image server with an option to join the respective existing session (step212) and then determines whether the user has selected to join one of the existing work sessions (step214).FIG. 4 depicts anexemplary user interface400 generated by theimage viewer154 in which the image viewer displays each existing work session currently being managed by theimage server142 in apanel402 of theuser interface400. As shown inFIG. 4, theimage viewer154 displays anidentifier404 inpanel402 for each existing work session (e.g., “session1”) currently being managed by theimage server142. The image viewer may also display afirst option406 on the user interface to join a selected one of the existing work sessions identified inpanel402, and asecond option408 to create a new work session. Theidentifier402 may convey the name (e.g.,user name304 inFIG. 3) of the master of the respective work session or an identification of theCAD application120A-120N orobject model124A-124N being accessed in the respective existing work session. Thus, the user may select to join one of the existing work sessions by selecting, via mouse click or keyboard input, therespective identifier404 inpanel402.
If the user has selected not to join one of the existing work sessions, then theimage viewer154 continues processing atstep208 to create a new work session for the user. In the implementation shown inFIG. 4, theimage viewer154 allows the user to provide anidentifier410 for the new work session so that other affiliates using other client computer systems (e.g., client computer system106) are able to easily identify and select theidentifier410 to join the new work session.
If the user has selected to join one of the existing work sessions, then theimage viewer154 via theimage server142 links the user to the selected existing work session (step216) and identifies the user as a slave of the work session (step218). Thus, the user operating on one client computer system (e.g., client computer system104) may be linked as a slave by theimage server142 to the selected existing work session in which another user is operating on another client computer system (e.g., client computer system106) and another instance ofprocess200 is being performed. The other instance ofprocess200 is performed by theweb viewer154 on the other client computer system106 in conjunction with theimage server142. Although the next step shown inFIG. 2A forprocess200 isstep220, the user operating on the oneclient computer system104 may be linked to the existing work session while the other instance ofprocess200 is performing any step afterstep218.
Turning toFIG. 2B, theimage viewer154 then displays a tag for each CAD tool supported by the image server (step220) and determines whether any tag is selected (step222). In the implementation shown inFIG. 5, theimage viewer154 generatesuser interface500 in which tag502 is displayed to identify thefirst CAD tool118 and tag504 is displayed to identify thesecond CAD tool122. The user may then select one of thetags502 or504 via a mouse “click” or other input technique. Initially, theimage viewer154 may select one of thetags502 or504 by default.
If a tag is selected, theimage viewer154 displays object model selections (e.g.,CAD applications120A-120N or objectmodels124A-124N) associated with the selected tag (step223). For example, when the tag504 is selected as shown inFIG. 5, theimage viewer154 displays theobject model selections506 corresponding to objectmodels124A-124N created using the second CAD tool. In one implementation,image viewer154 is able to identify theobject models124A-124N by querying thesecond CAD tool122 via theimage server142 and secondCAD launch server150 for filenames ofobject models124A-124N stored on theobject model database126. In the implementation in which themodel object database126 is incorporated in a separate general-purpose computer system having a known remote file server (RFS) for accessing theobject model124A-124N, theimage server142 retrieves from aRFS property file172 and provides the image viewer152 a network path where theobject models124A-124N are stored. In this implementation, theimage server142 is able to request adirectory listing508 to identify theobject model selections506.
When thetag502 is selected, theimage viewer142 displays theobject model selections602 onuser interface600 as depicted inFIG. 6, where the object model selections correspond toCAD Applications120A-120N associated with thefirst CAD tool118 in the data processing system. Theimage viewer154 may identify theCAD Applications120A-120N by querying thefirst CAD tool118 via theimage server142 and the firstCAD launch server148 for filenames ofobject models124A-124N stored on theobject model database126. Alternatively, theimage server142 may identifyCAD Applications120A-120N stored at a pre-defined network path (e.g., “/opt/icad/mna/kwvlaunch/samples/apps” as shown inFIG. 6).
Next, theimage viewer154 receives one of the object model selections (step224). The user may use a mouse “click” or keyboard input to identify the one object model selection (e.g.,510 inFIG. 5 or604 inFIG. 6) to theimage viewer154. Theimage viewer154 then determines whether the object model selection corresponds to a CAD Application (step226). When the selected tag istag502 corresponding to thefirst CAD tool118, theimage viewer154 is able to recognize that theobject model selection604 corresponds to a CAD Application (e.g.,CAD Application120A). Similarly, when the selected tag is tag504, theimage viewer154 is able to recognize that theobject model selection510 corresponds to an object model (e.g.,object model120A) generated by thesecond CAD tool122.
If the object model selection corresponds to a CAD Application, theimage viewer154 retrieves a configuration file associated with the selected CAD Application (step228). In the implementation shown inFIG. 6, theobject model selections602identify configuration files168A-168N that are associated withrespective CAD Applications120A-120N.FIG. 7 depicts an exemplary configuration file700 associated withCAD application120A that may be requested by theimage viewer154 from theimage server142 when theobject model selection604 is chosen by the user. Theimage viewer154 allows the user, acting as the master on the respectiveclient computer system104, to change an input element contained in the configuration file700 to cause thefirst CAD tool118 to generate a corresponding change in the geometry of the object model produced using theCAD Application120A. The configuration file700 may be configured using eXtensible Markup Language (XML), HyperText Markup Language (HTML), or other equivalent language for structuring a document for transfer between applications, such that theimage viewer152 andimage server142 are able to define, transmit, and interpret data for aCAD application120A-120N across thenetwork108 or110 in accordance with methods and systems consistent with the present invention.
As shown inFIG. 7, each configuration file700 includes an “application part”702 for identifying the object model or a part of the object model to be instantiated or generated by thefirst CAD tool118 using theCAD application120A associated with the configuration file700 as further explained below. Theimage server142 andimage viewer154 may identify theapplication part702 in the configuration file700 by searching for a first beginning delimiter, such as “<application_part>”, and a first end delimiter, such as “</application_part>.”
Each configuration file700 also may include an “application path”704 that identifies where theCAD application120A corresponding to theobject model selection602 is stored on thenetwork108. Theimage server142 andimage viewer154 may identify theapplication path704 in the configuration file700 by searching for a second beginning delimiter, such as “<application_path>”, and a second end delimiter, such as “</application_path>”.
The configuration file700 may also include an “application link”706 identifying the gateway link or uniform resource locator (e.g., web address) for accessing theCAD application120A via theweb server152. A third beginning delimiter (e.g., “<application_link>”) and a third end delimiter (e.g., “</application_link>”) may be used to identify theapplication link706 within the configuration file700.
The configuration file700 also may include one or more secondary configuration files or “additional files”708 containing information required for theCAD Application120A associated with the configuration file700 to be loaded by thefirst CAD tool118. Each of theadditional files708 may be demarcated by a fourth beginning delimiter (e.g., “<additional files>”) and a fourth end delimiter (e.g., “</additional files>”) recognizable by theimage server142 and theimage viewer154.
The configuration file700 also may include agroup710 of one ormore input elements712,714,716,718, and720. Eachinput element712,714,716,718, and720 identifies a dimension or element used by thefirst CAD tool118 to generate theapplication part702 or object model using the CAD application located at theapplication path704. Eachgroup710 of input elements may be demarcated by a fifth beginning delimiter (e.g., “<group>”) and a fifth end delimiter (e.g., “</group”). Eachinput element712,714,716,718, and720 within thegroup710 may be demarcated by a sixth beginning delimiter and a sixth end delimiter (e.g., “<input>” and “</input>”, respectively), such that theimage server142 and theimage viewer154 are able to identify eachgroup710 and input elements within eachgroup710.
Eachinput element712,714,716,718, and720 has aninput type722, aninput name724, and avalue728 of theinput type722 to be associated with theinput name724. Eachinput element712,714,716,718, and720 also may have acode name726, which may be substituted for the input name by theimage viewer154 or first CAD launcher server and understood by thefirst CAD tool118 when referencing the respective input element, such as when commanded to generate geometry associated with therespective input element712,714,716,718, and720. Theinput type722 may be a double integer, integer, float, string, or other variable type. The input type may also be “server file” indicating to the image server142 a file is to be associated withinput name724 andvalue728. For example,input element720 indicates to theimage server142 that a server file is too defined for “where to output” (e.g., the input name724) an image file174 (e.g., the “standard-output” value728) from thefirst CAD tool118 after the “application part”706 is generated.
Eachinput element712,714,716,718, and720 may also have aminvalue730 and amaxvalue732, identifyinglower limit and an upper limit, respectively, for thevalue728.
Turning toFIG. 2C, theimage viewer154 next determines whether there is a group of input element(s) identified in the configuration file for the selected CAD Application (step230). Continuing with the example configuration file700, theimage viewer154 is able to identify thegroup710 in the configuration file700 corresponding theobject model selection604 associated with the selectedCAD application120A.
If there is a group of input element(s) identified in the configuration file, theimage viewer154 displays a name (step230) and a value (step232) associated with each input element in the group.FIG. 8 depicts anexemplary user interface800 generated by theimage viewer154 to display thename724 anddefault value728 for eachinput element712,714,716,718, and720 identified in the configuration file700. As shown inFIG. 8, theimage viewer154 also may display in apanel802 an identification of eachuser804 and806 operating on a respectiveclient computer system104 or106 that has joined the present work session as communicated by theimage server142. Theimage viewer154 also displays amaster indicator810 in association with one of theusers804 and806 to reflect which user is the master of (i.e., in control of) the work session. As previously described, theimage server142 manages each joint work session via thecollaboration server166 such that theuser interface800 displayed on theclient computer system104 where theuser804 is acting as the master of the work session is pipelined or communicated to anotheruser806 operating on another client computer system106. In the implementation shown inFIG. 8, theimage viewer154 allows theuser804 acting as the master of the work session to change thevalue712 of an input element712 (e.g., “length of table” dimension) in the configuration file700 before theimage viewer154 requests theimage server142 to causefirst CAD tool118 to generate the application part702 (e.g., “table-with-mats”) using the configuration file700. Theimage viewer154 also allows theuser804 to select acontrol button812 to transfer control or “change host” of the work session (e.g., change input control of user interface800) to anotheruser806 acting as a slave of the work session while operating on another client computer system106.
Returning toFIG. 2C, theimage viewer154 determines whether thevalue724 for anyinput element712,714,716,718, or720 has been changed by the user (step234). If the value for an input element has not been changed, theimage viewer154 continues processing atstep240. If the value for an input element has been changed, theimage viewer154 modifies the configuration file700 to reflect the changed value (step238).
Theimage viewer154 then determines whether there are more groups of input elements in the configuration file (step240). If there are more groups of input elements in the configuration file, theimage viewer154 identifies the next group of input elements in the configuration file (step242) and then continues processing atstep232. In the example shown inFIG. 7, theimage viewer154 is able to recognize there are no more groups of input elements following thegroup710.
Turning toFIG. 2D, if there are no more groups of input elements in the configuration file, theimage viewer154 prompts theimage server142 to load the first CAD tool with the CAD application associated with the configuration file (step244). In the implementation shown inFIG. 8, theuser804 or806 in control of the user interface may select another button814 (e.g., “next” button) to cause theimage viewer154 to transmit the configuration file700 to theimage server142 via theweb server152. After receiving the configuration file700, theimage viewer154 identifies theapplication path704 in the configuration file700 and commands thefirst CAD tool118, via thefirst CAD server144 and the firstCAD launcher server148, to load and run theCAD Application120A located at theapplication path704.
Theimage server142 then determines whether there is an input element in the configuration file (246). If there is no input element in the configuration file, theimage server142 commands the first CAD tool, via thefirst CAD server144 and the firstCAD launcher server148, to generate an object model associated with the CAD application (step248). If there is an input element in the configuration file, theimage server142 commands the first CAD tool, via thefirst CAD server144 and the firstCAD launcher server148, to generate an object model associated with the CAD application based on the input element identified in the configuration file (step250). Continuing with the exemplary configuration file700, theimage server142 commands the first CAD tool to generate the object model corresponding to the application part702 (e.g., “table-with-mats”) previously been defined using theCAD Application120A (e.g., “table.lisp”) at a location on thenetwork108 specified by theapplication path704.
In one implementation, theimage server142 communicates the first CAD tool's progress902 to theimage viewer154 running on each of theclient computer systems104 and106 participating in the work session.FIG. 9 depicts anexemplary user interface900 generated by theimage viewer154 to allow theuser804 and806 participating in the work session to monitor the first CAD tool's progress902 in loading the selected CAD application and generating the object model of the application part specified in the configuration file700.
In response to the command to generate an object model, theimage server142 receives from the first CAD tool, via the firstCAD launcher server148 and thefirst CAD server144, a tree of subparts or elements defining the object model for the application part (step252). Theimage server142 communicates the tree, which may be a list or hierarchical structure, to theimage viewer154 running on each of theclient computer systems104 and106 participating in the work session.
Theimage viewer154 then displays the tree of subparts or elements (step254). For example,FIG. 10 depicts auser interface1000 generated by theimage viewer142 to display thetree1002 or hierarchical structure ofelements1102 inFIG. 11 defining the application part object model1004 (e.g., identified as “table-with-mats”) generated by and received from the first CAD tool in accordance with methods consistent with the present invention.FIG. 11 depicts anexemplary user interface1100 generated by theimage viewer154 to allow users to selectively request to view geometry of the applicationpart object model1004 or one of itselements1102. In the implementation shown inFIGS. 10 and 11, the applicationpart object model1004 represents the root node of thetree1002 and theelements1102 includesnodes1104,1106,1108,1110, and1112. Each node may include one or more leaves (leaves fornode1104 not in view inFIG. 11),1114,1116,1118, and1120 associated with the respective node.
Turning toFIG. 2E, theimage viewer154 next determines whether a request to generate geometry has been received (step256). Theimage viewer154 allows the user to select anode1004,1104,1106,1108,1110, or1112, or one of theleaves1114,1116,1118, or1120 and then request via a drop down menu1122 (or other input technique) geometry of the selected node and its leaves (e.g., “draw node”1124 request) be generated for view inpanel1006 or1126. Alternatively, theimage viewer154 may allow the user to select anode1104,1106,1108,1110, and1112 and then request that geometry of leaves of the selected node (e.g., “draw leaves”1128 request) be generated for view inpanel1126.
If a request to generate geometry has not been received, the image viewer may end processing or wait until an “exit” request is received. If a request to generate geometry has been received, theimager viewer154 commands the first CAD tool to generate geometry of the object model (e.g., node1004) or an element of the object model (e.g., node1106) in accordance with the received request (step258). In one implementation, theimage viewer154 communicates the received request to theimage viewer142, which then submits a corresponding command to the first CAD tool, via ascript file170 or known application program interface for thefirst CAD tool118. In response, theimage server142 receives animage file174 from thefirst CAD tool118 reflecting the requested geometry of the object model (e.g., node1004). Theimage file174 may be a standard exchange geometric file configured in a standard format, such as a stereolithography format (STL), listing the triangular (or other equivalent structure) surfaces, elements, or volumes describing the geometry of an object model.
Theimage server142 then receives an image file (e.g., image file174) from thefirst CAD tool118 describing the geometry of the object model or the element (step260) and generates a representative object model (e.g.,model167A) from the image file174 (step262). Theimage server142 is able to generate a representative object model using standard CAD transformation techniques for generating a facetted boundary solid model representation from a standard geometric file, such as an STL file. In one implementation, theimage server142 may transfer theimage file174 or therepresentative object model167A to theimage viewer154 running on eachclient computer system104 and106 participating in the respective work session. In this implementation, theimage viewer154 acting as the master of the work session (e.g., the image viewer running on the client computer system104) is able to manipulate (e.g., rotate or translate) therepresentative object model167A without accessing the corresponding object model generated by thefirst CAD tool118. Theimage server142 communicates changes to therepresentative object model167A from theimage viewer154 acting as the master of the work session toother image servers154 on other client computer systems participating in the work session. Alternatively, theimage server142 may maintain therepresentative object model167A. In this implementation, theimage server142 manipulates therepresentative object model167A as requested by theimage viewer154 acting as the master of the work session and communicates corresponding changes (or modifiedrepresentative object model167A) to theclient computer systems104 and106 participating in the work session.
Next, theimage viewer154 displays the geometry of the representative object model (e.g., node1004) or the element of the object model (e.g., node1108) in accordance with the request (step264). As shown inFIG. 11, theimage viewer154 running on eachclient computer system104 and106 participating in the respective work session displays thegeometry1130 associated with the application part object model (identified as “Table-With-Mats” inFIG. 11) in response to the selection ofnode1004 by theuser804 operating as the master of the work session onclient computer system104. Theimage viewer154 then continues processing atstep274 inFIG. 2F.
If the object model selection does not correspond to a CAD Application instep226, theimage viewer154 recognizes that the object model selection corresponds to anobject model124A-N generated by thesecond CAD tool122 and commands the second CAD tool to generate geometry of the object model associated with the object model selection (step266) via theimage server142. In response, theimage server142 receives animage file176 from thesecond CAD tool118 describing the geometry of the selected object model (step268) and generates a representative object model from the image file (step270). Theimage file176 is also configured in a standard format, such as an STL format, interpretable by theimage server142 to generate the representative object model (e.g., model167B) in accordance with methods and systems consistent with the present invention.
Next, theimage viewer154 running on eachclient computer system104 and106 participating in the respective work session displays the geometry associated with the selected object model (step272). In one implementation, theimage server142 communicates the representative object model167B to theimage viewer154 running on eachclient computer system104 and106 participating in the work session so eachimage viewer154 displays the same geometry associated with the selected object model.FIG. 12 depicts anexemplary user interface1200 generated by theimage viewer142 to display thegeometry1202 of theobject model120A associated with and identified by theobject model selection1204, “Bluecube.model.” Users may choose multipleobject model selections506 inFIG. 5 such that respective geometry of eachobject model selection506 may be displayed simultaneously on each of theclient computer systems104 and106 participating in the work session. Accordingly, theimage viewer154 displays thegeometry1206 of the object model120B associated with and identified by theobject model selection1208, “Facesonly.model.”
Theimage viewer154 then determines whether a request has been received to access another object model (step274). If another request has been received to access another object model, theimage viewer154 continues processing atstep220. In one implementation, theimage viewer154 allows the user acting as the master of the work session to select a navigatebutton1132 inFIG. 11 or1232 inFIG. 12 to signal theimage viewer154 to display theuser interface500 so another object model selection may be chosen.
If a request has not been received to access another model, theimage viewer154 displays one or more options for manipulating the object model to change the geometry in view (step276) and then determines whether one of the manipulation options has been selected (step278). Theimage viewer154 then modifies the representative object model (e.g., models167B and167C) in accordance with the manipulation option (step272). For example, as shown inFIG. 12, theimage viewer142 generates and displays themenu1240 to allow users to select themanipulation option1242 to rotate the representative object model167B and167C, individually or collectively, corresponding to the geometry in view (e.g.,geometry1202 and1206). In one implementation, theimage viewer142 communicates the manipulation option (e.g., rotate option1242) to theimage server142 to process. In this implementation, theimage server142 may rotate thegeometry1202 and1206 by a pre-determined increment (e.g., 90 degrees) about a center axis of thegeometry1202 and1206. Alternatively, theimage server142 may rotate about an axis identified by the user as explained in reference to rotating a cross section below. Theimage viewer154 in combination with theimage server142 is configured to perform other standard manipulations, such as zoom, pan, or rotate to display a requested view (e.g., front, top, left, or right) of the representative object model (e.g.,models167A and167B) withgeometry1202 and1206 currently displayed.
Next, theimage viewer154 running on eachclient computer system104 and106 participating in the respective work session displays the geometry of the modified representative object model (step282).FIG. 14 depicts auser interface1400 generated by theimage viewer154 to display thegeometry1402 and1406 of the modified representative object models167B and167C, which were rotated by 90 degrees along the center axis of thegeometry1202 and1206 shown inFIG. 12.
After displaying the geometry of the selected object model or if one of the options to manipulate the object model has not been selected instep270, the image viewer determines whether a request to create a markup has been received (step284 inFIG. 2G).FIG. 15 depicts anexemplary user interface1500 generated by theimage viewer154 to allow users to selectivelymarkup geometry1130 of the application part object model generated by the first CAD tool inFIG. 11. As shown inFIG. 15, the user may request to create a markup by mouse clicking theicon1502 or using another input technique.
If a request to create a markup has been received, theimage viewer154 receives a point associated with the displayed geometry of the object model (step286), receives a markup title (step288), and receives a markup text associated with the markup title (step290). In the implementation shown inFIG. 15, the user indicates to theimage viewer154 thepoint1504 of thegeometry1130 by mouse clicking on thepoint1504 and then dragging the mouse to anotherpoint1506 in thepanel1508. Theimage viewer154 displays themarkup title1510 ormarkup title1512 received from the user, viadialog box1514, at theother point1506. Theimage viewer154 then adds the markup title (e.g., title1512) to an annotations tree (e.g., tree1516) associated with the object model (step292). Next, theimage viewer154 running on each client computer system participating in the work session displays the markup title (e.g., title1510) or text (e.g.,1512) at the point associated with the geometry of the object model (step294).
In accordance with methods consistent with the present invention, theimage viewer154 allows the user to create and associate a first markup (e.g., markup title1602) withgeometry1604 of anobject model167A generated by the first CAD tool and to create and associate a second markup (e.g., markup title1606) withgeometry1608 of another object model167B generated by the second CAD tool.
After one or more markups are associated with the geometry of the object model in accordance methods and systems consistent with the present invention, theimage viewer154 determines whether a request to hide a markup has been received (step296). Theimage viewer154 then displays each markup title in the annotations tree associated with the object model (step298) and receives a selected markup title in the annotations tree (step300).FIG. 17 depicts anexemplary user interface1700 generated by theimage viewer154 to allow users to hide a previously displayed markup (e.g., “table”1702) of thegeometry1704 of the object model. In the implementation shown inFIG. 17, the user may request to hide a markup by selecting themarkup1702 to hide from among themarkups1706 listed by theimage viewer154 in themarkup annotation tree1708. After the markup to hide has been identified by the user, theimage viewer154 removes the markup text associated with the selected markup title from the display on each client computer system participating in the working session (step302).
After removing the markup text or if a request to hide a markup has not been received or if a request to create a markup has not been received, the image viewer determines whether a request to create a redline has been received (step304 inFIG. 2H).FIG. 18 depicts anexemplary user interface1800 generated by theimage viewer154 to allow users to selectively redlinegeometry1802 of an application part object model generated by the first CAD tool. As shown inFIG. 18, theimage viewer154 allows the user to request to create a redline via anicon selection1804 ormenu selection1806. If a request to create a redline has been received, theimage viewer154 then receives a redline type, such as atext type1808, arectangle type1810, an oval type1812, or freeform type1814 (step306). Theimage viewer154 then receives an indication of aportion1816 of the displayed geometry of the representative object model (step308). The user may identify theportion1816 to theimage viewer154 using a mouse click, drag and drop technique. Theimage viewer154 then highlights theportion1816 on the display of each client computer system participating in the working session in accordance with the received redline type, such as rectangle type1810 (step310).
In accordance with methods consistent with the present invention, theimage viewer154 allows the user to create and associate a redline (e.g., “table and cube”redline1902 inFIG. 19) withgeometry1904 of anobject model167A generated by the first CAD tool and withgeometry1906 of another object model167B generated by the second CAD tool.
After highlighting the portion on the display or if a request to create a redline has not been received, theimage viewer154 determines whether the displayed geometry has been changed (step312). If the displayed geometry has been changed, theimage viewer154 deletes the highlight of the portion from the display of each client computer system participating in the working session (step314).
After deleting the highlight or if the displayed geometry has not been changed, theimage viewer154 determines whether a request to make a measurement has been received (step316 inFIG. 21). If a request to make a measurement has been received, theimage viewer154 receives a selected dimension (e.g., face, edge, vertex, or point) of the object model to measure (step318).FIG. 20 depicts anexemplary user interface2000 generated by theimage viewer154 to allow users to selectively make a measurement ofgeometry2002 of an application part object model generated by the first CAD tool. As shown inFIG. 20, theimage viewer154 allows the user to request to make a measurement via a drop-down menu selection2004. The request to make a measurement may include a measurement type identified by the user, such as aface dimension2006, anedge dimension2008, and avertex dimension2010 orpoint dimension2012. Selecting theface dimension2006 type prompts theimage viewer154 to calculate the area of the selected dimension (e.g., a selected face) of thegeometry2002 of the object model. Theedge dimension2008 type prompts theimage viewer154 to identify the length or start and end coordinates of the selected dimension (e.g., a selected edge) of thegeometry2002 of the object model. Thevertex dimension2010 type prompts theimage viewer154 to identify coordinates of the selected dimension (e.g., a selected vertex) of thegeometry2002. Thepoint dimension2012 type may prompt theimage viewer154 to calculate the distance between the selected point dimension and another point identified by the user (e.g.,menu option2014 inFIG. 20), the angle formed by the selected point dimension and two vertices selected by the user (e.g., menu option2016), or the radius of a circle formed by the selected point dimension and two points selected by the user (e.g., menu option2018).
Theimage viewer154 then receives a point (e.g., point2020) associated with the displayed geometry of the object model (step320). Next, theimage viewer154 identifies a measurement associated with the selected dimension in accordance with the request (step322). In the example shown inFIG. 20, in accordance with the request to make a measurement between two points (e.g., menu option2014), theimage viewer154 calculates the distance between the selectedpoint dimension2022 and anotherpoint2024 identified by the user on the legs orgeometry2002 of the representative table model originally generated by thefirst CAD tool118. Theimage viewer154 then displays the measurement at thepoint2020 associated with the geometry of the object model on each client computer system participating in the working session (step324).
In accordance with methods consistent with the present invention, theimage viewer154 allows the user to make a measurement (e.g.,distance2102 inFIG. 21 in accordance withmenu option2014 for measuring the distance between two points) betweengeometry2104 of anobject model167A generated by the first CAD tool andgeometry2106 of another object model167B generated by the second CAD tool.
After displaying the measurement or if a request to make a measurement has not been received, theimage viewer154 determines whether a request to create a cross section has been received (step326). If a request to create a cross section has been received, theimage viewer154 then receives an identification of a plane associated with the object model (step328). The user may request to create a cross section by selecting across section option2202 on theuser interface2200 generated by theimage viewer154. The user may then use a mouse click, drag and drop technique to identify theplane2204 associated with thegeometry2206 of the representative object model.
Theimage viewer154 then generates geometry of a cross section of the representative object model along a first face (e.g., face2208 inFIG. 22) of the plane (step330) and displays the geometry of the cross section along the first face on each client computer system participating in the working session (step332) as shown inFIG. 22.
Next, theimage viewer154 determines whether a request to flip the plane of the cross section has been received (step334). The user may request to flip the plane of the cross section by selecting aflip panel option2302 on theuser interface2300 generated by theimage viewer154. If a request to flip the plane of the cross section has been received, theimage viewer154 generates geometry of a cross section of the representative object model along a second face (e.g.,2306) of the plane (step336) and displays the geometry of the cross section along the second face on each client computer system participating in the working session (step338). Next, theimage viewer154 determines whether a request to rotate the cross section has been received (step340).
If a request to rotate the cross section has been received, theimage viewer154 receives an identification of a first axis of the plane (step342) and receives a rotation increment associated with the first axis (step344). Theimage viewer154 then rotates the representative object model about the first axis of the plane by the associated rotation increment (step346). The image viewer then generates geometry of the cross section of the object model after the rotation (step348) and displays the geometry of the cross section after rotation on each client computer system participating in the working session (step350). Next, theimage viewer154 determines whether a request to rotate the cross section about a second axis has been received (step352).
If a request to rotate the cross section about a second axis has been received, theimage viewer154 receives an identification of the second axis associated with the plane (step354) and receives a rotation increment associated with the second axis (step356). Theimage viewer154 then rotates the representative object model about the second axis of the plane by the associated rotation increment (step358). After rotating the representative object model, theimage viewer154 then generates geometry of the cross section of the rotated representative object model (step360) and displays the geometry of the cross section after rotation on each client computer system participating in the working session (step362). After displaying the geometry of the cross section after the second rotation or if a request to create or rotate a cross section is not received, the image viewer ends processing.
The foregoing description of an implementation of the invention has been presented for purposes of illustration and description. It is not exhaustive and does not limit the invention to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practicing of the invention. Additionally, the described implementation includes software, such as the bus management tool, but the present invention may be implemented as a combination of hardware and software or in hardware alone. Note also that the implementation may vary between systems. The invention may be implemented with both object-oriented and non-object-oriented programming systems. The claims and their equivalents define the scope of the invention.