System and method for concurrently modeling any element of a model
First Claim
Patent Images
1. A system for concurrently modeling any element of a model, the system comprising:
- a first computer having a database, the database having a plurality of objects that define the model, the plurality of objects including model objects and index objects;
second computer connected to the first computer, the second computer having;
means for loading a number of objects from the database into the second computer to form a corresponding number of local objects, the local objects including local index objects and local model objects;
means for constructing a plurality of visual representations from the local model objects, each visual representation being constructed from a corresponding local model object;
means for displaying a selected view of the model on a display, the selected view including a number of visual representations;
means for editing a visual representation of a local object to define a change to the local object, the means including means for editing a visual representation of a local model object to define a change to the local model object;
means for instructing the first computer to update the object stored in the database that corresponds with the local object that was edited to form an updated object in the database that reflects the change made to the local object, the means including means for instructing the first computer to update the model object stored in the database that corresponds with the local model object that was edited to form an updated model object in the database that reflects the change made to the local model object;
means for loading into the second computer the updated object to form an updated local object in response to an update notification, the means including means for loading into the second computer the updated model object to form an updated local model object in response to the update notification;
means for constructing a visual representation from the updated local model object to form a reconstructed visual representation; and
means for redisplaying the selected view of the model on the display as a redisplayed view, the redisplayed view including the reconstructed visual representation.
4 Assignments
0 Petitions
Accused Products
Abstract
A system and method are described for concurrently modeling of any element of a geometric model. The geometric model is stored in a database as a number of model objects. The model objects are loaded into a computer, and are then used to generate a display. When a model is edited, a representation of the model object is changed. The change is sent to the database to update the corresponding model object stored in the database. Any computers displaying this model will be notified of the change and will reload and redisplay the updated model object.
-
Citations
27 Claims
-
1. A system for concurrently modeling any element of a model, the system comprising:
-
a first computer having a database, the database having a plurality of objects that define the model, the plurality of objects including model objects and index objects;
second computer connected to the first computer, the second computer having;
means for loading a number of objects from the database into the second computer to form a corresponding number of local objects, the local objects including local index objects and local model objects;
means for constructing a plurality of visual representations from the local model objects, each visual representation being constructed from a corresponding local model object;
means for displaying a selected view of the model on a display, the selected view including a number of visual representations;
means for editing a visual representation of a local object to define a change to the local object, the means including means for editing a visual representation of a local model object to define a change to the local model object;
means for instructing the first computer to update the object stored in the database that corresponds with the local object that was edited to form an updated object in the database that reflects the change made to the local object, the means including means for instructing the first computer to update the model object stored in the database that corresponds with the local model object that was edited to form an updated model object in the database that reflects the change made to the local model object;
means for loading into the second computer the updated object to form an updated local object in response to an update notification, the means including means for loading into the second computer the updated model object to form an updated local model object in response to the update notification;
means for constructing a visual representation from the updated local model object to form a reconstructed visual representation; and
means for redisplaying the selected view of the model on the display as a redisplayed view, the redisplayed view including the reconstructed visual representation. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
means for initializing a needed set of objects with a pointer that identifies a first index object of an index structure of a root index object of the model;
means for loading the first index object identified by the pointer in the needed set of objects, the first index object being loaded into the second computer from the database as a local first index object;
means for outputting a load notification which indicates that the first index object has been loaded;
means for determining if the needed set of objects is empty;
means for loading a number of additional objects identified by pointers in the needed set of objects when the needed set of objects is not empty, the additional objects being loaded into the second computer from the database as local additional objects; and
means for outputting a load notification to indicate that additional objects have been loaded.
-
-
3. The system of claim 2 wherein the means for loading a number of objects further includes:
-
means for generating a first wrapper that corresponds with the first index object;
means for linking the first wrapper to the local first index object when the load notification indicates that the first index object has been loaded;
means for determining a number of second objects that are encoded in the first index object;
means for generating a number of second wrappers that correspond with the number of second objects; and
means for identifying pointers that represent the second objects, and adding the pointers to the needed set of objects.
-
-
4. The system of claim 3
wherein the second objects are loaded as local second objects, and further comprising: -
means for linking the second wrappers to the local second objects when the load notification indicates that the second objects have been loaded;
means for determining if a number of third objects are encoded in local second objects;
means for generating a number of third wrappers for the third objects that are encoded in local second objects;
means for identifying pointers that represent the third objects when third objects are encoded in the local second objects, and adding the pointers to the needed set of objects;
means for determining if any of the local second objects are model objects;
means for constructing visual representations of local second objects that are model objects; and
means for outputting a visual notification that a visual representation has been constructed.
-
-
5. The system of claim 4 wherein the means for displaying a selected view of the model on a display include:
-
means for determining if a visual notification has been received; and
means for drawing all current visual representations when a visual notification is received.
-
-
6. The system of claim 2 and further comprising:
-
means for clearing the needed set of objects when a view notification is detected;
means for determining if sufficient information to render a new view is present;
means for determining a set of objects needed to complete the new view when sufficient information is not present; and
means for adding pointers for the set of objects needed to complete the new view to the needed set of objects.
-
-
7. The system of claim 1 wherein the means for editing includes:
-
means for resetting a wrapper linked to the local object that was edited to form a reset wrapper; and
means for adding pointers that represent the local object that was edited to the needed set of objects.
-
-
8. The system of claim 7 and further comprising:
-
means for linking the reset wrapper to the updated local object;
means for determining a number of objects that are related to the updated local object;
means for constructing a visual representation from the updated local object when the updated local object is a model object; and
means for outputting a visual notification when a visual representation is formed from the updated local object.
-
-
9. The system of claim 1 wherein the first computer includes:
-
means for detecting an update instruction;
means for updating a model object stored in the database in response to the update instruction; and
means for outputting an update notification that the database has been updated.
-
-
10. The system of claim 9 wherein the means for updating include:
-
means for locking an object in the database;
means for writing edits to the object in the database; and
means for unlocking the object in the database.
-
-
11. The system of claim 10 and further comprising:
-
means for generating a first wrapper that corresponds with the first index object;
means for linking the first wrapper to the local first index object when the load notification indicates that the first index object has been loaded;
means for determining a number of second objects that are encoded in the local first index object;
means for generating a number of second wrappers that correspond with the number of second objects; and
means for identifying pointers that represent the second objects, and adding the pointers to the needed set of objects.
-
-
12. The system of claim 11
wherein the second objects are loaded as local second objects, and further comprising: -
means for linking the second wrappers to the local second objects when the load notification indicates that the second objects have been loaded;
means for determining if a number of third objects are encoded in local second objects;
means for generating a number of third wrappers for the third objects that are encoded in local second objects;
means for identifying pointers that represent the third objects when third objects are encoded in the local second objects, and adding the pointers to the needed set of objects;
means for determining if any of the local second objects are model objects;
means for constructing visual representations of local second objects that are model objects; and
means for outputting a visual notification that a visual representation has been constructed.
-
-
13. The system of claim 1 wherein the means for loading into the second computer the updated object includes means for loading into the second computer an updated index object to form an updated local index object in response to the update notification.
-
14. The system of claim 13 and further comprising means for comparing the updated local index object with a state of a previous local index object, and processing the differences.
-
15. The apparatus of claim 1 and further comprising means for updating a spatial index on the first computer to accommodate a change in a local model object or the addition/deletion of a local model object, and propagation of the updated spatial index to the second computer.
-
16. A system for loading a number of objects of a model, the system includes:
-
means for initializing a needed set of objects with a pointer that identifies a first index object of an index structure of a root index object of the model;
means for loading the first index object identified by the pointer in the needed set of objects, the first index object being loaded into a computer from a database as a first index object;
means for outputting a load notification which indicates that the first index object has been loaded;
means for determining if the needed set of objects is empty;
means for loading a number of additional objects identified by pointers in the needed set of objects when the needed set of objects is not empty, the additional objects being loaded into the second computer from the database as local copies of the additional objects; and
means for outputting a load notification to indicate that additional objects have been loaded.
-
-
17. A method for concurrently modeling any element of a model, the model having a plurality of objects stored in a database of a first computer, the method including the steps of:
-
loading a number of objects from the database into a second computer to form a corresponding number of local objects, the local objects including local index objects and local model objects;
constructing a plurality of visual representations from the local model objects, each visual representation being constructed from a corresponding local model object;
displaying a selected view of the model on a display, the selected view including a number of visual representations. editing a visual representation of a local object to define a change to the local object, the step including the step of editing a visual representation of a local model object to define a change to the local model object;
instructing the first computer to update the object stored in the database that corresponds with the local object that was edited to form an updated object in the database that reflects the change made to the local object, the step including the step of instructing the first computer to update the model object stored in the database that corresponds with the local model object that was edited to form an updated model object in the database that reflects the change made to the local model object;
loading into the second computer the updated object to form an updated local object in response to an update notification, the step including the step of loading into the second computer the updated model object to form an updated local model object in response to the update notification;
constructing a visual representation from the updated local model object to form a reconstructed visual representation; and
redisplaying the selected view of the model on the display as a redisplayed view, the redisplayed view including the reconstructed visual representation. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24)
initializing a needed set of objects with a pointer that identifies a first index object of an index structure of a root index object of the model;
loading the first index object identified by the pointer in the needed set of objects, the first index object being loaded into the second computer from the database as a local first index object;
outputting a load notification which indicates that the first index object has been loaded;
determining if the needed set of objects is empty;
loading a number of additional objects identified by pointers in the needed set of objects when the needed set of objects is not empty, the additional objects being loaded into the second computer from the database as local additional objects; and
outputting a load notification to indicate that additional objects have been loaded.
-
-
19. The method of claim 18 wherein the step of loading a number of objects further includes the steps of:
-
generating a first wrapper that corresponds with the first index object;
linking the first wrapper to the local first index object when the load notification indicates that the first index object has been loaded;
determining a number of second objects that are encoded in the first index object;
generating a number of second wrappers that correspond with the number of second objects; and
identifying pointers that represent the second objects, and adding the pointers to the needed set of objects.
-
-
20. The method of claim 19
wherein the second objects are loaded as local second objects, and further comprising the steps of: -
linking the second wrappers to the local second objects when the load notification indicates that the second objects have been loaded;
determining if a number of third objects are encoded in local second objects;
generating a number of third wrappers for the third objects that are encoded in local second objects;
identifying pointers that represent the third objects when third objects are encoded in the local second objects, and adding the pointers to the needed set of objects;
determining if any of the local second objects are model objects;
constructing visual representations of local second objects that are model objects; and
outputting a visual notification that a visual representation has been constructed.
-
-
21. The method of claim 17 and further comprising the steps of:
-
detecting an update instruction;
updating a model object stored in the database in response to the update instruction; and
outputting an update notification that the database has been updated.
-
-
22. The method of claim 21 wherein the step of updating includes the steps of:
-
locking an object in the database;
writing edits to the object in the database; and
unlocking the object in the database.
-
-
23. The method of claim 17 wherein the step of loading into the second computer the updated object includes the step of loading into the second computer an updated index object to form an updated local index object in response to the update notification.
-
24. The method of claim 23 and further comprising the step of comparing the updated local index object with a state of a previous local index object, and processing the differences.
-
25. A method for loading a number of objects of a model, the method including the steps of:
-
initializing a needed set of objects with a pointer that identifies a first index object of an index structure of a root index object of the model;
loading the first index object identified by the pointer in the needed set of objects, the first index object being loaded into a computer from a database as a first index object;
outputting a load notification which indicates that the first index object has been loaded;
determining if the needed set of objects is empty;
loading a number of additional objects identified by pointers in the needed set of objects when the needed set of objects is not empty, the additional objects being loaded into the second computer from the database as local copies of the additional objects; and
outputting a load notification to indicate that additional objects have been loaded.
-
-
26. A method for concurrently modeling objects of a geometric model, comprising:
-
storing the geometric model in a database of a first computer as a number of model objects;
creating a local object on a second computer by loading a copy of a model object of the geometric model to the second computer;
generating a visual representation of the local object on a display of the second computer;
editing the local object, wherein the edits to the local object change the visual representation of the local object;
saving the edits done to the local object, as changes in the model object stored in the database of the first computer; and
notifying a computer displaying a local object which corresponds to the model object that a change has been to the model object, and in response to the notification the computer displaying the local object loads a new local object which incorporates the edits to the model object stored in the database of the first computer.
-
-
27. A system for incrementally loading objects from a geometric model that satisfy specific spatial or semantic criteria, the system comprising:
-
a first computer having a database, the database having a plurality of objects that define a geometric model, the plurality of objects including model objects and index objects, the first computer operable to make changes to objects in response to communications from any one of a plurality of client computers, and to send a notification to one or more of the plurality of client computers when a change is made to an object;
a network connecting the first computer to the plurality of client computers, such that the client computers can access the database; and
at least one of the plurality of client computers operable to load a root index object, and operable to asynchronously perform load iterations, where a load iteration includes using the already loaded index objects, applying a specified spatial or semantic query to determine a set of new objects that need to be loaded, determining if the set of objects to load is non-empty and then loading objects of the set of objects that are not write-locked, at least one of the plurality of computers further operable to receive notification of object change from the first computer, and upon receipt of notification operable to delete the local copy of the modified object and to modify an index structure to show the object is no longer loaded.
-
Specification