WO2012058607A2 - Methods and systems for computer-aided design - Google Patents

Methods and systems for computer-aided design Download PDF

Info

Publication number
WO2012058607A2
WO2012058607A2 PCT/US2011/058412 US2011058412W WO2012058607A2 WO 2012058607 A2 WO2012058607 A2 WO 2012058607A2 US 2011058412 W US2011058412 W US 2011058412W WO 2012058607 A2 WO2012058607 A2 WO 2012058607A2
Authority
WO
WIPO (PCT)
Prior art keywords
cad
application
user
model
state
Prior art date
Application number
PCT/US2011/058412
Other languages
English (en)
French (fr)
Other versions
WO2012058607A3 (en
Inventor
Asa Gray Trainer
Ganesh Krishnan
Yuri Varvak
Steve Berkeley
Michael Reitman
Leonid Ryvchin
Michael Youkelzon
Yacov Estrin
Victor Gluzberg
Neil Richard Potter
Boris Rabinovich
Asaf Amit
Original Assignee
Parametric Technology Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/914,004 external-priority patent/US8818769B2/en
Priority claimed from US12/914,011 external-priority patent/US8892404B2/en
Priority claimed from US12/914,005 external-priority patent/US20120110595A1/en
Application filed by Parametric Technology Corporation filed Critical Parametric Technology Corporation
Priority to JP2013536888A priority Critical patent/JP5971812B2/ja
Priority to EP11837206.9A priority patent/EP2633449A4/en
Publication of WO2012058607A2 publication Critical patent/WO2012058607A2/en
Publication of WO2012058607A3 publication Critical patent/WO2012058607A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/02CAD in a network environment, e.g. collaborative CAD or distributed simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/04Constraint-based CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/15Vehicle, aircraft or watercraft design

Definitions

  • the present disclosure relates to methods and systems for computer-aided design (CAD).
  • CAD computer-aided design
  • CAD computer- aided design
  • CAE computer-aided engineering
  • CAM computer- aided manufacturing
  • CAD applications allow a user to input and view a design for a particular structure in the form of an object. The user can often rotate the view of the object to any angle, and also zoom in or zoom out for different views and perspectives. Additional visual features such as highlighting, shading, cross-hatching, coloring, texturing, and others enable the user to design an object with the aid of a computing device.
  • parametric or history-based CAD the application can also keep track of and monitor design changes to the object in addition to design dependencies.
  • a length of a first object may be defined by a formula that includes, as a variable, a length of a second object. Accordingly, modifying the length of the second object may cause the CAD application to recalculate the length of the first object and regenerate the model.
  • the present disclosure is directed to systems and methods for maintaining consistency of a CAD model across a plurality of homogenous or heterogeneous applications across one or more computing devices and used by one or more users.
  • the systems include a common data model, comprising chapters of different information items to describe various aspects of the CAD model, and lightweight change instructions
  • a plurality of users may concurrently collaborate on the design of a CAD model, or a single user may utilize a plurality of applications of a CAD suite efficiently and with an enhanced user experience.
  • the present disclosure is directed to a method of managing synchronization of a plurality of information items of a computer-aided design (CAD) data model at one of a plurality of states in an object life cycle, the information items including at least geometry and graphics.
  • the method includes updating, by a first user of a first application executed by a processor of a first computing device, a first information item of a shared CAD data model from a first state to a second state, the first state corresponding to a first state in an object life cycle.
  • the method also includes updating, by the first user, the first information item from the second state to a third state, the third state corresponding to a second state in the object life cycle.
  • the method further includes updating, by a second user of a second application executed by a processor of a second computing device, a second information item of the shared CAD model from a fourth state corresponding to the first state, to a fifth state corresponding to the third state.
  • updating a first information item of a shared CAD data model from a first state to a second state comprises modifying, by the user, the first information item using the first application.
  • the first state in the object life cycle and the second state in the object life cycle each correspond to a predefined state, the predefined states comprising at least one of design, prototyping, manufacturing, or testing.
  • the method includes receiving, by the second user from the first user, a first change instruction generated responsive to updating the first information item from the first state to the second state, wherein the first change instruction comprises instructions representative of the update, and includes a flag set to a first predetermined value to indicate the change instruction updates to an inconsistent state of the shared CAD data model.
  • the method includes not updating, by the second user, the second information item responsive to receiving the first change instruction with the flag set to the first predetermined value.
  • the present disclosure is directed to a system for managing synchronization of a plurality of information items of a computer-aided design (CAD) data model at one of a plurality of states in an object life cycle, the information items including at least geometry and graphics.
  • the system includes a first computing device comprising a first processor, the first processor configured to execute a first application for: updating, by a first user, a first information item of a shared CAD data model from a first state to a second state, the first state corresponding to a first state in an object life cycle, and updating, by the first user, the first information item from the second state to a third state, the third state corresponding to a second state in the object life cycle.
  • the system also includes a second computing device comprising a second processor, the second processor configured to execute a second application for updating, by a second user, a second information item of the shared CAD model from a fourth state corresponding to the first state, to a fifth state corresponding to the third state.
  • a second computing device comprising a second processor, the second processor configured to execute a second application for updating, by a second user, a second information item of the shared CAD model from a fourth state corresponding to the first state, to a fifth state corresponding to the third state.
  • the first application is configured for modifying, by the user, the first information item using the first application.
  • the first state in the object life cycle and the second state in the object life cycle each correspond to a predefined state, the predefined states comprising at least one of design, prototyping, manufacturing, or testing.
  • the second application is configured for receiving, from the first application, a first change instruction generated responsive to updating the first information item from the first state to the second state, wherein the first change instruction comprises instructions representative of the update, and includes a flag set to a first predetermined value to indicate the change instruction updates to an inconsistent state of the shared CAD data model.
  • the method includes regenerating, by the CAD application and responsive to the modification of the first CAD object, data of a second CAD object of the plurality of interrelated CAD objects, the second CAD object dependent on the first CAD object.
  • the method includes the first change instruction comprises instructions for performing, by the CAD application, the user's modification to the first CAD object in the stored first state.
  • the method includes modifying, by the user, a second CAD object of the plurality of interrelated CAD objects of the CAD model; and storing, by the CAD application and responsive to the modification to the second CAD object, a second change instruction representative of the modification to the second CAD object.
  • the second change instruction comprises instructions for performing, by the CAD application, the user's modification to the second CAD object from a state of the CAD model after the modification of the first CAD object.
  • the method includes regenerating, by the CAD application and responsive to the modification of the second CAD object, data of a third CAD object of the plurality of interrelated CAD objects dependent on the second CAD object.
  • the method includes requesting, by the user, to return the CAD model to a state of the CAD model after the modification of the first CAD object and prior to the modification of the second CAD object; and executing, by the CAD application, the first change instruction on the stored first state of the plurality of interrelated CAD objects of the CAD model.
  • the method includes regenerating, by the CAD application and responsive to the modification of the first CAD object, data of a second CAD object of the plurality of interrelated CAD objects dependent on the first CAD object.
  • the method includes requesting, by the user, to finalize at least one modification to the CAD model; and transmitting, by the CAD application, a corresponding at least one change instruction to at least one additional CAD application, the at least one additional CAD application executed by one of the processor of the first computing device or a processor of a second computing device.
  • the present disclosure is directed to a system for managing multiple design steps of computer-aided design (CAD) objects or models by a user.
  • the system includes a first computing device comprising a first processor configured to execute a CAD application, the CAD application configured to modify, responsive to a request from a user of the first computing device, a first CAD object of a plurality of interrelated CAD objects of a CAD model; and store, responsive to the modification, a first state of the plurality of interrelated CAD objects of the CAD model prior to the modification, and a first change instruction representative of the modification to the first CAD object.
  • CAD computer-aided design
  • the CAD application is further configured to regenerate, responsive to the modification of the first CAD object, data of a second CAD object of the plurality of interrelated CAD objects, the second CAD object dependent on the first CAD object.
  • the first change instruction comprises instructions for performing, by the CAD application, the user's modification to the first CAD object in the stored first state.
  • the CAD application is further configured to modify, responsive to a request by the user, a second CAD object of the plurality of interrelated CAD objects of the CAD model; and store, responsive to the modification to the second CAD object, a second change instruction representative of the modification to the second CAD object.
  • the second change instruction comprises instructions for performing, by the CAD application, the user's modification to the second CAD object from a state of the CAD model after the modification of the first CAD object.
  • the CAD application is further configured to regenerate, responsive to the modification of the second CAD object, data of a third CAD object of the plurality of interrelated CAD objects dependent on the second CAD object.
  • the CAD application is further configured to execute the first change instruction on the stored first state of the plurality of interrelated CAD objects of the CAD model, responsive to a request by the user to return the CAD model to a state of the CAD model after the modification of the first CAD object and prior to the modification of the second CAD object.
  • the CAD application is further configured to regenerate, responsive to the modification of the first CAD object, data of a second CAD object of the plurality of interrelated CAD objects dependent on the first CAD object.
  • the CAD application is further configured to transmit, responsive to a request by the user to finalize at least one modification to the CAD model, a corresponding at least one change instruction to at least one additional CAD application, the at least one additional CAD application executed by one of the processor of the first computing device or a processor of a second computing device.
  • the present disclosure is directed to systems and methods for managing concurrent design of computer-aided design objects or models.
  • the systems include a common data model, comprising chapters of different information items to describe various aspects of the CAD model, and lightweight change instructions representative of
  • a plurality of users may concurrently collaborate on the design of a CAD model, or a single user may utilize a plurality of applications of a CAD suite efficiently and with an enhanced user experience.
  • the present disclosure is directed to a method of managing concurrent design of computer-aided design (CAD) objects or models by a plurality of users on a corresponding plurality of computing devices.
  • the method includes modifying, by a first user of a first CAD application executing on a processor of a first computing device, a first portion of a shared CAD object.
  • the method also includes modifying, by a second user of a second CAD application executing on a processor of a second computing device, a second portion of the shared CAD object.
  • the method further includes receiving, by the second computing device from the first computing device, a change instruction representative of the modification to the first portion of the shared CAD object.
  • the method includes storing the change instruction without modifying the shared CAD object displayed to the second user, by the second computing device, responsive to a determination by the second CAD application that the modification to the first portion does not affect the second portion.
  • the shared CAD object comprises a plurality of interrelated models.
  • the method includes modifying a first set of one or more models of the shared CAD object. In a further embodiment, the method includes modifying a second set of one or more models of the shared object, wherein the second set of one or more models is not congruent with the first set of one or more models.
  • the method includes receiving the change instruction by the second computing device from the first computing device via a third computing device acting as an intermediary, such that the first computing device and second computing device need not be simultaneously online to communicate the change instruction.
  • the method includes transmitting, by the first CAD application and responsive to the modification by the first user of the first portion of the shared CAD object, the change instruction to the third computing device acting as an intermediary.
  • the method also includes receiving, by the second computing device from a notification service executing on a processor of the third computing device, a notification of a new change instruction, the notification transmitted responsive to receiving the transmitted change instruction from the first computing device.
  • the method also includes requesting the change instruction, by the second CAD application from the third computing device, responsive to receiving the notification.
  • the method includes executing, by the second CAD application and responsive to a request by the second user, the change instruction to modify the first portion of the shared CAD object.
  • the method includes combining, by the second CAD application, the modifications to the first portion of the shared CAD object represented in the change instruction with the modifications to the second portion of the shared CAD object.
  • the method includes overriding a first one or more instructions in the change instruction, by the second user, and wherein executing the change instruction to modify the first portion of the shared CAD object comprises executing a second one or more non-overridden instructions in the change instruction.
  • the present disclosure is directed to a system for managing concurrent design of computer-aided design (CAD) objects or models by a plurality of users on a corresponding plurality of computing devices.
  • the system includes a first computing device comprising a processor executing a first CAD application configured for modifying, by a first user, a first portion of a shared CAD object.
  • the system also includes a second computing device comprising a processor executing a second CAD application configured for modifying, by a second user, a second portion of the shared CAD object; and for receiving, from the first computing device, a change instruction representative of the modification to the first portion of the shared CAD object.
  • the second CAD application is further configured for storing the change instruction without modifying the shared CAD object displayed to the second user, responsive to a determination by the second CAD application that the modification to the first portion does not affect the second portion.
  • the shared CAD object comprises a plurality of interrelated models.
  • modifying the first portion of the shared CAD object comprises modifying a first set of one or more models of the shared CAD object.
  • modifying the second portion of the shared object comprises modifying a second set of one or more models of the shared object, wherein the second set of one or more models is not congruent with the first set of one or more models.
  • the system includes a third computing device acting as an intermediary between the first computing device and the second computing device, the third computing device receiving the change instruction from the first computing device and transmitting the change instruction to the second computing device, such that the first computing device and second computing device need not be simultaneously online to communicate the change instruction.
  • the first CAD application is further configured for transmitting, responsive to the modification by the first user of the first portion of the shared CAD object, the change instruction to the third computing device acting as an intermediary;
  • the third computing device further comprises a processor executing a notification service;
  • the second CAD application is further configured for receiving, from the notification service, a notification of a new change instruction, the notification transmitted responsive to receiving the transmitted change instruction from the first computing device; and requesting the change instruction, from the third computing device, responsive to receiving the notification.
  • the second CAD application is further configured for executing, responsive to a request by the second user, the change instruction to modify the first portion of the shared CAD object.
  • the second CAD application is further configured for combining the modifications to the first portion of the shared CAD object represented in the change instruction with the modifications to the second portion of the shared CAD object.
  • the second CAD application is further configured for a first one or more instructions in the change instruction, responsive to a request by the second user, and wherein executing the change instruction to modify the first portion of the shared CAD object comprises executing a second one or more non-overridden instructions in the change instruction.
  • the present disclosure is directed to systems and methods for managing concurrent design of computer-aided design objects or models.
  • the systems include a common data model, comprising chapters of different information items to describe various aspects of the CAD model, and lightweight change instructions representative of
  • a plurality of users may concurrently collaborate on the design of a CAD model, or a single user may utilize a plurality of applications of a CAD suite efficiently and with an enhanced user experience.
  • the system may manage undo stacks across a plurality of applications concurrently operating on the same shared CAD model, such that the user experiences seamless operation of the plurality of applications.
  • the present disclosure is directed to a method of managing concurrent design of computer-aided design (CAD) objects or models.
  • the method includes storing, by a first CAD application executed by a processor of a computing device, a starting state of a CAD model.
  • the method also includes modifying, by a user of the first CAD application, the CAD model.
  • the method further includes creating, by the first CAD application and responsive to the modification, a first one or more change instructions representative of the user's modification to the CAD model.
  • the method also includes loading, by a second CAD application executed by the processor of the computing device, the stored starting state of the CAD model and the first one or more change instructions.
  • the method also includes executing, by the second CAD application, the first one or more change instructions to reproduce the user's modification to the CAD model.
  • the method includes storing the starting state of the CAD model, responsive to loading the CAD model by the first CAD application.
  • the method includes modifying, by the user, a first one or more objects of the CAD model; and regenerating, by the first CAD application, a second one or more objects of the CAD model dependent on the first one or more objects.
  • the method includes creating a first one or more change instructions representative of the user's modification to the first one or more objects, such that execution of the one or more change instructions causes a CAD application to regenerate the second one or more objects dependent on the first one or more objects.
  • the method includes loading the stored starting state and the first one or more change instructions, responsive to the user making the second CAD application active. In a further embodiment, the method includes executing the first one or more change instructions, responsive to the user making the second CAD application active.
  • the method includes modifying, by the user via the second CAD application, the CAD model.
  • the method also includes creating, by the second CAD application and responsive to the modification, a second one or more change instructions representative of the user's modification to the CAD model.
  • the method further includes loading, by the first CAD application, the second one or more change instructions.
  • the method also includes executing, by the first CAD application, the second one or more change instructions to reproduce the user's modification to the CAD model.
  • the second one or more change instructions represent the user's modifications to the CAD model in the second CAD application subsequent to execution of the first one or more change instructions.
  • the method includes requesting to undo the first one or more change instructions, by the user via the first CAD application; and loading, by the first CAD application, the starting state of the CAD model.
  • the method includes executing, by the first CAD application, the second one or more change instructions, wherein the second one or more change instructions modify a chapter of the CAD model unrelated to the chapter modified by the first one or more change instructions.
  • the present disclosure features a system for managing concurrent design of computer-aided design (CAD) objects or models.
  • the system includes a computing device comprising a processor executing a first CAD application and a second CAD application.
  • the first CAD application is configured to store a starting state of a CAD model; modify the CAD model responsive to a request by a user of the first CAD application; and create, responsive to the modification, a first one or more change instructions representative of the user's modification to the CAD model.
  • the second CAD application is configured to load the stored starting state of the CAD model and the first one or more change instructions; and execute the first one or more change instructions to reproduce the user's modification to the CAD model.
  • the first CAD application is configured to store the starting state of the CAD model, responsive to loading the CAD model by the first CAD application.
  • the first CAD application is configured to modify, responsive to a request by the user, a first one or more objects of the CAD model; and regenerate a second one or more objects of the CAD model dependent on the first one or more objects.
  • the first CAD application is configured to create a first one or more change instructions representative of the user's modification to the first one or more objects, such that execution of the one or more change instructions causes a CAD application to regenerate the second one or more objects dependent on the first one or more objects.
  • the second CAD application is configured to load the stored starting state and the first one or more change instructions, responsive to the user making the second CAD application active. In a further embodiment, the second CAD application is configured to execute the first one or more change instructions, responsive to the user making the second CAD application active. [0041] In one embodiment, the second CAD application is configured to modify the
  • the CAD model responsive to a request from the user, and create, responsive to the modification, a second one or more change instructions representative of the user's modification to the CAD model; and the first CAD application is configured to load the second one or more change instructions; and execute the second one or more change instructions to reproduce the user's modification to the CAD model.
  • the second one or more change instructions represent the user's modifications to the CAD model in the second CAD application subsequent to execution of the first one or more change instructions.
  • the first CAD application responsive to a request by the user to undo the first one or more change instructions, is configured to load the starting state of the CAD model.
  • the first CAD application is configured to execute the second one or more change instructions, wherein the second one or more change instructions modify a chapter of the CAD model unrelated to the chapter modified by the first one or more change instructions.
  • the present disclosure is directed to a system for managing concurrent design of computer-aided design (CAD) models.
  • the system includes a computing device comprising a processor.
  • the processor is configured to execute a first CAD application for performing a first modification to a shared CAD model, responsive to a first request from a user; and a second, simultaneously executing CAD application for displaying the first modification to the shared CAD model, responsive to the first CAD application performing the first modification.
  • CAD computer-aided design
  • the system includes the second, simultaneously executing
  • the system includes the second, simultaneously executing CAD application is configured to display the first modification to the shared CAD model without the user requesting to save the first modification.
  • the system includes the second, simultaneously executing CAD application is configured to undo the first modification to the shared CAD model performed by the first CAD application, responsive to a second request from the user.
  • the system includes the second, simultaneously executing CAD application is configured to save the first modification to the shared CAD model performed by the first CAD application, responsive to a second request from the user.
  • FIG. 1 A is a block diagram depicting an embodiment of a network environment comprising local machines in communication with remote machines;
  • FIG. 2A is a block diagram of an embodiment of design flow between two conceptual endpoints
  • FIG. 2B is a block diagram of an embodiment of design changes to subparts of a common data model
  • FIG. 2C is a block diagram of an embodiment of identifying changes to a common data model
  • FIG. 2D is a block diagram of an embodiment of a suite of applications using a common data model
  • FIG. 2E is a sequence diagram of an embodiment of managing
  • FIG. 3 A is a comparison diagram of usage of different chapters of a common data model by a plurality of applications
  • FIGs. 3B-3E are context diagrams of embodiments of examples of interaction with different chapters of a common data model by a plurality of applications
  • FIG. 4 is a block diagram of a change instruction for a common data model
  • FIG. 5A is a flow chart of an embodiment of a method of managing synchronization of a plurality of information items of a computer-aided design data model at one of a plurality of predefined states in an object life cycle;
  • FIG. 5B is a flow chart of an embodiment of a method of managing multiple design steps of computer-aided design objects or models by a user
  • FIG. 5C is a flow chart of an embodiment of a method of managing concurrent design of computer-aided design objects or models by a plurality of users on a corresponding plurality of computing devices;
  • FIG. 6A is a flow chart of an embodiment of a method of managing consistency of a model used by a plurality of applications using a common data model
  • FIG. 6B is another flow chart of an embodiment of a method of managing consistency of a model across a plurality of active applications using a common data model
  • FIG. 6C is an activity chart of an embodiment of a method of managing undo stacks across a plurality of applications using a common data model
  • FIG. 7A is a flow chart of a first example embodiment of using a common data model with a plurality of applications
  • FIG. 7B is a flow chart of a second example embodiment of using a common data model with a plurality of applications; and [0067] FIGs. 8A-8C are screenshots of embodiments of a system for using a common data model with a plurality of applications.
  • the present disclosure is directed to, among other things, methods and systems for managing synchronization of a plurality of information items of a computer-aided design data model, managing concurrent design of computer-aided design objects, and consistent concurrent operation of a plurality of computer-aided design applications.
  • Section A describes a network environment and computing environment which may be useful for practicing embodiments described herein;
  • Section B describes embodiments of systems and methods for using and managing a common data model with a plurality of product design applications.
  • FIG. 1A shows a network 104 between the local machines 102 and the remote machines 106
  • the network 104 can be a local-area network (LAN), such as a company Intranet, a metropolitan area network (MAN), or a wide area network (WAN), such as the Internet or the World Wide Web.
  • LAN local-area network
  • MAN metropolitan area network
  • WAN wide area network
  • a network 104' (not shown) may be a private network and a network 104 may be a public network.
  • a network 104 may be a private network and a network 104' a public network.
  • networks 104 and 104' may both be private networks.
  • networks 104 and 104' may both be public networks.
  • the network 104 may be any type and/or form of network and may include any of the following: a point to point network, a broadcast network, a wide area network, a local area network, a telecommunications network, a data communication network, a computer network, an ATM (Asynchronous Transfer Mode) network, a SONET
  • the network 104 may comprise a wireless link, such as an infrared channel or satellite band.
  • the topology of the network 104 may be a bus, star, or ring network topology.
  • the network 104 may be of any such network topology as known to those ordinarily skilled in the art capable of supporting the operations described herein.
  • the network may comprise mobile telephone networks utilizing any protocol or protocols used to communicate among mobile devices, including AMPS, TDMA, CDMA, GSM, GPRS or UMTS.
  • different types of data may be transmitted via different protocols. In other embodiments, the same types of data may be transmitted via different protocols.
  • the system may include multiple, logically-grouped remote machines 106.
  • the logical group of remote machines may be referred to as a server farm 38.
  • the remote machines 106 may be geographically dispersed.
  • a server farm 38 may be administered as a single entity.
  • the server farm 38 comprises a plurality of server farms 38.
  • the remote machines 106 within each server farm 38 can be heterogeneous - one or more of the remote machines 106 can operate according to one type of operating system platform (e.g., WINDOWS NT, WINDOWS 2003, WINDOWS 2008, WINDOWS 7 and WINDOWS Server 2008 R2, all of which are manufactured by Microsoft Corp. of Redmond, Washington), while one or more of the other remote machines 106 can operate on according to another type of operating system platform (e.g., Unix or Linux).
  • operating system platform e.g., WINDOWS NT, WINDOWS 2003, WINDOWS 2008, WINDOWS 7 and WINDOWS Server 2008 R2, all of which are manufactured by Microsoft Corp. of Redmond, Washington
  • Unix or Linux e.g., Unix or Linux
  • a remote machine 106 may be a file server, application server, web server, proxy server, appliance, network appliance, gateway, application gateway, gateway server, virtualization server, deployment server, SSL VPN server, or firewall.
  • a remote machine 106 provides a remote authentication dial-in user service, and is referred to as a RADIUS server.
  • a remote machine 106 may have the capacity to function as either an application server or as a master application server.
  • a remote machine 106 is a blade server.
  • a remote machine 106 executes a virtual machine providing, to a user or client computer 102, access to a computing environment.
  • a remote machine 106 may include an Active Directory.
  • the remote machine 106 may be an application acceleration appliance.
  • the remote machine 106 may provide functionality including firewall functionality, application firewall functionality, or load balancing functionality.
  • the remote machine 106 comprises an appliance such as one of the line of appliances manufactured by the Citrix Application Networking Group, of San Jose, CA, or Silver Peak Systems, Inc., of Mountain View, CA, or of Riverbed Technology, Inc., of San Francisco, CA, or of F5 Networks, Inc., of Seattle, WA, or of Juniper Networks, Inc., of Sunnyvale, CA.
  • a remote machine 106 executes an application on behalf of a user of a local machine 102.
  • a remote machine 106 executes a virtual machine, which provides an execution session within which applications execute on behalf of a user of a local machine 102.
  • the execution session is a hosted desktop session.
  • the execution session provides access to a computing environment, which may comprise one or more of: an application, a plurality of applications, a desktop application, and a desktop session in which one or more applications may execute.
  • a local machine 102 communicates with a remote machine 106.
  • the local machine 102 communicates directly with one of the remote machines 106 in a server farm 38.
  • the local machine 102 executes a program neighborhood application to communicate with a remote machine 106 in a server farm 38.
  • the remote machine 106 provides the functionality of a master node.
  • the local machine 102 communicates with the remote machine 106 in the server farm 38 through a network 104. Over the network 104, the local machine 102 can, for example, request execution of various applications hosted by the remote machines 106a-106n in the server farm 38 and receive output of the results of the application execution for display.
  • only a master node provides the functionality required to identify and provide address information associated with a remote machine 106b hosting a requested application.
  • the remote machine 106 provides the functionality of a web server.
  • the remote machine 106a receives requests from the local machine 102, forwards the requests to a second remote machine 106b and responds to the request by the local machine 102 with a response to the request from the remote machine 106b.
  • the remote machine 106a acquires an enumeration of applications available to the local machine 102 and address information associated with a remote machine 106b hosting an application identified by the enumeration of applications.
  • the remote machine 106 presents the response to the request to the local machine 102 using a web interface.
  • the local machine 102 communicates directly with the remote machine 106 to access the identified application.
  • the local machine 102 receives output data, such as display data, generated by an execution of the identified application on the remote machine 106.
  • the remote machine 106 or a server farm 38 may be running one or more applications, such as an application providing a thin-client computing or remote display presentation application.
  • the remote machine 106 or server farm 38 executes as an application any portion of the CITRIX ACCESS SUITE by Citrix Systems, Inc., such as the METAFRAME or CITRIX PRESENTATION SERVER products, any of the following products manufactured by Citrix Systems, Inc.: CITRIX XENAPP, CITRIX XENDESKTOP, CITRIX ACCESS GATEWAY, and/or any of the MICROSOFT WINDOWS Terminal Services manufactured by the Microsoft Corporation.
  • a local machine 102 may execute, operate or otherwise provide an application, which can be any type and/or form of software, program, or executable instructions such as any type and/or form of web browser, web-based client, client-server application, a thin-client computing client, an ActiveX control, or a Java applet, or any other type and/or form of executable instructions capable of executing on local machine 102.
  • the application may be a server-based or a remote-based application executed on behalf of the local machine 102 on a remote machine 106.
  • the remote machine 106 may display output to the local machine 102 using any thin-client protocol, presentation layer protocol, or remote-display protocol, such as the Independent Computing Architecture (ICA) protocol manufactured by Citrix Systems, Inc. of Ft. Lauderdale, Florida; the Remote Desktop Protocol (RDP) manufactured by the Microsoft Corporation of Redmond, Washington; the X 11 protocol; the Virtual Network Computing (VNC) protocol, manufactured by AT&T Bell Labs; the SPICE protocol, manufactured by Qumranet, Inc., of Sunnyvale, CA, USA, and of Raanana, Israel; the Net2Display protocol, manufactured by VESA, of Milpitas, CA; the PC-over-IP protocol, manufactured by Teradici Corporation, of Burnaby, B.C.; the TCX protocol, manufactured by Wyse Technology, Inc., of San Jose, CA; the THINC protocol developed by Columbia University in the City of New York, of New York, NY; or the Virtual-D protocols manufactured by Desktone, Inc., of Chelmsford, MA.
  • ICA Independent
  • the application can use any type of protocol and it can be, for example, an HTTP client, an FTP client, an Oscar client, or a Telnet client.
  • the application comprises any type of software related to voice over Internet protocol (VoIP) communications, such as a soft IP telephone.
  • VoIP voice over Internet protocol
  • the application comprises any application related to real-time data communications, such as applications for streaming video and/or audio.
  • the application comprises any application related to computer-aided design (CAD), computer-aided manufacturing (CAM), computer-aided engineering (CAE), product life-cycle management (PLM), project management, resource management, customer relationship management (CRM), or any other application for the generation, modification, modeling, and/or analysis of data.
  • CAD computer-aided design
  • CAM computer-aided manufacturing
  • CAE computer-aided engineering
  • PLM product life-cycle management
  • CRM customer relationship management
  • the local machine 102 and remote machine 106 may be deployed as and/or executed on any type and form of computing device, such as a computer, network device or appliance capable of communicating on any type and form of network and performing the operations described herein.
  • FIGs. IB and 1C depict block diagrams of a computing device 100 useful for practicing an embodiment of the local machine 102 or a remote machine 106. As shown in FIGs. IB and 1C, each computing device 100 includes a central processing unit 121, and a main memory unit 122. As shown in FIG.
  • a computing device 100 may include a storage device 128, an installation device 116, a network interface 1 18, an I/O controller 123, display devices 124a-n, a keyboard 126 and a pointing device 127, such as a mouse.
  • the storage device 128 may include, without limitation, an operating system, software, and a client agent 120.
  • each computing device 100 may also include additional optional elements, such as a memory port 103, a bridge 170, one or more input/output devices 130a-130n (generally referred to using reference numeral 130), and a cache memory 140 in communication with the central processing unit 121.
  • the central processing unit 121 is any logic circuitry that responds to and processes instructions fetched from the main memory unit 122.
  • the central processing unit 121 is provided by a microprocessor unit, such as: those manufactured by Intel Corporation of Mountain View, California; those manufactured by Motorola Corporation of Schaumburg, Illinois; those manufactured by Transmeta Corporation of Santa Clara, California; the RS/6000 processor, those manufactured by International Business Machines of White Plains, New York; or those manufactured by Advanced Micro Devices of Sunnyvale, California.
  • the computing device 100 may be based on any of these processors, or any other processor capable of operating as described herein.
  • Main memory unit 122 may be one or more memory chips capable of storing data and allowing any storage location to be directly accessed by the microprocessor 121, such as Static random access memory (SRAM), Burst SRAM or SynchBurst SRAM
  • SRAM Static random access memory
  • Burst SRAM Burst SRAM
  • BSRAM Dynamic random access memory
  • DRAM Dynamic random access memory
  • FPM DRAM Fast Page Mode DRAM
  • EDRAM Enhanced DRAM
  • EDO DRAM Enhanced DRAM
  • EDRAM Extended Data Output RAM
  • EDO DRAM Extended Data Output DRAM
  • BEDO DRAM Enhanced DRAM
  • EDRAM synchronous DRAM
  • SDRAM JEDEC SRAM
  • PCIOO SDRAM Double Data Rate SDRAM
  • DDR SDRAM Double Data Rate SDRAM
  • ESDRAM Enhanced SDRAM
  • SLDRAM Direct Rambus DRAM
  • FRAM Ferroelectric RAM
  • the main memory 122 may be based on any of the above described memory chips, or any other available memory chips capable of operating as described herein. In the embodiment shown in FIG.
  • FIG. 1C depicts an embodiment of a computing device 100 in which the processor communicates directly with main memory 122 via a memory port 103.
  • the main memory 122 may be DRDRAM.
  • FIG. 1C depicts an embodiment in which the main processor 121
  • main processor 121 communicates directly with cache memory 140 via a secondary bus, sometimes referred to as a backside bus.
  • main processor 121 communicates with cache memory 140 using the system bus 150.
  • Cache memory 140 typically has a faster response time than main memory 122 and is typically provided by SRAM, BSRAM, or EDRAM.
  • the processor 121 communicates with various I/O devices 130 via a local system bus 150.
  • FIG. 1C depicts an embodiment of a computer 100 in which the main processor 121 communicates directly with I/O device 130b via HYPERTRANSPORT, RAPIDIO, or INFINIBAND communications technology.
  • FIG. 1C also depicts an embodiment in which local busses and direct communication are mixed: the processor 121 communicates with I/O device 130a using a local interconnect bus while communicating with I/O device 130b directly.
  • I/O devices 130a-130n may be present in the computing device 100.
  • Input devices include keyboards, mice, trackpads, trackballs, microphones, and drawing tablets.
  • Output devices include video displays, speakers, inkjet printers, laser printers, and dye-sublimation printers.
  • An I/O controller 123 may control the I/O devices.
  • the I/O controller may control one or more I/O devices such as a keyboard 126 and a pointing device 127, e.g., a mouse or optical pen.
  • an I/O device may also provide storage and/or an installation medium 1 16 for the computing device 100.
  • the computing device 100 may provide USB connections (not shown) to receive handheld USB storage devices such as the USB Flash Drive line of devices manufactured by Twintech Industry, Inc. of Los Alamitos, California.
  • the computing device 100 may support any suitable installation device 116, such as a floppy disk drive for receiving floppy disks such as 3.5-inch, 5.25-inch disks or ZIP disks, a CD-ROM drive, a CD-R/RW drive, a DVD-ROM drive, tape drives of various formats, USB device, hard-drive or any other device suitable for installing software and programs.
  • the computing device 100 may further comprise a storage device, such as one or more hard disk drives or redundant arrays of independent disks, for storing an operating system and other related software, and for storing application software programs such as any program related to the client agent 120.
  • a storage device such as one or more hard disk drives or redundant arrays of independent disks, for storing an operating system and other related software, and for storing application software programs such as any program related to the client agent 120.
  • any of the installation devices 1 16 could also be used as the storage device.
  • the operating system and the software can be run from a bootable medium, for example, a bootable CD, such as KNOPPIX, a bootable CD for GNU/Linux that is available as a GNU/Linux distribution from knoppix.net.
  • the computing device 100 may include a network interface 1 18 to interface to the network 104 through a variety of connections including, but not limited to, standard telephone lines, LAN or WAN links (e.g., 802.1 1, Tl, T3, 56kb, X.25, SNA, DECNET), broadband connections (e.g., ISDN, Frame Relay, ATM, Gigabit Ethernet, Ethernet-over-SONET), wireless connections, or some combination of any or all of the above.
  • standard telephone lines LAN or WAN links (e.g., 802.1 1, Tl, T3, 56kb, X.25, SNA, DECNET), broadband connections (e.g., ISDN, Frame Relay, ATM, Gigabit Ethernet, Ethernet-over-SONET), wireless connections, or some combination of any or all of the above.
  • LAN or WAN links e.g., 802.1 1, Tl, T3, 56kb, X.25, SNA, DECNET
  • broadband connections e.g., ISDN, Frame Relay
  • Connections can be established using a variety of communication protocols (e.g., TCP/IP, IPX, SPX, NetBIOS, Ethernet, ARCNET, SONET, SDH, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802.1 1, IEEE 802.11a, IEEE 802.1 1b, IEEE 802.1 1g, CDMA, GSM, WiMax and direct asynchronous connections).
  • the computing device 100 communicates with other computing devices 100' via any type and/or form of gateway or tunneling protocol such as Secure Socket Layer (SSL) or Transport Layer Security (TLS), or the Citrix Gateway Protocol manufactured by Citrix Systems, Inc. of Ft. Lauderdale, Florida.
  • SSL Secure Socket Layer
  • TLS Transport Layer Security
  • Citrix Gateway Protocol manufactured by Citrix Systems, Inc. of Ft. Lauderdale, Florida.
  • the network interface 118 may comprise a built-in network adapter, network interface card, PCMCIA network card, card bus network adapter, wireless network adapter, USB network adapter, modem or any other device suitable for interfacing the computing device 100 to any type of network capable of communication and performing the operations described herein.
  • the computing device 100 may comprise or be connected to multiple display devices 124a-124n, which each may be of the same or different type and/or form.
  • any of the I/O devices 130a-130n and/or the I/O controller 123 may comprise any type and/or form of suitable hardware, software, or combination of hardware and software to support, enable or provide for the connection and use of multiple display devices 124a-124n by the computing device 100.
  • the computing device 100 may include any type and/or form of video adapter, video card, driver, and/or library to interface, communicate, connect or otherwise use the display devices 124a-124n.
  • a video adapter may comprise multiple connectors to interface to multiple display devices 124a- 124n.
  • an I/O device 130 may be a bridge between the system bus 150 and an external communication bus, such as a USB bus, an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a Fire Wire bus, a Fire Wire 800 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a Super HIPPI bus, a SerialPlus bus, a SCI/LAMP bus, a FibreChannel bus, or a Serial Attached small computer system interface bus.
  • an external communication bus such as a USB bus, an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a Fire Wire bus, a Fire Wire 800 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a Super HIPPI bus, a SerialPlus bus, a SCI/LAMP bus, a FibreChannel bus, or a
  • a computing device 100 of the sort depicted in FIGs. IB and 1C typically operates under the control of operating systems, which control scheduling of tasks and access to system resources.
  • the computing device 100 can be running any operating system such as any of the versions of the MICROSOFT WINDOWS operating systems, the different releases of the Unix and Linux operating systems, any version of the MAC OS for Macintosh computers, any embedded operating system, any real-time operating system, any open source operating system, any proprietary operating system, any operating systems for mobile computing devices, or any other operating system capable of running on the computing device and performing the operations described herein.
  • Typical operating systems include, but are not limited to: WINDOWS 3.x, WINDOWS 95, WINDOWS 98, WINDOWS 2000, WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS 7, WINDOWS CE, WINDOWS XP, and WINDOWS VISTA, all of which are manufactured by Microsoft Corporation of Redmond, Washington; MAC OS, manufactured by Apple Inc., of Cupertino, California; OS/2, manufactured by International Business Machines of Armonk, New York; and Linux, a freely-available operating system distributed by Caldera Corp. of Salt Lake City, Utah, or any type and/or form of a Unix operating system, among others.
  • the computing device 100 may comprise a device of the IPOD family of devices manufactured by Apple Inc., of Cupertino, California, a PLAYSTATION 2, PLAYSTATION 3, or PERSONAL PLAYSTATION PORTABLE (PSP) device manufactured by the Sony Corporation of Tokyo, Japan, a NINTENDO DS, NINTENDO GAMEBOY, NINTENDO GAMEBOY ADVANCED or NINTENDO REVOLUTION device manufactured by Nintendo Co., Ltd., of Kyoto, Japan, or an XBOX or XBOX 360 device manufactured by the Microsoft Corporation of Redmond, Washington.
  • PSP PERSONAL PLAYSTATION PORTABLE
  • the computing device 100 may have different processors, operating systems, and input devices consistent with the device.
  • the computing device 100 is a TREO 180, 270, 600, 650, 680, 700p, 700w/wx, 750, 755p, 800w, Centro, or Pro smart phone manufactured by Palm, Inc.
  • the TREO smart phone is operated under the control of the PalmOS operating system and includes a stylus input device as well as a five-way navigator device.
  • the computing device 100 is a mobile device, such as a
  • the computing device 100 is a mobile device manufactured by Nokia of Finland, or by Sony Ericsson Mobile Communications AB of Lund, Sweden.
  • the computing device 100 is a Blackberry handheld or smart phone, such as the devices manufactured by Research In Motion Limited, including the Blackberry 7100 series, 8700 series, 7700 series, 7200 series, the Blackberry 7520, the Blackberry PEARL 8100, the 8700 series, the 8800 series, the Blackberry Storm, Blackberry Bold, Blackberry Curve 8900, and the Blackberry Pearl Flip.
  • the computing device 100 is a smart phone, Pocket PC, Pocket PC Phone, or other handheld mobile device supporting Microsoft Windows Mobile Software.
  • the computing device 100 can be any workstation, desktop computer, laptop or notebook computer, server, handheld computer, mobile telephone, any other computer, or other form of computing or telecommunications device that is capable of communication and that has sufficient processor power and memory capacity to perform the operations described herein.
  • the computing device 100 is a digital audio player.
  • the computing device 100 is a digital audio player such as the Apple IPOD, IPOD Touch, IPOD NANO, and IPOD SHUFFLE lines of devices, manufactured by Apple Inc., of Cupertino, California.
  • the digital audio player may function as both a portable media player and as a mass storage device.
  • the computing device 100 is a digital audio player such as the DigitalAudioPlayer Select MP3 players, manufactured by Samsung Electronics America, of Ridgefield Park, NJ, or the Motorola m500 or m25 Digital Audio Players, manufactured by Motorola Inc. of Schaumburg, IL.
  • the computing device 100 is a portable media player, such as the Zen Vision W, the Zen Vision series, the Zen Portable Media Center devices, or the Digital MP3 line of MP3 players, manufactured by Creative Technologies Ltd.
  • the computing device 100 is a portable media player or digital audio player supporting file formats including, but not limited to, MP3, WAV, M4A/AAC, WMA Protected AAC, AIFF, Audible audiobook, Apple Lossless audio file formats and .mov, .m4v, and .mp4 MPEG-4 (H.264/MPEG-4 AVC) video file formats.
  • a computing device 102a may request resources from a remote machine 106, while providing the functionality of a remote machine 106 to a client 102b.
  • the computing device 102a may be referred to as a client with respect to data received from the remote machine 106 (which may be referred to as a server) and the computing device 102a may be referred to as a server with respect to the second client 102b.
  • the client 102 may request resources from the remote machine 106 on behalf of a user of the client 102.
  • the computing device 100 may comprise multiple processors and may provide functionality for simultaneous execution of instructions or for simultaneous execution of one instruction on more than one piece of data.
  • the computing device 100 may comprise a parallel processor with one or more cores.
  • the computing device 100 is a shared memory parallel device, with multiple processors and/or multiple processor cores, accessing all available memory as a single global address space.
  • the computing device 100 is a distributed memory parallel device with multiple processors each accessing local memory only.
  • the computing device 100 has both some memory which is shared and some memory which can only be accessed by particular processors or subsets of processors.
  • the computing device 100 such as a multicore microprocessor, combines two or more independent processors into a single package, often a single integrated circuit (IC).
  • the computing device 100 includes a chip having a CELL BROADBAND ENGINE architecture and including a Power processor element and a plurality of synergistic processing elements, the Power processor element and the plurality of synergistic processing elements linked together by an internal high speed bus, which may be referred to as an element interconnect bus.
  • the processors provide functionality for execution of a single instruction simultaneously on multiple pieces of data (SIMD). In other embodiments, the processors provide functionality for execution of multiple instructions simultaneously on multiple pieces of data (MIMD). In still other embodiments, the processor may use any combination of SIMD and MIMD cores in a single device.
  • the computing device 100 may comprise a graphics processing unit.
  • the computing device 100 includes at least one central processing unit 121 and at least one graphics processing unit.
  • the computing device 100 includes at least one parallel processing unit and at least one graphics processing unit.
  • the computing device 100 includes at least one graphics processing unit.
  • the computing device 100 includes a plurality of processing units of any type, one of the plurality of processing units comprising a graphics processing unit.
  • a resource may be a program, an application, a document, a file, a plurality of applications, a plurality of files, an executable program file, a desktop environment, a computing environment, or other resource made available to a user of the local computing device 102.
  • the resource may be delivered to the local computing device 102 via a plurality of access methods including, but not limited to, conventional installation directly on the local computing device 102, delivery to the local computing device 102 via a method for application streaming, delivery to the local computing device 102 of output data generated by an execution of the resource on a third computing device 106b and
  • the local computing device 102 transmits output data generated by the execution of the resource to another client computing device 102b.
  • the user of the local computing device 102 would prefer an integrated desktop environment providing access to all of the resources available to the user, instead of separate desktop environments for resources provided by separate machines. For example, a user may find navigating between multiple graphical displays confusing and difficult to use productively. Or, a user may wish to use the data generated by one application provided by one machine in conjunction with another resource provided by a different machine.
  • requests for execution of a resource, windowing moves, application minimize/maximize, resizing windows, and termination of executing resources may be controlled by interacting with a remote desktop environment that integrates the display of the remote resources and of the local resources.
  • an application or other resource accessible via an integrated desktop environment - including those resources executed on the local computing device 102 and those executed on the remote computing device 106 - is shown in a single desktop environment.
  • data objects from a remote computing device 106 are integrated into a desktop environment generated by the local computing device 102.
  • the remote computing device 106 maintains the integrated desktop.
  • the local computing device 102 maintains the integrated desktop.
  • a single remote desktop environment 204 is displayed.
  • the remote desktop environment 204 is displayed as a fullscreen desktop. In other embodiments, a plurality of remote desktop environments 204 is displayed. In one of these embodiments, one or more of the remote desktop environments are displayed in non- full-screen mode on one or more display devices 124. In another of these embodiments, the remote desktop environments are displayed in full-screen mode on individual display devices. In still another of these embodiments, one or more of the remote desktop environments are displayed in full-screen mode on one or more display devices 124. B. Systems and Methods for Using and Managing a Common Data Model with a Plurality o f
  • Product design typically involves many users and designers, using many different applications, over the course of development from a design concept to a finished product.
  • FIG. 2A shown is a block diagram of an embodiment of design flow between two conceptual endpoints.
  • Different applications such as an Enterprise Resource Planning (ERP) application, a Product Lifecycle Management (PLM) application, a direct modeling computer-aided design (CAD) application or a parametric modeling CAD application to edit geometry, or a product assembly application may be used at various points in moving from design to product.
  • ERP Enterprise Resource Planning
  • PLM Product Lifecycle Management
  • CAD computer-aided design
  • CAD parametric modeling CAD application to edit geometry
  • a product assembly application may be used at various points in moving from design to product.
  • Different applications are used depending on desired functionality, and have trade offs in ease of use, power, complexity, learning curves, and the ability to display information in various formats.
  • various steps may be taken by a user of an application and modifications made to a design, such that the design proceeds through various versions (al-a3; pl-p3, el-e3; gl-g3) as it is modified.
  • the set of paths between the two conceptual end points of design and product used in the course of a design may describe an "information item", which may be a subset of data of a product or model.
  • a user of a parametric modeling CAD application 202 may modify geometry data of a model, proceeding through one or more variations (gl-g3).
  • a user of a visualization application 216 may modify graphics data of a model, proceeding through one or more variations (grl-gr3).
  • the sales representative may make annotations to the model, creating a fourth version, and export the annotated model back into a format usable by the designer, creating a fifth version.
  • the engineer may make various modifications to the model to comply with engineering standards, creating a sixth version. If the engineer then exports this standard-compliant version to a format usable by the sales representative for viewing and annotation, there could quickly be a dozen different versions of the model, requiring careful bookkeeping in the organization to ensure that models being worked on and passed around are "current".
  • One solution for consistency management is to use a common data model between the applications, such that the object does not need to be translated.
  • a further solution is to include multiple sub-parts of the object or "chapters" directed to various aspects of the product model, such as geometry data and graphics.
  • a product model using a common data model does not need to be passed between multiple applications and synchronized, because the applications can work on sub-parts of the same product model.
  • FIG. 2C is a block diagram of an embodiment of identifying and storing changes to sub-parts of a common data model.
  • each information item or aspect of the product model such as geometry or assembly information, include a set of identifiers or IDs. The IDs represent a path or set of changes to an information item performed by one or more applications.
  • an ID can be shared or modified by many applications.
  • An application may modify an information item by inserting or deleting IDs.
  • each ID or sub-part of an ID corresponds to a version of the information item, and may correspond to or be associated with data representative of the version, which may comprise a full set of the data or a delta or different set from a prior version.
  • an ID may be shared by multiple applications.
  • the parametric modeling CAD application 202 may share IDs with the visualization application 216. This may be done, for instance, because of the relationship between graphics and geometry data of the model or a dependency of the graphics data on the geometry data.
  • FIG. 2D is a block diagram of an embodiment of a suite of applications using a common data model 220.
  • the suite of applications may include some or all of: a direct modeling CAD application 200, a parametric modeling CAD application 202, an engineering analysis application 204, a configuration building application 206, a configuration modeling application 208, an assembly modeling application 210, a 2- dimensional or 2-D concepting application 212, and a visualization application 214, which may all use a common data model 220.
  • the suite may include a direct modeling CAD application 200.
  • a direct modeling CAD application 200 may comprise a program, application, service, or executable code for direct manipulations of geometric data of a model. Accordingly, engineers need not consider design intent and associations of elements. This may allow for rapid development cycles and quick creation of custom or one-off products, as well as construction of very large, highly detailed assemblies.
  • direct modeling this technique is sometimes called explicit modeling.
  • direct or explicit modeling is a geometry-based paradigm for direct manipulation of geometry, agnostic or unaware of design intent, history, and associative relationships. Direct modeling should not be confused with direct design manipulation, which refers to manually pushing, pulling, or modifying geometry as opposed to entering data into a dialog box to edit geometry, sometimes referred to as indirect design
  • Direct design manipulation and indirect, or dialog box, design manipulation thus refer to methods of inputting data in a user interface; while direct or explicit modeling and parametric modeling thus refer to a modeling paradigm.
  • the suite may include a parametric modeling CAD application 202.
  • a direct modeling CAD application 200 may comprise a program, application, service, or executable code for feature-based manipulations of geometric data of a model.
  • parametric modeling sometimes referred to as associative parametric modeling, feature-based modeling, or history-based modeling, geometry is created through a two-step process.
  • the user defines geometry construction recipes through the use of feature constructs, including extrusions, holes, cuts, fillets, chamfers, rounds, and others.
  • the parametric geometry engine interprets these recipes and creates the geometry of the model for display by a modeling or display engine.
  • These recipes may sometimes be referred to as feature histories, and may comprise a sequence of the different combinations of features utilized in modeling a final modeled object as the modeled object is designed.
  • feature histories may comprise a sequence of the different combinations of features utilized in modeling a final modeled object as the modeled object is designed.
  • the suite may include an engineering analysis application 204.
  • an engineering analysis application 200 may comprise a program, application, service, or executable code for performing analysis on a model, including linear static, modal, buckling, contact, and steady state thermal analysis types, mapped to underlying CAD geometry.
  • a user of engineering analysis application 200 may determine a mass or center of gravity of a three dimensional model.
  • the suite may include a configuration building application 206.
  • a configuration building application 206 may comprise a program, application, service, or executable code for creating, interpreting and/or modifying project proposals, concept and market requirements, bill-of-materials (BOM) changes, design feedback, customization options, variant selection, or other product configuration information.
  • BOM bill-of-materials
  • the configuration building application 206 may enable component objects to be combined into simple or elaborate structures for producing an end product.
  • a configuration building application 206 may comprise part of a product development system (PDS).
  • PDS product development system
  • the suite may include a configuration modeling application 208.
  • a configuration modeling application 208 may comprise a program, application, service, or executable code for performing visualization and mock-up of a custom configuration of a product design.
  • configuration modeling application 208 may comprise functionality for outputting a bill-of-materials, cost proposal, documentation, or other information relating to a selected configuration of a product.
  • the suite may include an assembly modeling application 208.
  • an assembly modeling application 208 may comprise a program, application, service, or executable code for visualizing and analyzing a virtual assembly of a plurality of modeled objects or components of a product.
  • a user may use an assembly modeling application 208 to investigate how various parts of a product, such as the back plate, face plate, keypad, screen, antenna, battery, and internal circuit boards of a cellular phone will fit together.
  • the user may use the assembly modeling application with multiple CAD files that represent individual components within a product.
  • the assembly modeling application may present a reduced subset of the data of a CAD model to a user, for speed and efficiency of processing, such as a shell or outer surface of the model.
  • the assembly modeling application may utilize absolute or relative positioning information for parts of the product model, or may position components responsive to constraints. For example, in one such embodiment, a screw hole on a faceplate may be constrained to be adjacent to and axially aligned with a corresponding tapped hole on a backplate.
  • the suite may include a 2-dimensional (referred to variously as 2-D or 2D) concepting application 212.
  • a 2-dimensional concepting application 212 may comprise a program, application, service, or executable code for the creation, analysis and modification of 2-dimensional designs or sketches.
  • a user may use a 2-dimensional concepting application 212 to design a face of a product.
  • the resulting 2-dimensional model may then be brought into a 3 -dimensional modeler such as direct modeling CAD application 200 or parametric modeling CAD application 202 and extruded or pulled into three dimensions.
  • the suite may include a visualization application 214.
  • a visualization application 214 may comprise a program, application, service, or executable code for visualizing, annotating and manipulating a CAD model.
  • visualization application 214 may allow a manager to view parts of a model created by an electrical engineer in an electrical CAD (ECAD) application, and those created by a mechanical engineer in a mechanical CAD (MCAD) application, regardless of the different capabilities of these applications.
  • Visualization applications may provide functionality for viewing large, complex assemblies and models. Because the visualization application is not performing parametric regeneration, processing requirements are reduced, and accordingly larger and more complex models may be displayed and manipulated.
  • visualization application 214 may comprise functionality for displaying a dynamic or animated model.
  • each application 200-214 in the suite may utilize a common data model 220.
  • the common data model 220 may comprise one or more information items, as discussed above, including 2D and 3D geometry data; analysis data; appearance data including material selection, texture and paint options; annotation data; and component placement data.
  • these one or more information items may be referred to as chapters, and may be presented to or modified by different applications on a chapter basis.
  • Synchronizing modifications to a common data model object as it is concurrently modified by a plurality of users in different applications may be crucial to managing development of a product design. As discussed above, typically, detailed bookkeeping is required to ensure that users are working on a current model. This is inefficient, and errors may result in versions being overlooked. However, it may be observed that during development, a product design passes through several distinct phases from conceptual design to end product. These phases may include design, prototyping, analyzing, redesigning, alpha or beta testing, component manufacturing, and assembling. During each phase, multiple users may make different variations to the model. However, typically each phase must be completed before the next phase may be begun. For example, a prototype cannot be constructed until at least a first stage of designing has been completed.
  • a model comprises a plurality of information items (A and B).
  • information item A may be consistent with information item B, such as i and j, k and 1, and m and n. These may be referred to as equivalence lines, which represent the compatible set of information item versions.
  • FIG. 2F shown is a sequence diagram of an example of an embodiment of managing synchronization of a plurality of information items in a common data model.
  • the model is in a consistent state at a first time with geometry i and graphics j on a first equivalence line.
  • a user makes a modification to the geometry data, moving to geometry k, which is no longer consistent or compatible with graphics j.
  • the user makes another modification to the geometry data, moving to geometry 1.
  • Responsive to either the modification to the geometry data or an indication from the user that the geometry has reached a predetermined stage matching a second equivalence line either the system, the user, or another user updates or generates new graphics data m, consistent with geometry 1.
  • the model is again in a consistent state on the second equivalence line.
  • one or more applications of the application suite may create lines of equivalence.
  • a direct or parametric modeling CAD application may modify geometry data and create a new line of equivalence. Responsive to the new line of equivalence, other applications such as product visualization application or engineering analysis application may update or regenerate graphics or analysis data according to the geometry data at the new line of equivalence, to reach a consistent state in the model.
  • lines of equivalence may be created by the model reaching a predetermined state, such as beta testing or prototyping, or responsive to a command from a user, such as a command to synchronize the chapters of the common data model object. In other embodiments, lines of equivalence may be created periodically, responsive to saving or exiting a program, or responsive to a substantive change to the model.
  • FIG. 2G is a block diagram of a framework for managing use
  • the framework may comprise one or more of a data service 230, an ID service 232, a dictionary service 234, a synchronization and notification service 236, data chapters 238, and a dictionary 240, and communicate with one or more product development applications 200- 214 of the product development suite.
  • a data service 230 may comprise a library, application programming interface (API), service, logic, or executable code for translating and managing access to one or more chapters 238 of a common data model object by one or more applications or other services.
  • data service may manage, create, or modify headers or data of the common data model associated with an object.
  • each chapter may include a header or "table of contents," which may comprise a relational database, file, XML file, registry, library, or list of IDs for maintaining the consistency of the chapter and object.
  • each chapter may include a body with chapter-specific data of the object, such as geometry data or graphics data.
  • ID service 232 may comprise a library, API, service, logic, or executable code for creating and managing IDs. As discussed above, in some embodiments, applications may inform other applications of modifications to a chapter or object by creating or modifying IDs in the ID set of the object. In one embodiment, ID service 232 comprises an API for creating and modifying these IDs.
  • dictionary service 234 may comprise a library, API, service, logic, or executable code for managing dictionary 240, and information items and lines of equivalence.
  • dictionary service 234 may comprise an API for an extensible common dictionary, and may manage definitions of information- item types, such as graphics and geometry, and definitions of applications that create lines of equivalence. For example, as discussed above, a parametric CAD modeling application may modify features of an object, moving the object into a new state or version. This may create a new line of equivalence, and may instruct or direct other applications to generate corresponding and consistent or equivalent data for other information items.
  • chapters 238 and dictionary 240 may comprise libraries, databases, flat files, registries, or any other type and form of data stored in a storage device on or accessible by the computing device, such as a centralized common storage, cloud-based storage, or other network storage.
  • a storage device on or accessible by the computing device, such as a centralized common storage, cloud-based storage, or other network storage.
  • one or more chapters 238 may comprise an object, and may themselves include a header or table of contents of identifiers and a body of information items or data.
  • Dictionary 240 may comprise an extensible common dictionary, and may include definitions of information- item types, such as graphics and geometry, and definitions of applications that create lines of equivalence.
  • FIG. 3 A is a comparison diagram of usage of different chapters of a common data model by a plurality of applications.
  • different common data model objects 300 such as parts, assemblies, drawings, 2-D concepting drawings, and visualization models may include different common data model chapters 302.
  • 2-D concepting drawing may utilize both geometry data and annotation data, but analysis data may be meaningless without a third dimension to describe solids, rather than planes.
  • a CDM part object may include geometry, analysis, appearance, and annotation chapters.
  • a CDM assembly object may further include a component placement chapter. Although only five different chapters 302 are shown in the example, in many embodiments and as an advantage of the extensible dictionary discussed above, further chapters of information items may be included in any object.
  • different applications 200-214 may read different chapters 302 of different objects 300.
  • it may be meaningless for an engineering analysis application 204 to analyze engineering data of a two- dimensional surface.
  • a 2-D concepting application 212 may lack sufficient tools to properly interact with three-dimensional models, assemblies, drawings, and parts.
  • FIG. 3A may be displayed in an alternate view, on an object by object basis.
  • FIGs. 3B-3E are context diagrams of embodiments of examples of interaction with different chapters of a common data model by a plurality of applications.
  • each of FIGs. 3B-3E illustrate different applications operating on the same CDM object 300.
  • FIG. 3B depicts a direct modeling application 200, a parametric modeling application 202, an engineering analysis application 204, a configuration building application 206, a configuration modeling application 208, an assembly modeling application
  • FIG. 3C depicts applications interacting with a common data model part object
  • FIG. 3D depicts applications interacting with a common data model drawing object
  • FIG. 3E depicts applications interacting with a common data model concepting drawing object.
  • the change instruction may include identifiers of one or more of a container 400; namespace 402; production information 404; branch 406; product item version 408; transaction 410; scope 412; and consistency flag 414.
  • each information item or aspect of the product model such as geometry or assembly information, may include a set of identifiers or IDs.
  • the IDs represent a path or set of changes to an information item performed by one or more applications.
  • a change instruction or ID can be shared or modified by many applications. An application may modify an information item by inserting or deleting IDs.
  • a change instruction may include a container ID 400.
  • Container ID 400 may comprise an identifier, address, pointer, or similar representation identifying a physical container of an information item, such as a folder or storage location.
  • a change instruction may include a namespace 402.
  • Namespace 402 may comprise an identifier, string, or other similar representation of a domain under which the information item is considered unique.
  • a change instruction may include an identifier of product information (PI) 404.
  • Product information 404 may comprise a string, identifier, or other data representation of the business name or intent of the information item.
  • a change instruction may include an identifier of a branch 406.
  • Branch 406 may comprise a string, identifier, index, pointer, address, parent- child relationship identifier, or other data format for a descriptor of a variant of an information item.
  • a change instruction may comprise a product item version
  • a PIV identifier 408 may comprise a string, identifier, or other data representation identifying a specific version of the information item, as discussed above.
  • a change instruction may comprise a transaction identifier
  • Transaction identifier 410 may identify one or more actions that caused the change instruction to be created.
  • the transaction identifier 410 may comprise a string, index, list, vector, or data file, and may include one or more of a time that the transaction occurred, an application that performed the transaction or created the change instruction, and a design intent of a user in performing the transaction.
  • design intent may be set explicitly by the user or may be determined implicitly, such as in reference to one or more constraints created by the user.
  • a change instruction may comprise a scope identifier 412.
  • a scope identifier 412 may comprise an indicator, string, flag, bitmask, or other data representation to indicate whether the change instruction is internal, shared, or external.
  • an change instruction may be shared with other computing devices and/or other CAD applications on the same other computing devices.
  • another computing device serving as an intermediary, server, or central repository may be used for synchronizing changes to information items. Notifications of changes through the creation of change instructions may be transmitted to this intermediary, and other CAD applications and/or computing devices may request information about the changes. In one embodiment, such requests may be made responsive to a notification transmitted to the other CAD applications from a notification service executing on the server.
  • the scope identifier 412 may be set to internal to allow a user to try different design changes, while retaining an ability to recover the original design.
  • a user may modify one or many CAD objects of a plurality of interrelated CAD objects in a model, such that a modification made to one CAD object causes the system to regenerate or recalculate other, dependent objects.
  • Traditional undo support is typically not available in such embodiments, because of the regeneration or recalculation: an undo may only undo the last step of such regeneration, rather than the initial modification that triggered the regeneration.
  • interrelated CAD objects in many embodiments, these objects may be referred to as interdependent, associated, regeneratively associated, related, dependent, or by various other terms without limitation to indicate that a modification made to one CAD object causes the system to regenerate or recalculate other, dependent objects.
  • the same system for notifying other CAD applications of modifications to a model may be used for retaining a history of changes internally in the application.
  • the CAD application may record an internal change instruction representative of the modification.
  • the CAD application may first make a temporary copy of the beginning state of the model.
  • each internal change instruction may represent a delta or difference from a previous modification, and the sum of all of the internal change instructions may represent a modification from a first, consistent state of the model on a first line of equivalence (e.g. the temporary copy) to a second state of the model on a second line of equivalence.
  • the change instructions While the change instructions are internal, the user may step forward or back through them, unapplying and applying one or more of the intermediate modifications to return to any intermediate, but consistent, state of design. Once the user accepts design changes as final, in one
  • a change instruction may comprise a consistency flag
  • Consistency flag 414 may comprise a flag, string, bitmask, value, predetermined bit, or other data representative to indicate whether shared IDs of the chapter or object are in a consistent state or an inconsistent state.
  • an application may create a change instruction to indicate that a new line of equivalence has been created, and the change instruction may include a flag indicating that the object or model is in an inconsistent state. Once all other information items have been updated to a consistent state, in some embodiments, the flag may be set to indicate that the object or model is in a consistent state. In still other embodiments, and referring briefly back to FIG.
  • an application may create a change instruction with a consistency flag set to indicate an inconsistent state, not on a line of equivalence, such as geometry item k. Other applications need not update or regenerate other information items responsive to this change instruction.
  • the application creates another change instruction with a consistency flag set to indicate a consistent state, such as geometry item m, other applications may then regenerate other information items, such as graphics item n to reach the new line of equivalence.
  • a first user of a first application executed by a processor of a first computing device may update a first information item of a shared CAD data model from a first state to a second state.
  • the first state may correspond to a first state in an object life cycle.
  • the first state may correspond to an initial phase of design, prototyping, testing, or manufacturing, or any other phase of product development, or may correspond to a subset of one of these phases or any other phase of product development.
  • updating an information item may comprise modifying aspects of the information item, such as modifying geometry data or graphics data of the shared CAD data model.
  • updating an information item may comprise creating a new portion of a model.
  • updating the first information item initiates the creation of a change instruction or ID, as discussed above.
  • Said change instruction may comprise instructions to allow a CAD application or other application to update an information item to an equivalent or corresponding state to the updated first information item.
  • the change instruction may be transmitted to another computing device, such as a second computing device used by a second user with a second CAD application, while in other embodiments, the change instruction may be transmitted to a server, intermediary, or central repository, referred to generally as an intermediary.
  • Said intermediary may include a notification service for notifying one or more other users of one or more other computing devices that the first user's actions have created a change instruction.
  • a second user or second computing device may request the change instruction from the intermediary.
  • the change instruction may comprise a flag set to a predetermined value to indicate that the information item is now in an inconsistent state, or a state not corresponding to a line of equivalence, as discussed above.
  • receipt of the change instruction with the flag set to indicate the information item is in an inconsistent state may not cause other computing devices or users to update other information items.
  • the first user may update the first information item from the second state to a third state.
  • the third state may correspond to a second state in the object life cycle, such as an initial phase of design, prototyping, testing, or manufacturing, or any other phase of product development, or may correspond to a subset of one of these phases or any other phase of product development.
  • updating the first information item to the third state initiates the creation of a second change instruction or ID, as discussed above.
  • the second change instruction may be transmitted to other computing devices or to an intermediary, which may notify other computing devices of the change instruction and provide second the change instruction to said other computing devices, upon request.
  • the second change instruction may comprise a flag set to a second predetermined value to indicate that the information item is now in a consistent state, or a state corresponding to a new line of equivalence, as discussed above.
  • receipt of the second change instruction with the flag set to indicate the information item is in a consistent state may cause other computing devices or users to update other information items.
  • a second user of a second CAD application of a second computing device may update a second information item of the shared CAD data model from a fourth state corresponding to the first state, to a fifth state corresponding to the third state.
  • updating the second information item in this way may allow the second information item to bypass a state corresponding to the second state.
  • the second user may update the second information item responsive to receipt of a change instruction with a flag set to indicate that the first information item is in a consistent state, and responsive to instructions in the change instruction, as discussed above.
  • this method may allow a user to track changes to a CAD model that includes dependent regeneration of features, and undo through multiple user commands, regardless of the number of dependent features regenerated by the CAD application. This may also allow a user to attempt "what-if ' scenarios, trying different modifications to a model and being able to return to any step in said modifications without having to save a copy of the model prior to each modification. As mentioned above, regular methods of undoing changes may not work, because in response to a single command from a user, a CAD application may regenerate or recalculate dozens of dependent features.
  • a single undo may only be able to undo the last recalculation. Even with a system that stores multiple undos, it may be unclear to a user that they have to undo a dozen times to reach the modification that they performed, rather than recalculated modifications by the CAD application.
  • a user may modify a CAD object using a CAD application. If this is the first modification to the CAD object since a previous finalization, at step 512, the CAD application may store a starting state of the CAD object or model. At step 514, the CAD application may create and store a change instruction representative of the modification. Steps 510-514 may be repeated iteratively.
  • the user may request the CAD application to return to an intermediate state of the CAD model. Responsive to such request, at step 518, the CAD application may load the stored starting state and execute the one or more change instructions to bring the CAD model to the requested intermediate state.
  • Steps 510-518 may then be repeated to explore different branches of modifications to the CAD model.
  • the user may decide to keep the current state of the CAD object and issue a request to the CAD application to finalize the modifications.
  • the CAD application may communicate the change instructions to other systems at step 522, and at step 524, the CAD application may discard the stored starting state of the CAD model.
  • a user of a CAD application executing on a first computing device may modify a first CAD object of a plurality of interrelated CAD objects of a CAD model.
  • CAD objects of a CAD model are interrelated where a modification to one object causes the CAD application to recalculate or regenerate one or more other CAD objects in the CAD model.
  • the CAD application may regenerate data of a second CAD object of the plurality of interrelated objects, the second CAD object dependent on the first CAD object.
  • the user may modify one or more information items of the CAD object, including geometry data, annotation data, assembly data, concepting data, material data, analysis data, appearance data, or any other type and form of data of the CAD object or model.
  • the CAD application may store a starting state or first state of the model.
  • the starting state of the model may comprise data of the plurality of interrelated CAD objects of the CAD model prior to the modification by the user. Although referred to as a starting state or first state, one of skill in the art may appreciate that the starting state or first state may refer simply to a state prior to executing one or more modifications to the model.
  • the CAD application may store a change instruction
  • the change instruction may represent only the modification to the first CAD object by the user, regardless of the number of other objects that are dependent on the first CAD object and regenerated or recalculated by the CAD application. This may be done because the additional information may not be needed: if the CAD application executes the change instruction, it may automatically regenerate or recalculate data of the other dependent objects. Thus, the instruction to change the first object contains all information necessary to modify the model to a regenerated state after the user's modification.
  • the change instruction may include a flag, string, or bitmask set to indicate that the change instruction is an internal change instruction.
  • the CAD application may not communicate the change instruction to an intermediary or another computing device or CAD application. This may be done to prevent needless recalculation and regeneration by other CAD applications for modifications and "what-if ' branches that the user decides to discard.
  • Steps 510-514 may be repeated one or more times, generating additional change instructions, and modifying the same CAD object or a different CAD object.
  • each change instruction represents a difference or delta from a previous state of the CAD model or object.
  • a first change instruction may represent an extrusion of a face made by a user.
  • a second change instruction may then represent a chamfer of the extruded face.
  • a third change instruction may then represent a notch or cut into the chamfered surface of the extruded face. Accordingly, each instruction may be based on the result of a previous change instruction.
  • each change instruction in order may result in following the steps made by the user to bring the CAD model from the starting state to a present state.
  • the user may request to return to an intermediate state of the CAD model. This may be done, for example, because the user decides not to keep one or more recent modifications to the CAD objects.
  • the user may select through a user interface to return to the intermediate state.
  • the user interface may present a chain, tree, branching chain or other depiction of the various change instructions, allowing a user to select any intermediate state of the CAD model to return to.
  • the CAD application may load the stored starting state and execute one or more change instructions leading from the starting state in the chain or tree to the requested intermediate state. Executing each change instruction may comprise performing, by the CAD application, the modification made by the user to a CAD object and regenerating or recalculating dependent CAD objects of the plurality of interrelated CAD objects of the model.
  • Steps 510-518 may be repeated iteratively in many embodiments.
  • the user may request to finalize modifications to the CAD model at step 520.
  • finalizing as used here, this term means finalizing modifications made to the model since storing the starting state.
  • the user may return to the model to make more modifications at a future time, at which point a new "starting state" may be stored.
  • the CAD application may communicate one or more change instructions leading from the starting state in the chain or tree to the present state of the CAD model to one or more other CAD applications, computing devices, or a server, intermediary, or central repository of change instructions.
  • communicating the one or more change instructions may comprise modifying a flag, bitmask, or string of each change instruction identifying the change instruction as an internal change instruction to identify the change instruction as shared or external.
  • the one or more other CAD applications, or computing devices may execute the change instructions and regenerate or recalculate data to modify information items of the shared CAD model to a consistent state.
  • the change instructions may be communicated to another application, such as an engineering analysis application, which may execute the change instructions and recalculate engineering data of the model, such as the location of a center of mass.
  • communicating the change instructions may comprise sending a notification to other systems that a new change instruction exists, and providing or transmitting the change instruction on request by the other systems. Such notification and transmittal may be performed by an intermediary or central repository, as discussed above.
  • the CAD application may discard the stored starting state of the model.
  • the CAD application may discard one or more change instructions, such as change instructions of alternate branches or design states past the finalized intermediate state.
  • Change instructions may also be used between a plurality of users working concurrently on a model to allow collaboration. Furthermore, in some embodiments, they may be used to reduce the amount of regeneration needed during designing of a model. For example, in one such embodiment, a first user may be working on a first portion of a design, such as an engine model for a truck. A second user may be working on a second portion of the design, such as a passenger compartment layout. In systems that require constant synchronization, many updates would be sent between the two users' CAD applications regardless of the fact that they may not be concerned with those updates at the moment.
  • FIG. 5C shown is a flow chart of an embodiment of a method of managing concurrent design of computer-aided design objects or models by a plurality of users on a corresponding plurality of computing devices.
  • a first user of a first CAD application executed by a processor of a first computing device may modify a first portion of a shared CAD object.
  • a second user of a second CAD application may modify a second portion of the shared CAD object.
  • the second user may receive a change instruction or notification of a change instruction representative of the first user's modification to the first portion of the shared CAD object.
  • the second user may store the change instruction or notification without executing the change instruction or modifying a local copy or a portion of the shared CAD object that the second user is working on.
  • the second user may execute the change instruction to modify the local copy or the portion of the shared CAD object that the second user is working on.
  • a first user may modify a first portion of a shared CAD object.
  • a first portion may refer to a first section or first entity or plurality of entities of the CAD object, such as geometry data of the passenger compartment discussed above.
  • the first portion may refer to a chapter or information item of the CAD object, such as geometry data or assembly data.
  • the shared CAD object may comprise a plurality of interrelated models, as discussed above.
  • modifying the first portion of the shared CAD object may comprise modifying a first set of one or more models of the shared CAD object.
  • the shared CAD object may comprise a plurality of chapters or information items.
  • modifying a first portion of the shared CAD object may comprise modifying a first chapter or information item of the plurality of chapters or information items.
  • a second user may modify a second portion of the shared CAD object. Similar to step 530, in some embodiments, the second portion may refer to a different section of the same information item of the CAD object as the first user had modified, while in other embodiments, the second portion may refer to a second chapter or information item of the CAD object. In another embodiment, modifying the second portion of the shared CAD object may comprise modifying a second set of one or more models of the shared CAD object. In another embodiment, modifying a second portion of the shared CAD object may comprise modifying a second chapter or information item of a plurality of chapters or information items of the shared CAD object.
  • the second user may receive a change instruction or a notification of a change instruction representative of the first user's modification.
  • the second user may receive a notification of a change instruction and may request the change instruction to be transmitted to the second CAD application used by the second user.
  • the first computing device and second computing device need not be simultaneously online to communicate the change instruction from the first computing device to the second computing device. Rather, the first computing device may send a change instruction to the server and the server may notify and provide the change instruction, upon request, to the second computing device.
  • the second user may store the change instruction without modifying the shared CAD object, a second information item or chapter of the shared CAD object, or a local copy of the shared CAD object, displayed to the second user. This may be done, in some embodiments, responsive to a determination by the second CAD application that the modification to the first portion of the CAD object does not affect the second portion of the CAD object. For example, in one such embodiment, the second portion of the CAD object may have no dependencies on the first portion of the CAD object. In another embodiment, the second user may store the change instruction for execution at a later time. This may be done, for example, if the second user is making design modifications or attempting "what-if ' branches as discussed above with regard to FIG. 5B.
  • the second user may execute the change instruction to modify the shared CAD object, a second chapter or information item of the shared CAD object, or a local copy of the shared CAD object displayed to the second user.
  • the second user may combine the modifications to the first portion of the shared CAD object represented in the change instruction with the modifications to the second portion of the shared CAD object.
  • the second user may override or reject a first one or more instructions in the change instruction, and execute the remaining non-overridden instructions in the change instruction. This may be done to allow a reviewing process of the first user's work by the second user.
  • change instructions may also be used by a single user across a plurality of applications or by a plurality of users working concurrently to attempt and explore different modifications of a design.
  • a user may work on a model in a CAD modeling program, switch to an engineering analysis program and make measurements, and then based on the results of those measurements, make modifications in an CAD assembly program.
  • users of these systems would have to save the model at each step, and export or import the model into a different format for each new application. If the user never changes his or mind or needs to return to an earlier state, this can work, despite its inefficiencies.
  • one aspect of the present disclosure includes a method and system for managing concurrent use of a common data model object in a plurality of running applications.
  • change instructions are passed to inactive applications on the same computing device, similar to the methods of passing change instructions to other computing devices.
  • inactive applications automatically execute the change instructions in the background.
  • inactive applications execute one or more change instructions generated by one or more previously active applications upon becoming active. For example, a user may make modifications in a first application, and change instructions may be placed in a buffer or storage. The user may switch to a second application, such that the second application is the active application. The second, active application may then execute change instructions placed in the buffer since the last it was active.
  • the user may use the second, active application to make more modifications to the model, generating additional change instructions.
  • the user may then switch to a third application, such that the third application is the active application.
  • the third application may then execute both the change instructions from the first application and the change instructions from the second application, as well as any other change instructions generated for the model since the last time the third application was the active application. This may be done upon activation of the application, such that the user is unaware that the application was using an inconsistent or obsolete model at any point.
  • FIG. 6A illustrated is a flow chart of an embodiment of a method of managing consistency of a model used by a plurality of applications using a common data model.
  • a user may launch a first CAD application and open a model.
  • the first CAD application may store a starting state of a model, as discussed above in connection with FIG. 5B.
  • the user may modify the model, causing the first CAD application to create a first one or more change instructions.
  • the user may launch a second CAD application and open the model.
  • the second CAD application may load the stored starting state of the model and the first one or more change instructions, and execute the first one or more change instructions.
  • the user may modify the model, causing the second CAD application to create a second one or more change instructions.
  • the user may launch a third CAD application and open the model.
  • the third CAD application may load the stored starting state of the model, the first one or more change instructions, and the second one or more change instructions, and execute the first one or more change instructions and the second one or more change instructions.
  • the user may launch a first CAD application and open a model.
  • launching the first CAD application may comprise launching the CAD application from a desktop, start menu, or other user interface, while in other embodiments, launching the first CAD application may comprise opening a CAD model that has a file type association (FTA) to the first CAD application.
  • launching the first CAD application may comprise launching an application launcher, discussed in more detail below in connection with FIGs. 8A-8C.
  • the CAD model may include a file type association that causes an operating system to launch the application launcher.
  • the first CAD application may store a starting state of the model.
  • the application launcher may store a starting state of the model.
  • the stored starting state of the model may include a timestamp or other identifier, or an indication of a line of equivalence or consistent state of the model.
  • the user may modify the model.
  • the user may modify one or more chapters or information items of the model.
  • modifying the model, chapter, or information item may cause the first CAD application to create a first one or more change instructions representative of the modification or operation.
  • the first CAD application may store the one or more change instructions in a temporary folder associated with the model, in a central storage repository, as part of the model, as part of the stored starting state of the model, or in any other format or location such that a second CAD application opening the model may be able to locate both the model, the stored starting state, and the one or more change instructions.
  • the user may launch a second CAD application and open the model.
  • the user may launch the second CAD application without quitting or ceasing execution of the first CAD application.
  • the user may modify the model with the second CAD application.
  • the user may modify one or more chapters or information items of the model.
  • modifying the model, chapter, or information item may cause the second CAD application to create a second one or more change instructions representative of the modification or operation.
  • the second one or more change instructions may be stored with the model, in a temporary location, or in other various locations or formats such that other applications may easily locate the change instructions.
  • the user may launch a third CAD application and open the model.
  • the user may launch the third CAD application without quitting or ceasing execution of the first or second CAD application.
  • the user may quit or cease execution of either other application.
  • the third CAD application may load the stored starting state of the model, the first one or more change instructions, and the second one or more change instructions.
  • the third CAD application may, in some embodiments, execute either or both of the first one or more change instructions and the second one or more change instructions on the stored starting state of the model to achieve a state consistent with the modifications to the model by the user in the first and/or second CAD application.
  • the third CAD application may not execute the respective first and/or second one or more change instructions.
  • FIG. 6B Shown in FIG. 6B is another flow chart of an embodiment of a method of managing consistency of a model across a plurality of active applications using a common data model.
  • a user simultaneously or concurrently using a plurality of CAD applications with a common data model may make a first CAD application inactive, or conversely make another CAD application active.
  • the CAD application may identify a current consistent state.
  • step 622 may be skipped.
  • the user may modify the model in one or more additional applications, causing the one or more additional applications to create one or more change instructions.
  • the user may make the first CAD application active. If step 622 was not skipped, at step 628, responsive to becoming active, the first CAD application may execute one or more change instructions created since the identified first consistent state. If step 622 was skipped, then at step 630, responsive to becoming active, the first CAD application may execute one or more change instructions associated with the CAD object. [0179] Still referring to FIG. 6B and in more detail, at step 620, a user of a first CAD application, executed by a processor of a computing device, and viewing or editing a CAD model in a common data model may make the first CAD application inactive.
  • the user may launch a second CAD application to make the first CAD application inactive, while in other embodiments, the user may switch to an executing but inactive CAD application.
  • the second CAD application or other CAD application (referred to generally as the second CAD application) may also be viewing or editing the same CAD model in the common data model.
  • the second CAD application may read, modify, or operate on the same chapter of the CAD model, while in other embodiments, the second CAD application may read, modify, or operate on a different chapter of the CAD model.
  • step 622 in some embodiments, responsive to becoming inactive, the first
  • CAD application may identify a first consistent state of the CAD model. This may be done to reduce the number of change instructions to be executed later. For example, as discussed above in the method of FIG. 6A, a starting state of the model may be stored when an editing session is begun, and change instructions may be created for each modification in one or more CAD applications. Many instructions may be created during the course of the session. Accordingly, to reduce the need to re-execute every change instruction when simply switching between an inactive and active application, in some embodiments, when becoming inactive, an application may remember a consistent state of the model or a point in the list of change instructions that the model in memory of the application has been updated to.
  • step 622 may be skipped and when becoming active, the application may reload the starting state of the model and execute one or more change instructions. While this may require more processing, programming of the application may be simpler. Additionally, this embodiment may allow for alternate design branches and undo stacks across a plurality of applications, as discussed in more detail below.
  • the user may modify the model in one or more additional CAD applications. This may cause the one or more additional CAD applications to generate one or more change instructions, as discussed above.
  • the user may make the first CAD application active. This may be done in some embodiments by selecting the CAD application from a switcher or launcher, as discussed in more detail below, by selecting the CAD application from a taskbar or user interface provided by an operating system, or by quitting the one or more additional CAD applications without quitting the first CAD application.
  • step 628 in one embodiment if the CAD application had identified at step
  • the CAD application may load and execute one or more change instructions created subsequent to the first consistent state or additional instructions created since the application became inactive.
  • step 630 responsive to becoming active, the first
  • CAD application may load a starting state of the model and the one or more change instructions and execute said one or more change instructions. This may be similar to the method illustrated in FIG. 6A.
  • change instructions may be used to return to prior states of the object or model, and thus may be used to manage undo stacks across a plurality of applications using a common data model.
  • undoing an operating in an active common data model application may cause undoing all of the related operations performed subsequently in inactive common data model applications automatically.
  • the user may undo the last step in the direct modeling CAD application, and at step 644 the user may redo the last step. In many embodiments, this may be similar to normal uses of undo stacks within an application. However, as discussed above, undoing and redoing the steps may trigger change instructions to be sent to the other applications, such that if the user switches to either application, they will see the model without or with the 4 th operation, respectively.
  • the user may switch to the first, parametric modeling CAD application and undo the first operation (1).
  • undoing the first operation may trigger a change instruction being sent to the other applications.
  • operations (3) and (4) were modifications to geometry dependent on the extrude of operation (1), they may be also undone by undoing the first operation.
  • undoing an operation in an active common data model application will undo any related operations done subsequently in inactive common data model applications. Operations are related if they operate on the same chapter or information item. Accordingly, undoing operation (1), which modified the geometry chapter may cause undoing operations (3) and (4), which also modify the geometry chapter, but not operation (2), which modified the analysis chapter.
  • undoing the first operation may trigger a change instruction being communicated to other CAD applications.
  • the user may redo the first operation (1) in either the first or third applications.
  • an application may include a chain or branching tree of change instructions from a first stored state of a model. Accordingly, even if the user has stepped back to an intermediate state on the chain or tree, the user can easily return to any other state, including prior or subsequent states on the chain, or on different branches of the tree, and the common data model application may automatically execute and recalculate change instructions as necessary. Accordingly, in either application, the user may redo the first operation (1) and cause automatic execution of operations (3) and (4) and regeneration of features and entities of the geometry chapter.
  • the user may switch to an engineering analysis program.
  • the program may utilize the same common data model, eliminating the need to save, export, and open the model in a different format.
  • the engineering analysis program may operate on the same model, reading the geometry chapter and modifying the analysis chapter, for example.
  • the user may perform a structural analysis on the model. If the analysis is satisfactory, the user may save the model, completing his or her task.
  • the user may switch back to the parametric modeler and modify or create further geometry of the model. The user may then iteratively perform further analysis and modification until the model or analysis is satisfactory.
  • FIG. 7B illustrated is a flow chart of a second example embodiment of using a common data model with a plurality of applications.
  • the user's day may start with the user receiving a model from an engineering designer.
  • the user may launch an engineering analysis application and open the model.
  • the user may perform structural analysis on the model directly and, if the analysis is satisfactory, save the model and return the model to the engineering designer.
  • the user may wish to simplify the model prior to performing structural analysis. For example, if the user is primarily concerned with fit and placement with surrounding parts, the user may wish to remove or disable internal objects or components of the model, because they have no effect on the overall size. Accordingly, in such an embodiment, the user may switch to a direct modeling CAD application and modify the geometry of the model. The user may then switch back to the engineering analysis application, in which the model may be automatically updated via a change instruction sent from the direction modeling CAD application. The user may then perform further structural analysis on the model.
  • the user may switch back to the direct modeling CAD application, modify the geometry, and perform further analysis and modification until a satisfactory result is achieved.
  • a switcher may comprise a dashboard 806 for switching between a plurality of running applications 808, such as the
  • the dashboard 806 may be launched via a menu or key command, similar to the alt-tab application switcher displayed in the Windows Operating System, manufactured by
  • message box 814 may comprise a button or link, such that clicking on a message in the box opens a web browser, application store, or other component or application.
  • dashboard 806 may include a button for initiating a connection to an application store 816 via a web browser, applet, application, or other interface for viewing and purchasing upgrades or new applications of a CAD development suite.
  • the launcher of FIG. 8A and active application switcher of FIG. 8B may be combined.
  • a user may use the launcher to open new models in one or more applications, and may use the application switcher to switch between active applications.
  • systems described above may provide multiple ones of any or each of those components and these components may be provided on either a standalone machine or, in some embodiments, on multiple machines in a distributed system.
  • the systems and methods described above may be implemented as a method, apparatus or article of manufacture using programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof.
  • the systems and methods described above may be provided as one or more computer-readable programs embodied on or in one or more articles of manufacture.
  • article of manufacture as used herein is intended to encompass code or logic accessible from and embedded in one or more computer-readable devices, firmware, programmable logic, memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, SRAMs, etc.), hardware (e.g., integrated circuit chip, Field Programmable Gate Array (FPGA), Application Specific Integrated Circuit (ASIC), etc.), electronic devices, a computer readable non-volatile storage unit (e.g., CD-ROM, floppy disk, hard disk drive, etc.).
  • the article of manufacture may be accessible from a file server providing access to the computer-readable programs via a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc.
  • the article of manufacture may be a flash memory card or a magnetic tape.
  • the article of manufacture includes hardware logic as well as software or programmable code embedded in a computer readable medium that is executed by a processor.
  • the computer-readable programs may be implemented in any programming language, such as LISP, PERL, C, C++, C#, PROLOG, or in any byte code language such as JAVA.
  • the software programs may be stored on or in one or more articles of manufacture as object code.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Processing Or Creating Images (AREA)
PCT/US2011/058412 2010-10-28 2011-10-28 Methods and systems for computer-aided design WO2012058607A2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013536888A JP5971812B2 (ja) 2010-10-28 2011-10-28 コンピュータ支援設計のための方法およびシステム
EP11837206.9A EP2633449A4 (en) 2010-10-28 2011-10-28 Methods and systems for computer-aided design

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US12/914,004 US8818769B2 (en) 2010-10-28 2010-10-28 Methods and systems for managing synchronization of a plurality of information items of a computer-aided design data model
US12/914,005 2010-10-28
US12/914,011 US8892404B2 (en) 2010-10-28 2010-10-28 Methods and systems for consistent concurrent operation of a plurality of computer-aided design applications
US12/914,011 2010-10-28
US12/914,005 US20120110595A1 (en) 2010-10-28 2010-10-28 Methods and systems for managing concurrent design of computer-aided design objects
US12/914,004 2010-10-28

Publications (2)

Publication Number Publication Date
WO2012058607A2 true WO2012058607A2 (en) 2012-05-03
WO2012058607A3 WO2012058607A3 (en) 2013-11-07

Family

ID=45994821

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2011/058412 WO2012058607A2 (en) 2010-10-28 2011-10-28 Methods and systems for computer-aided design

Country Status (3)

Country Link
EP (1) EP2633449A4 (ko)
JP (2) JP5971812B2 (ko)
WO (1) WO2012058607A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220060541A1 (en) * 2019-03-05 2022-02-24 Operation Technology, Inc. Utlity network project modeling and management
US11281820B2 (en) 2019-04-02 2022-03-22 Desktop Metal, Inc. Systems and methods for growth-based design

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11341288B2 (en) * 2014-06-06 2022-05-24 Ptc Inc. Methods and system for incremental exploration of design changes in large computer-aided design models
JP6543819B2 (ja) * 2015-04-28 2019-07-17 日本放送協会 処理装置およびプログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060250418A1 (en) * 2001-03-23 2006-11-09 Dassault Corporation Collaborative design
US20070174026A1 (en) * 2006-01-25 2007-07-26 Nicolas Mangon Synchronized physical and analytical representations of a CAD model
US20070198230A1 (en) * 2006-02-20 2007-08-23 Ford Global Technologies, Llc Parametric modeling method and system for conceptual vehicle design
US20100030525A1 (en) * 2008-07-29 2010-02-04 Freescale Semiconductor, Inc. Gui-facilitated change management for vehicle electrical/electronic architecture design
US20100042676A1 (en) * 2008-08-13 2010-02-18 Seroussi Jonathan Device, system, and method of computer aided design (cad)
US20100223032A1 (en) * 2007-05-01 2010-09-02 M.E.P. CAD Inc. Methods and Apparatuses for Proposing Resolutions to Conflicts in a CAD Drawing with Reflections

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5828866A (en) * 1996-07-08 1998-10-27 Hewlett-Packard Company Real-time synchronization of concurrent views among a plurality of existing applications
JPH10105586A (ja) * 1996-09-26 1998-04-24 Toyota Keeramu:Kk Cadシステムにおけるチーム形式による設計方式及びその設計方法
JP2002366589A (ja) * 2001-06-11 2002-12-20 Matsushita Electric Ind Co Ltd 設計支援システム
US7661101B2 (en) * 2004-01-15 2010-02-09 Parametric Technology Corporation Synchronous and asynchronous collaboration between heterogeneous applications

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060250418A1 (en) * 2001-03-23 2006-11-09 Dassault Corporation Collaborative design
US20070174026A1 (en) * 2006-01-25 2007-07-26 Nicolas Mangon Synchronized physical and analytical representations of a CAD model
US20070198230A1 (en) * 2006-02-20 2007-08-23 Ford Global Technologies, Llc Parametric modeling method and system for conceptual vehicle design
US20100223032A1 (en) * 2007-05-01 2010-09-02 M.E.P. CAD Inc. Methods and Apparatuses for Proposing Resolutions to Conflicts in a CAD Drawing with Reflections
US20100030525A1 (en) * 2008-07-29 2010-02-04 Freescale Semiconductor, Inc. Gui-facilitated change management for vehicle electrical/electronic architecture design
US20100042676A1 (en) * 2008-08-13 2010-02-18 Seroussi Jonathan Device, system, and method of computer aided design (cad)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220060541A1 (en) * 2019-03-05 2022-02-24 Operation Technology, Inc. Utlity network project modeling and management
US11281820B2 (en) 2019-04-02 2022-03-22 Desktop Metal, Inc. Systems and methods for growth-based design

Also Published As

Publication number Publication date
JP2014504385A (ja) 2014-02-20
EP2633449A4 (en) 2017-12-27
JP2017016666A (ja) 2017-01-19
EP2633449A2 (en) 2013-09-04
JP5971812B2 (ja) 2016-08-17
JP6209253B2 (ja) 2017-10-04
WO2012058607A3 (en) 2013-11-07

Similar Documents

Publication Publication Date Title
US8818769B2 (en) Methods and systems for managing synchronization of a plurality of information items of a computer-aided design data model
US8892404B2 (en) Methods and systems for consistent concurrent operation of a plurality of computer-aided design applications
US20120110595A1 (en) Methods and systems for managing concurrent design of computer-aided design objects
US8566066B2 (en) Enforcing parametric constraints in a direct modeling interface in computer-aided design
US8890867B2 (en) Methods and systems for dynamically loading portions of a computer-aided design model on demand
US20120109350A1 (en) Methods and systems for creation of a dynamically configurable product design
US10152198B2 (en) Method and system for editing a product assembly
Tornincasa et al. The future and the evolution of CAD
JP6224191B2 (ja) コンピュータ支援設計のための方法およびシステム
US20130144566A1 (en) Real-time collaborative design platform
JP6209253B2 (ja) コンピュータ支援設計のための方法およびシステム
KR20210014117A (ko) 계약 맵에 기반한 시각화의 자동 레이아웃
US20100238167A1 (en) System and method for converting dimensions
US9842183B1 (en) Methods and systems for enabling concurrent editing of electronic circuit layouts
KR20080063218A (ko) 컨스트레인된 오브젝트들의 셋트를 포함하는 제품의 컴퓨터지원 설계의 방법 및 컴퓨터 프로그램 제품
CN103649936A (zh) 在移动设备上针对在服务器上远程执行的应用的外壳集成
US9177082B2 (en) Drawing automation in computer aided design systems
Yu et al. A CAE-integrated distributed collaborative design system for finite element analysis of complex product based on SOOA
US7013468B2 (en) Method and apparatus for design and manufacturing application associative interoperability
US10540454B2 (en) System maintaining domain-specific 3D models as a graph within computer aided design
US8768654B2 (en) Interactive configuration-management-based diagramming tool
Waldon et al. SketchBio: a scientist’s 3D interface for molecular modeling and animation
US9268883B2 (en) User interface for presenting information about a product structure for a product
Smith Curating architectural 3D CAD models
US20030163604A1 (en) Method and apparatus for design and manufacturing application feature interoperability

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11837206

Country of ref document: EP

Kind code of ref document: A2

ENP Entry into the national phase in:

Ref document number: 2013536888

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2011837206

Country of ref document: EP