WO2008142114A2 - Computer-aided design apparatus - Google Patents

Computer-aided design apparatus Download PDF

Info

Publication number
WO2008142114A2
WO2008142114A2 PCT/EP2008/056267 EP2008056267W WO2008142114A2 WO 2008142114 A2 WO2008142114 A2 WO 2008142114A2 EP 2008056267 W EP2008056267 W EP 2008056267W WO 2008142114 A2 WO2008142114 A2 WO 2008142114A2
Authority
WO
WIPO (PCT)
Prior art keywords
bases
base
content
generating
operable
Prior art date
Application number
PCT/EP2008/056267
Other languages
French (fr)
Other versions
WO2008142114A3 (en
Inventor
Edvard Edo Ravnikar
Roman Soper
Original Assignee
Archi.Con.Des Inventions (Uk) Limited
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
Application filed by Archi.Con.Des Inventions (Uk) Limited filed Critical Archi.Con.Des Inventions (Uk) Limited
Publication of WO2008142114A2 publication Critical patent/WO2008142114A2/en
Publication of WO2008142114A3 publication Critical patent/WO2008142114A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes

Definitions

  • the present invention relates to the field of computer- aided design apparatus, and more particularly, to apparatus for the design of three-dimensional objects to be fabricated.
  • the invention is particularly applicable to the design of complex objects made up of over 5,000 constituent parts.
  • fabricated objects such as urban agglomerations, buildings and building complexes, industrial plants and power generating plants, transport terminals, oil rigs, aeroplanes, cars, trucks and trains, ships, satellites and spaceships, micro-chips, nanotechnology structures, etc.
  • a further problem is that a building component manufactured according to a design from a system which designs, places and fits the components as separate tasks is often not consistent with the huge amount of other components that are to form the fabricated object. As a result, skill- intensive labour is required to fit the components together .
  • the present invention aims to address one or more of the problems with existing computer-aided design systems.
  • the present invention aims to address the problem of how to provide an apparatus for the design of a complex three-dimensional object without using a design file environment but which enabJ es the user to generate the design so that it is rich m variations of topology and/or content.
  • tne present invention aims to address the problem of how to provide an apparatus for the design of a complex three-dimensional object without usjng a design file environment, and the problem which arises therein of how to keep track of the large number of local coordinate systems within the design in such a way that the required locations for content objects to be added can be readily identified and such that the content objects themselves can be added without difficulty.
  • the present invention aims to address the problem of how to provide an apparatus for the design of a complex three-dimensional object without using a design file environment, and the problem which arises therein of how to provide functionality to incorporate content objects in the design in a flexible and controllable way without significant effort on the part of the user.
  • the present invention aims to address the problem of how to provide an apparatus for the design of a complex three-dimensional object without using a design file environment, and the problems which arise therein of how to provide functionality to generate a design having three-dimensional content objects which fit throughout the design and how to reduce the large amount of data needed to define the design of a complex object.
  • the present invention aims to address the problem of how to provide an apparatus for the design of a complex three-dimensional object without using a design file environment but which enables the user to generate the design so that it is rich in variations of content objects.
  • an apparatus for the design of a three- dimensional object comprising:
  • means for generating a plurality of coordinate systems and means for genera tjng at least one respective further feature m each coordinate system using at least one mathematical function having a va ⁇ abJe identifying the different coordinate systems, such that the mathematical function introduces variations m accordance with the value of the variable from coordinate system to coordinate system of at least one of the positions of the further features relative to their containing coordinate system, and the orientations of the further features relative to their containing coordinate system.
  • the present invention also provides a method of generating a design for a three-dimensional object to be fabricated using a computer-aided design apparatus, the method comprising:
  • each base comprising a local coordinate system
  • the present invention also provides a computer program product, embodied for example as a storage medium storing computer program instructions or as a signal carrying computer program instructions, for configuring a programmable apparatus as an apparatus having the features set out above .
  • a computer-aided design apparatus for the design of three- ⁇ imensional objects to be fabricated, the apparatus comprising:
  • base generating means operable to generate a topology for a design of a three-dimensional object by generat mg a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases m a subsequent generation are arranged m a plurality of groups such that each respective group is located m the local coordinate system of a different base in a preceding generation; and data generating means operable to generate and store base data defining bases generated by the base generating means and connection data defining, for each base, at least one base in the same group, at least one base in a preceding group of the same generation, and at least one base in a following group of the same generation.
  • the present invention also provides a method of generating a design for a three-dimensional object to be fabricated using a computer-aided design apparatus, the method comprising:
  • each generation of bases comprises a plurality of bases, each base therein comprising a local coordinate system, and wherein the bases in subseguent generations are arranged in a plurality of groups such that each respective group is located in the local coordinate system of a different base in a preceding generation;
  • data generating means operable to generate and store base data defining generated bases and connection data defining, for each base, a base in the same group, a base in a preceding group of the same generation, and a base in a following group of the same generation.
  • the bases are arranged in groups within a plurality of generations such that each group is located in the local coordinate system of a different base in a preceding generation. Furthermore, data is stored defining connections between the bases within each group and connections between the groups themselves.
  • connection data defines the relation positions of the bases (both inter-group and mtra-group) so that bases having a required configuration can be found using the connection data.
  • a three- dimensional content object can be generated m a plurality of bases using one or more mathematical procedures which define the bases m accordance with the connection data.
  • a start base can be defined and each furthei base Lo be used for the generation of the content object can be specified relative to the start base using the connections defined by the connection data.
  • the present invention atso provides a computer program product, embodied for example as a storage medium storing computer program instructions or as a signal carrying computer program instructions, for configuiing a programmable apparatus as an apparatus having the features set out above.
  • a computer-aided design apparatus for the design of three-dimensional objects to be fabricated, the apparatus comprising: base generating means operable to generate a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases in the second and any subsequent generation are located in the local coordinate system of a base in a preceding generation;
  • content generating means operable to generate content objects in the bases
  • identifying means operable to identify at least one of:
  • the content generating means is operable to generate a content object for the identified features.
  • the present invention also provides a method of generating a design for a three-dimensional object to be fabricated using a computer-aided design apparatus, the method comprising:
  • each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases in the second and any subsequent generation are located in the local coordinate system of a base in a preceding generation;
  • the present invention further comprises a method of generating a design for a three-dimensional object to be fabricated using a computer-aided design apparatus, the method comprising:
  • each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases in the second and any subsequent generation are located in the local coordinate system of: a base in a preceding generation;
  • the features permit all design features satisfying a first relationship to be identified and all design features satisfying a second, different relationship to be identified, and a content object of a first type to be generated for the design features satisfying the first relationship and a content object of a second, different type to be generated for the design features satisfying the second relationship.
  • different content objects can be automatically incorporated in different parts of the design.
  • the present invention also provides a computer program product, embodied for example as a storage medium storing computer program instructions or as a signal carrying computer program instructions, for configuring a programmable apparatus as an apparatus having the features set out above.
  • a computer-aided design apparatus for the design of three-dimensional objects, comprising:
  • base generating means operable to generate a topology for a design of a three-dimensional object by generating a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a Jocal coordinate system, and wherein the bases in the second and any subsequent generation are arranged in a plurality of groups such that each respective group is Located in the local coordinate system of a different base in a preceding generation; and
  • content generating means operable to add three-dimensional content objects to the topology defined by the bases by applying the same mathematical procedure or procedures to generate a three-dimensional content object in a plurality of the bases located within different groups of a generation .
  • the present invention also provides a method of generating a design for a three-dimensional object using a computer- aided design apparatus, the method comprising:
  • each generation of bases comprises a plurality of bases and each base comprises a local coordinate system
  • the topology for the design is generated first, with the bases arranged in groups within a plurality of generations such that each group is located in the local coordinate system of a different base in a preceding generation. Three- dimensional content objects are then added to a plurality of bases in different groups using the same mathematical procedure or procedures.
  • a large number of content objects can be generated with a single application of the mathematical procedure (s) such that the content objects vary to fit the topology at different parts of the design (the parts being defined by the different groups) in accordance with the mathematical procedure (s) .
  • the amount of data required to define the design is reduced because it is unnecessary to store different data defining each content object and instead it is only necessary to store data defining the mathematical procedure (s) .
  • the present invention also provides a computer program product, embodied for example as a storage medium storing computer program instructions or as a signal carrying computer program instructions, for configuring a programmable apparatus as an apparatus having the features set out above.
  • a computer-aided design apparatus for the design of three-dimensional objects, the apparatus comprising :
  • base generating means for generating a plurality of bases, each base comprising a local coordinate system; and content generating means for generating a respective content object in the local coordinate system of each of a plurality of bases in accordance with at least one mathematical function having a variable, such that each content object has a shape which depends upon the value of the variable and such that the shape of the content objects changes from base to base in accordance with the values of the variable.
  • the present invention also provides a method of generating a design for a three-dimensional object using a computer- aided design apparatus, the method comprising:
  • each content object has a shape which depends upon the value of the variable and such that the shape of the content objects changes from coordinate system to coordinate system in accordance with the values of the variable.
  • the present invention also provides a computer program product, embodied for example as a storage medium storing computer program instructions or as a signal carrying computer program instructions, for configuring a programmable apparatus as an apparatus having the features set out above.
  • FIG 1 schematically shows the components of an embodiment of the invention, together with the notional functional processing units into which the processing apparatus component may be thought of as being configured when programmed by computer program instructions;
  • FIG. 1 shows the components of the base generator in
  • FIG. 3 shows the components of the content generator in
  • Figure 4 shows the processing operations performed by the apparatus of Figure 1 ;
  • FIG. 5 shows the processing operations performed at step SlOO in Figure 4.
  • Figure 6 shows the processing operations performed at step S200 in Figure 4
  • Figure 7 shows the processing operations performed at step S300 in Figure 4 ;
  • Figure 8 shows the process 1 ng operations performed at step S400 m Figure 4;
  • Figure 9 shows the processing operations performed at step S500 m Figure 4.
  • FIG. 10 shows the processing operations performed at step S600 in Figure 4.
  • FIG 11 shows the processing operations performed at step S700 in Figure 4.
  • FIG. 12 shows the processing operations performed at step
  • Figures 13a, 13b, 13c and 13d show an example Lo illustrate the generation of backbone bases at step S300 during the first round of processing to generate a design model
  • Figures 14a, 14b and 14c illustrate the addition of attributes and connections to a graph for the model at step S400 m the first round of processing
  • Figures 15a, 15b and 15c illustrate the transformation of the backbone bases at step S600 m the first round of processing
  • Figures 16, 17, 18, 19a and 19b show an example to illustrate the generation of ring bases at step S300 in a second round of processing to generate the design model
  • Figures 20, 21, 22, 23, 24 and 25 illustrate the addition of attributes and connections to the model graph during the processing at step S400 during the second round of processing;
  • Figures 26a and 26b show an example to illustrate the processing performed at step S500 to insert content objects into the ring bases during the second round of processing;
  • Figures 27, 28 and 29 illustrate the addition of attributes and connections to the model graph for the content objects added at step S500;
  • Figures 30a, 30b, 30c, 3Od, 31a and 31b show an example to illustrate the creation of new content objects at step S700 in the second round of processing
  • Figures 32, 33 and 34 illustrate the addition of attributes and connections to the model graph for the content objects created at step S700 in the second round of processing
  • Figures 35a, 35b and 35c show the result of applying a sensor function at step S800 in the second round of processing to divide bases into two separate equivalence classes ;
  • Figure 36 illustrates the addition of an attribute to the model graph defining the equivalence class of each ring base determined at step S800 in the second round of processing
  • Figures 37a, 37b, 37c, 37d and 38 show an example to illustrate the generation of centre bases at step S300 in the third round of processing
  • Figures 39a, 39b, 39c and 40 illustrate the addition of attributes and connections to the model graph for the centre bases created at step S300 in the third round of processing
  • Figures 41a and 41b show an example to illustrate the insertion of content objects into the centre bases at step S500 in the third round of processing
  • Figures 42a, 42b and 42c illustrate the addition of attributes and connections to the model graph for the content objects inserted at step S500 in the third round of processing;
  • Figures 43a and 43b show an example to illustrate the transformation of content objects at step S600 in the third round of processing
  • Figures 44a, 44b, 44c and 44d show an example to illustrate the generation of content objects at step S700 in the third round of processing
  • Figures 45a, 45b and 45c illustrate the addition of attributes and connections to the model graph for the content objects created at step S700 in the third round of processing
  • Figure 46 shows the final design model for the illustrated example after completion of the three rounds of processing
  • Figures 47, 48, 49 and 50 illustrate the effects on the final model of changing the parameter values and/or functions used to generate the bases and/or content objects in the model
  • Figures 51a, 51b and 52 show an example to illustrate how the embodiment is operable to vary the shape of content objects in dependence upon the index of the reference base into which the content objects are inserted;
  • Figure 53 shows the final model resulting from processing to vary the shape of content objects as illustrated in Figures 51a, 51b and 52;
  • Figures 54a, 54b and 54c illustrate an example to show how the embodiment is operable to generate content objects so that they do not encroach;
  • Figures 55, 56 and 57 show an example to illustrate the execution of a sensor function to detect a property of the model using the model graph
  • Figures 58a and 58b show an example to illustrate how the embodiment is operable to identify bases having a defined relationship and to add different content objects thereto; and Figures 59a, 59b, 60a, 60b, 60c, 61, 62, 63 and 64 show an example to illustrate how the embodiment is operable to identify bases and content objects having a defined relationship, to identify content objects having a defined relationship, and to add further content objects to the design in accordance with the identified features.
  • an embodiment of the invention comprises a programmable processing apparatus 2, such as a personal computer (PC), containing, in a conventional manner, one or more processors, memories, graphics cards etc, together with a display device 4, such as a conventional personal computer monitor, and user input devices 6, such as a keyboard, mouse etc.
  • a programmable processing apparatus 2 such as a personal computer (PC)
  • PC personal computer
  • a display device 4 such as a conventional personal computer monitor
  • user input devices 6 such as a keyboard, mouse etc.
  • the processing apparatus 2 is programmed to operate in accordance with programming instructions input, for example, as data stored on a data storage medium 12 (such as an optical CD ROM, semiconductor ROM, magnetic recording medium, etc), and/or as a signal 14 (for example an electrical or optical signal input to the processing apparatus 2, for example from a remote database, by transmission over a communication network (not shown) such as the Internet or by transmission through the atmosphere), and/or entered by a user via a user input device 6 such as a keyboard.
  • a data storage medium 12 such as an optical CD ROM, semiconductor ROM, magnetic recording medium, etc
  • a signal 14 for example an electrical or optical signal input to the processing apparatus 2
  • a remote database for example from a remote database
  • a communication network not shown
  • a user input device 6 such as a keyboard
  • the programming instructions comprise instructions to program the processing apparatus 2 to become configured to generate data defining a three-dimensional computer model of a design for a three-dimensional object to be fabricated.
  • the design model comprises bases and content objects. Each base is a local coordinate system and acts as "placeholder" to accept further bases and/or content objects.
  • the programmed apparatus is operable to generate a plurality of first-generation bases Ci-C 8 .
  • Each base comprises a local coordinate system, and in this embodiment, the bases are positioned and orientated in accordance with at least one mathematical function (although this could be done by a user) .
  • the apparatus is then operable to generate second-generation bases B R i-B R i 44 with a respective plurality of these second-generation bases located in a group in the local coordinate system of each first generation base.
  • Each second-generation base comprises a local coordinate system, and the positions and/or orientations of the second-generation bases are defined in accordance with at least one mathematical function having the identities of the first generation bases as a variable thereof, with the result that each second-generation base has a position and/or orientation relative to the first- generation base in which it is located which depends upon that first-generation base.
  • the positions and/or orientations of the second-generation bases relative to their containing first-generation base change in each first-generation base in accordance with the mathematical function ( s ) .
  • the second-generation bases have positions on circles around the first-generation bases such that 18 second -generation bases are located in a group in the coordinate system of each first generation base.
  • the radii of the circles (and therefore the positions of the second-generation bases relative to the origin of the containing first-generation base) are defined in accordance with a mathematical function such that the radius of the circle is different for each first generation base.
  • Data defining the bases is stored in a graph. More particularly, for each base, base data defining the base is stored as a respective vertex m the graph, and connection data defining interconnections between the bases is stored as directed edges between the vertices m the graph.
  • base data is stored for each base which defines the base itself, and connection data is stored which defines the adjacent bases wi thin the same group (defined by the "NEXT” and “PREV” directed edges), and the corresponding bases m the adjacent groups (defined by the "to” and “from” directed edges) .
  • intra-group connections and mter-group connections are stored linking the bases together.
  • the arrangement of bases in groups and the storage of base data and connection data as described above provides a number of important advantages.
  • the relative positions of the bases can be tracked m a reliable and efficient way even for a complex design.
  • bases having required relationships for the addition of a further base or a further content object can be readily identified.
  • the stored base data and connection data can be used to define bases within a mathematical function.
  • bases to be used in a mathematical procedure can be defined by defining a start base and then defining bases relative thereto using the "NEXT”, "PREV”, "to” and “from” connections.
  • the apparatus may add further generations of bases and/or content objects to the model in accordance with mathematical functions or procedures.
  • the apparatus is operable to add each generation of bases or content objects such that a property thereof varies in accordance with the identity of the existing base in which the new base/content object is placed.
  • FIGS 30b-30d illustrate the generation of a content object comprising a plane in the local coordinate system of each second-generation base.
  • the plane is defined by a mathematical procedure which is the same for each second- generation base but which depends upon the relative positions of a plurality of adjacent second-generation bases. Accordingly, because the relative positions of the second-generation bases change throughout the model
  • the apparatus is operable to generate content objects in adjacent bases using a mathematical procedure which is dependent upon the positions and orientations of the adjacent bases so that the content objects fit together.
  • the apparatus is operable to generate adjacent solid objects W 1 and W ⁇ by a procedure which constructs planes that are defined in dependence upon the positions and orientations of the adjacent bases B Rl , B N , B NN , B T , B NT and B NNT .
  • the apparatus is operable to generate content objects throughout a generation of bases using the same procedure such that the content objects vary in accordance with the variations of the bases but still fit together without gaps or overlaps.
  • the apparatus is therefore operable to generate a model such that the process is staged into sequential generations of bases, where denser placements of bases follow from earlier sparser generations. In this way, the bases have a "tree" structure.
  • bases are positioned and orientated by at least one mathematical function, a large number of bases can be generated, enabling complex models to be generated.
  • the bases define the topology of the model. Variations and patterns in the topology (positions and/or orientations of bases) can be imparted by defining bases in one generation using a mathematical function which varies in dependence upon the identity of bases in a previous generation.
  • Content objects are added to the topology defined by the bases.
  • the content objects are defined by mathematical procedures which may be dependent upon one or more bases, so that the content objects vary in accordance with the variations in the topology of the bases and/or impart further variations to the model.
  • content objects may be generated by a procedure which is dependent upon the mathematically defined positions and/or orientations of the bases that hold the content objects (they are not produced and placed separately as in existing design file systems) . Therefore, content objects are matched to adjacent content objects by the defined generation procedure. Furthermore, the content objects automatically change to adapt to any changes in the bases without changing the generation procedure. This is because the generation procedure is defined to be dependent upon the positions and/or orientations of the bases, and changes in these positions and/or orientations merely result m different values of the parameters to be use ⁇ in Lhe generation procedure. Thus, content objects do not comprise finished objects, designed separate Ly, placed m the bases and expected to fit. Instead content objects are created with ⁇ he same procedure, taking jnto account the positions and orientations of the bases, and resulting in content objects which vary m accordance with the bases to fit together.
  • a complex and varied model can be built up, in which content objects fit together and adapt to any changes m the model.
  • processing apparatus 2 When programmed by the programming instructions, processing apparatus 2 can be thought of as being confi ⁇ ured as a number of functional units for performing processing operations. Examples of such functional units and their interconnections are shown m FIG. 1. The units and interconnections illustrated m FIG. 1 are, however, notional and are shown for illustration purposes only to assist understanding; they ⁇ o not necessarily represent units and connections into whj ch the pj ocessor, memory etc of the processing apparatus 2 actually become configured.
  • central controller 20 is operable to process inputs from the user input devices 6, and also to provide control and processing for the other functional units.
  • Memory 30 is provided for use by central controller 20 and the other functional units .
  • Input data interface 40 is operable to control the storage of input data within processing apparatus 2. The data may be input to processing apparatus 2 for example as data stored on a storage medium 42, as a signal 44 transmitted to the processing apparatus 2, or using a user input device
  • the input data may comprise data for a model (or part thereof) that has been previously generated (either by the present system or a separate system of the same type) and is to be amended/developed further by the present system.
  • Parameter definer 50 is operable to define the parameters to be used in the creation of the model in accordance with user instructions and/or by computation.
  • the parameters fall into two groups, namely geometric parameters (such as point, line, plane, solid object, etc) and all other types of parameters (such as numbers, strings, etc) .
  • the parameters reguired vary m accordance with the model to be produced, and examples will be described later with reference to a specif LC example of a model .
  • Reference object selector 60 is operable to select reference objects.
  • a reference object is an object that provides the foundation on which new bases and/or new content objects are created.
  • the reference object may comprise a global coordinate system (that is, a coordinate system that stands by itself without reference to any other object), an existing base (local coordinate system) or an existing content object.
  • Base generator 70 is operable to generate bases.
  • Each base comprises a local coordinate system (where a coordinate system is a system of assigning a tuple of numbers to each point in an n-dimensiona] space) .
  • Di fferent types of coordinate system may be defined by base generator 70, such as Euclidean, spherical, polar, a coordinate system in Calabi-Yau space, etc.
  • base generator 70 comprises function selector 72, position calculator 74, orientation calculator 76 and base builder 78.
  • Function selector 72 is operable to select one or more mathematical functions to compute each base. For example,
  • Position calculator 74 is operable to apply the function (s) selected by function selector 72 to caLculate the base position (the origin of the base) .
  • Orientation calculator 76 is operable to apply the function (s) selected by function selector 72 to calculate the base orientation (the direction of the coordinate axes ) .
  • Base builder 78 is operable to combine the position and orientation calculated by position calculator 74 and orientation calculator 76 to produce data defining a base.
  • graph manager 80 is operable to generate, and maintain, a graph for each model created by the system.
  • a graph of a model is a directed and labelled multigraph .
  • the vertices of a graph represent indexed bases and content objects from each generation in a model.
  • Edges represent the relation between two objects, and therefore represent relations between pairs of bases, content objects or both. The directions of edges go from the first vertex in a pair to the second vertex in a pair. There can be more than one edge between any two vertices. All vertices and edges have labels.
  • the labels are attributes of underlying bases and content objects.
  • the labels represent the type of relation between two objects.
  • An edge with a label SUBBASE represents the relation between a reference base and a base ⁇ contained' in it. In other words, if a reference base is a container for another base, the other base in a pair is contained in this container.
  • an edge with a label CONTENT represents the relation between a reference base and a content object that lies in it.
  • a reference base is transformed (moved and/or rotated)
  • all of the bases linked to it with relation SUBBASE and all of the content objects linked to it with relation CONTENT are transformed in the same way. Since every base can be a container for the other bases, this relation is recursive and not limited.
  • Graph manager 80 is operable to create a graph, insert vertices into the graph representing each base and content object within the model, assign values for different attributes of the vertices, and add connections between the vertices .
  • Graph manager 80 is operable to assign the values for attributes and connections between vertices in accordance with user instructions or by calculation m accordance with a function or procedure.
  • Content generator 90 is operable to insert content objects into the model by inserting the content objects into the local coordinate systems of bases generated by base generator 70.
  • the content objects may be of different types.
  • a content object may be defined by content generator 90 to be invariant, with the result that the content object cannot then be changed by the system.
  • ⁇ solid object is an object of bounded volume.
  • a primary object is a point, vector, line, curve, plane or planar polygon .
  • content generator 90 comprises content importer 92 and content creator 94.
  • Content importer 92 is operable to input content objects into the system from an outside source, such as an external CAD application running on apparatus 2 or an external apparatus. In the present embodiment only primary content objects and invariant content objects can be imported.
  • Content creator 94 is operable to create content objects within the system in accordance with mathematical procedures defined in accordance with user instructions or in accordance with pre-stored geometric modelling kernels.
  • Each mathematical procedure comprises one or a series of mathematical operations which create and/or manipulate geometric components in order to create a content object for the design.
  • the operations may include the execution of mathematical functions, transformations, logical
  • a modelling kernel may be stored to create a solid object by Boolean operation (union, intersection, difference) and a modelling kernel may be stored to create a solid object from bounding planes.
  • Boolean union, intersection, difference
  • Many other modelling kernels may be stored.
  • Content creator 94 is operable to use the same mathematical procedure to generate a respective content object relative to each of a plurality of bases. More particularly, the mathematical procedure creates and/or manipulates a geometric component in dependence upon base position and/or orientation so that the resulting content objects vary in accordance with changes in the position and/or orientation of the bases even though they were generated using the same mathematical procedure.
  • transformation controller 100 is operable to apply transformations to bases and/or content objects, thereby enabling a plurality of bases and/or content objects to be changed without defining changes for each one individually.
  • transformation controller 100 is operable to apply the following transformations (although others could be applied instead or as well) :
  • Transformation controller 100 is operable to define a transformation to be applied in accordance with user instructions or by computation.
  • transformation controller 100 is operable to compute a transformation to be applied in accordance with one or more parameters used previously in the modelling.
  • transformation controller 100 is operable to apply a transformation to bases and/or content objects that is dependent upon the identity of the reference base in which the base and/or content object is located, so that the transformation applied varies in accordance with the reference base identity. In this way, bases and/or content objects in different bases are transformed in different ways .
  • Transformation controller 100 is operable to apply a transformation to every content object in each base, or to apply a transformation selectively to some but not all of the content objects in each base. For example, a transformation can be applied to transform a content object with name POLYGON-I in each base but leave content objects with other names unchanged.
  • the selection of content objects to which a transformation is to be applied can be based on different criteria, for example name, type, geometry data, connections in a model graph, etc.
  • Sensor function executer 110 is operable to generate and execute procedures to perform a mathematical test on a property of an individual base or content object or on a plurality of bases and/or content objects. More particularly, sensor function executer 110 is operable to identify each base (or content object) having an attribute or connection in the graph maintained by graph manager 80 which satisfies a defined relationship. As a result, sensor function executer 110 is operable to divide bases
  • Sensor function generator 110 permits new attributes or connections to be added to each base or content object so that the value of the new attribute and/or connection can be used to classify the bases or content objects.
  • Model data manager 120 is operable to maintain the model data generated by the system, and to write the data to, and retrieve the data from, memory 30 as required.
  • the model data comprises data defining the bases, content objects and graph. Every base is represented by its logical data and geometry data.
  • the logical data contains at least a generation index. The index may be an explicit value or may be implicit in the order by which bases are arranged in computer memory.
  • the geometry data of a base comprises its origin and a rotation matrix in the global coordinate system.
  • a base may have additional attributes, such as name, colour, group, etc., as described later.
  • a particular base in a model may be reached in three different ways:
  • Each content object has the following data:
  • the type content can be a type of three-dimensional object (e.g. point, line, polygon, solid), or an operation on convene objects (e.g. intersection between line and plane, union of solids, extrusion of a polygon in a direction) .
  • three-dimensional object e.g. point, line, polygon, solid
  • an operation on convene objects e.g. intersection between line and plane, union of solids, extrusion of a polygon in a direction
  • the transformation orients the content object in relation to a base in which the content object resides.
  • Attributes are from the same categories as attributes for bases (name, colour, group, etc.) .
  • the data part of the content object depends on its type.
  • the data For fixed types (point, line, polygon, solid, etc.), the data contain actual geometry data (a point is represented by a list of three coordinates, a line by two points, a solid by a list of verlices, a list of edges and a list of faces, etc . ) .
  • the data When the type of content is an operation on content objects, the data contain lists of content objects or references (pointers) to content objects. In such case, the actual data are computed only when needed:
  • Display data generator 130 under the control of central controller 20, is operable to generate image data for display (including instructions to the user and images of a design created using processing apparatus 2) and to control display device 4 to display the image data.
  • Output data interface 150 is operable to control the output of daba from processing apparatus 2.
  • the output data may comprise part or all of the model dctta generated by the system, and may be output to other systems for different purposes, such as analysis or manufacturing.
  • Output data interface 150 is operable to output the data for example as data on a storage medium 152 (such as an optical CD ROM, semiconductor ROM, magnetic recording medium, etc), and/or as a signal 154 (for example an electrical or optical signal transmitted over a communication network such as the Internet or through the atmosphere) .
  • a recording of the output data may be made by recording the output signal 154 either directly or indirectly (for example by making a first recording as a
  • output data interface 150 is operable to output data to a manufacturing machine for the fabrication of an object according to the design.
  • data may be output for separate components of the design, and the data may be output as CNC
  • Figures 4 to 12 show the processing operations performed by processing apparatus 2 to generate a design model in this embodiment.
  • a model is generated in a 3 dimensional Euclidean space. All of the values representing coordinates are expressed relative to the global origin in the standard basis of this space.
  • parameter definer 50 defines global parameters for the model.
  • the backbone bases are the first objects in the model, and the global parameters defined at step SlOO are also used for the generation of these bases and also some subseguent objects in the model (as will be described Jater) .
  • Figure 5 shows the processing operations performed by parameter definer 50 at step SlOO.
  • parameter definer 50 defines the number of bases. This may be done in accordance with instructions from a user, by computing the number of bases using a mathematical function, or deriving the number of bases from a previous generation of bases.
  • parameter definer 50 defines the number of backbone bases in accordance with user instructions, and in this example the number of backbone bases is defined to be 8.
  • parameter definer 50 defines other global parameters. These parameters and the values assigned in this example comprise:
  • floor height 4.2 meters position of first backbone base - direction of X-axis of first backbone base
  • the parameters could be defined "in-place", that is, in the steps where the particular function or procedure which uses the parameters is selected and applied.
  • the parameter for the number of bases could be defined at step 300.
  • the parameter is vaLid only for that particular function.
  • the parameter is an integral part of the model data and therefore its value is subsequently accessible for the processing in other steps.
  • reference object selector 60 selects one or more reference objects to carry the bases to be generated in the current round of processing. This is performed by selecting on or more existing reference bases and/or content objects.
  • each base must have a reference base - some other base or a base that represents the orientation of a global coordinate system (global base) .
  • the reference base in the latter case is a virtual base - that is, each base that does not have a previously- generated base as its reference base is considered to have a global base as its reference base.
  • the reference base is important in this example because all numeric quantities representing positions in space are expressed relative to the position and orientation of the reference base.
  • Figure 6 shows the processing operations performed by reference object selector 60 at step S200.
  • object selector 60 selects a reference coordinate system. Since backbone bases are the first bases generated in the model in this example, object selector 60 selects, by default, a reference coordinate system on this round of processing comprising the global Euclidean coordinate system 205. Although the global coordinate system (global base) is not a real object, it is shown on some figures to help the viewer with the orientation of objects on the figure.
  • Figure 13a depicts the symbols used for a base in all of the following figures, wherein:
  • step S220 m Figure 6 is not performed on this round of the processing.
  • base generator 70 performs processing to generate the number of bases previously defined at step SIlO (that is, 8 backbone bases on this round of the processing) in the coordinate system(s) of the reference object (s) selected at step S215.
  • function seLectoi 72 selects one or more mathematical functions for computing Lne origins of the bases m accordance with user instructions.
  • Origins [i] ⁇ fx[i], fy[i], fz[i] ⁇ , ⁇ i, 1 to Number of backbone bases ⁇
  • position calculator 74 uses the function and parameter values selected at step S315 to calculate the origins of the backbone bases.
  • the positions P 1 of the origins of the backbone bases are calcu] ated as :
  • Figure 13b shows the computed points Pi in relation to the global coordinate system G.
  • Bases are not just positions in space; each base also represents a local coordinate system at that position. Accordingly, a rotation matrix is needed for each base to be complete. This matrix defines the amount of rotation needed to rotate the coordinate axes of the reference base to the coordinate axes of the generated base.
  • orientation calculator 76 defines a default orientation for each base which is then changed in accordance with user instructions. More particularly, the default orientation is the same as the orientation of the reference base (in this case global coordinate system G) . This is represented with the identity rotation matrix.
  • Figure 13c shows bases B; positioned on the points Pj from Figure 13b with each base having the default orientation of the global coordinate system G.
  • function selector 72 selects one or more mathematical functions for additional rotation of each base.
  • the rotation function (s) is selected in accordance with user instructions.
  • the following function is selected to compute a respective rotation matrix for each backbone base :
  • This function defines the rotation of each backbone base B 1 as a function of the value of the backbone base index "i" and rotation angle ⁇ , so that the rotation of each backbone base will be different.
  • orientation calculator 76 applies the function (s) selected at step S330 to compute a respective rotation matrix for each backbone base, thereby generating a list 340 of rotation matrices for the bases.
  • base builder 78 puts together the base origins generated at step S320 and the rotation matrices generated at step S335 to define each base as a respective coordinate system comprising a position and orientation.
  • Figure 13d shows the backbone bases C 1 positioned on points the P 1 from Figure 13b with applied function R[i] for their rotation .
  • step S400 graph manager 80 inserts the bases generated at step S300 into a model graph and records different attributes for each base.
  • Figure 8 shows the processing operations performed by graph manager 80 at step S400.
  • 8 backbone bases were created as objects at step S300. Therefore, at step S420, 8 new vertices are inserted _ nto the model ⁇ raph. Actua] Ly, at this stage m the processing, no model graph has previously been created, and therefore graph manager 80 creates a model graph from scratch and inserts the 8 vertices therein .
  • Figure 14a shows the state of the model graph after step S420.
  • graph manager 80 assigns automatic attributes to each vertex (base) in the model graph.
  • the automatic attributes comprise:
  • Every base m a generation is assigned a consecutive number starting from one for the first base created.
  • the index is therefore a unique identifier of the base within a particular generation.
  • the index of a base need not be explicitly defined. Instead, for example, the index of a base may be implicitly defined by the order m which the bases are generated or arranged m computer memory. Name: This attribute is either unique for every base or has the same value for all bases in a generation. Which method is used depends on the context of a generation. For example, bases that represent floors in a building might have distinct names (e.g. floorl, floor2, ...) . On the other hand, bases that represent a type of windows might have the same name.
  • Level Used for the purpose of visualization of a model. Usually it has the same value for all bases in a generation.
  • Colour Used for the purpose of visualization of a model. It defines the colour in which a base will be rendered and displayed.
  • the attribute values assigned in this example comprise
  • Figure 14b shows the model graph after the automatic attributes have been assigned at step S425.
  • step S440 at which graph manager 80 adds automatic connections between vertices representing backbone bases - referred to as intrageneration connections where "intrageneration" means between vertices representing bases from the same generation .
  • CREATION ORDER there is only one automatic intrageneration connection called "CREATION ORDER”. This connection connects the vertices in the order in which the bases were created from first to last. Which one is first and which one last is governed by the index "i" in all of the functions used at step S300. This index always runs from 1 to the number of bases in the current generation.
  • Graph manager 80 computes edges for the connection "CREATION ORDER" with the following formula :
  • additional mtrageneration connections may be added at steps S445 and S450.
  • steps S445 and S450 there is no requirement for additional intrageneration connections for backbone bases, and therefore the processing at steps S445 and S450 is omitted during the current round of processing.
  • the model graph resulting from the processing at step S400 for this example is therefore as shown m Figure 14c.
  • the model is m a consistent state.
  • the term "consistent state" of the model means that all of the data from bases, content objects, and attributes and connections m the model graph are in accordance with each other (that is, there is no base or content object without the required attributes and connections) .
  • the designer and/or another user of the system has a chance to export the model data to other systems for the purpose of visualization, analysis, manufacturing, etc. Which bases, contenb objects and other data are exported depends on the purpose of the other system. Nob all of the data needs to be exported. For example, for quick visualization o£ the model, data for only the ] ast generation of bases need to be exported.
  • data can be formatted in different ways. For example, for visualization, only the geometry and the attributes "Level” and “Colour” are needed. For structural analysis, the geometry, information about the material of content objects
  • step S500 content objects can be inserted into the bases generated at step S300 in the current round of processing.
  • step S500 is omitted on this round of the processing.
  • Step S500 is, however, performed (and described) for subsequent rounds.
  • step S600 additional transformations can be applied to bases and content objects.
  • This feature enables the present embodiment to change the position and/or orientation of some, or all, of the bases or some, or all, of the content objects using one or more mathematical functions without re-defining each base or content object individually.
  • the backbone bases generated at step S300 are reoriented in a series of transformations by transformation controller 100.
  • the processing at step S600 is provided separately in this embodiment from the processing at step S300 (at which bases were generated and orientated) and the processing at step
  • step S500 (at which content objects were generated and orientated) so that transformations can be applied taking into account both the bases and the content objects.
  • one or more content objects added at step S500 may be used to compute a transformation to transform bases and/or content objects.
  • Figure 10 shows the processing operations performed by transformation controller 300 at step S600.
  • transformation controller 100 selects one or more functions for the transformation of bases.
  • the transformation (s) are selected in accordance with instructions from a user (although they could be selected by computation) .
  • transformation controller 100 selects one or more parameters to be used in the function (s) selected at step S630 for the transformation of bases.
  • the parameter (s) are selected in accordance with user instructions (although they could be selected by computation) .
  • transformation controller 100 selects one or more functions for the transformation of content objects.
  • the transformation (s) are selected in accordance with user instructions (although they could be selected by computation) .
  • transformation controller 100 selects one or more parameters to be used in the function (s) selected at step S640 for the transformation of content objects.
  • the parameter (s) are selected in accordance with user instructions (although they could be selected by computation) .
  • transformation controller 100 applies the transformation ( s ) selected at steps S630 and S640 using the parameter (s) selected at steps S635 and S645, thereby generating transformed bases and/or content objects.
  • Transformation TRi is a transformation needed to rotate vector O 8 - Oi to vector 0 v - Oi through the point Oi .
  • TRi TransformationVectorToVector [Oi, O 8 - O : , O v - Oi]
  • Transformation TRi is applied only to the origins of the backbone bases Bi.
  • the rotation part of the bases Bi is kept intact .
  • B 1 Base [ ⁇ x iA y i ⁇ zi ⁇ , R Bi ]
  • Bi ' Base [ ⁇ xi', yi ' , z ⁇ ' ⁇ , R B i ' ]
  • Bi " Base [ ⁇ x/, yi ' , Z 1 J, R Bi ' ]
  • Figure 15a shows the bases B 1 before transformation
  • Rotation Ri is defined as rotation around global Y-axis ⁇ 0, 1, 0 ⁇ for 180 degrees:
  • a rotation R 2 is applied locally - that is, only on the rotation part of each backbone base B 1 . This is meant to bring the X-axis of each backbone base to point again in the direction i t had before application of the global rotation R 1 .
  • X-axis direction vector X d i r ⁇ 0.8, -1.25, 0 ⁇
  • Transformation TR 2 is defined as follows:
  • directed angle from vector X 8 to vector X d
  • r R - RotationAroundAxis [ ⁇ 0, 0, 1 ⁇ , ⁇ ]
  • step S700 content generator 90 can add new content objects to the model, and at step S800, graph manager 80 can perform processing to update the model graph.
  • the processing at steps S700 and S800 is not performed during the current round of processing. More particularly, because no new content objects are to be defined and all of the attributes and connections have already been established at step S400, then steps S700 and S800 are not necessary.
  • the model is in a consistent state, and therefore data can be exported to one or more other systems, as described previously with reference to step S475.
  • step S900 a check is performed to determine whether another generation of bases is to be added to the model.
  • the backbone bases comprise the first generation of bases, and further generations of bases are to be added. Accordingly, processing returns to step SlOO for the next round of processing, which will be described below.
  • Second Round of Processing Generating Ring Bases (Second Generation Bases ) With Content Objects
  • the second generation of bases in the present example is a generation of "ring" bases.
  • Each backbone base serves as a reference base (that is, a containing base) for a specific number of ring bases to be arranged in a ring on a plane around the backbone base.
  • the ring bases are generated by performing a second round of the processing m Figure 4, as will now be described.
  • parameter definer 50 defines the number of bases for this generation of bases in accordance with user instructions.
  • the number is 18 new bases for each backbone base. This number is the same for each backbone base, but it could be a different number for each backbone base.
  • parameter definer 50 defines a value for a specific global parameter comprising the depth of white blocks.
  • the parameter "depth of white blocks" is used at step S700 for the creation of content objects.
  • the parameter "depth of white blocks" is set to the value 1.0.
  • reference object selector 60 selects reference bases for the new ring bases.
  • each backbone base is chosen as a reference base for 18 respective ring bases.
  • the first backbone base serves as a reference base for the first 18 ring bases
  • the second backbone base serves as a reference base for the next 18 ring bases
  • the last backbone base which serves as a reference base for the last 18 ring bases.
  • I ref index of reference backbone base
  • I ref [I] Quotient [I - 1, number of bases per ring] + 1
  • base generator 70 generates the ring bases.
  • the number of ring bases is equal bo the number of bases defined at step SIlO in this round of processing (that is, 144) .
  • the origins of the bases are computed.
  • the procedure for computing the origin of each ring base in the present example will be described with reference to Figure 16.
  • the origins of its 18 ring bases are positioned on a circle with a specific radius in the XY plane of the backbone base.
  • the origins are equidistantly spaced around the perimeter of the circle, with the first origin at 0° angle and the others following in the counter-clockwise direction.
  • the positions of the origins of the ring bases are computed as if they all lie in an XY plane with the global coordinate system as a local coordinate system. After that each ring base is transformed with appropriate transformation to lie in the same position relative to its reference base (backbone base) as it is in the global coordinate system.
  • I index of ring base, (runs from 1 to total number of ring bases)
  • I roi [I] index of reference backbone base computed by formula from step S215 on this round of processing
  • Origins 0[I] R [I] ⁇ Cos [Ia] , SIn[Ia], 0 ⁇
  • I, e f[I] is a variable of the function - that is, the radius of the circle upon which the origins of the ring bases lie is dependent upon the index I of the reference base (the backbone base to which the ring bases belong) .
  • the radius changes as the index I changes, so that the radius is different for each backbone base.
  • the radius Rl of the circle of ring bases 1- 18 is different from the radius R2 of the circle of ring bases 19-36 and the radius R3 of the circle of ring bases 37-54.
  • the positions of the second-generation bases (which lie on the circles) change relative to their containing backbone base from circle to circle.
  • This feature of the present embodiment enables variations in the ring bases to be introduced throughout the model without having to define the ring bases individually. This is particularly advantageous where a large number of ring bases are to be defined for the model.
  • the form and extent, of this variation is set in accordance with the mathematical function having the index of the backbone base as a variable.
  • 1 is a variable of the function. That is, the position of each second-generation base upon its circle is dependent upon the value of its index I .
  • the variable I therefore acts as a variable feature identification number which controls the position of each second-generation base.
  • each origin O 1 must be transformed with a transformation TBfI] which is in reality a defining transformation of the ring base's reference backbone base C[I ief [I]I .
  • Figure 17 shows the global positions of the origins Oi of the ring bases computed by position calculator 74 in accordance with the equations above.
  • Ci are the reference backbone bases.
  • the origins of the backbone bases are computed locally to their reference base and then transformed to the globaJ coordinate system. They could instead be defined directly in the global coordinate system, but the functions used would be more complex.
  • a situation can be foreseen where functions for computing the origins of the bases directly in the global coordinate system would be less complex than computing them locally (i.e., when there is no dimensional relation to the reference bases).
  • function selector 72 selects one or more functions for additional rotation of the ring bases.
  • a function is seLected to rotate the Z-axis of each ring base so that the Z-axis points to the origin of the ring base on the next ring which is expressed with the following relation on the ring base indices :
  • TRi TransformationVectorToVector [Oi, Oi + Z, O 2 ]
  • each ring base B R j should lie in the plane P that goes through the origins O 1 , 0;> and C (that is, the origins of ring base B R i, ring base B R [I T0 ] and reference backbone base C[I 3Of ]).
  • the amount of rotation R 1 needed is calculated from the directed angle ⁇ between the X-axis of base B R i ' and the plane P.
  • X BRX ' direction of X-axis of base B R i '
  • Z BRI ' direction of Z-axis of base B R i '
  • AngleBetween [X BR /, ( Z BR ' x NormalVector [P] ) J
  • the directed angle between two vectors is defined as follows: In general two non-parallel vectors vi and v? fully define a plane. If the normal vector of this plane is defined as a cross product of vectors vi and V 2 (n
  • the directed angle is then the angle when travelling from vector Vi to vector V 2 around normal n in a counter-clockwise direction. (This means that the directed angle is not necessarily the smallest angle between two vectors . )
  • Figure 19b shows the final ring bases B Ri _ after applying transformation TRj and rotation R 1 .
  • graph manager 80 inserts the ring bases generated at step S300 into the model graph and records different attributes and connections for each ring base.
  • FIG. 20 shows the model graph after the processing at step 420.
  • Automatic attributes are assigned to each vertex (base) by graph manager 80 at step S425.
  • the automatic attributes are:
  • Ring bases are organized in rings. Within each ring, the ring bases are characterized by the fact that they have the same reference backbone base. Backbone bases are numbered from 1 onward and the index of each backbone base in the generation "backbone” can therefore be considered as a ring number.
  • the ring bases are partitioned into distinct non-overlapping groups (also called equivalence classes) . They can be selected separately wherever a set of bases is needed throughout the generating procedure. For example, when reference coordinate systems are defined for a new generation of bases (step S215) or when content objects are inserted (step S500) or created (step S700) in some of the bases from the current generation of bases.
  • Additional attributes can be arbitrary, and thus their values may be defined through the use of functions.
  • the function previously defined at step S215 in this round of processing is used, which is a function for calculating the index of the reference backbone base I re i from the index of ring bases.
  • graph manager 80 adds the automatic connection called "CREATION ORDER" between the vertices representing ring bases.
  • this connection defines the order in which the vertices were created from first to last.
  • the resulting model graph is shown in Figure 22, in which the arrows show the creation order.
  • Additional intrageneration connections are selected and defined in steps 445 and S450. They facilitate the use of the ring bases as parameters in functions and procedures later on in the course of the example. In the present example, four additional connections are defined:
  • NEXT Connects a ring base to the base adjacent to it on the right, that has an index number greater by 1, except for the last base on the r:i ng which connects to the first base of the ring
  • the index of the analogue ring base is defined as the index of the relevant ring base plus the number of bases per ring.
  • Ring is defined as a group of ring bases which have the same reference backbone base, that is they have the same value of the attribute "ring number”, which is assigned in step S435 on this round of processing. "Next ring” is thus a group of ring bases with the consecutive value of attribute "ring number”.
  • Edges TO ⁇ (I, I + m) , ⁇ I, 1 to n - m ⁇ ⁇
  • graph manager 80 adds automatic intergeneration connections.
  • An intergeneration connection is a connection that connects bases in different generations (a new base generated in the current round of processing and an existing base generated in a previous round of processing) .
  • a connection called "SUBBASES” is added automatically from each backbone base to every ring base that counts this backbone base as its reference base.
  • the formula for edges is:
  • I ref [I] index of reference backbone base computed by formula from previous step S215
  • Edges SUBBASES ⁇ (IroiU], I), U , 1 to n ⁇
  • the first index in a pair refers to the backbone bases and the second index refers to the ring bases. Part of the resulting modcj graph is shown in Figure 25.
  • step S500 m content generator 90 xnserts a content object into each ring base generated at step S300. More particularly, m this example, a point P is inserted into each ring base in the same position relative to the ring base' s origin as its position to the global coordinate system G. This relationship is shown m Figure 26a.
  • Point P is the same for each ring base, and comprises an example of a primary content object.
  • each ring base that is, a group of ring bases with the same value of the attribute "ring number"
  • each ring can have a different point P 1 as its content object.
  • Figure 9 shows the processing operations performed by content generator 90 at step S500.
  • content importer 92 seiects the external content object to be imported and its source.
  • these processes are performed in accordance with user instructions (although they could be performed automatically by computation) .
  • step S515 content importer 92 imports the selected content object into the system, and assigns a copy of the content object (in this case point P) to each ring base generated at step S300.
  • the points P are the first content objects in the model of the present example. Their type is POINT and their data consist of x, y and z coordinates. Each ring base B Rl gets its own copy of point P. This is shown in Figure 26b.
  • step S530 graph manager 80 adds each content object assigned at step S525 as a new vertex to the model graph. This is performed in a similar way to the addition of a vertex for each base at step S420 (described previously) .
  • Figure 27 shows a part of the model graph after step S530.
  • step Sb35 graph manager 80 assigns the following automatic attributes to each vertex in the model graph representing a point P:
  • Figure 28 shows part of the model graph after step S535.
  • step S555 graph manager 80 adds CONTENT connections to the model graph for the content objects assigned at step S525. More particularly, each point P has a reference ring base. The automatic connection called "CONTENT" is added to the model graph to show this relation for each ring base arid its point. Part of the resulting model graph is shown in Figure 29.
  • step S500 the model is in a consistent state, and therefore at step S575 its data can be exported to other systems for various purposes, as described previously.
  • Step S 600
  • step S600 no processing is required at step S600, and therefore this step is omitted on this round of processing.
  • step S700 content generator 90 creates new content objects for the model using one or more mathematical operations .
  • FIG 11 shows the processing operations performed by content generator 90 at step S700.
  • a solid block (mesh) is inserted into each ring base.
  • auxiliary objects are created.
  • Six planes are sufficient to fully bound a solid block of the proposed shape, and a line is calculated to define two of the planes.
  • Each content object is created in every ring base according to the same procedure.
  • step S705 to S799 are executed 8 times in sequence (a line, 6 planes and a mesh) , the description of these steps is made for all of the created content objects together.
  • step S705 content creator 94 selects the type of each new content object. In this embodiment, the selection is performed in accordance with user instructions (although it could be performed automatically) .
  • the object types are LINE, PLANE and MESH. Lines and planes are primary content objects, while mesh is in the category of solid content objects.
  • content creator 94 selects operations for the creation of the content object, the bases in which the content object is to be generated and parameters for the creation operations, respectively, with the selected operation parameters being recorded at step
  • step S745 content creator 94 executes the operations selected at step S715 in accordance with the bases and parameters selected at steps S720 and S730 to generate the same new content object (s) in all of the bases selected at step S720. For every new content object, the same generating procedure is executed in all of the selected bases. This assures that if a procedure for creation of a new content object is composed with actual data from a single base, it can be replicated without change to all the selected bases in the generation.
  • the values of actual parameters may be different for every base, but their composition (number and types of parameters) is the same.
  • Object name Description of creation function: Bisector Angle bisector between two directions from a given point in space.
  • Figure 30a shows the construction of an angle bisector L in ring base B Rl .
  • Line L lies in a plane defined by points 0, O N and Op and bisects the angle between points OP - 0 - ON.
  • B R —>
  • NEXT points to an object which can be selected by following connection NEXT from object (base) B Rl . Since this connection has only one value, no qualifiers are needed. From the definition of the connection NEXT in step 400, the object at the end of it is ring base B Rlf i.
  • Figures 30b, 30c and 3Od show the construction of a plane from 4 points using 3 different subsets of 3 defining points. With four points (0, O N , 0 NT? O T ) and one of them fixed (O) , only three possible combinations of three different points are possible: (0, O N , O NT ) , (0, O N , 0 T ) and (O, 0- , O N -, ) . For each triplet, a different plane can be constructed. These three different planes are depicted in Figures 30b, 30c and 3Od, respectively.
  • Figures 31a and 31b shew created content objects in two consecutive ring bases.
  • the labels used in these figures depict the same objects as the labels in Figures 30a-30d with the following additions:
  • Base B N ring base B Ri -> NEXT
  • Base B NN ring base B Ri -» NEXT -> NEXT
  • Base B ⁇ ring base B R i —> TO
  • Base B NT ring base B Ri -»• NEXT -> TO
  • Base B PT ring base B ⁇ i ⁇ PREV -> TO Line
  • L 1 angle bisector in ring base B R3
  • L N angle bisector in ring base B
  • L NN angle bisector in ring base B Nt
  • Plane Pj is constructed from line L 1 and point 0 T .
  • Line L is represented with two points; therefore the plane can be constructed from a line and an additional point.
  • the plane' s normal vector lies in the same halfspace as the point Op.
  • the example procedure above for creating planes shows the importance of attributes and connection data stored in the model graph. Using only an arithmetic function on the indices of the ring bases would return incorrect ring bases for parameters for the first and the last base on each ring. All of the parameters (points needed for construction of a plane) are actually origins of ring bases. But for the procedure to have appropriate origins of ring bases for parameters for each ring base in which new content objects (planes) are created, the connections NElXT, PREV and TO must be used. The connections NEXT and PREV encode the information about neighbouring ring bases of the relevant ring base on the same ring, while the connection TO represents information about the analogue ring base from the next group of ring bases.
  • Plane P R is constructed from line L N and point O NT .
  • the plane's normal vector lies in the same halfspace as the point 0 NN .
  • Plane P 0 is constructed from three points 0 PT , 0 T and 0 N ⁇ - The plane' s normal vector lies in the opposite halfspace as the point 0.
  • Plane P ⁇ is constructed from three points 0 P , 0 and O N .
  • the plane' s normal vector lies in the opposite halfspace as the point OT.
  • Plane P F is constructed from three points 0, O N and 0 T .
  • the plane's normal vector lies in the opposite halfspace as the point 0 + X-axis [B Rl ] .
  • Plane P B is inverted plane P F , moved for distance d in the direction of the normal vector of plane P B .
  • Solid block W ⁇ is a mesh constructed from planes P L , P R , P D , P ⁇ , P;., P 1 ,. Each plane divides a space into two halfspaces and one of them can be considered full. By convention, the halfspace in which the normal vector of the plane points is considered empty, the other half as solid. Solid block Wj is then constructed as an intersection of six planes. The normal vectors of the six bounding planes are oriented in such a way that they point outwards of the resulting solid block .
  • each content object is generated in accordance with a procedure comprising a series of steps using at least one mathematical function. Furthermore, the procedure for the generation of each content object is dependent upon a plurality of ring bases (even though the content object is defined in the local coordinate system of only one base) . Accordingly, because the arrangement of ring bases varies throughout the model (because the ring bases were defined so that they vary in accordance with the identity of the backbone base to which they belong) , then the content objects also vary throughout the model in accordance with the variations of the ring bases.
  • the present embodiment does not provide a separate definition of each content object in order to achieve this variation - instead, a single definition is provided using at least one mathematical function and a plurality of bases. If the designer subsequently changes the arrangement of bases, then the system will automatically regenerate the content objects in accordance with the definition using the new arrangement of bases and the mathematical function (s) for the definition of the content objects. As a result, the system adapts the content objects to any change in the bases.
  • new content objects are not created in all ring bases. More particularly, the definition of planes and white block depends on the data of bhe ring bases from two consecutive rings. However, each base on the last ring has no TO connection, meaning that there are no more ring bases. Accordingly, for bases on this ring (ring number 8), no new content objects are created.
  • Figure 31b shows the final solid blocks Wi and W N , belonging to ring bases B Ri and B N respectively.
  • Block W N is rendered in cross-section.
  • content objects also keep information on object type, selected creation function (s) and references to the bases and/or objects that serve as parameters for the creation function (s) .
  • object "White block" Wi stores following non-geometric data:
  • Representation of a content object with operation and references to parameter objects for an operation enables the system to keep track of the history of a content object. Tn addition, the system can revaluate the object anytime, possibly with ailtered source object parameters.
  • each content object After the creation of each content object, its validity is checked by content creator 94 at steps S750 and S755.
  • This processing is performed in this embodiment because not all combinations of input data can produce valid objects. For example, a line is defined with two distinct points. If the points are the same, then the line is not defined properly, it is not valid, and cannot be used in other operations.
  • Each type of object has its own set of criteria that must be satisfied for successful validation. Simple objects like points, lines, planes, can be easily checked. More complex ones like meshes and other solid objects may need special functions to be properly checked. In this embodiment, these functions are provided by the geometric modelling kernel used for computing the solid objects and are executed automatically (that is, the creation funcbion fails if the resulting object is not properly formed) . In the event that a validation function is not provided automatically, the present embodiment allows for a validation function to be selected by content creator 94 at step S750 in accordance with user instructions.
  • graph manager 80 adds the object as a new vertex to the model graph at step S765.
  • Figure 32 shows part of the model graph with new vertices for the content objects in ring bases with indices I, I + 1 and 1 + 18.
  • graph manager 80 assigns automatic attributes to each new vertex in the model graph representing a new content object.
  • the automatic attributes assigned by graph manager 80 to a content object comprise :
  • step S775 graph manager 80 selects any additional attributes to be added for a content object in accordance with user instructions, and at step S780, adds the additional attribute (s) to the model graph.
  • Figure 33 shows the same part of the model graph as Figure 32 with the attributes added at steps S770 and S780 for the present example.
  • step S790 graph manager 80 adds a CONTENT connection to the model graph for each new content object.
  • each new content object has a reference ring base. Accordingly, at step S790, the automatic connection called "CONTENT" is added to the model graph to show this relation between the reference ring base and the new content object. Part of the resulting model graph is shown in Figure 34.
  • step S700 the model is in a consistent state, and therefore at step S799 its data can be exported to other systems for various purposes, as described previously.
  • Step S800 is the last step in the generation of ring bases.
  • sensor function executer 110 generates and executes one or more so-called sensor functions to test a property of the bases or content objects and to divide the bases or content objects into equivalence classes in dependence upon the results of this test.
  • sensor function executer 110 classifies bases into two equivalence classes. As will be described later, the system subsequently generates content objects such that the content objects depend upon the equivalence class to which their reference base belongs.
  • FIG. 12 shows the processing operations performed at step S800.
  • sensor function executer 110 defines one or more attribute (s) and/or one or more connection (s) on which a sensor function is to operate. More particularly, sensor function executer 110 may select an existing attribute or connection or instead may define a new attribute or connection.
  • the new attribute "CUPVATURE” is added to each ring base.
  • This attribute may take one of two possible values, "+” and “—” (which is calculated later), such that bases with “+” CURVATURE fall within one equivalence class and bases with "-” CURVATURE fall within another equivalence class.
  • sensor function executer 110 defines a sensor function, Sensor [I], to be used in calculating values of the attribute (s) and/or connection (s ) defined at step S805. If an existing attribute or connection is selected at step S805 which already has stored values, then step S830 is omitted.
  • Base C [I ]e i [I]] I-th ring base's reference backbone base .
  • Point Oc ⁇ Origin of backbone base C [I ie j [I]]
  • Base B RL T-th ring base
  • Point O RJ Origin of base B R1
  • Plane PLl PlaneFrom3Points [0 F , 0 T , 0 c ]
  • Plane PL [I] plane orthogonal to the plane PL] with a normal vector pointing away from point 0 c -
  • nrb number of bases per ring N - total number of ring bases
  • sensor function executer 110 selects criteria data to be applied to values computed using the sensor function Sensor [I] in order to divide the bases/content objects into equivalence classes.
  • the sensor function Sensor [I] and the criteria data define values of the attrjbute CURVATURE which represent the curvature of the surface of the model m the vicinity of a ring base. If the curvature m the vertical direction m the immediate vicinity of a ring base is convex, then the CURVATURE value is " V" lor that rjng base. On the other hand if the curvature is concave, the value is "—" .
  • sensor function executer 110 selects objects to which the sensor function Sensor [I] and criteria data are to be applied.
  • the sensor function is well defined on]y tor the ring bases on rings 2 to 7. This is because the ring bases from the first rang (ring number 1) have no EROM connection and the ring bases from the last ling (rang number 8) have no TO connection. The values of the sensor function for ring bases on the last ring are not needed because there are no "white blocks" content objects in them. On the other hand, the ring bases from the first ring should be classified and therefore the sensor function should return an appropriate value for them. To achieve this, m this example, the curvature of the ring bases from the second ring is "continued" to the bases on the first ring:
  • sensor function executer 110 After, selecting the objects for processing, sensor function executer 110 applies the sensor function Sensor [I] to the selected objects and determines the value of the attribute CURVAIURE for each object m accordance with the sersor function value and the criteria data selected at step S835.
  • Figures 35a, 35b and 35c show the distribution of these two equivalence classes over the model of the present example. To better see the difference between the convex and concave curvatures, the white blocks generated in step 700 are shaded different] y according to the vafue of attribute "CURVATURE". Figures 35b and 35c show only blocks m ring bases having a value of the attribute CURVATURE "-) " and "-" respe ⁇
  • graph manager 80 adds the attribute (s) and calculated value (s) therefor to the model graph.
  • Figure 36 shows part of the model graph with the values of the attribute "CURVATURE" assigned to the vertices representing ring bases.
  • the generator is in a consistent state, and therefore its data can be exported to other systems for various purposes at step S855, as described previously.
  • the generation of rang bases is the second generation of bases m the example model.
  • the generation of centre bases comes next, and therefore processing returns to step SlOO for another round of processing to add these bases.
  • the third and last generation of bases in the present example is a generation of centre bases.
  • each ring base on all but the last ring serves as a reference base for a single centre base.
  • step SIlO parameter definer 50 defines the number of bases for this generation of bases in accordance with instructions from the user.
  • the number of bases is the on]y initial global parameter for this generation of bases in the present example, and therefore the processing at step S115 is omitted.
  • reference object selector 60 selects reference bases for the new centre bases.
  • each of the ring bases with index 1 to 126 are chosen as a reference base for a single centre base.
  • reference object selector 60 selects existing objects to be used for the definition of the centre bases.
  • base generator 70 constructs the centre bases .
  • the origins of the bases are computed at steps S315 and S320. More particularly, for the present example, the following procedure is selected for computation of the base origins :
  • Neighbouring bases are defined as bases following connections in the model graph labelled NEXT, TO and NEXT —> TO from base B Ri .
  • the origin 0 of the I-th centre base C is computed as the arithmetic mean of points 0 Rl , P N , P NT and 0 T :
  • each centre base is dependent upon two existing bases (the origins O R1 and OT belonging to these bases) and two existing content objects (the points P N and P N ⁇ ) •
  • the origin 0 of each centre base is therefore an object that is dependent upon bases and content objects from different groups of ring bases. More particularly, the origins 0 Rj and OT are each from different (consecutive) rings (groups of bases based upon the value of the attribute "ring number") . Similarly, the points P N and P 1 ⁇ are also each contained in ring bases from consecutive rings .
  • Figure 37a shows points from the definition above.
  • the initia] orientation of centre base C 1 is the same as the orientation of its reference ring base B R1 . This situation is shown in Figure 37b.
  • a first rotation rotates the X- axis of the centre base C 1 around its Z-axis in such a way that it points in the direction of a vector from point 0 R i to point P N .
  • the functions for this rotation are therefore:
  • Xci direction of X-axis of base
  • Ci Z Cl direction of Z-axis of base
  • Ci dir vector P N - 0
  • R i ⁇ AngleBetween [Xc ⁇ , dir]
  • the rotation R 1 is applied locally, that is, only on the rotation part of base C 1 .
  • a second rotation orients the Z-axis of the centre base C 1 vertically, as shown in Figure 37d. This rotation is given by:
  • Figure 38 shows final centre bases C L after applying rotation R 1 and transformation TR : .
  • Step S400 graph manager 80 inserts vertices representing the centre bases into the model graph.
  • step S425 graph manager 80 assigns automatic attributes lor the centre bases.
  • the automatic attributes comprise:
  • Figure 39b shows the same part of the mode L graph as Figure 39a with the automatic attributes added for the centre bases .
  • step S440 graph manager 80 adds the automatic intrageneration connection "CREATION ORDER" (described previously) between the vertices of the model graph representing the centre bases . Part of the resulting model graph is shown in Figure 40.
  • graph manager 80 adds automatic intergenerati on connections.
  • the connection called "SUBBASES” is added automatically from each ring base to the centre base Lhat has this ring base as its reference base.
  • the formula for edges is:
  • index of reference ring base I 1 to total number of centre bases
  • Edges SUBBASES ⁇ (I, J [I]), ⁇ 1,1 to total number of centre bases ⁇ ⁇
  • the first index in a pair refers to the ring bases and the second index refers to the centre bases.
  • the generator is in a consistent state, and therefore its data can be exported to other systems for various purposes at step S475.
  • step S500 content generator 90 inserts content objects into each centre base generated at step S300.
  • an invariant polygon F and points P 1 ,, P R , P H and P ⁇ are inserted into each centre base at the same positions relative to the base' s origin as their positions relative to the global coordinate system G. This relationship is shown in perspective view in Figure 41a.
  • content importer 92 performs processing at steps S505, S515 and S525 to import the polygon F and the points P L , P R , P B and P ⁇ into the system and assign a copy of each imported polygon and point to each centre base.
  • Polygon F is a primary content object.
  • the polygon is created in an outside CAD system and its coordinates are then transferred to the system through a plain ASCII file.
  • the coordinates of its points are:
  • Points P L , P R , P B and P ⁇ are also brought in the system from the outside CAD system in the present example. These content objects fall into the category of primary content objects, meaning that they can be changed subsequently by the system. Their coordinates are:
  • Each centre base C 1 gets its own copy of these content objects at step S525. This situation is shown in perspective view in Figure 41b.
  • graph manager 80 inserts vertices corresponding to the new content objects into the model graph. For each added content object in each centre base, a new vertex is inserted into the model graph. This means that a total of 630 new vertices are added (126 centre bases times 5 content objects) .
  • Figure 42a shows part of the model graph with added vertices.
  • graph manager 80 assigns the following automatic attributes to each new vertex:
  • Figure 42b shows the same part of the model graph as Figure 42a with added automatic attributes for the content objects.
  • step S555 graph manager 80 assigns a CONTENT connection (as described previously) to each content object.
  • Each content object has a reference centre base.
  • the automatic connection called "CONTENT" is added to the model graph to show this relationship between each centre base and each of the 5 imported content objects for that centre base. Part of the resulting model graph is shown in Figure 42c.
  • transformation controller 100 applies additional transformations to the points P L , P R , P B and P ⁇ imported at step S500, while keeping the centre bases Ci unchanged.
  • transformation controller 110 selects functions for transforming each of the points P L , P R , P B and P ⁇ at step S640 and selects parameters for the functions at step S645 before applying transformations in accordance with the selected functions and parameters at step S650.
  • transformations for each point P 1 ,, P R , P B and P ⁇ are computed by functions dependent upon the index of the reference centre base for the point. The functions differ from point to point in parameters only. The definition of the transformation function will be explained with reference to Figure 43a.
  • the parameters r, ⁇ s and ⁇ are different for each point P L , P R , P B and P ⁇ .
  • the centre of circle A is computed from each point by adding a displacement vector d which is also different for each point.
  • the parameters selected at step S635 are:
  • mirrored point P TTD TM • P ⁇
  • the polygon F and points P LT , P RT , P BT and P ⁇ have a final form which is different depending upon whether their reference ring base B Ul has a "+" ve CURVATURE or a "-" ve CURVATURE.
  • the final form of the polygons and points (content objects) is dependent upon the equivalence class of their reference base previously determined at step S800 in the second round of processing.
  • Figure 43b shows the transformed and mirrored content objects in base C j after transform controller 100 has applied the transformations above at step S650.
  • Step S700
  • step S700 The next (and final) step in this round of the processing, and consequently in this example, is step S700.
  • content generator 90 generates further content objects for the model.
  • the content object to be added in this step is a solid block (mesh) inserted into each centre base.
  • Six planes as auxiliary objects are used for its creation. This solid block is at the end trimmed with some of the planes created at step 700 during the second round of the processing (that is, the round to generate the ring bases).
  • Each new content object is created in each centre base according to the same procedure.
  • step S705 content creator 94 selects the type of each new object.
  • the object types for the new objects are PLANE and MESH.
  • steps S715, S720 and S730 content creator 94 selects the opera! ion (s) for the creation of each new content object, the bases in which the content object is to be generated, and parameters for the operation (s) respectively, with the parameters then being recorded at step S740.
  • the functions "Oriented plane through three points” and “Mesh from oriented planes” were described previously w ⁇ Lh reference to step S700 m the second round of processing.
  • the function "Cut mesh WJ th oriented plane” is a function that performs a difference operation between a solid object represented as a mesh and a solid halfspace defined with a plane .
  • Figure 44b shows the definition of the auxiliary planes L, R, D, T, P and B. All of them are defined by three points.
  • the points F 1 represent the vertices of the polygon F.
  • Plane L is constructed from three points P LTI? F I and F 4 .
  • the plane's normal vector lies in the opposite halfspace to the point F 2 .
  • Plane R is constructed from three points P RTj , F 2 and F 3 .
  • the p]ane's normal vector lies in the opposite halfspace to the point F] .
  • Plane D is constructed from three points P bTl , F 1 and F 2 .
  • the plane's normal vector lies in the opposite halfspace to the point Fj.
  • Plane T is constructed from three points P T ⁇ i? F 3 and F 4 .
  • the plane' s normal vector lies in the opposite halfspace to the point Fi.
  • Plane B is constructed from three points F 1 , F ? and F 3 .
  • the plane's normal vector lies in the opposite halfspace to the point P L1J .
  • Plane P is constructed from three points PLT ⁇ , P B ⁇ I and P m ,.
  • the plane' s normal vector lies in the opposite halfspace to the point Fi.
  • Figure 44c shows different planes R versus R and D versus D' constructed from different positions of points P RT i v. P RTD and P BTI V.
  • Figure 44d shows the final solid block S 1 , belonging to centre base C .
  • SOLJ d block S 1 as a mesh constructed from the intersection of the six planes L, R, D, T, P and B.
  • the last operation in this example trims the soljd block Si with planes from ring base B Pj , which is a reference base for centre base Cj, which in turn holds solid block Si.
  • Base B Rl reference ring base for centre base C 1
  • Base C, centre base B Rl -> SUBBASES ⁇ centrebase ⁇
  • Solid block W mesh B Rl -» CONTENT ⁇ White block ⁇
  • the resulting solid block S c is constructed from solid S ⁇ by subtracting inverted planes P L , P R , P n , P T from it. This step assures that the final solid block S c fits into the space bound by the solid block W, which was constructed at step S700 in the second round of processing. This assurance comes from the fact that the same planes are used in the construction of solid blocks W and S 0 .
  • step S745 After the creation of each object at step S745, its validity is checked at step S755.
  • step S755 In this step of the present example, the following validation checks are performed:
  • step S765 graph manager 80 adds new vertices to the model graph corresponding to the new objects created at step S745.
  • new vertices are inserted into the model graph.
  • Figure 45a shows part of the model graph with the new vertices for the content objects in two consecutive centre bases.
  • graph manager 80 assigns the following automatic attributes to each vertex representing a new content object:
  • graph manager 80 assigns an additional attribute for the objects BIL and "BIL cut” called “Material".
  • this attribute has the same value for all objects: GLASS
  • Figure 45b shows the same part of the model graph as Figure 45a with the attributes added for the content objects.
  • Each new content object has a reference centre base.
  • graph manager 80 adds the automatic connection called "CONTENT" to the model graph to show the relationship between each centre base and its new content object. Part of the resulting model graph is shown in Figure 45c.
  • step S800 is not necessary in the current round of processing. This is because the content objects created at step S700 are the last objects constructed in the present example, and therefore no additional attributes or connections to bases or objects ⁇ n the model are needed.
  • the generation of the centre bases is the last generation of bases in this example.
  • Figure 46 shows the resulting model after completion of all of the steps in the three rounds of processing.
  • the ring bases, centre bases and solid objects named BIL are shown.
  • the resulting model is clearly divided into two distinct regions A and B, which correspond to the partition of the ring bases into two equivalence classes based upon the attribute "CURVATURE" defined at step S800 in the second round of processing (refer to Figure 35a) .
  • Region A is based on the ring bases with positive curvature and region B on the ring bases with negative curvature.
  • Objects m regj on A have their tips pointing outwards, while objects m region B have their tips pointing inward.
  • the relative position of their tips against the backplane of the object (made from polygon F; refer to the description of steps SbOO and S700 m this round of processing) follow a distinct sinusoidal pattern.
  • This effect is the result of the parameters used to position the points P LT , P RT , P B ⁇ and P ⁇ (described at step S600 in the third round of processing and shown in Figures 43a and 43b) .
  • the influence of the backbone bases can also be seen on the right edge of region B.
  • the edge of the region B would be linear (albeit not vertical, because the radius of the ring bases also changes from ring to ring; increasing from 12 m on the top (first) ring to 15 m on the bottom (last) ring).
  • the present embodiment stores all of the mathematical functions, mathematical procedures and parameter values used to produce the bases and content objects m the model.
  • the embodiment allows the user to access the stored functions, procedures and parameter values, and to amend them to change the generated model.
  • the system In response to the user amending a function, procedure and/or parameter value, the system automatically regenerates the bases and/or content objects m accordance with the amendments and any unamended functions, procedures and parameter values. ⁇ s a result, the effect of changes can be quickly seen by the user.
  • the value of a parameter m the equations used to generate the backbone bases at step S300 in the first round of the processing is changed. Changing parameters that govern the position and/or orientation of the backbone bases can have a major impact on the final model, since all of the bases created m later steps are dependent upon the backbone bases.
  • parameter F (defined with reference to step S300 in the description of the first round of processing) is changed from 0.75 to 3.0.
  • FIG. 47 the centre bases and solid objects named BIL are shown.
  • the main difference in the model produced by the parameter value change in this example is in the arrangement of regions A and B, which correspond to the equivalence classes based upon the attribute "CURVATURE". Rows 3, 5 and 7 from the top down are clearly different from the model shown xn Figure 46, and after thorough examination all of the other rows are also different, just not so obviously.
  • m Figure 47 the top row of shown solid objects is moved slightJy to the left in comparison to the top row m Figure 46.
  • the objects labelled BIL 1 , BTL 11 and BIL 111 are used for comparison with furtner examples (described below) .
  • the points P L , P R/ P B , P T inserted into the centre bases were transformed into points P LT , P RT , P B ⁇ / PTT according to a set of parameters (for detailed description of the transformation see the descrxptron of step S600 m the third round of processing) .
  • Lhe value of the parameters ⁇ L , cx P , ⁇ B and ⁇ ⁇ used to transform the points is changed from 45° to 120° (all of the parameters have the same value) .
  • the result of changing the parameters F, ⁇ L , ⁇ R , ⁇ B and ⁇ ⁇ in this way is shown in Figure 48.
  • the arrangement of regions A and B is the same as in Figure 47.
  • the difference is in the directions in which the tips of the solid objects named BIL point.
  • the objects labelled BIL 1 , BIL 11 and BIL 111 in Figure 48 have their tips pointing in the opposite direction to the objects with the same labels in Figure 47.
  • These objects are respectively created in the centre bases with the same indices in the model from exampJ e 1 and m the model from example 2 (object BIL x is created in a centre base with index I in both models; the analogue statement is true for objects BIL JJ and BIL XI ) .
  • the points PL ? PR, PB A PT inserted into the centre bases were transformed into points P LT , PRT, PBT ⁇ PTT according to a set of parameters.
  • the values for these parameters are changed to:
  • FIG. 49 the arrangement of regions A and B is the same as in Figure 47. The difference is in the size and directions in which the tips of the solid objects named BIL point.
  • Figure 49 shows that the objects labelled BILi, BILn, BILm, BILiv, and BIL V have tips of different shapes and sizes.
  • a fourth example will now be described, in which a function used to generate some of the bases is changed. More particularly, an example will be described in which the function R[I] used at step S300 in the second round of processing to- calculate the radii of the circles upon which the ring bases lie is changed.
  • a more versatile function Sine is used to compute the radii of the ring bases.
  • the radius of I-th ring base R[I] is adjusted by the value of the Sine function at each floor. The radii thus oscillate around the fixed radius Rfi xe d-
  • R[I] R f1XOd + Sin[2*Pi*arg* (Iref [1] - 1 ) /Numbe rOfBackboneBases]
  • the parameter "NumberOfBackboneBases” was defined at step SIlO in the first round of processing (generation of backbone bases) .
  • the parameter "arg” defines the number of full sine waves produced from the top to bottom floors. In this example, one and a quarter waves are applied from top to bottom.
  • the system automatically reapplies the changed function and all previously defined functions and parameters to regenerate the model.
  • the user can change some of the bases (the ring bases in the present example) and the system automatically regenerates all bases and content dependent thereon.
  • the ring bases, centre bases and solid objects named BIL are shown.
  • the main difference is in the arrangement of regions A and B, which correspond to the equivalence classes based upon the attribute "CURVATURE".
  • the Sine function introduces a bulge in the upper part of the model and a valley in the lower part, and therefore the distribution of regions A and B is clearly different from Figure 46.
  • the influence of a quarter of the next sine wave can also be seen in the bottom right part of the figure.
  • the reason why not all of the bottom line belongs to region B is the influence of the positions of the backbone bases.
  • content objects were inserted into the bases such that the content object was the same for every base at the time of insertion.
  • processing can be performed by the system to insert content objects so that a property of each content object (such as its position, orientation and/or shape) varies in accordance with the base into which the content object is inserted.
  • step S500 in the third round of processing 5 content objects were inserted into each centre base. More particularly, four points P 11 , P R , P B , P- and a polygon F were brought into the system from an outside source and a copy of each object was assigned to each centre base. As a result, polygon F was identical for each centre base.
  • step S500 may be performed instead so that a property of polygon F changes in dependence upon the centre base into which it is assigned.
  • FIGS 51a and 51b show the starting shape of the polygon F s and the ending shape of the polygon F 1 ., respectively. Also shown are points P L , PR, PB, PT, which are the same for each centre base. All objects are shown in the same position relative to the centre base' s origin as their position to the global coordinate system G.
  • the coordinates of the vertices of the polygon are:
  • F 3 ⁇ -2.1, 0.0, -2.1 ⁇ , ⁇ 2.1, 0.0, -2.1 ⁇ , ⁇ 2.1, 0.0, -2.1 ⁇ , ⁇ 2.1, 0.0, 2.1 ⁇ , ⁇ -2.1, 0.0, 2.1 ⁇
  • F E ⁇ -1.788, 0, -1.788 ⁇ , ⁇ -1.788, 0, -1.788 ⁇ , ⁇ 2.442, 0, 0.654 ⁇ , ⁇ -0.654, 0, 2.442 ⁇
  • the coordinates of the points P L , P R , P B , P T are the same as those used at step S500 of the third round of processing.
  • Content importer 92 inserts starting polygon F 3 into the first centre base (i.e., into centre base with index 1 that belongs to the first ring base) and inserts ending polygon F E into the last centre base. All centre bases in between receive a differently shaped polygon Fi. These polygons are computed by content generator 90 by the use of a mapping function M:
  • mapping function M is a function of the variable J, and that I is equal to both the number of the i th polygon and also the index of the base into which the polygon is to be placed (as one polygon is placed in each base so there is a 1:1 relationship) . As a result, each polygon is generated in accordance with the value of I of its containing base.
  • the vertices Vn, V i2 , V 13 , Vi 4 of the polygon Fi are computed as follows:
  • the mapping function M can be used for computation of intermediate objects for any pair of objects that can be represented solely by the same number of vertices.
  • Figure 52 shows polygons F 1 and points P 1 ,, P R , P 15 , P T distributed to the centre bases Ci.
  • the changing of the polygon F from rectangular to triangular shape also influences the slant of the side planes that govern the creation of solid objects (see the description of step S700 in the third round of processing) .
  • This change can be so big that the small front plane on the tip completely disappears and becomes an edge, like on objects BILQ and BTL n -
  • the present embodiment provides facilities for a designer to use to ensure that content objects fit together without gaps and without encroaching upon each other (that is, two content objects do not occupy the same space) .
  • content creator 94 provides means for a user to define functions for the creation of a content object such that, as part of the creation, the right side of the content in a base and the left side of the content in the next base (or vice versa) are cut with the same plane .
  • mapping function M is used to change the shape of polygon F.
  • the same mapping function is used in rhis example, but the difference is in the start and end polygons F 3 and F E respectively. These polygons are shown in Figure 54a and have vertex coordinates.
  • the parameters that are also adjusted for this example govern the creation of the backbone bases (see step S300 in the first round of processing) and the transformation of points P L , P R , P h , P ⁇ into points P LT , P R1 , P B ⁇ , P TT (see step S600 in the third round of processing) .
  • Figure 54b shows two adjacent solid objects. On the left are BILn 3 and BIL U4 that encroach on each other, and on the right are the same objects trimmed with planes, namely "BIL cutiis” and "BIL cuti J4 ".
  • sensor function executer 110 is also operable Lo generate and execute a sensor function to divide bases into equivalence classes in dependence upon connections to/from the vertex representing that base in the model graph.
  • graph manager 80 adds two additional connections to the model generated in rounds 1-3 of the processing described previously, and sensor function executer 110 defines a sensor function which divides the ring bases into now equivalence classes.
  • graph manager 80 defines two additional i ntragenerati on connections, namely LINE-I and LINE-2.
  • Connections LINE-] are produced by the following procedure:
  • a finite series of indices S is created by applying the following rules:
  • Ll-4 ⁇ 4, 23, 42, 61, 80, 99, 118, 137 ⁇
  • Ll-7 ⁇ 7, 26, 45, 64, 83, 102, 121, 140 ⁇
  • Ll-IO ⁇ 10, 29, 48, 67, 86, 105, 124, 143 ⁇
  • Ll-13 ⁇ 13, 32, 51, 70, 89, 108, 127 ⁇
  • Ll-16 ⁇ 16, 35, 54, 73, 92, 111, 130 ⁇
  • Connection LINE-I is applied to each pair of consecutive indices from each series Ll-I to Ll-16 (that is, from series Ll-I, pairs (1, 20), (20, 39), (39, 58), (58, 77), (77, 96), (96, 115) and (115, 134) are connected).
  • Connections from the second additional connection LINE-2 are produced by the following procedure:
  • a finite series of indices S is created by applying the following rules:
  • L2-1 ⁇ 1, 20, 39, 58, 77, 96, 115, 134 ⁇
  • L2-5 ⁇ 4, 23, 42, 61, 80, 99, 118, 137 ⁇
  • L2-9 ⁇ 7, 26, 45, 64, 83, 102, 121, 140 ⁇
  • L2-13 ⁇ 13, 32, 51, 70, 89, 108, 127 ⁇
  • Connection LINE-2 is then applied to each pair of consecutive indices from each series L2-1 to L2-13.
  • ring bases are classified into 5 equivalence classes based upon the results of a sensor function SG, which checks what connections are going out of each node in a model graph.
  • EQLN-3 ring bases with connections LINE-I and LINE- 2, which connects to different end points
  • Index I index of i-th ring base
  • Function SL2[I] returns the index of the end point of connection LINE-2 from the ring base with index I. If there is no connection LINE-2 from this base, function SL2[I] returns 0.
  • Each value of the sensor function SG[I] defines one equivalence class, which is represented with an additional attribute "LINE NODE” on each ring base.
  • the following values are assigned to the attribute "LINE NODE”: Value of function 3 4 SG[I] : value of attribute EQLN-O EQLN-I EQLN-2 EQLN- 3 EQLN-4 "LINE NODE"
  • Figure 57 shows the graphical distribution of equivalence classes over a model.
  • white blocks are shaded with a different pattern according to the value of the attribute LINE NODE.
  • connections LINE-I and LINE- 2 are shown in the form of lines.
  • content object polygon F is inserted in each of the centre bases ( Figures 41a and 41b) .
  • different polygons F 1 and F 2 are inserted in the centre bases C 1 ( Figure 58a) .
  • Polygon F; is inserted in the centre bases where the value of the attribute "CURVATURE" of its parent ring base R 1 is "-" and polygon F2 in the centre bases where the value of the attribute "CURVATURE" of its parent ring base Ri is
  • the coordinates of the vertices of the polygons F 1 and F 2 relative to centre base in this example are: F 1 - ⁇ -2.1, 0.0, -2.1 ⁇ , ⁇ 2.1, 0.0, -2.1 ⁇ ,
  • FIG. 58b the ring bases, centre bases and solid objects named BIL C o ⁇ are shown.
  • the main difference in the model produced by the use of different polygons Fi in this example is in the shape of the solid objects BIL CT ⁇ in region A in comparison to the objects in the same region A shown in Figure 46.
  • Objects in region B are the same in both Figures 58b and 46 since the polygon F 1 from this example used for construction of objects BIL CUT is the same as polygon F from the main example.
  • a sensor function was executed which divided bases into equivalence classes in dependence upon the value of an attribute of each base (that is, the attribute "CURVATURE") .
  • sensor function SA [ i ] will compute a directed angle between the X-axis direction of backbone base B : _ni and the normal vector of the plane in which polygon F 1 lies.
  • sensor function LA[J] will compute a directed angle between the normal vector of the plane PL 1 from ring base R 1 and the normal vector of the plane in which polygon Fi lies.
  • two attributes are assigned to centre bases C 1 : "SIDE-ANGLE” depending on the values of sensor function SA and "LOCAL-ANGLE” depending on the values of sensor function LA. The result will be a generation of centre bases partitioned into two sets of equivalence classes, one set of equivalence classes per attribute.
  • Figure 59a shows objects involved in the computation of sensor function SA for bases C 1 and C 1+ i8.
  • the attribute "SIDE-ANGLE" for each centre base C 1 is defined with the following function:
  • F 1 NpLi - Normal vector of plane PL 1 LA [ i ] AngleBetween [ N PLl , N F i ]
  • Figure 59b shows the objects involved in computation of sensor function LA for bases C ⁇ and C 1 , is.
  • step S800 After assigning attributes "SIDE-ANGLE” and "LOCAL-ANGLE” in step S800, the processing procedure goes back to step S700 to add new content objects to the model.
  • a solid block FB will be created in the centre bases C 1 from equivalence class EQSA-I (having value of attribute "SIDE-ANGLE” equal to EQSA-I)
  • solid block FBM will be created in the centre bases C 1 from equivalence class EQSA-2
  • shelled solid block FBS will be created in the centre bases Ci from equivalence class EQSA-3.
  • the procedures for creating these content objects are described below and shown in Figures 60a, 60b and 60c.
  • Solid block FB is created from polygon F by an operation "Thicken to solid" executed in the external geometric modelling kernel. This operation thickens polygons on both sides and in the direction of a supplied vector.
  • the orientation of the polygon F and with it the labelling of one side of the polygon as positive and the other as negative is defined by the order in which the vertices on the polygon are enumerated. In this case, the vertices are enumerated in such a way that the positive side of polygon F points in the direction of the negative Y-axis of the reference centre base Ci.
  • polygon F is scaled by a factor of 0.85 around its centre, which, in this example, corresponds to the origin of the reference centre base Ci.
  • the vector along which the thickening is carried out is the Y-axis of the reference centre base C 1 .
  • Figure 60a shows the relevant objects for the execution of this operation.
  • Ci Reference centre base Ci
  • FBM N - Copy of solid block FB N in new position relative to the centre base C N v - Vector v represents path for translating solid blocks FBMi from centre base C 1
  • Solid block FBM 1 has the same shape as solid block FBi. The difference is in its position relative to the reference centre base C 1 .
  • Each solid block FBM 1 is created as a solid block FB 1 and then transformed with transformation TRF[IJ .
  • Transformation TRF[Ij comprises translation TF [i] and identity rotation matrix which are calculated relative to each centre base Ci.
  • Translation TF [i] is defined as a move along a vector v given relative to the centre base C 1 for the amount FBM D i PT [i].
  • index i runs for all centre bases C 1 , it should be noted that the translated objects FBMi will be created only in the centre bases C j that are part of the equivalence class EQSA-2.
  • Ci Reference centre base C 1 FB - Solid block
  • Solid block FBS is derived from solid block FB by applying a shelling operation on it.
  • Shell is a standard operation for most geometric modelling kernels (sometimes called offset) which takes the surface of the solid and then thickens it by a specified amount in the desired direction - in or out.
  • Parameters for the shell operation can also include a list of faces of the solid which must remain open (actually they are removed before thickening) .
  • the solid object FBS is created by applying a shell operation on solid block FB, where front and back faces of the solid FB must remain open.
  • the orientation front/back is defined by the relative position of the faces of the solid FB against reference centre base C,: the face pointing in the direction of the Y-Axis of the centre base C 3 is the front face S 1 ., and the opposite face is the back face S D .
  • Shell thickness "s" is applied toward the inside of the solid block FB, meaning that the outer limits of solid blocks FB and FBS are the same.
  • Figure 60c shows the initial solid block FB with front and back face and the final shelled solid block FBS.
  • step S700 solid objects FB, FBM and FBS are created in the centre bases Ci corresponding to the equivalence classes EQSA-I, EQSA-2 and EQSA-3 respectively.
  • Steps S705 to S799 are executed three times in a row, for each content object once. Which centre bases are used for a particular content object is determined in step S720.
  • the solid objects FB must be created in the centre bases belonging to the equivalence class EQSA-I, which is governed by the value of the attribute "SIDE-ANGLE" (the procedure for making the solid objects FB being as described above) .
  • the so] id objects FBM must be created in the centre bases from the equivalence class EQSA-2 (the procedure for making the solid objects FBM being as described above) .
  • the solid objects FB are created using the same procedure as for the solid objects FB for the equivalence class EQSA-I (basically, they are created in all of the bases from equivalence classes EQSA-I and EQSA-2) .
  • their names are changed to FBM in step S800 and, finally, they are transformed with transformation TRF (described above) in the step S600.
  • the solid object FBS is then created in the centre bases from equivalence class EQSA-3 (the procedure for making solid objects FBS being as described above) .
  • the criteria for selecting the bases for creation of the new content objects FB, FBM and FBS is based upon equivalence classes EQLA-I, EQLA-2 and EQLA-3, such that the content objects FB are created in the centre bases from equivalence class EQLA-I, the content objects FBM in the centre bases from equivalence class EQLA-2, and the content objects FBS in the centre bases from equivalence class EQLA-3.
  • This distribution is shown on Figure 64 (ring bases and centre bases are also shown in this figure) .
  • base generator 70 calculated the position and orientation of each backbone base in accordance with mathematical functions. This enables a large number of backbone bases to be generated without the user having to position and orientate each backbone base individually. However, base generator 70 is operable to generate the backbone bases in accordance with positions and orientations input by a user (for example, if only a small number of backbone bases are required) .
  • the generations of bases are generated sequentially - that is, all of the first generation (backbone) bases are generated, then all of the second generation (ring bases) are generated, and then all of the third generation (centre) bases are generated.
  • base generator 70 is operable to generate the bases in different ways. For example, base generator 70 is operable to generate one first generation base and all of its second generation bases, followed by a next first generation base and all of its second generation bases, and so on up to the final first generation base and all of its second generation bases. In addition, base generator 70 is operable to generate bases in other orders.
  • base generator 70 and content generator 90 are operable to generate bases and content objects respectively using a mathematical function or functions having base index values (base identification numbers) as a variable of the function (s).
  • base index values base identification numbers
  • the bases and content objects change position, orientation and/or shape in accordance with the base index value of the base in which they are located.
  • the base index values used as the variables in the function are the base index values stored in the model graph, namely the base index values that were assigned when the bases were created.
  • temporary base index values can be used as the variables in the mathematical function (s) .
  • each selected reference base can be assigned a temporary base index value which is independent of its actual base index value. For example, if twenty four bases are selected as reference bases, then temporary base index values 1 to 24 can be assigned to the selected reference bases, irrespective of their actual base index values stored in the model graph (which could be, for example, 25 to 48) . The temporary base index values would then be used as the variables in the mathematical function (s) to generate the new bases and/or content objects, with the same effects as those described in the embodiment above.
  • graph manager 80 generates and maintains a graph comprising a directed and labelled multigraph.
  • graph manager 80 may generate and maintain other types of graph instead, such as a directed graph without labels, with the labels being stored Jn separate notes connected to the object nodes (that is bases and content objects) .
  • three-dimensional coordinate systems and three-dimensional mathematics are used to generate the design for a three-dimensional object.
  • coordinate systems and/or mathematics of dimensions greater than three could be used to generate a design for a three-dimensional object.
  • the bases within each generation have different respective positions and different respective orientations.
  • some or all of the bases within a generation may have different respective positions but the same orientation, or the same position with different respective orientations.
  • content creator 94 employs geometric modelling kernels that are pre-stored m apparatus 2 in order to create content objects.
  • content creator 94 may be arranged to download modelling kernels from a separate apparatus, at the time when the modelling kernels are required.
  • content creator 94 may be arranged to export all of the necessary data for content object creation (instructions for operations and data for parameters; either to a separate software application running on apparatus 2 or to a separate processing apparatus, w ⁇ Lh the results (the created content object) then being imported back.
  • sensor function executer 110 may be arranged to export data to a separate application or apparatus for the execution of a sensor function, and to import the results. It will therefore De understood that an embodiment may comprise multiple processing apparatus (which may operate in series or m parallel), and that the term "apparatus" used in the claims is not restricted to a single apparatus.
  • base generator 70 and content generator 90 are operable to generate a wide variety of bases and content objects.
  • base generator 70 is operable to generate a backbone base at each corner of each floor.
  • other bases and content objects can be generated depending upon the application and design.

Abstract

A computer-aided design apparatus generates a tree structure of coordinate systems defining the topology of a three-dimensional object to be fabricated. The coordinate systems are positioned and orientated in accordance with mathematical functions. The mathematical function positioning child coordinate systems has the identity of the parent coordinate systems as a variable so that the positions of the child coordinate systems relative to their parent coordinate systems vary in accordance with the identity of the parent coordinate systems. Data defining the coordinate systems and connections therebetween is stored in a graph. Bases having a defined relationship are identified and three-dimensional content objects are added thereto. The content objects are added using the same mathematical function to generate a three-dimensional content object in each of a plurality ol coordinate systems. The mathematical function for generating the content objects has the identity of the coordinate systems as a variable thereof to generate the content object in each coordinate system with a different shape.

Description

COMPUTER-AIDED DESIGN APPARATUS
The present invention relates to the field of computer- aided design apparatus, and more particularly, to apparatus for the design of three-dimensional objects to be fabricated. The invention is particularly applicable to the design of complex objects made up of over 5,000 constituent parts.
There are many examples of fabricated objects, such as urban agglomerations, buildings and building complexes, industrial plants and power generating plants, transport terminals, oil rigs, aeroplanes, cars, trucks and trains, ships, satellites and spaceships, micro-chips, nanotechnology structures, etc.
These objects are fabricated by assembling together small units that in turn become parts to larger components. Fitting them together involves complex interrelations of a great amount of individual shapes. Furthermore, the fitting together of components involves complex physical interactions which are dependent not only on the components themselves, but also the topology of the overall structure and the relative positions which the components occupy within this topology.
Existing computer-aided design systems for fabricated objects require the user to create constituent components of the design in design files which for historical reasons emulate the traditional design techniques that served the bottom-up approach to building construction. Components from the design file are then exported into an overall space for the model, where each component is manually placed into position so that, the components fit together and generate the topology of the overall model.
Accordingly, the design, placement and fitting of components are separate tasks in existing systems.
By way of example, "Interactive Design of 3D Models With Geometric Constraints" by van Emmerik MJGM in The Visual Computer, Springer-Verlag, volume 7, 1991, pages 309-325, XP009088118, presents an interactive graphical approach for the design of parameterized part-hierarchies. Primitive solids can be grouped into compound objects, and multiple instances of a compound object can be used in further designs. Geometric relations between primitives and instances are specified by geometric constraints between their local coordinate systems.
These systems suffer from a number of problems, however.
In particular, considerable effort and time is required on the part of the user to create the design in an existing system. This defeats the purpose of computer support. For example, variations in the components can only be introduced by redesigning components in the design files and then placing them manually to recreate the overall model. Also, the consistency of such designs relies upon the designer's ability to check for and iron out inconsistencies (such as objects which encroach upon each other - that is, they occupy the same space) . How real this problem is is shown by the fact that most existing systems provide so called 'interference checking' devices to check for inconsistencies such as encroaching objects.
Such systems have therefore forced designers to create regular-shaped fabricated objects, using repeatable design patterns and compositions of copies of the same components, to the detriment of functionality, all while the demand for increasingly articulate and diversified large fabricated objects grows rapidly. In fact so great is the problem, that any small improvement in the design process which reduces the problem is hailed as a breakthrough.
A further problem is that a building component manufactured according to a design from a system which designs, places and fits the components as separate tasks is often not consistent with the huge amount of other components that are to form the fabricated object. As a result, skill- intensive labour is required to fit the components together .
Experience of using components manufactured from a design created by existing systems has given rise to the commonly held belief that it is sometimes quicker and cheaper to fine tune the fittings of components on site (or return them to the factory for adjustment) than to spend the time that is required by existing design systems to design components that will fit without adjustment. Waywardly, the responsibility for fitting of components is thus passed from the designer to the builder. This particular problem in the design and construction of buildings defeats the fundamental purpose of design which is that it should be complete and consistent before the fabrication stage. With the growing relevance of information technology, completeness and consistency become requirements m rigorous (logical) terms. This makes the problem even more acute .
For the same reasons, the synergy of industrial production of components, relying on numerically controlled machines and robots in production lines is hugely underemployed xn building construction. The cost of building components is out of step with the cost of other industrial products that are no different in terms of materials used or energy consumed in their production.
The present invention aims to address one or more of the problems with existing computer-aided design systems.
Jn a first aspect, the present invention aims to address the problem of how to provide an apparatus for the design of a complex three-dimensional object without using a design file environment but which enabJ es the user to generate the design so that it is rich m variations of topology and/or content.
In a second aspect, tne present invention aims to address the problem of how to provide an apparatus for the design of a complex three-dimensional object without usjng a design file environment, and the problem which arises therein of how to keep track of the large number of local coordinate systems within the design in such a way that the required locations for content objects to be added can be readily identified and such that the content objects themselves can be added without difficulty. In a third aspect, the present invention aims to address the problem of how to provide an apparatus for the design of a complex three-dimensional object without using a design file environment, and the problem which arises therein of how to provide functionality to incorporate content objects in the design in a flexible and controllable way without significant effort on the part of the user.
In a fourth aspect, the present invention aims to address the problem of how to provide an apparatus for the design of a complex three-dimensional object without using a design file environment, and the problems which arise therein of how to provide functionality to generate a design having three-dimensional content objects which fit throughout the design and how to reduce the large amount of data needed to define the design of a complex object.
In a fifth aspect, the present invention aims to address the problem of how to provide an apparatus for the design of a complex three-dimensional object without using a design file environment but which enables the user to generate the design so that it is rich in variations of content objects.
According to a first aspect of the present invention, there is provided an apparatus for the design of a three- dimensional object, comprising:
means for generating a plurality of coordinate systems; and means for genera tjng at least one respective further feature m each coordinate system using at least one mathematical function having a vaπabJe identifying the different coordinate systems, such that the mathematical function introduces variations m accordance with the value of the variable from coordinate system to coordinate system of at least one of the positions of the further features relative to their containing coordinate system, and the orientations of the further features relative to their containing coordinate system.
The present invention also provides a method of generating a design for a three-dimensional object to be fabricated using a computer-aided design apparatus, the method comprising:
generating a plurality of bases, each base comprising a local coordinate system; and
generating a respective further feature for the design m the local coordinate system of each base such that at least one of the positions and orientations of the further features relative to their local coordinate systems changes, the further features being generated using at least one mathematical function having a base identii fi catior number identifying the respective bases as a variable of the function, such that each further feature has at least one of a position and orientation relative to the local coordinate system of the base in which it is located which depends upon the value of the base identification number thereof. As a result of these features, variations in the positions and/or orientations of the further features relative to their containing local coordinate system can be introduced throughout the design m accordance with the changing value of the local coordinate system identifier used as a variable in the mathematical function (s). Consequently, the user does not have to introduce the variations by positioning and/or orientating each further feature manually.
The present invention also provides a computer program product, embodied for example as a storage medium storing computer program instructions or as a signal carrying computer program instructions, for configuring a programmable apparatus as an apparatus having the features set out above .
According to a second aspect of the present invention, Lhere is provided a computer-aided design apparatus for the design of three-αimensional objects to be fabricated, the apparatus comprising:
base generating means operable to generate a topology for a design of a three-dimensional object by generat mg a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases m a subsequent generation are arranged m a plurality of groups such that each respective group is located m the local coordinate system of a different base in a preceding generation; and data generating means operable to generate and store base data defining bases generated by the base generating means and connection data defining, for each base, at least one base in the same group, at least one base in a preceding group of the same generation, and at least one base in a following group of the same generation.
The present invention also provides a method of generating a design for a three-dimensional object to be fabricated using a computer-aided design apparatus, the method comprising:
generating a topology for a design of the three-dimensional object by generating a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base therein comprising a local coordinate system, and wherein the bases in subseguent generations are arranged in a plurality of groups such that each respective group is located in the local coordinate system of a different base in a preceding generation; and
data generating means operable to generate and store base data defining generated bases and connection data defining, for each base, a base in the same group, a base in a preceding group of the same generation, and a base in a following group of the same generation.
In accordance with these features, the bases are arranged in groups within a plurality of generations such that each group is located in the local coordinate system of a different base in a preceding generation. Furthermore, data is stored defining connections between the bases within each group and connections between the groups themselves.
These features enable bases which satisfy a defined relationship to be readily identified using the stored connection data. For example, the connection data defines the relation positions of the bases (both inter-group and mtra-group) so that bases having a required configuration can be found using the connection data.
The features also facilitate the generation of one or more content objects in the bases. In particular, a three- dimensional content object can be generated m a plurality of bases using one or more mathematical procedures which define the bases m accordance with the connection data. For example, in the mathematical procedure (s) , a start base can be defined and each furthei base Lo be used for the generation of the content object can be specified relative to the start base using the connections defined by the connection data.
The present invention atso provides a computer program product, embodied for example as a storage medium storing computer program instructions or as a signal carrying computer program instructions, for configuiing a programmable apparatus as an apparatus having the features set out above.
According to a third aspect of the present invention, there is provided a computer-aided design apparatus for the design of three-dimensional objects to be fabricated, the apparatus comprising: base generating means operable to generate a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases in the second and any subsequent generation are located in the local coordinate system of a base in a preceding generation;
content generating means operable to generate content objects in the bases; and
identifying means operable to identify at least one of:
(i) bases having a defined relationship;
(ii) content objects having a defined relationship;
(iii) bases-content objects having a defined relationship;
and wherein the content generating means is operable to generate a content object for the identified features.
The present invention also provides a method of generating a design for a three-dimensional object to be fabricated using a computer-aided design apparatus, the method comprising:
generating a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases in the second and any subsequent generation are located in the local coordinate system of a base in a preceding generation;
identifying bases having a defined relationship; and
generating a content object for each identified base.
The present invention further comprises a method of generating a design for a three-dimensional object to be fabricated using a computer-aided design apparatus, the method comprising:
generating a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases in the second and any subsequent generation are located in the local coordinate system of: a base in a preceding generation;
generating content objects in the bases;
identifying content objects having a defined relationship and/or identifying at least one base and at least one content object having a defined relationship; and
generating a further content object for each identified feature .
As a result of these features, bases, content objects, or bases and content objects having a required relationship
(such as a required geometrical relationship) can be automatically identified and used to incorporate content objects into the design. The content objects can therefore be incorporated m a flexible and controllable way. More particularly, it is unnecessary Cor the user himself to individually test and identify bases and/or content objects that must be used to generate a content object (which would not be possible in a design for a complex object) . Furthermore, the features permit all design features satisfying a first relationship to be identified and all design features satisfying a second, different relationship to be identified, and a content object of a first type to be generated for the design features satisfying the first relationship and a content object of a second, different type to be generated for the design features satisfying the second relationship. As a result, different content objects can be automatically incorporated in different parts of the design.
The present invention also provides a computer program product, embodied for example as a storage medium storing computer program instructions or as a signal carrying computer program instructions, for configuring a programmable apparatus as an apparatus having the features set out above.
According to a fourth aspect of the present .invention, there is provided a computer-aided design apparatus for the design of three-dimensional objects, comprising:
base generating means operable to generate a topology for a design of a three-dimensional object by generating a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a Jocal coordinate system, and wherein the bases in the second and any subsequent generation are arranged in a plurality of groups such that each respective group is Located in the local coordinate system of a different base in a preceding generation; and
content generating means operable to add three-dimensional content objects to the topology defined by the bases by applying the same mathematical procedure or procedures to generate a three-dimensional content object in a plurality of the bases located within different groups of a generation .
The present invention also provides a method of generating a design for a three-dimensional object using a computer- aided design apparatus, the method comprising:
generating a topology for a design of a three-dimensional object by generating a pluraJity of different generations of bases, wherein each generation of bases comprises a plurality of bases and each base comprises a local coordinate system; and
adding content to the bases by using a single application of the same mathematical procedure or procedures to generate a three-dimensional content object in a plurality of bases comprising bases within different groups of a generation .
In accordance with these features, the topology for the design is generated first, with the bases arranged in groups within a plurality of generations such that each group is located in the local coordinate system of a different base in a preceding generation. Three- dimensional content objects are then added to a plurality of bases in different groups using the same mathematical procedure or procedures. As a result, a large number of content objects can be generated with a single application of the mathematical procedure (s) such that the content objects vary to fit the topology at different parts of the design (the parts being defined by the different groups) in accordance with the mathematical procedure (s) .
Furthermore, by using the same mathematical procedure (s) to generate a plurality of content objects, the amount of data required to define the design is reduced because it is unnecessary to store different data defining each content object and instead it is only necessary to store data defining the mathematical procedure (s) .
The present invention also provides a computer program product, embodied for example as a storage medium storing computer program instructions or as a signal carrying computer program instructions, for configuring a programmable apparatus as an apparatus having the features set out above.
According to a fifth aspect of the present invention, there is provided a computer-aided design apparatus for the design of three-dimensional objects, the apparatus comprising :
base generating means for generating a plurality of bases, each base comprising a local coordinate system; and content generating means for generating a respective content object in the local coordinate system of each of a plurality of bases in accordance with at least one mathematical function having a variable, such that each content object has a shape which depends upon the value of the variable and such that the shape of the content objects changes from base to base in accordance with the values of the variable.
The present invention also provides a method of generating a design for a three-dimensional object using a computer- aided design apparatus, the method comprising:
generating a plurality of reference coordinate systems; and
generating a respective content object in each coordinate system in accordance with at least one mathematical function having a variable, such that each content object has a shape which depends upon the value of the variable and such that the shape of the content objects changes from coordinate system to coordinate system in accordance with the values of the variable.
As a result of these features, variations in the shape of content objects can be introduced throughout the design in accordance with the changing value of the variable in the mathematical function(s). Consequently, the user does not have to introduce the variations by generating or changing each content object manually. The present invention also provides a computer program product, embodied for example as a storage medium storing computer program instructions or as a signal carrying computer program instructions, for configuring a programmable apparatus as an apparatus having the features set out above.
Embodiments of the present invention will now be described, by way of example only, with reference to the accompanying drawings, in which:
Figure 1 schematically shows the components of an embodiment of the invention, together with the notional functional processing units into which the processing apparatus component may be thought of as being configured when programmed by computer program instructions;
Figure 2 shows the components of the base generator in
Figure 1 ;
Figure 3 shows the components of the content generator in
Figure 1 ;
Figure 4 shows the processing operations performed by the apparatus of Figure 1 ;
Figure 5 shows the processing operations performed at step SlOO in Figure 4;
Figure 6 shows the processing operations performed at step S200 in Figure 4; Figure 7 shows the processing operations performed at step S300 in Figure 4 ;
Figure 8 shows the process1 ng operations performed at step S400 m Figure 4;
Figure 9 shows the processing operations performed at step S500 m Figure 4;
Figure 10 shows the processing operations performed at step S600 in Figure 4;
Figure 11 shows the processing operations performed at step S700 in Figure 4;
Figure 12 shows the processing operations performed at step
S800 m Figure 4 ;
Figures 13a, 13b, 13c and 13d show an example Lo illustrate the generation of backbone bases at step S300 during the first round of processing to generate a design model;
Figures 14a, 14b and 14c illustrate the addition of attributes and connections to a graph for the model at step S400 m the first round of processing;
Figures 15a, 15b and 15c illustrate the transformation of the backbone bases at step S600 m the first round of processing; Figures 16, 17, 18, 19a and 19b show an example to illustrate the generation of ring bases at step S300 in a second round of processing to generate the design model;
Figures 20, 21, 22, 23, 24 and 25 illustrate the addition of attributes and connections to the model graph during the processing at step S400 during the second round of processing;
Figures 26a and 26b show an example to illustrate the processing performed at step S500 to insert content objects into the ring bases during the second round of processing;
Figures 27, 28 and 29 illustrate the addition of attributes and connections to the model graph for the content objects added at step S500;
Figures 30a, 30b, 30c, 3Od, 31a and 31b show an example to illustrate the creation of new content objects at step S700 in the second round of processing;
Figures 32, 33 and 34 illustrate the addition of attributes and connections to the model graph for the content objects created at step S700 in the second round of processing;
Figures 35a, 35b and 35c show the result of applying a sensor function at step S800 in the second round of processing to divide bases into two separate equivalence classes ;
Figure 36 illustrates the addition of an attribute to the model graph defining the equivalence class of each ring base determined at step S800 in the second round of processing;
Figures 37a, 37b, 37c, 37d and 38 show an example to illustrate the generation of centre bases at step S300 in the third round of processing;
Figures 39a, 39b, 39c and 40 illustrate the addition of attributes and connections to the model graph for the centre bases created at step S300 in the third round of processing;
Figures 41a and 41b show an example to illustrate the insertion of content objects into the centre bases at step S500 in the third round of processing;
Figures 42a, 42b and 42c illustrate the addition of attributes and connections to the model graph for the content objects inserted at step S500 in the third round of processing;
Figures 43a and 43b show an example to illustrate the transformation of content objects at step S600 in the third round of processing;
Figures 44a, 44b, 44c and 44d show an example to illustrate the generation of content objects at step S700 in the third round of processing;
Figures 45a, 45b and 45c illustrate the addition of attributes and connections to the model graph for the content objects created at step S700 in the third round of processing;
Figure 46 shows the final design model for the illustrated example after completion of the three rounds of processing;
Figures 47, 48, 49 and 50 illustrate the effects on the final model of changing the parameter values and/or functions used to generate the bases and/or content objects in the model;
Figures 51a, 51b and 52 show an example to illustrate how the embodiment is operable to vary the shape of content objects in dependence upon the index of the reference base into which the content objects are inserted;
Figure 53 shows the final model resulting from processing to vary the shape of content objects as illustrated in Figures 51a, 51b and 52;
Figures 54a, 54b and 54c illustrate an example to show how the embodiment is operable to generate content objects so that they do not encroach;
Figures 55, 56 and 57 show an example to illustrate the execution of a sensor function to detect a property of the model using the model graph;
Figures 58a and 58b show an example to illustrate how the embodiment is operable to identify bases having a defined relationship and to add different content objects thereto; and Figures 59a, 59b, 60a, 60b, 60c, 61, 62, 63 and 64 show an example to illustrate how the embodiment is operable to identify bases and content objects having a defined relationship, to identify content objects having a defined relationship, and to add further content objects to the design in accordance with the identified features.
Referring to FIG. 1, an embodiment of the invention comprises a programmable processing apparatus 2, such as a personal computer (PC), containing, in a conventional manner, one or more processors, memories, graphics cards etc, together with a display device 4, such as a conventional personal computer monitor, and user input devices 6, such as a keyboard, mouse etc.
The processing apparatus 2 is programmed to operate in accordance with programming instructions input, for example, as data stored on a data storage medium 12 (such as an optical CD ROM, semiconductor ROM, magnetic recording medium, etc), and/or as a signal 14 (for example an electrical or optical signal input to the processing apparatus 2, for example from a remote database, by transmission over a communication network (not shown) such as the Internet or by transmission through the atmosphere), and/or entered by a user via a user input device 6 such as a keyboard.
As will be described in more detail below, the programming instructions comprise instructions to program the processing apparatus 2 to become configured to generate data defining a three-dimensional computer model of a design for a three-dimensional object to be fabricated. The design model comprises bases and content objects. Each base is a local coordinate system and acts as "placeholder" to accept further bases and/or content objects.
Referring to Figure 13d, the programmed apparatus is operable to generate a plurality of first-generation bases Ci-C8. Each base comprises a local coordinate system, and in this embodiment, the bases are positioned and orientated in accordance with at least one mathematical function (although this could be done by a user) .
Referring to Figure 18, the apparatus is then operable to generate second-generation bases BRi-BRi44 with a respective plurality of these second-generation bases located in a group in the local coordinate system of each first generation base. Each second-generation base comprises a local coordinate system, and the positions and/or orientations of the second-generation bases are defined in accordance with at least one mathematical function having the identities of the first generation bases as a variable thereof, with the result that each second-generation base has a position and/or orientation relative to the first- generation base in which it is located which depends upon that first-generation base. In this way, the positions and/or orientations of the second-generation bases relative to their containing first-generation base change in each first-generation base in accordance with the mathematical function ( s ) .
Thus, in the example of Figure 18, the second-generation bases have positions on circles around the first-generation bases such that 18 second -generation bases are located in a group in the coordinate system of each first generation base. The radii of the circles (and therefore the positions of the second-generation bases relative to the origin of the containing first-generation base) are defined in accordance with a mathematical function such that the radius of the circle is different for each first generation base. As a result of this feature, variations in the positions and/or orientations of the second-generation bases can be introduced throughout the model in accordance with the defining mathematical function (s), without the user having to introduce the variations by positioning and/or orientating each second-generation base manually.
Data defining the bases is stored in a graph. More particularly, for each base, base data defining the base is stored as a respective vertex m the graph, and connection data defining interconnections between the bases is stored as directed edges between the vertices m the graph. Thus, referring to Figures 23 and 24, base data is stored for each base which defines the base itself, and connection data is stored which defines the adjacent bases wi thin the same group (defined by the "NEXT" and "PREV" directed edges), and the corresponding bases m the adjacent groups (defined by the "to" and "from" directed edges) . In this way, intra-group connections and mter-group connections are stored linking the bases together.
The arrangement of bases in groups and the storage of base data and connection data as described above provides a number of important advantages. In particular, the relative positions of the bases can be tracked m a reliable and efficient way even for a complex design. As a result, bases having required relationships for the addition of a further base or a further content object can be readily identified. Furthermore, the stored base data and connection data can be used to define bases within a mathematical function. For example, bases to be used in a mathematical procedure can be defined by defining a start base and then defining bases relative thereto using the "NEXT", "PREV", "to" and "from" connections. As a result, it is not necessary to specify each base to be used by its base index value. This again provides particularly important advantages in a complex design with may bases.
The apparatus may add further generations of bases and/or content objects to the model in accordance with mathematical functions or procedures. In particular, the apparatus is operable to add each generation of bases or content objects such that a property thereof varies in accordance with the identity of the existing base in which the new base/content object is placed.
However, one problem which arises in a complex model is how to determine the positions at which the bases and/or content objects should be added bearing in mind the large number of bases within the complex design. To address this problem, functionality is provided to identify bases having a required relationship for the addition of a further base or content object. As a result of this functionality, the locations for new bases and/or content objects can be determined rapidly without considerable effort on the part of the user. Figures 30b-30d illustrate the generation of a content object comprising a plane in the local coordinate system of each second-generation base. The plane is defined by a mathematical procedure which is the same for each second- generation base but which depends upon the relative positions of a plurality of adjacent second-generation bases. Accordingly, because the relative positions of the second-generation bases change throughout the model
(because their positions depend upon the identity of their corresponding first-generation base as described above), the planes also change throughout the model (even though they were defined by the same mathematical procedure) .
The apparatus is operable to generate content objects in adjacent bases using a mathematical procedure which is dependent upon the positions and orientations of the adjacent bases so that the content objects fit together.
For example, referring to Figures 31a and 31b, the apparatus is operable to generate adjacent solid objects W1 and W^ by a procedure which constructs planes that are defined in dependence upon the positions and orientations of the adjacent bases BRl , BN, BNN, BT, BNT and BNNT. By constructing content objects in this way, the apparatus is operable to generate content objects throughout a generation of bases using the same procedure such that the content objects vary in accordance with the variations of the bases but still fit together without gaps or overlaps.
The apparatus is therefore operable to generate a model such that the process is staged into sequential generations of bases, where denser placements of bases follow from earlier sparser generations. In this way, the bases have a "tree" structure.
Because bases are positioned and orientated by at least one mathematical function, a large number of bases can be generated, enabling complex models to be generated.
The bases define the topology of the model. Variations and patterns in the topology (positions and/or orientations of bases) can be imparted by defining bases in one generation using a mathematical function which varies in dependence upon the identity of bases in a previous generation.
Content objects are added to the topology defined by the bases. The content objects are defined by mathematical procedures which may be dependent upon one or more bases, so that the content objects vary in accordance with the variations in the topology of the bases and/or impart further variations to the model.
Furthermore, content objects may be generated by a procedure which is dependent upon the mathematically defined positions and/or orientations of the bases that hold the content objects (they are not produced and placed separately as in existing design file systems) . Therefore, content objects are matched to adjacent content objects by the defined generation procedure. Furthermore, the content objects automatically change to adapt to any changes in the bases without changing the generation procedure. This is because the generation procedure is defined to be dependent upon the positions and/or orientations of the bases, and changes in these positions and/or orientations merely result m different values of the parameters to be useα in Lhe generation procedure. Thus, content objects do not comprise finished objects, designed separate Ly, placed m the bases and expected to fit. Instead content objects are created with ^he same procedure, taking jnto account the positions and orientations of the bases, and resulting in content objects which vary m accordance with the bases to fit together.
In accordance with these features, and other features described below, a complex and varied model can be built up, in which content objects fit together and adapt to any changes m the model.
When programmed by the programming instructions, processing apparatus 2 can be thought of as being confiσured as a number of functional units for performing processing operations. Examples of such functional units and their interconnections are shown m FIG. 1. The units and interconnections illustrated m FIG. 1 are, however, notional and are shown for illustration purposes only to assist understanding; they αo not necessarily represent units and connections into whj ch the pj ocessor, memory etc of the processing apparatus 2 actually become configured.
Referring to the functional units shown m FIG. 1, central controller 20 is operable to process inputs from the user input devices 6, and also to provide control and processing for the other functional units. Memory 30 is provided for use by central controller 20 and the other functional units . Input data interface 40 is operable to control the storage of input data within processing apparatus 2. The data may be input to processing apparatus 2 for example as data stored on a storage medium 42, as a signal 44 transmitted to the processing apparatus 2, or using a user input device
In this embodiment, the input data may comprise data for a model (or part thereof) that has been previously generated (either by the present system or a separate system of the same type) and is to be amended/developed further by the present system.
Parameter definer 50 is operable to define the parameters to be used in the creation of the model in accordance with user instructions and/or by computation. In this embodiment, the parameters fall into two groups, namely geometric parameters (such as point, line, plane, solid object, etc) and all other types of parameters (such as numbers, strings, etc) . The parameters reguired vary m accordance with the model to be produced, and examples will be described later with reference to a specif LC example of a model .
Reference object selector 60 is operable to select reference objects. A reference object is an object that provides the foundation on which new bases and/or new content objects are created. The reference object may comprise a global coordinate system (that is, a coordinate system that stands by itself without reference to any other object), an existing base (local coordinate system) or an existing content object. Base generator 70 is operable to generate bases. Each base comprises a local coordinate system (where a coordinate system is a system of assigning a tuple of numbers to each point in an n-dimensiona] space) . Di fferent types of coordinate system may be defined by base generator 70, such as Euclidean, spherical, polar, a coordinate system in Calabi-Yau space, etc.
Referring to Figure 2, in this embodiment, base generator 70 comprises function selector 72, position calculator 74, orientation calculator 76 and base builder 78.
Function selector 72 is operable to select one or more mathematical functions to compute each base. For example,
.in the case of a base comprising a Euclidean coordinate system, functions to compute the position and orientation of the base are required.
Position calculator 74 is operable to apply the function (s) selected by function selector 72 to caLculate the base position (the origin of the base) .
Orientation calculator 76 is operable to apply the function (s) selected by function selector 72 to calculate the base orientation (the direction of the coordinate axes ) .
Base builder 78 is operable to combine the position and orientation calculated by position calculator 74 and orientation calculator 76 to produce data defining a base. Referring again to Figure 1, graph manager 80 is operable to generate, and maintain, a graph for each model created by the system. A graph of a model is a directed and labelled multigraph . The vertices of a graph represent indexed bases and content objects from each generation in a model. Edges represent the relation between two objects, and therefore represent relations between pairs of bases, content objects or both. The directions of edges go from the first vertex in a pair to the second vertex in a pair. There can be more than one edge between any two vertices. All vertices and edges have labels. For vertices, the labels are attributes of underlying bases and content objects. For edges, the labels represent the type of relation between two objects.
In this embodiment, there are two predefined relations which have unique labels. An edge with a label SUBBASE represents the relation between a reference base and a base λcontained' in it. In other words, if a reference base is a container for another base, the other base in a pair is contained in this container. Similarly, an edge with a label CONTENT represents the relation between a reference base and a content object that lies in it. In the present embodiment, when a reference base is transformed (moved and/or rotated), all of the bases linked to it with relation SUBBASE and all of the content objects linked to it with relation CONTENT are transformed in the same way. Since every base can be a container for the other bases, this relation is recursive and not limited.
Graph manager 80 is operable to create a graph, insert vertices into the graph representing each base and content object within the model, assign values for different attributes of the vertices, and add connections between the vertices .
Graph manager 80 is operable to assign the values for attributes and connections between vertices in accordance with user instructions or by calculation m accordance with a function or procedure.
Content generator 90 is operable to insert content objects into the model by inserting the content objects into the local coordinate systems of bases generated by base generator 70. The content objects may be of different types. For example, a content object may be defined by content generator 90 to be invariant, with the result that the content object cannot then be changed by the system. Λ solid object is an object of bounded volume. A primary object is a point, vector, line, curve, plane or planar polygon .
Referring to Figure 3, m this embodiment, content generator 90 comprises content importer 92 and content creator 94.
Content importer 92 is operable to input content objects into the system from an outside source, such as an external CAD application running on apparatus 2 or an external apparatus. In the present embodiment only primary content objects and invariant content objects can be imported.
Content creator 94 is operable to create content objects within the system in accordance with mathematical procedures defined in accordance with user instructions or in accordance with pre-stored geometric modelling kernels.
Each mathematical procedure comprises one or a series of mathematical operations which create and/or manipulate geometric components in order to create a content object for the design. The operations may include the execution of mathematical functions, transformations, logical
(Boolean) operations, conditional operations (where the operation to be performed is dependent upon a condition) , etc. For example, a modelling kernel may be stored to create a solid object by Boolean operation (union, intersection, difference) and a modelling kernel may be stored to create a solid object from bounding planes. Many other modelling kernels may be stored.
Content creator 94 is operable to use the same mathematical procedure to generate a respective content object relative to each of a plurality of bases. More particularly, the mathematical procedure creates and/or manipulates a geometric component in dependence upon base position and/or orientation so that the resulting content objects vary in accordance with changes in the position and/or orientation of the bases even though they were generated using the same mathematical procedure.
Referring again to Figure 1, transformation controller 100 is operable to apply transformations to bases and/or content objects, thereby enabling a plurality of bases and/or content objects to be changed without defining changes for each one individually. In this embodiment, transformation controller 100 is operable to apply the following transformations (although others could be applied instead or as well) :
changing origins and/or rotations of bases; - changing positions and/or rotations of content objects; scaling and mirroring of content objects.
Transformation controller 100 is operable to define a transformation to be applied in accordance with user instructions or by computation. In particular, transformation controller 100 is operable to compute a transformation to be applied in accordance with one or more parameters used previously in the modelling. For example, transformation controller 100 is operable to apply a transformation to bases and/or content objects that is dependent upon the identity of the reference base in which the base and/or content object is located, so that the transformation applied varies in accordance with the reference base identity. In this way, bases and/or content objects in different bases are transformed in different ways .
Transformation controller 100 is operable to apply a transformation to every content object in each base, or to apply a transformation selectively to some but not all of the content objects in each base. For example, a transformation can be applied to transform a content object with name POLYGON-I in each base but leave content objects with other names unchanged. The selection of content objects to which a transformation is to be applied can be based on different criteria, for example name, type, geometry data, connections in a model graph, etc.
Sensor function executer 110 is operable to generate and execute procedures to perform a mathematical test on a property of an individual base or content object or on a plurality of bases and/or content objects. More particularly, sensor function executer 110 is operable to identify each base (or content object) having an attribute or connection in the graph maintained by graph manager 80 which satisfies a defined relationship. As a result, sensor function executer 110 is operable to divide bases
(or content objects) into equivalence classes. Sensor function generator 110 permits new attributes or connections to be added to each base or content object so that the value of the new attribute and/or connection can be used to classify the bases or content objects.
Model data manager 120 is operable to maintain the model data generated by the system, and to write the data to, and retrieve the data from, memory 30 as required. In this embodiment, the model data comprises data defining the bases, content objects and graph. Every base is represented by its logical data and geometry data. The logical data contains at least a generation index. The index may be an explicit value or may be implicit in the order by which bases are arranged in computer memory. The geometry data of a base comprises its origin and a rotation matrix in the global coordinate system. A base may have additional attributes, such as name, colour, group, etc., as described later. A particular base in a model may be reached in three different ways:
by index in a list of bases and content objects - by matching values of additional attributes (by name, level, etc.) by performing a search operation in the graph (following connections in the graph)
Each content object has the following data:
type of content transformation attributes - data depending on type of content
The type content can be a type of three-dimensional object (e.g. point, line, polygon, solid), or an operation on convene objects (e.g. intersection between line and plane, union of solids, extrusion of a polygon in a direction) .
The transformation orients the content object in relation to a base in which the content object resides.
Attributes are from the same categories as attributes for bases (name, colour, group, etc.) .
The data part of the content object depends on its type.
For fixed types (point, line, polygon, solid, etc.), the data contain actual geometry data (a point is represented by a list of three coordinates, a line by two points, a solid by a list of verlices, a list of edges and a list of faces, etc . ) .
When the type of content is an operation on content objects, the data contain lists of content objects or references (pointers) to content objects. In such case, the actual data are computed only when needed:
if another operation requires actual geometry data - for visualization of a model for export of data from a model.
Display data generator 130, under the control of central controller 20, is operable to generate image data for display (including instructions to the user and images of a design created using processing apparatus 2) and to control display device 4 to display the image data.
Output data interface 150 is operable to control the output of daba from processing apparatus 2. In this embodiment, the output data may comprise part or all of the model dctta generated by the system, and may be output to other systems for different purposes, such as analysis or manufacturing.
Output data interface 150 is operable to output the data for example as data on a storage medium 152 (such as an optical CD ROM, semiconductor ROM, magnetic recording medium, etc), and/or as a signal 154 (for example an electrical or optical signal transmitted over a communication network such as the Internet or through the atmosphere) . A recording of the output data may be made by recording the output signal 154 either directly or indirectly (for example by making a first recording as a
"master" and then making a subsequent recording from the master or from a descendent recording thereof) us:ing a recording apparatus (not shown) . In particular, output data interface 150 is operable to output data to a manufacturing machine for the fabrication of an object according to the design. In this case, data may be output for separate components of the design, and the data may be output as CNC
(computer numerically controlled) machine-readable code, so that the manufacturing machine can read the code directly, without translation.
Figures 4 to 12 show the processing operations performed by processing apparatus 2 to generate a design model in this embodiment.
To assist understanding, these processing operations will be described with reference to an example in which a model of a building is produced comprising three generations of interacting bases and two sets of final content objects. The generations of bases with Ln this example are referred to as backbone, ring and centre generations. This requires three rounds of the processing shown in Figure 4 - a first round to generate the backbone bases, a second round to generate the ring bases and their content, and a third round to generate the centre bases and their content. The result of each round is a generation of bases (and possibly content) added to the model.
It will, of course, be understood that the example described is for illustration purposes only, and that different types of objects to be fabricated (other than buildings) and/or different numbers of generations of bases and/or different content objects can be generated by the present embodiment.
First Round of Processing: Generating Backbone Bases
'First Generation Bases'
In the example to be described, a model is generated in a 3 dimensional Euclidean space. All of the values representing coordinates are expressed relative to the global origin in the standard basis of this space.
Step SlOO
Referring to Figure 4, at step SlOO, parameter definer 50 defines global parameters for the model. In this example, the backbone bases are the first objects in the model, and the global parameters defined at step SlOO are also used for the generation of these bases and also some subseguent objects in the model (as will be described Jater) .
Figure 5 shows the processing operations performed by parameter definer 50 at step SlOO.
Referring to Figure 5, at step SIlO, parameter definer 50 defines the number of bases. This may be done in accordance with instructions from a user, by computing the number of bases using a mathematical function, or deriving the number of bases from a previous generation of bases.
On this round of processing, parameter definer 50 defines the number of backbone bases in accordance with user instructions, and in this example the number of backbone bases is defined to be 8.
At step S] 15, parameter definer 50 defines other global parameters. These parameters and the values assigned in this example comprise:
floor height: 4.2 meters position of first backbone base - direction of X-axis of first backbone base
The values for these global parameters are then stored as initial global parameters 120.
It should be noted that, instead of defining the parameters described above at step SIlO and Sl] 5, the parameters could be defined "in-place", that is, in the steps where the particular function or procedure which uses the parameters is selected and applied. For example, the parameter for the number of bases could be defined at step 300. However, m that case, the parameter is vaLid only for that particular function. In contrast, by defining it at step SlOO, the parameter is an integral part of the model data and therefore its value is subsequently accessible for the processing in other steps.
Step S200
Referring again to Figure 4, at step S200, reference object selector 60 selects one or more reference objects to carry the bases to be generated in the current round of processing. This is performed by selecting on or more existing reference bases and/or content objects.
In this example, each base must have a reference base - some other base or a base that represents the orientation of a global coordinate system (global base) .
The reference base in the latter case is a virtual base - that is, each base that does not have a previously- generated base as its reference base is considered to have a global base as its reference base. The reference base is important in this example because all numeric quantities representing positions in space are expressed relative to the position and orientation of the reference base.
Figure 6 shows the processing operations performed by reference object selector 60 at step S200.
Referring to Figure 6, at step S215, object selector 60 selects a reference coordinate system. Since backbone bases are the first bases generated in the model in this example, object selector 60 selects, by default, a reference coordinate system on this round of processing comprising the global Euclidean coordinate system 205. Although the global coordinate system (global base) is not a real object, it is shown on some figures to help the viewer with the orientation of objects on the figure.
Figure 13a depicts the symbols used for a base in all of the following figures, wherein:
O = origin of the base x - X-axis of Lhe base y = Y-axis of the base z = 7 axis of the base
Since there are no other objects at this stage of the processing, none can be selected for parameters for functions or procedures, and therefore step S220 m Figure 6 is not performed on this round of the processing.
Step S300
Referring again to Figure 4, at step S300, base generator 70 performs processing to generate the number of bases previously defined at step SIlO (that is, 8 backbone bases on this round of the processing) in the coordinate system(s) of the reference object (s) selected at step S215.
F] gure 7 shows the processing operations performed at step
S300.
P ii si, the origins (positions) of the bases are computed.
As part of this, at step S315, function seLectoi 72 selects one or more mathematical functions for computing Lne origins of the bases m accordance with user instructions.
For this example, Lhe following function is chosen:
Origins [i] = {fx[i], fy[i], fz[i]}, {i, 1 to Number of backbone bases}
fx[i] = ASm[P + 2Pi (i - 1)F/Number of backbone bases] + 1 fy[i] = BSin[2Pi(- - 1) /Number of backbone bases] fz[i] = FloorHeight (i - 1)
The values of the parameters assigned in this example are :
Number of backbone bases 8
FloorHeight : 4.20
A: 0.80
P: 10.00
F: 0.75
B: 0.60
The parameters Number of backbone bases and FloorHeight were defined previously m steps SIlO and S115 respectively. The other parameters are used only for this funct ton .
At step S320, position calculator 74 uses the function and parameter values selected at step S315 to calculate the origins of the backbone bases. In this example, the positions P1 of the origins of the backbone bases are calcu] ated as :
Pl - { 0.56478311, 0.0, 0.0}
P2 = { 0.26519985, 0.42426 406, 4.2}
P3 = { 0.21328889, 0.6, 8.4 }
P4 = { 0.42654739, 0.42426406, 12.6 }
P5 = { 0.83309427, 0.0, 16.8 } P6 = { 1.29589853, -0.4242 6406, 21.0 }
P7 = { 1.65896699, -0.6, 25.2 }
P8 = { 1.79992353, -0.4242 6406, 29.4 } Figure 13b shows the computed points Pi in relation to the global coordinate system G.
Bases are not just positions in space; each base also represents a local coordinate system at that position. Accordingly, a rotation matrix is needed for each base to be complete. This matrix defines the amount of rotation needed to rotate the coordinate axes of the reference base to the coordinate axes of the generated base. In the present embodiment, orientation calculator 76 defines a default orientation for each base which is then changed in accordance with user instructions. More particularly, the default orientation is the same as the orientation of the reference base (in this case global coordinate system G) . This is represented with the identity rotation matrix.
Figure 13c shows bases B; positioned on the points Pj from Figure 13b with each base having the default orientation of the global coordinate system G.
At step S330, function selector 72 selects one or more mathematical functions for additional rotation of each base. In this embodiment, the rotation function (s) is selected in accordance with user instructions. In the present example, the following function is selected to compute a respective rotation matrix for each backbone base :
R[i] = RotationAroundAxis [{0, 0, 1}, (i - 1) α], {i, 1 to Number of backbone bases} Angle α = 16° / (Number of backbone bases - 1)
This function defines the rotation of each backbone base B1 as a function of the value of the backbone base index "i" and rotation angle α, so that the rotation of each backbone base will be different.
At step S335, orientation calculator 76 applies the function (s) selected at step S330 to compute a respective rotation matrix for each backbone base, thereby generating a list 340 of rotation matrices for the bases.
At step 345, base builder 78 puts together the base origins generated at step S320 and the rotation matrices generated at step S335 to define each base as a respective coordinate system comprising a position and orientation.
As a result of this processing, data 350 defining the backbone bases is generated and stored.
Figure 13d shows the backbone bases C1 positioned on points the P1 from Figure 13b with applied function R[i] for their rotation .
Step S400
Referring again to Figure 4, at step S400, graph manager 80 inserts the bases generated at step S300 into a model graph and records different attributes for each base.
Figure 8 shows the processing operations performed by graph manager 80 at step S400. In the present example, 8 backbone bases were created as objects at step S300. Therefore, at step S420, 8 new vertices are inserted _ nto the model αraph. Actua] Ly, at this stage m the processing, no model graph has previously been created, and therefore graph manager 80 creates a model graph from scratch and inserts the 8 vertices therein .
Figure 14a shows the state of the model graph after step S420.
At step S425, graph manager 80 assigns automatic attributes to each vertex (base) in the model graph. In this embodiment, the automatic attributes comprise:
Generation name Name of the generation of oases. It has the same value for all bases m the generation.
Index : Every base m a generation is assigned a consecutive number starting from one for the first base created. The index is therefore a unique identifier of the base within a particular generation. It should be noted that the index of a base need not be explicitly defined. Instead, for example, the index of a base may be implicitly defined by the order m which the bases are generated or arranged m computer memory. Name: This attribute is either unique for every base or has the same value for all bases in a generation. Which method is used depends on the context of a generation. For example, bases that represent floors in a building might have distinct names (e.g. floorl, floor2, ...) . On the other hand, bases that represent a type of windows might have the same name.
Level: Used for the purpose of visualization of a model. Usually it has the same value for all bases in a generation.
Colour: Used for the purpose of visualization of a model. It defines the colour in which a base will be rendered and displayed.
The attribute values assigned in this example comprise
Generation : Backbone Index : 1 - 8 Name : basel - baseϊ Level : CENTERS Colour : 0 (white)
The combination of the attributes "generation" and "index" (or "generation" and "name") define a unique identifier for each base. Figure 14b shows the model graph after the automatic attributes have been assigned at step S425.
Referring again to Figure 8, additional attributes may be selected and added at steps S430 and S435. However, in the present example, there is no need for additional attributes for backbone bases, so the next step is step S440, at which graph manager 80 adds automatic connections between vertices representing backbone bases - referred to as intrageneration connections where "intrageneration" means between vertices representing bases from the same generation .
In the present example, there is only one automatic intrageneration connection called "CREATION ORDER". This connection connects the vertices in the order in which the bases were created from first to last. Which one is first and which one last is governed by the index "i" in all of the functions used at step S300. This index always runs from 1 to the number of bases in the current generation.
Connections are represented as edges in the model graph
(that is, as pairs of vertices - actually indices of vertices) . The first vertex in a pair represents the starting point of the connection and the second vertex represents the end point. Graph manager 80 computes edges for the connection "CREATION ORDER" with the following formula :
Edges={ (I, I + 1) , {I, 1 to number of bases in a generation - 1}} Figure 14c shows the model graph after the processing at step S440.
Referring again to Figure 8, additional mtrageneration connections may be added at steps S445 and S450. However, in the present example, there is no requirement for additional intrageneration connections for backbone bases, and therefore the processing at steps S445 and S450 is omitted during the current round of processing.
At steps S455, S460 and S465, automatic intergeneration connections and additional intergeneration connections may be added to the model graph. However, the generation of backbone basis is the first generation in a model, and therefore there are no intergeneration connections to be defined at this stage in the processing. Accordingly, steDS 34^5, S460 and S465 are omitted on this round of processing .
The model graph resulting from the processing at step S400 for this example is therefore as shown m Figure 14c.
At the end of step S400, the model is m a consistent state. As used herein, the term "consistent state" of the model means that all of the data from bases, content objects, and attributes and connections m the model graph are in accordance with each other (that is, there is no base or content object without the required attributes and connections) . As a result, at step S475, the designer and/or another user of the system has a chance to export the model data to other systems for the purpose of visualization, analysis, manufacturing, etc. Which bases, contenb objects and other data are exported depends on the purpose of the other system. Nob all of the data needs to be exported. For example, for quick visualization o£ the model, data for only the ] ast generation of bases need to be exported.
Depending on the purpose of the export, data can be formatted in different ways. For example, for visualization, only the geometry and the attributes "Level" and "Colour" are needed. For structural analysis, the geometry, information about the material of content objects
(contained in custom attributes - like the attribute
MATERIAL described later in this example) and connections from the model graph are needed. For manufacturing, at least the geometry, the material of the content objects and their identification number (label) are needed.
Step S500
Referring again to Figure A1 at step S500, content objects can be inserted into the bases generated at step S300 in the current round of processing.
In the present example, there is no need for content objects Jn the backbone bases, and accordingly step S500 is omitted on this round of the processing. Step S500 is, however, performed (and described) for subsequent rounds. S t ep S 600
At step S600, additional transformations can be applied to bases and content objects. This feature enables the present embodiment to change the position and/or orientation of some, or all, of the bases or some, or all, of the content objects using one or more mathematical functions without re-defining each base or content object individually.
In the present example, the backbone bases generated at step S300 are reoriented in a series of transformations by transformation controller 100.
The processing at step S600 is provided separately in this embodiment from the processing at step S300 (at which bases were generated and orientated) and the processing at step
S500 (at which content objects were generated and orientated) so that transformations can be applied taking into account both the bases and the content objects. For example, one or more content objects added at step S500 may be used to compute a transformation to transform bases and/or content objects.
Figure 10 shows the processing operations performed by transformation controller 300 at step S600.
Referring to Figure 10, at step S630, transformation controller 100 selects one or more functions for the transformation of bases. In this embodiment, the transformation (s) are selected in accordance with instructions from a user (although they could be selected by computation) . At step S635, transformation controller 100 selects one or more parameters to be used in the function (s) selected at step S630 for the transformation of bases. In this embodiment, the parameter (s) are selected in accordance with user instructions (although they could be selected by computation) .
At step S640, transformation controller 100 selects one or more functions for the transformation of content objects. In this embodiment, the transformation (s) are selected in accordance with user instructions (although they could be selected by computation) .
At step S645, transformation controller 100 selects one or more parameters to be used in the function (s) selected at step S640 for the transformation of content objects. In this embodiment, the parameter (s) are selected in accordance with user instructions (although they could be selected by computation) .
At step S650, transformation controller 100 applies the transformation ( s ) selected at steps S630 and S640 using the parameter (s) selected at steps S635 and S645, thereby generating transformed bases and/or content objects.
The processing in Figure 10 will be illustrated for the present example in a case where all of the backbone bases are transformed with the same transformation in such a way that origin of the last base B8 lies directly over the origin of the first base Bi (that is, the x and y coordinates of the origins of bases Bi and B8 are the same) . This transformation is accomplished as set out below.
Consider the three points Oj, O8 and 0v where O] is the origin of base Bi, O8 is the origin of base B8 and 0v is O1 +
{0, 0, 1}. Transformation TRi is a transformation needed to rotate vector O8 - Oi to vector 0v - Oi through the point Oi .
Oi = { 0.56478311, 0.0, 0.0} O8 = { 1.79992353, -0.42426406, 29.4 }
Ov = Oi + {0, 0, 1} = { 0.56478311, 0.0, 1.0}
TRi = TransformationVectorToVector [Oi, O8 - O:, Ov - Oi]
Transformation TRi is applied only to the origins of the backbone bases Bi. The rotation part of the bases Bi is kept intact .
B1 = Base [TBi, Rm], Tn, = {xa, y, , Zj } TR1 = [T, R] B;' = Base [T + R Tr;i, RB] ]
After applying the transformation TRi, a correction to each origin's z coordinate must be made. Accordingly, the Z coordinates of the bases B1 ' are reset to the values of the original bases B1. This step is needed in the present example to preserve floor heights between backbone bases.
B1 = Base [{xiA y zi} , RBi] Bi' = Base [{xi', yi' , z± ' } , RBi' ] Bi" = Base [{x/, yi' , Z1J, RBi ' ] Figure 15a shows the bases B1 before transformation
(illustrating that the origin of base B8 does not lie directly over the origin of base Bi) and the bases Bi" after transformation controller 100 has applied transformation TRi and correction to their z coordinates
(illustrating that the origin of base Be'' now lies directly over the origin of base Bi' ' ) .
A second transformation of the backbone bases turns them upside down. This is achieved by applying a global rotation Ri to the bases Bi". Rotation Ri is defined as rotation around global Y-axis {0, 1, 0} for 180 degrees:
Ri = RotationAroundAxis [ {0, 1, 0}, 180° ] Bi'" = Rl • Bi"
Thereafter, a rotation R2 is applied locally - that is, only on the rotation part of each backbone base B1 . This is meant to bring the X-axis of each backbone base to point again in the direction i t had before application of the global rotation R1.
Ro = RotationAroundAxis [{0, 0, 1}, 180°]
Figure imgf000054_0001
Bi"" = Base [T1,/", R2 RB/"]
The result of applying rotations Ri and R2 on bases Bi" is shown in Figure 15b (in which it will be seen that base Bs' ' ' ' is now the bottom base and Bi' ' ' ' is now the top base) . A final transformation TR2 transforms the backbone bases B1 "" in such a way that the origin and orientation of the bottom base (which, after applying rotations Rj and R^, is now base B8 "" as described above) follows the parameters specified in step SlOO. Their numerical values are:
Pos = {2, -3.5, 0}
X-axis direction vector Xdir = {0.8, -1.25, 0}
Transformation TR2 is defined as follows:
TR2 = [T, R]
T = Pos Xs = Direction of X-axis of base Be"" α = directed angle from vector X8 to vector Xd,r R =- RotationAroundAxis [ {0, 0, 1 } , α]
C1 = TR2 B1 ""
The result of applying transformation TR? on the bases B1 is shown in Figure 15c.
Steps S700 and S800
Referring again to Figure 4, at step S700, content generator 90 can add new content objects to the model, and at step S800, graph manager 80 can perform processing to update the model graph. In the present example, the processing at steps S700 and S800 is not performed during the current round of processing. More particularly, because no new content objects are to be defined and all of the attributes and connections have already been established at step S400, then steps S700 and S800 are not necessary.
At this stage in the processing, the model is in a consistent state, and therefore data can be exported to one or more other systems, as described previously with reference to step S475.
Step S900
At step S900, a check is performed to determine whether another generation of bases is to be added to the model.
In the present example, the backbone bases comprise the first generation of bases, and further generations of bases are to be added. Accordingly, processing returns to step SlOO for the next round of processing, which will be described below.
Second Round of Processing: Generating Ring Bases (Second Generation Bases ) With Content Objects
The second generation of bases in the present example is a generation of "ring" bases.
Each backbone base serves as a reference base (that is, a containing base) for a specific number of ring bases to be arranged in a ring on a plane around the backbone base. The ring bases are generated by performing a second round of the processing m Figure 4, as will now be described.
Step SlOO
Referring to Figure 5, at step SIlO, parameter definer 50 defines the number of bases for this generation of bases in accordance with user instructions. For this example, the number is 18 new bases for each backbone base. This number is the same for each backbone base, but it could be a different number for each backbone base.
Parameter definer 50 then calculates the total number of ring bases: number of backbone bases * number of bases per ring = 8 x 18 = 144.
At step S115, parameter definer 50 defines a value for a specific global parameter comprising the depth of white blocks. As WLII be described later, the parameter "depth of white blocks" is used at step S700 for the creation of content objects.
In the present example, the parameter "depth of white blocks" is set to the value 1.0.
Step S200
Referring to Figure 6, at step S215, reference object selector 60 selects reference bases for the new ring bases.
In the present example, each backbone base is chosen as a reference base for 18 respective ring bases. The first backbone base serves as a reference base for the first 18 ring bases, the second backbone base serves as a reference base for the next 18 ring bases, and so on up to the last backbone base, which serves as a reference base for the last 18 ring bases. This relation is expressed with the formula :
I = index of ring base
Iref = index of reference backbone base
Iref [I] = Quotient [I - 1, number of bases per ring] + 1
Function Quotient (n, m) gives the integer quotient of n and m
At the current stage of processing in the present example, there are no content objects in the model, and therefore there is no reference object to be used for parameters of functions. Accordingly, the processing at step S220 is not required on this round of processing.
Step S300
At step S300, base generator 70 generates the ring bases. The number of ring bases is equal bo the number of bases defined at step SIlO in this round of processing (that is, 144) .
Referring to Figure 7, at steps S315 and S320, the origins of the bases are computed. The procedure for computing the origin of each ring base in the present example will be described with reference to Figure 16. Referring to Figure 16, for each backbone base, the origins of its 18 ring bases are positioned on a circle with a specific radius in the XY plane of the backbone base. The origins are equidistantly spaced around the perimeter of the circle, with the first origin at 0° angle and the others following in the counter-clockwise direction.
The positions of the origins of the ring bases are computed as if they all lie in an XY plane with the global coordinate system as a local coordinate system. After that each ring base is transformed with appropriate transformation to lie in the same position relative to its reference base (backbone base) as it is in the global coordinate system.
More particularly:
I = index of ring base, (runs from 1 to total number of ring bases)
Iroi[I] = index of reference backbone base computed by formula from step S215 on this round of processing
Angle α = -360° / number of bases per ring
Function for radii R[I] = RfiXed + UrefUJ - D (R2 - Ri) / (Number of backbone bases - 1)
Origins 0[I] = R [I] {Cos [Ia] , SIn[Ia], 0} From the function R[I] for radii, it will be seen that I,ef[I] is a variable of the function - that is, the radius of the circle upon which the origins of the ring bases lie is dependent upon the index I of the reference base (the backbone base to which the ring bases belong) . In other words, the radius changes as the index I changes, so that the radius is different for each backbone base. In Figure 16, therefore, the radius Rl of the circle of ring bases 1- 18 is different from the radius R2 of the circle of ring bases 19-36 and the radius R3 of the circle of ring bases 37-54. As a result, the positions of the second-generation bases (which lie on the circles) change relative to their containing backbone base from circle to circle. This feature of the present embodiment enables variations in the ring bases to be introduced throughout the model without having to define the ring bases individually. This is particularly advantageous where a large number of ring bases are to be defined for the model. The form and extent, of this variation is set in accordance with the mathematical function having the index of the backbone base as a variable.
Similarly, from the function 0[I], it will be seen that 1 is a variable of the function. That is, the position of each second-generation base upon its circle is dependent upon the value of its index I . The variable I therefore acts as a variable feature identification number which controls the position of each second-generation base.
Although the mathematical functions R[I] and 0[I] are separate functions in the present example, it will be appreciated that, in other examples, a single function having both Iτef and I as variables could be used to defined the position and/or orientation of each second-generation base .
In the present example, the following values are assigned to the parameters in the functions above:
number of bases per ring: 18 total number of ring bases: 144
Number of backbone bases: 8
Rfixed: 12 .00 m
R1: 0 .00 m
R2: 3 .00 m
The parameters "number of bases per ring" and "total number of ring bases" were defined at step SlOO in the current round of processing, find the parameter "Number of backbone bases" was defined at step Sl]O in the previous round during the generation of the backbone bases.
To compute g] obal coordinates of the origins of the ring bases, each origin O1 must be transformed with a transformation TBfI] which is in reality a defining transformation of the ring base's reference backbone base C[Iief [I]I .
TB[I] = Transformation [C [ Iref [I]]]
Figure 17 shows the global positions of the origins Oi of the ring bases computed by position calculator 74 in accordance with the equations above. In this figure, Ci are the reference backbone bases. The origins of the backbone bases are computed locally to their reference base and then transformed to the globaJ coordinate system. They could instead be defined directly in the global coordinate system, but the functions used would be more complex. On the other hand, a situation can be foreseen where functions for computing the origins of the bases directly in the global coordinate system would be less complex than computing them locally (i.e., when there is no dimensional relation to the reference bases).
When a ring base is created, its initial orientation is the orientation of its reference base. The initial orientation of each ring base BRl is thus the same as is the orientation of its reference backbone base C1. This situation is shown in Figure 18.
At step S330, function selector 72 selects one or more functions for additional rotation of the ring bases.
This will be described lor the present example with reference to Figure 19a.
Referring to Figure 19a, a function is seLected to rotate the Z-axis of each ring base so that the Z-axis points to the origin of the ring base on the next ring which is expressed with the following relation on the ring base indices :
I = index of ring base BRl
ITO = index of ring base on the next ring = I + number of bases per ring This is achieved by applying following transformation TRj on the ring base BR, .
O] = origin of ring base BRL Z = Z-axis vector of base BRi O2 = origin of ring base BR[IT0] C = origin of reference backbone base C[Iref] P = plane from three points O1, O2, C (order of points is important for direction of plane' s normal vector)
TRi = TransformationVectorToVector [Oi, Oi + Z, O2]
BRi ' = TRi BRi
Another condition in the present example is that the X-axis of each ring base BRj should lie in the plane P that goes through the origins O1, 0;> and C (that is, the origins of ring base BRi, ring base BR[IT0] and reference backbone base C[I3Of]). This assures that the X-axis of the ring base points in the general direction of the origin of its reference base. Since the Z-axis of base Bp1 already lies on this plane (it has been defined as the direction from origin O1 to O2), the only thing required is to rotate base Bκi around its Z-axis in such a way that its X-axis snaps to the plane P. The amount of rotation R1 needed is calculated from the directed angle α between the X-axis of base BRi' and the plane P.
XBRX' = direction of X-axis of base BRi' ZBRI' = direction of Z-axis of base BRi' α = AngleBetween [XBR/, ( ZBR ' x NormalVector [P] ) J
As used herein, the directed angle between two vectors is defined as follows: In general two non-parallel vectors vi and v? fully define a plane. If the normal vector of this plane is defined as a cross product of vectors vi and V2 (n
= Vi x V2) , the directed angle is then the angle when travelling from vector Vi to vector V2 around normal n in a counter-clockwise direction. (This means that the directed angle is not necessarily the smallest angle between two vectors . )
Ri = RotationAroundAxis [ZBR±', α]
Figure imgf000064_0001
Figure 19b shows the final ring bases BRi_ after applying transformation TRj and rotation R1.
Step S400
At step S400, graph manager 80 inserts the ring bases generated at step S300 into the model graph and records different attributes and connections for each ring base.
There are 144 ring bases in the present example. Therefore, at step S420, 144 vertices are inserted into the model graph. Figure 20 shows the model graph after the processing at step 420. Automatic attributes are assigned to each vertex (base) by graph manager 80 at step S425. In this example, the automatic attributes are:
Generation: Rings
Index: 1 - 144 Name: base 1 - base 144
Level: RINGS Colour: 0 (white)
In the present example, at steps S430 and S435, an additional attribute called "Ring Number" is selected and assigned for each ring base. Ring bases are organized in rings. Within each ring, the ring bases are characterized by the fact that they have the same reference backbone base. Backbone bases are numbered from 1 onward and the index of each backbone base in the generation "backbone" can therefore be considered as a ring number.
Based upon the value of the attribute "ring number", the ring bases are partitioned into distinct non-overlapping groups (also called equivalence classes) . They can be selected separately wherever a set of bases is needed throughout the generating procedure. For example, when reference coordinate systems are defined for a new generation of bases (step S215) or when content objects are inserted (step S500) or created (step S700) in some of the bases from the current generation of bases.
Additional attributes can be arbitrary, and thus their values may be defined through the use of functions. For the attribute "ring number", the function previously defined at step S215 in this round of processing is used, which is a function for calculating the index of the reference backbone base Irei from the index of ring bases.
Part of the resulting model graph after assigning values for the additional attribute "ring number" is shown in Figure 21.
Referring again to Figure 8, at step S440, graph manager 80 adds the automatic connection called "CREATION ORDER" between the vertices representing ring bases. As noted previously, this connection defines the order in which the vertices were created from first to last. The resulting model graph is shown in Figure 22, in which the arrows show the creation order.
Additional intrageneration connections are selected and defined in steps 445 and S450. They facilitate the use of the ring bases as parameters in functions and procedures later on in the course of the example. In the present example, four additional connections are defined:
NEXT: Connects a ring base to the base adjacent to it on the right, that has an index number greater by 1, except for the last base on the r:i ng which connects to the first base of the ring
TO: Connects a ring base belonging to a ring (see below) to the analogue base on the next ring, that is, first base from ring to the first base from the next ring, second base to the second base from the next ring, and so on to the last base in a ring. Because of the order of creation of the ring bases, the index of the analogue ring base is defined as the index of the relevant ring base plus the number of bases per ring.
PREV: Reversed connection NEXT
FROM: Reversed connection TO
Ring is defined as a group of ring bases which have the same reference backbone base, that is they have the same value of the attribute "ring number", which is assigned in step S435 on this round of processing. "Next ring" is thus a group of ring bases with the consecutive value of attribute "ring number".
Functions for edges for these connections are:
n = total number of ring bases m = number of bases per ring
Edges NEXT - {(I, Quotient [I - 1, m] m + Mod [ I , m] + 1) , {I, 1 to n} }
Edges TO = {(I, I + m) , {I, 1 to n - m} }
Edges PREV = {(I, Mod [ I - 1, m] + m (Quoti ent [ 1 - 1, mj - Sign [Mod LI - 1 , m] ] + 1 ) ) , { T , 1 to n}} Edges FROM = {(!, I - m) , {1, m + l to n}}
Indices of pairs are relative indices in the set of ring bases . Part of the resulting model graph is shown in Figure 23 (showing the connections "NEXT" and "PREV") and Figure 24 (showing the connections "TO" and "FROM") .
At step S455, graph manager 80 adds automatic intergeneration connections. An intergeneration connection is a connection that connects bases in different generations (a new base generated in the current round of processing and an existing base generated in a previous round of processing) . In this example, a connection called "SUBBASES" is added automatically from each backbone base to every ring base that counts this backbone base as its reference base. The formula for edges is:
Iref [I] = index of reference backbone base computed by formula from previous step S215
Edges SUBBASES = {(IroiU], I), U , 1 to n}}
The first index in a pair refers to the backbone bases and the second index refers to the ring bases. Part of the resulting modcj graph is shown in Figure 25.
In the present example, there are no additional intergeneration connections for ring bases, and so the processing at steps S460 and S465 is omitted.
At the end of this step, the model is in a consistent state; therefore its data can be exported to other systems for various purposes, as described previously. S t ep S 500
At step S500 m the present example, content generator 90 xnserts a content object into each ring base generated at step S300. More particularly, m this example, a point P is inserted into each ring base in the same position relative to the ring base' s origin as its position to the global coordinate system G. This relationship is shown m Figure 26a.
Point P is the same for each ring base, and comprises an example of a primary content object. In this example, the point's coordinates {x, y, z} are defined by the user to be: P = {0.4, 0.65, 0.3} .
It should be noted that, although the content object (point P) xn this example is inserted into every ring base, thj s need not be the case, and instead the content object may be omitted from one or more ring bases. Similarly, although the consent object inserted into each ring base is the same content object in this example, different content objects could be inserted into different ring bases. For example, each ring (that is, a group of ring bases with the same value of the attribute "ring number") can have a different point P1 as its content object. In this case 8 (equal to the umber of backbone bases) different content objects (points Pr) could be added to the ring bases, each point Pr added only to the ring bases which have the value of the attribute "ring number" equal to r.
Figure 9 shows the processing operations performed by content generator 90 at step S500. Referring to F'igure 9, at step S505, content importer 92 seiects the external content object to be imported and its source. In this embodiment, these processes are performed in accordance with user instructions (although they could be performed automatically by computation) .
At step S515, content importer 92 imports the selected content object into the system, and assigns a copy of the content object (in this case point P) to each ring base generated at step S300.
The points P are the first content objects in the model of the present example. Their type is POINT and their data consist of x, y and z coordinates. Each ring base BRl gets its own copy of point P. This is shown in Figure 26b.
At step S530, graph manager 80 adds each content object assigned at step S525 as a new vertex to the model graph. This is performed in a similar way to the addition of a vertex for each base at step S420 (described previously) . Figure 27 shows a part of the model graph after step S530.
At step Sb35, graph manager 80 assigns the following automatic attributes to each vertex in the model graph representing a point P:
Index: 1 - 144
Name: bpoint Level: BPOINT
Colour: 0 (white) The combination of the attributes "index" and "name" (or the combination "index" and "level") comprise a unique content object identifier, from which each content object can be uniquely identified.
Figure 28 shows part of the model graph after step S535.
There are no additional attributes for the points P in the present example, and so steps S545 and S550 are omitted on this round of processing.
At step S555, graph manager 80 adds CONTENT connections to the model graph for the content objects assigned at step S525. More particularly, each point P has a reference ring base. The automatic connection called "CONTENT" is added to the model graph to show this relation for each ring base arid its point. Part of the resulting model graph is shown in Figure 29.
In the present example, there are no additional connections for the points P, and so steps S560 and S565 are omitted on this round of processing.
At the end of step S500, the model is in a consistent state, and therefore at step S575 its data can be exported to other systems for various purposes, as described previously. Step S 600
In the present example, no additional transformations are needed for the ring bases or their content objects (points P) .
Accordingly, no processing is required at step S600, and therefore this step is omitted on this round of processing.
Step S700
At step S700, content generator 90 creates new content objects for the model using one or more mathematical operations .
Figure 11 shows the processing operations performed by content generator 90 at step S700.
In the present example, a solid block (mesh) is inserted into each ring base. To accomplish this, auxiliary objects are created. Six planes are sufficient to fully bound a solid block of the proposed shape, and a line is calculated to define two of the planes. Each content object is created in every ring base according to the same procedure.
The procedure for creating the content objects starts with the creation of the line, then the planes and finally the solid block. Although in reality steps S705 to S799 are executed 8 times in sequence (a line, 6 planes and a mesh) , the description of these steps is made for all of the created content objects together. At step S705, content creator 94 selects the type of each new content object. In this embodiment, the selection is performed in accordance with user instructions (although it could be performed automatically) . In this example, the object types are LINE, PLANE and MESH. Lines and planes are primary content objects, while mesh is in the category of solid content objects.
At steps S715, S720 and S730, content creator 94 selects operations for the creation of the content object, the bases in which the content object is to be generated and parameters for the creation operations, respectively, with the selected operation parameters being recorded at step
S740. In this embodiment, these selections are performed in accordance with user instructions, although they could be performed automatically.
At step S745, content creator 94 executes the operations selected at step S715 in accordance with the bases and parameters selected at steps S720 and S730 to generate the same new content object (s) in all of the bases selected at step S720. For every new content object, the same generating procedure is executed in all of the selected bases. This assures that if a procedure for creation of a new content object is composed with actual data from a single base, it can be replicated without change to all the selected bases in the generation. The values of actual parameters may be different for every base, but their composition (number and types of parameters) is the same.
These processing operations will now be described in the context of the present example. Functions for the creation and manipulation of lines and planes are defined directly in the programming language of the system of the present embodiment. For meshes, an external geometric modelling kernel is selected, in LhLs example OpenCASCADE is used.
The following functions are used for the creation of the new content objects in this example:
Object name: Description of creation function: Bisector Angle bisector between two directions from a given point in space.
Left plane, j Oriented plane through line and point Rj ght plane Down plane, Oriented plane through three points Top p] ane
Front plane "Closest" oriented plane from 4 points
(used method ot least squares to calculate closest plane)
Back plane Moved and inverted plane White block Mesh from oriented planes
Figure 30a shows the construction of an angle bisector L in ring base BRl . Line L lies in a plane defined by points 0, ON and Op and bisects the angle between points OP - 0 - ON.
Point 0 = origin of ring base 2Rl
Point ON = origin of ring base BRl —> NEXT (= origin of ring base BR1+I) Point Op = origin of ring base BRL -» PREV (= origin of ring base B^,_i)
Point 0T = origin of ring base Bkl —» TO (= origin of ring base BRj,18) Point ON- = origin of ring base BPi ---> NEXT —> TO (= origin of ring base BRl+19)
Point 0pT = origin of ring base BRl -> PREV-> TO (= origin of ring base BRl+i7)
As an aside, it should be noted that the following notation is used herein: 0end = <0start> —> <edge 1> [ -> <edge 2> —> ... -> <edge N> [{<attribute value>}]] shows selection of object Oend by following the connections in the model graph from object Ostart to the object to which connection <edge 1> points, from there to the object to which connection <edge 2> points, and so on to the last object to which connection <edge N> points. Since many connections (e.g., "SUBBASES", "CONTENT") can have more than one value on the same object, a qualifier (<attribute value>) has to be specified to select a particular object. In the previous example notation, BR: —> NEXT points to an object which can be selected by following connection NEXT from object (base) BRl . Since this connection has only one value, no qualifiers are needed. From the definition of the connection NEXT in step 400, the object at the end of it is ring base BRlfi.
Figures 30b, 30c and 3Od show the construction of a plane from 4 points using 3 different subsets of 3 defining points. With four points (0, ON, 0NT? OT) and one of them fixed (O) , only three possible combinations of three different points are possible: (0, ON, ONT) , (0, ON, 0T) and (O, 0-, ON-, ) . For each triplet, a different plane can be constructed. These three different planes are depicted in Figures 30b, 30c and 3Od, respectively.
Figures 31a and 31b shew created content objects in two consecutive ring bases. The labels used in these figures depict the same objects as the labels in Figures 30a-30d with the following additions:
Base BN = ring base BRi -> NEXT
Base BNN = ring base BRi -» NEXT -> NEXT
Base Bτ = ring base BRi —> TO
Base BNT = ring base BRi -»• NEXT -> TO
Base BNNT = ring base BRi -> NEXT -> NEXT -> TO Base BP = ring base BRi -» PREV
Base BPT = ring base Bκi → PREV -> TO Line L1 = angle bisector in ring base BR3 Line LN = angle bisector in ring base BN Line LNN = angle bisector in ring base BNt, Plane P1, = plane from line Li and point Oτ Plane PR = plane from line LN and point ONT Plane PD = plane from points On-, Oτ and ONT Plane Pτ = plane from points 0P, 0 and ON Plane PF = plane from points 0, ON and Oτ Plane PB = inverted plane PF moved for distance d
d = depth of white blocks Wi Solid block Wi = mesh in ring base BRi Solid block WN = mesh in ring base BN Lines L2, Lκ and LNN are constructed by the procedure illustrated in Figure 30a in bases BRl , BN and BNN respectively .
Plane Pj, is constructed from line L1 and point 0T. Line L, is represented with two points; therefore the plane can be constructed from a line and an additional point. The plane' s normal vector lies in the same halfspace as the point Op.
The example procedure above for creating planes shows the importance of attributes and connection data stored in the model graph. Using only an arithmetic function on the indices of the ring bases would return incorrect ring bases for parameters for the first and the last base on each ring. All of the parameters (points needed for construction of a plane) are actually origins of ring bases. But for the procedure to have appropriate origins of ring bases for parameters for each ring base in which new content objects (planes) are created, the connections NElXT, PREV and TO must be used. The connections NEXT and PREV encode the information about neighbouring ring bases of the relevant ring base on the same ring, while the connection TO represents information about the analogue ring base from the next group of ring bases.
Plane PR is constructed from line LN and point ONT. The plane's normal vector lies in the same halfspace as the point 0NN. Plane P0 is constructed from three points 0PT, 0T and 0Nτ- The plane' s normal vector lies in the opposite halfspace as the point 0.
Plane Pτ is constructed from three points 0P, 0 and ON. The plane' s normal vector lies in the opposite halfspace as the point OT.
Plane PF is constructed from three points 0, ON and 0T. The plane's normal vector lies in the opposite halfspace as the point 0 + X-axis [BRl] .
Plane PB is inverted plane PF, moved for distance d in the direction of the normal vector of plane PB.
P15 = MovePlane [InvertPlane [PF] , d]
Solid block W± is a mesh constructed from planes PL, PR, PD, Pτ, P;., P1,. Each plane divides a space into two halfspaces and one of them can be considered full. By convention, the halfspace in which the normal vector of the plane points is considered empty, the other half as solid. Solid block Wj is then constructed as an intersection of six planes. The normal vectors of the six bounding planes are oriented in such a way that they point outwards of the resulting solid block .
From the above, it will be understood that each content object is generated in accordance with a procedure comprising a series of steps using at least one mathematical function. Furthermore, the procedure for the generation of each content object is dependent upon a plurality of ring bases (even though the content object is defined in the local coordinate system of only one base) . Accordingly, because the arrangement of ring bases varies throughout the model (because the ring bases were defined so that they vary in accordance with the identity of the backbone base to which they belong) , then the content objects also vary throughout the model in accordance with the variations of the ring bases. However, it should be noted that the present embodiment does not provide a separate definition of each content object in order to achieve this variation - instead, a single definition is provided using at least one mathematical function and a plurality of bases. If the designer subsequently changes the arrangement of bases, then the system will automatically regenerate the content objects in accordance with the definition using the new arrangement of bases and the mathematical function (s) for the definition of the content objects. As a result, the system adapts the content objects to any change in the bases.
In the present example, new content objects are not created in all ring bases. More particularly, the definition of planes and white block depends on the data of bhe ring bases from two consecutive rings. However, each base on the last ring has no TO connection, meaning that there are no more ring bases. Accordingly, for bases on this ring (ring number 8), no new content objects are created.
Figure 31b shows the final solid blocks Wi and WN, belonging to ring bases BRi and BN respectively. Block WN is rendered in cross-section. In the present embodiment, as well as geometric data, content objects also keep information on object type, selected creation function (s) and references to the bases and/or objects that serve as parameters for the creation function (s) . For example, the object "White block" Wi stores following non-geometric data:
Object type: Mesh
Geometric modelling kernel: OpenCASCADE
Creation function: v Mesh from oriented planes
(from OpenCASCADE) Pointers to reference objects: Base BRi
Planes PL, PR, PD, Pτ, PF, PB Values of reference parameters: Numeric parameter d
Representation of a content object with operation and references to parameter objects for an operation enables the system to keep track of the history of a content object. Tn addition, the system can revaluate the object anytime, possibly with ailtered source object parameters.
After the creation of each content object, its validity is checked by content creator 94 at steps S750 and S755. This processing is performed in this embodiment because not all combinations of input data can produce valid objects. For example, a line is defined with two distinct points. If the points are the same, then the line is not defined properly, it is not valid, and cannot be used in other operations. Each type of object has its own set of criteria that must be satisfied for successful validation. Simple objects like points, lines, planes, can be easily checked. More complex ones like meshes and other solid objects may need special functions to be properly checked. In this embodiment, these functions are provided by the geometric modelling kernel used for computing the solid objects and are executed automatically (that is, the creation funcbion fails if the resulting object is not properly formed) . In the event that a validation function is not provided automatically, the present embodiment allows for a validation function to be selected by content creator 94 at step S750 in accordance with user instructions.
In this example, the following validation checks are performed:
Line: check for points not to be coincident (line vector must be non-zero)
Plane: check for points not to be coliinear (normal vector must be non-zero)
Mesh: validated implicitly by geometric modelling kernel that performs the creation function
After it is determined at step S760 that a created content object has been validated, graph manager 80 adds the object as a new vertex to the model graph at step S765.
In the present example, for each ring base, 8 new vertices are inserted into the model graph. Figure 32 shows part of the model graph with new vertices for the content objects in ring bases with indices I, I + 1 and 1 + 18.
At step SIlO, graph manager 80 assigns automatic attributes to each new vertex in the model graph representing a new content object. In the present embodiment, the automatic attributes assigned by graph manager 80 to a content object comprise :
Figure imgf000082_0001
At step S775, graph manager 80 selects any additional attributes to be added for a content object in accordance with user instructions, and at step S780, adds the additional attribute (s) to the model graph.
In the present example, an additionaJ attribute called "Material" is selected and added for the object "White block". In this example, the attribute has the same value for all White blocks: STEEL
Figure 33 shows the same part of the model graph as Figure 32 with the attributes added at steps S770 and S780 for the present example.
At step S790, graph manager 80 adds a CONTENT connection to the model graph for each new content object.
In the present example each new content object has a reference ring base. Accordingly, at step S790, the automatic connection called "CONTENT" is added to the model graph to show this relation between the reference ring base and the new content object. Part of the resulting model graph is shown in Figure 34.
At the end of step S700, the model is in a consistent state, and therefore at step S799 its data can be exported to other systems for various purposes, as described previously.
Step S800
Step S800 is the last step in the generation of ring bases.
In this step, sensor function executer 110 generates and executes one or more so-called sensor functions to test a property of the bases or content objects and to divide the bases or content objects into equivalence classes in dependence upon the results of this test.
In the present example, sensor function executer 110 classifies bases into two equivalence classes. As will be described later, the system subsequently generates content objects such that the content objects depend upon the equivalence class to which their reference base belongs.
Figure 12 shows the processing operations performed at step S800.
Referring to Figure 12, at step S805, sensor function executer 110 defines one or more attribute (s) and/or one or more connection (s) on which a sensor function is to operate. More particularly, sensor function executer 110 may select an existing attribute or connection or instead may define a new attribute or connection.
In the present example, the new attribute "CUPVATURE" is added to each ring base. This attribute may take one of two possible values, "+" and "—" (which is calculated later), such that bases with "+" CURVATURE fall within one equivalence class and bases with "-" CURVATURE fall within another equivalence class.
At step S830, sensor function executer 110 defines a sensor function, Sensor [I], to be used in calculating values of the attribute (s) and/or connection (s ) defined at step S805. If an existing attribute or connection is selected at step S805 which already has stored values, then step S830 is omitted.
In the present exampJe, the following sensor function Sensor [I] is defined:
Base C [I]ei [I]] = I-th ring base's reference backbone base .
Point Oc = Origin of backbone base C [Iiej [I]] Base BRL = T-th ring base Point ORJ = Origin of base BR1
Point OE = Origin of base BRl —>• FROM (= Origin of base
Point 0T = Origin of base BRi -> TO (= Origin of base
BRI+18) Plane PLl = PlaneFrom3Points [0F, 0T, 0c] Plane PL [I] = plane orthogonal to the plane PL] with a normal vector pointing away from point 0c -
nrb = number of bases per ring N - total number of ring bases
Sensor [I] = signed distance from plane PL[I], {I, nrb + 1 to N - nrb}
At step S835, sensor function executer 110 selects criteria data to be applied to values computed using the sensor function Sensor [I] in order to divide the bases/content objects into equivalence classes.
In this example, the following criteria data are selected:
CURVATURE [I] =
Figure imgf000085_0001
Broadly speaking, the sensor function Sensor [I] and the criteria data define values of the attrjbute CURVATURE which represent the curvature of the surface of the model m the vicinity of a ring base. If the curvature m the vertical direction m the immediate vicinity of a ring base is convex, then the CURVATURE value is " V" lor that rjng base. On the other hand if the curvature is concave, the value is "—" .
At step S840, sensor function executer 110 selects objects to which the sensor function Sensor [I] and criteria data are to be applied. In the present example, the sensor function is well defined on]y tor the ring bases on rings 2 to 7. This is because the ring bases from the first rang (ring number 1) have no EROM connection and the ring bases from the last ling (rang number 8) have no TO connection. The values of the sensor function for ring bases on the last ring are not needed because there are no "white blocks" content objects in them. On the other hand, the ring bases from the first ring should be classified and therefore the sensor function should return an appropriate value for them. To achieve this, m this example, the curvature of the ring bases from the second ring is "continued" to the bases on the first ring:
Sensor [I] = Sensor [I + 18], {I, 1, nrb}
After, selecting the objects for processing, sensor function executer 110 applies the sensor function Sensor [I] to the selected objects and determines the value of the attribute CURVAIURE for each object m accordance with the sersor function value and the criteria data selected at step S835.
Ihus, m the present example, application of the sensor function Sensor [IJ and the criteria data above divides the ring bases into two equivalence classes - thaϊ~ is, ring base having "+" CURVATURE and ring bases having "-" CURVATURE .
Figures 35a, 35b and 35c show the distribution of these two equivalence classes over the model of the present example. To better see the difference between the convex and concave curvatures, the white blocks generated in step 700 are shaded different] y according to the vafue of attribute "CURVATURE". Figures 35b and 35c show only blocks m ring bases having a value of the attribute CURVATURE "-) " and "-" respe<
At step S845, graph manager 80 adds the attribute (s) and calculated value (s) therefor to the model graph.
Figure 36 shows part of the model graph with the values of the attribute "CURVATURE" assigned to the vertices representing ring bases.
At the end of this processing, the generator is in a consistent state, and therefore its data can be exported to other systems for various purposes at step S855, as described previously.
Step S900
The generation of rang bases is the second generation of bases m the example model. The generation of centre bases comes next, and therefore processing returns to step SlOO for another round of processing to add these bases.
Third Round of Processing: Generating Centre Bases (Third Generation Bases) With Content
The third and last generation of bases in the present example is a generation of centre bases. As will be explained in more detail below, each ring base on all but the last ring serves as a reference base for a single centre base.
Step SlOO
At step SIlO parameter definer 50 defines the number of bases for this generation of bases in accordance with instructions from the user.
In the present example, the number of centre bases is equal to the total number of ring bases minus the number of ring bases on the last ring, that is 144 - 18 = 126 bases:
Total number of centre bases = total number of ring bases - number of bases per ring = 126
The number of bases is the on]y initial global parameter for this generation of bases in the present example, and therefore the processing at step S115 is omitted.
Step S200
At step S215, reference object selector 60 selects reference bases for the new centre bases. In the present example, each of the ring bases with index 1 to 126 are chosen as a reference base for a single centre base.
At step S220, reference object selector 60 selects existing objects to be used for the definition of the centre bases.
For the creation of centre bases and then content objects in them, references to existing generations of bases and content objects are made. More particularly, at step S220 in the present example, the following sets of bases and content objects are selected:
Bases: ring bases
Content objects (all from ring bases) : bpoint
Left plane Right plane Top plane
Down plane
Step S300
At steps S300 base generator 70 constructs the centre bases .
First, the origins of the bases are computed at steps S315 and S320. More particularly, for the present example, the following procedure is selected for computation of the base origins :
For each centre base C1, its reference ring base BRi with neighbouring bases and their content objects are needed. Neighbouring bases are defined as bases following connections in the model graph labelled NEXT, TO and NEXT —> TO from base BRi .
Base BRi = reference base
Point ORi = origin of base BRi Point PN = BRl → NEXT → CONTENT {Name: bpoint}
Point PNT - BRl → NEXT → TO -» CONTENT {Name: bpoint}
Point 0T = Origin of base BPl -> TO
The origin 0 of the I-th centre base C is computed as the arithmetic mean of points 0Rl, PN, PNT and 0T:
Figure imgf000090_0001
As a result, the origin 0 of each centre base is dependent upon two existing bases (the origins OR1 and OT belonging to these bases) and two existing content objects (the points PN and PNτ) • The origin 0 of each centre base is therefore an object that is dependent upon bases and content objects from different groups of ring bases. More particularly, the origins 0Rj and OT are each from different (consecutive) rings (groups of bases based upon the value of the attribute "ring number") . Similarly, the points PN and P1 τ are also each contained in ring bases from consecutive rings .
Figure 37a shows points from the definition above.
The initia] orientation of centre base C1 is the same as the orientation of its reference ring base BR1. This situation is shown in Figure 37b.
To define the final orientation of centre base C1, additional rotations are computed at steps S330 and S335. Firstly, functions for these rotations are defined at step 330. Figures 37c and 37d show the designer's intent for the orientation of the centre bases in the present example.
Referring to Figure 37c, a first rotation rotates the X- axis of the centre base C1 around its Z-axis in such a way that it points in the direction of a vector from point 0Ri to point PN. The functions for this rotation are therefore:
Xci = direction of X-axis of base Ci ZCl = direction of Z-axis of base Ci dir = vector PN - 0Ri α = AngleBetween [Xc±, dir]
Ri = RotationAroundAxis [ZCi, α]
The rotation R1 is applied locally, that is, only on the rotation part of base C1.
C1 = Base [Tcj, R0J C1 ' = Base [TC], R1 • RCj ]
A second rotation orients the Z-axis of the centre base C1 vertically, as shown in Figure 37d. This rotation is given by:
0 = origin of centre base Ci'
Z = Z-axis vector of base C1' v = {0, 0, 1}
TRi = TransformationVectorToVector [O, 0 + Z, 0 + v] C: = TR1 C1
Figure 38 shows final centre bases CL after applying rotation R1 and transformation TR: .
Step S400
At Step S400, graph manager 80 inserts vertices representing the centre bases into the model graph.
There are 126 centre bases in this example. Therefore, at step S420, 126 vertices are inserted into the model graph. Figure 39a shows part of the model graph after the processing at step S420. New vertices for the centre bases are shown in the ring bases with indices I, I + 1, 1 + 18 and 1 + 19. These centre bases have indices J + 1, J +
18 and J + 19 respectively. Indices I and J run from 1 to number of centre bases.
At step S425, graph manager 80 assigns automatic attributes lor the centre bases. In this example, the automatic attributes comprise:
Generation : Centers Index: 1 - 126 Name : centerbase Level : BCENTERS Colour : 0 (white)
As before, the combination of the attributes "Generation" and "Index" comprise a unique identifier for each centre base . Figure 39b shows the same part of the mode L graph as Figure 39a with the automatic attributes added for the centre bases .
There are no additional attributes for the centre bases in the present example, and therefore the processing at steps S430 and S435 is omitted on this round of the processing.
At step S440, graph manager 80 adds the automatic intrageneration connection "CREATION ORDER" (described previously) between the vertices of the model graph representing the centre bases . Part of the resulting model graph is shown in Figure 40.
In the present example, there are no additional intrageneration connections between the centre bases, and therefore the processing at steps S445 and S450 is omitted on this round of the processing.
At step S445, graph manager 80 adds automatic intergenerati on connections. In the present example, the connection called "SUBBASES" is added automatically from each ring base to the centre base Lhat has this ring base as its reference base. The formula for edges is:
index of reference ring base I = 1 to total number of centre bases
index of centre base J[I] = I
Edges SUBBASES = {(I, J [I]), {1,1 to total number of centre bases } } The first index in a pair refers to the ring bases and the second index refers to the centre bases. Part of the resulting model graph is shown in Figure 39c.
In the present example, there are no additional intergeneration connections for the centre bases, and therefore the processing at steps S460 and S465 is omitted on this round of the processing.
At the end of this step, the generator is in a consistent state, and therefore its data can be exported to other systems for various purposes at step S475.
Step S500
At step S500, content generator 90 inserts content objects into each centre base generated at step S300. In the present example, an invariant polygon F and points P1,, PR, PH and Pτ are inserted into each centre base at the same positions relative to the base' s origin as their positions relative to the global coordinate system G. This relationship is shown in perspective view in Figure 41a.
More particularly, in the present example, content importer 92 performs processing at steps S505, S515 and S525 to import the polygon F and the points PL, PR, PB and Pτ into the system and assign a copy of each imported polygon and point to each centre base.
Polygon F is a primary content object. In this example, the polygon is created in an outside CAD system and its coordinates are then transferred to the system through a plain ASCII file. The coordinates of its points are:
F = {{-2.1, 0.0, -2.]}, {2.1, 0.0, -2.1}, {2.1, 0.0, 2.1}, {-2.1, 0.0, 2.1} }
Points PL, PR, PB and Pτ are also brought in the system from the outside CAD system in the present example. These content objects fall into the category of primary content objects, meaning that they can be changed subsequently by the system. Their coordinates are:
PL = { -0.4, 0.0, 0.0}
PR = { 0.4, 0.0, 0.0} PB = { 0.0, 0.0, -0.4}
P-, = { 0.0, 0.0, 0.4}
Each centre base C1 gets its own copy of these content objects at step S525. This situation is shown in perspective view in Figure 41b.
At step S530, graph manager 80 inserts vertices corresponding to the new content objects into the model graph. For each added content object in each centre base, a new vertex is inserted into the model graph. This means that a total of 630 new vertices are added (126 centre bases times 5 content objects) . Figure 42a shows part of the model graph with added vertices.
At step S535, graph manager 80 assigns the following automatic attributes to each new vertex:
Figure imgf000096_0001
Figure 42b shows the same part of the model graph as Figure 42a with added automatic attributes for the content objects.
For the content objects imported in this step, there are no additional attributes in the present example. Accordingly, the processing at steps S545 and S550 is omitted.
At step S555, graph manager 80 assigns a CONTENT connection (as described previously) to each content object.
Each content object has a reference centre base. The automatic connection called "CONTENT" is added to the model graph to show this relationship between each centre base and each of the 5 imported content objects for that centre base. Part of the resulting model graph is shown in Figure 42c.
In the present example, there are no additional connections for the content objects imported in this step, and therefore the processing at steps S560 and S565 is omitted on this round of processing. At the end of this step, the model is in a consistent state, and therefore its data can be exported to other systems for various purposes at step SS75.
Step S600
At step S600, transformation controller 100 applies additional transformations to the points PL, PR, PB and Pτ imported at step S500, while keeping the centre bases Ci unchanged.
More particularly, transformation controller 110 selects functions for transforming each of the points PL, PR, PB and Pτ at step S640 and selects parameters for the functions at step S645 before applying transformations in accordance with the selected functions and parameters at step S650. In the present exampJe, transformations for each point P1,, PR, PB and Pτ are computed by functions dependent upon the index of the reference centre base for the point. The functions differ from point to point in parameters only. The definition of the transformation function will be explained with reference to Figure 43a.
Consider a circle in an XZ plane (that is, the same plane as the added polygon F) with a centre A and radius r.
Points on the circle can then be computed with a formula:
angle αs = start angle angle α = amount of rotation in one step P[I] = A + r{Cos[ tto + (I - l)α], 0, Sin[αs + (I - 1 ) α ]} I = 1 to number of centre bases
The parameters r, αs and α are different for each point PL, PR, PB and Pτ. The centre of circle A is computed from each point by adding a displacement vector d which is also different for each point.
The formulae selected at step S640 for computing the translation of each point are as follows:
Transformed point PLτi = PL[I] + dL + rL{Cos[αSL + (I - l)αL],
0, Sin[αSL + (I - 1) αL] } Transformed point PRTi = PR[I] + dR + rR{Cos[αSR + (I - l)αR],
0, Sin |αGK + (I - 1) αR] }
Transformed point P13TJ = Pn[I] + dB + rB{Cos[αSB + (I - l)αB],
0, Sin[αSB + (I - 1) αB] }
Transformed point PTTl = Pτ [ I ] + dτ + rτ{Cos[α3T + (I - l)ατ], 0, Sin[αR., + (] - 1) ατ] }
The parameters selected at step S635 are:
Figure imgf000098_0001
Another transformation is carried out on polygon F and points PllT, PRT, PBT and Pττ, based on the value of the attribute "CURVATURE" (previously calculated at step S800 in the second round of the processing) of ring base BRj , which is a reference base for centre base Cn, which in turn holds these content objects. More particularly, if the CURVATURE value is "-", the transformation TM is carried out :
BR] = ring base for which value of attribute "CURVATURE" is "-"
Cj = centre base BRj -> SUBBASES {centrebase} TM = MirrorTransformationThroughPlane [PlaneXZ [Cj]]
mirrored polygon Fj = TM • F mirrored point PLT] = TM P]jT mirrored point PRT , - TM PRT mirrored point PBTj = TM Pm. mirrored point PTTD = TM Pττ
As a result of applying the addition transformation in this way, the polygon F and points PLT, PRT, PBT and Pττ have a final form which is different depending upon whether their reference ring base BUl has a "+" ve CURVATURE or a "-" ve CURVATURE. In other words, the final form of the polygons and points (content objects) is dependent upon the equivalence class of their reference base previously determined at step S800 in the second round of processing.
Figure 43b shows the transformed and mirrored content objects in base Cj after transform controller 100 has applied the transformations above at step S650. Step S700
The next (and final) step in this round of the processing, and consequently in this example, is step S700. In this step, content generator 90 generates further content objects for the model.
In the present example, the content object to be added in this step is a solid block (mesh) inserted into each centre base. Six planes as auxiliary objects are used for its creation. This solid block is at the end trimmed with some of the planes created at step 700 during the second round of the processing (that is, the round to generate the ring bases). Each new content object is created in each centre base according to the same procedure.
The procedure for creating each new content object starts with the creation of planes, followed by the creation of a solid block, which is then trimmed with planes created during the processing of the second round. Although in reality steps S705 to S799 in Figure 11 are executed 8 times in sequence (6 planes, and two meshes), the description of these steps will be made for all of the created content objects together. At the end of the creation of each content object (step S799), the model is in a consistent state, therefore its data can be exported to other systems for various purposes.
At step S705, content creator 94 selects the type of each new object. In this example, the object types for the new objects are PLANE and MESH. At steps S715, S720 and S730, content creator 94 selects the opera! ion (s) for the creation of each new content object, the bases in which the content object is to be generated, and parameters for the operation (s) respectively, with the parameters then being recorded at step S740.
In this example, the following functions are selected:
Object name: Description of creation function:
All planes Oriented plane through three points
BIL Mesh from oriented planes
BIL cut Cut mesh with oriented plane
The functions "Oriented plane through three points" and "Mesh from oriented planes" were described previously wα Lh reference to step S700 m the second round of processing. The function "Cut mesh WJ th oriented plane" is a function that performs a difference operation between a solid object represented as a mesh and a solid halfspace defined with a plane .
For the creation of the auxiliary planes xn centre base C1, the following objects are needed.
polygon F
point PLTl = transformed point PL from step S650 point PRTl = transformed point PR from step S650 point PBTI = transformed point PB from step S650 point PTT;L = transformed point Pτ from step S650 It should be noted that the positions of the points P],Tl, PRTJ , PBTL and PTτ± were calculated at step S650 using a function dependent upon the index of the reference base in which the points lie. Accordingly, by using these points to generate content objects in this step, the content objects themselves are also dependent upon the reference base indexes.
These objects are shown in Figure 44a. Figure 44b shows the definition of the auxiliary planes L, R, D, T, P and B. All of them are defined by three points. The points F1 represent the vertices of the polygon F.
Plane L is constructed from three points PLTI? FI and F4. The plane's normal vector lies in the opposite halfspace to the point F2.
Plane R is constructed from three points PRTj , F2 and F3. The p]ane's normal vector lies in the opposite halfspace to the point F] .
Plane D is constructed from three points PbTl , F1 and F2. The plane's normal vector lies in the opposite halfspace to the point Fj.
Plane T is constructed from three points PTτi? F3 and F4. The plane' s normal vector lies in the opposite halfspace to the point Fi. Plane B is constructed from three points F1, F? and F3. The plane's normal vector lies in the opposite halfspace to the point PL1J .
Plane P is constructed from three points PLT±, PBΓI and Pm,. The plane' s normal vector lies in the opposite halfspace to the point Fi.
Figure 44c shows different planes R versus R and D versus D' constructed from different positions of points PRTi v. PRTD and PBTI V. PBτ3 • Points PRT-, and PBT] came from different centre bases C-, and represent the change imposed by the transformation functions from step 600 when the index of centre base changes from i to j .
Figure 44d shows the final solid block S1, belonging to centre base C . SOLJ d block S1 as a mesh constructed from the intersection of the six planes L, R, D, T, P and B.
The last operation in this example trims the soljd block Si with planes from ring base BPj , which is a reference base for centre base Cj, which in turn holds solid block Si.
Base BRl = reference ring base for centre base C1 Base C, = centre base BRl -> SUBBASES { centrebase }
Plane PL = plane BRl → CONTENT{Left plane} Plane PR = plane BRl -> CONTENT {Right plane} Plane P0 = plane BRl → CONTENT {Down plane} Plane Pτ = plane BRl → CONTENT {Top plane}
Solid block W = mesh BRl -» CONTENT {White block} The resulting solid block Sc is constructed from solid S± by subtracting inverted planes PL, PR, Pn, PT from it. This step assures that the final solid block Sc fits into the space bound by the solid block W, which was constructed at step S700 in the second round of processing. This assurance comes from the fact that the same planes are used in the construction of solid blocks W and S0.
After the creation of each object at step S745, its validity is checked at step S755. In this step of the present example, the following validation checks are performed:
Plane: check for points not to be collinear (normal vector must be non-zero)
Mesh: used implicitly by geometric modelling kernel that performs the creation function
At step S765, graph manager 80 adds new vertices to the model graph corresponding to the new objects created at step S745. In the present example, for each centre base, 8 new vertices are inserted into the model graph. Figure 45a shows part of the model graph with the new vertices for the content objects in two consecutive centre bases.
At step S770, graph manager 80 assigns the following automatic attributes to each vertex representing a new content object:
Figure imgf000105_0001
At steps S775 and S780, graph manager 80 assigns an additional attribute for the objects BIL and "BIL cut" called "Material". In the present example, this attribute has the same value for all objects: GLASS
Figure 45b shows the same part of the model graph as Figure 45a with the attributes added for the content objects.
Each new content object has a reference centre base. At step S790, graph manager 80 adds the automatic connection called "CONTENT" to the model graph to show the relationship between each centre base and its new content object. Part of the resulting model graph is shown in Figure 45c.
Step S800
In the present example, step S800 is not necessary in the current round of processing. This is because the content objects created at step S700 are the last objects constructed in the present example, and therefore no additional attributes or connections to bases or objects ±n the model are needed.
Step S900
The generation of the centre bases is the last generation of bases in this example.
Figure 46 shows the resulting model after completion of all of the steps in the three rounds of processing.
The ring bases, centre bases and solid objects named BIL are shown. The resulting model is clearly divided into two distinct regions A and B, which correspond to the partition of the ring bases into two equivalence classes based upon the attribute "CURVATURE" defined at step S800 in the second round of processing (refer to Figure 35a) . Region A is based on the ring bases with positive curvature and region B on the ring bases with negative curvature.
Objects m regj on A have their tips pointing outwards, while objects m region B have their tips pointing inward. On objects from region A, the relative position of their tips against the backplane of the object (made from polygon F; refer to the description of steps SbOO and S700 m this round of processing) follow a distinct sinusoidal pattern. This effect is the result of the parameters used to position the points PLT, PRT, PBτ and Pττ (described at step S600 in the third round of processing and shown in Figures 43a and 43b) . The influence of the backbone bases can also be seen on the right edge of region B. If the backbone bases were vertically aligned on top of each other, the edge of the region B would be linear (albeit not vertical, because the radius of the ring bases also changes from ring to ring; increasing from 12 m on the top (first) ring to 15 m on the bottom (last) ring).
Amendment of Functions and Parameter Values
The present embodiment stores all of the mathematical functions, mathematical procedures and parameter values used to produce the bases and content objects m the model.
Furthermore, the embodiment allows the user to access the stored functions, procedures and parameter values, and to amend them to change the generated model.
In response to the user amending a function, procedure and/or parameter value, the system automatically regenerates the bases and/or content objects m accordance with the amendments and any unamended functions, procedures and parameter values. Λs a result, the effect of changes can be quickly seen by the user.
Some examples to illustrate amendments will now be described .
In a first example, the value of a parameter m the equations used to generate the backbone bases at step S300 in the first round of the processing is changed. Changing parameters that govern the position and/or orientation of the backbone bases can have a major impact on the final model, since all of the bases created m later steps are dependent upon the backbone bases.
In this example the value of parameter F (defined with reference to step S300 in the description of the first round of processing) is changed from 0.75 to 3.0.
The result of this change is shown in Figure 47.
Referring to Figure 47, the centre bases and solid objects named BIL are shown. The main difference in the model produced by the parameter value change in this example is in the arrangement of regions A and B, which correspond to the equivalence classes based upon the attribute "CURVATURE". Rows 3, 5 and 7 from the top down are clearly different from the model shown xn Figure 46, and after thorough examination all of the other rows are also different, just not so obviously. For example, m Figure 47, the top row of shown solid objects is moved slightJy to the left in comparison to the top row m Figure 46. The objects labelled BIL1, BTL11 and BIL111 are used for comparison with furtner examples (described below) .
By way of a second example, the values of four extra parameters are changed in addition to the value of parameter F already changed in example 1 above.
At step S600 in round 3 of the processing, the points PL, PR/ PB, PT inserted into the centre bases were transformed into points PLT, PRT, PBτ/ PTT according to a set of parameters (for detailed description of the transformation see the descrxptron of step S600 m the third round of processing) . In this second example, Lhe value of the parameters αL, cxP, αB and ατ used to transform the points is changed from 45° to 120° (all of the parameters have the same value) . The result of changing the parameters F, αL, αR, αB and ατ in this way is shown in Figure 48.
Referring to Figure 48, the arrangement of regions A and B is the same as in Figure 47. The difference is in the directions in which the tips of the solid objects named BIL point. More particularly, the objects labelled BIL1, BIL11 and BIL111 in Figure 48 have their tips pointing in the opposite direction to the objects with the same labels in Figure 47. These objects are respectively created in the centre bases with the same indices in the model from exampJ e 1 and m the model from example 2 (object BILx is created in a centre base with index I in both models; the analogue statement is true for objects BILJJ and BIL XI) .
In a third example, the values of 12 extra parameters are changed in addition to the value of parameter F already changed in example 1 above.
At step S600 in the third round of processing, the points PL? PR, PBA PT inserted into the centre bases were transformed into points PLT, PRT, PBTΛ PTT according to a set of parameters. In this third example, the values for these parameters are changed to:
Figure imgf000110_0001
The result of changing the values for the parameters above is shown in Figure 49.
Referring to Figure 49, the arrangement of regions A and B is the same as in Figure 47. The difference is in the size and directions in which the tips of the solid objects named BIL point. In addition, Figure 49 shows that the objects labelled BILi, BILn, BILm, BILiv, and BILV have tips of different shapes and sizes.
A fourth example will now be described, in which a function used to generate some of the bases is changed. More particularly, an example will be described in which the function R[I] used at step S300 in the second round of processing to- calculate the radii of the circles upon which the ring bases lie is changed.
Instead of linear enlargement of radii from floor to floor, in this example, a more versatile function Sine is used to compute the radii of the ring bases. The radius of I-th ring base R[I] is adjusted by the value of the Sine function at each floor. The radii thus oscillate around the fixed radius Rfixed-
The function for the radii is changed to: 10
R[I] = Rf1XOd + Sin[2*Pi*arg* (Iref [1] - 1 ) /Numbe rOfBackboneBases]
Values of parameters: NumberOfBackboneBases : 8
Rflxed: 12.00 m arg: 1.25
The parameter "NumberOfBackboneBases" was defined at step SIlO in the first round of processing (generation of backbone bases) . The parameter "arg" defines the number of full sine waves produced from the top to bottom floors. In this example, one and a quarter waves are applied from top to bottom.
When the function R[I] is changed by the user, the system automatically reapplies the changed function and all previously defined functions and parameters to regenerate the model. In this way, the user can change some of the bases (the ring bases in the present example) and the system automatically regenerates all bases and content dependent thereon.
The result of changing the function lor calculating the radii of the ring bases is shown in Figure 50.
As in Figure 46, the ring bases, centre bases and solid objects named BIL are shown. The main difference is in the arrangement of regions A and B, which correspond to the equivalence classes based upon the attribute "CURVATURE". The Sine function introduces a bulge in the upper part of the model and a valley in the lower part, and therefore the distribution of regions A and B is clearly different from Figure 46. The influence of a quarter of the next sine wave can also be seen in the bottom right part of the figure. The reason why not all of the bottom line belongs to region B is the influence of the positions of the backbone bases.
Variation of Content Objects with Reference Base
In the example described previously, content objects were inserted into the bases such that the content object was the same for every base at the time of insertion. However, this need not be the case, and instead processing can be performed by the system to insert content objects so that a property of each content object (such as its position, orientation and/or shape) varies in accordance with the base into which the content object is inserted.
For example, at step S500 in the third round of processing, 5 content objects were inserted into each centre base. More particularly, four points P11, PR, PB, P- and a polygon F were brought into the system from an outside source and a copy of each object was assigned to each centre base. As a result, polygon F was identical for each centre base.
However, the processing at step S500 may be performed instead so that a property of polygon F changes in dependence upon the centre base into which it is assigned.
An example will now be described in which processing is performed so that the shape of each polygon F changes in dependence upon the reference centre base of the polygon. Figures 51a and 51b show the starting shape of the polygon Fs and the ending shape of the polygon F1., respectively. Also shown are points PL, PR, PB, PT, which are the same for each centre base. All objects are shown in the same position relative to the centre base' s origin as their position to the global coordinate system G.
The coordinates of the vertices of the polygon are:
F3 = {{-2.1, 0.0, -2.1}, {2.1, 0.0, -2.1}, {2.1, 0.0, 2.1}, {-2.1, 0.0, 2.1}}
FE = {{-1.788, 0, -1.788}, {-1.788, 0, -1.788}, {2.442, 0, 0.654}, {-0.654, 0, 2.442}}
The coordinates of the points PL, PR, PB, PT are the same as those used at step S500 of the third round of processing.
Content importer 92 inserts starting polygon F3 into the first centre base (i.e., into centre base with index 1 that belongs to the first ring base) and inserts ending polygon FE into the last centre base. All centre bases in between receive a differently shaped polygon Fi. These polygons are computed by content generator 90 by the use of a mapping function M:
I - i-th element - index of centre base V3 - starting vertex VE - ending vertex N - number of elements
M[I, V3, VE, N] = V3 + I (VE - V3) / (N - I) It will be seen from the above that the mapping function M is a function of the variable J, and that I is equal to both the number of the ith polygon and also the index of the base into which the polygon is to be placed (as one polygon is placed in each base so there is a 1:1 relationship) . As a result, each polygon is generated in accordance with the value of I of its containing base.
The vertices Vn, Vi2, V13, Vi4 of the polygon Fi are computed as follows:
Vsi, V32, V33, V34 - vertices of starting polygon F5 VEI/ VE2, VE3, VE4 - vertices of ending polygon FE
NcB - total number of centre bases (see the description of step SlOO for the 3rd round of processing)
V11 = M[i, VSj, VED, NCBI, {j = 1, 2, 3, 4}
The mapping function M can be used for computation of intermediate objects for any pair of objects that can be represented solely by the same number of vertices.
Figure 52 shows polygons F1 and points P1,, PR, P15, PT distributed to the centre bases Ci.
From this point on, the processing procedure for the generation of the model is the same as the procedure described previously. The only change is in the shape of polygon Fi in each centre base Ci. The resulting model from this change is shown in Figure 53, which corresponds to the view of the model from Figure 46. The di fference between the models shown in Figure 53 and Figure 46 is clear. Even on the top row, where the differences between the acbual polygons F used for the creation of the solid objects BIL are small, the solid objects have already started to rotate. This rotation is brought about by the rotation of the top edge of polygon F.
The changing of the polygon F from rectangular to triangular shape also influences the slant of the side planes that govern the creation of solid objects (see the description of step S700 in the third round of processing) . This change can be so big that the small front plane on the tip completely disappears and becomes an edge, like on objects BILQ and BTLn-
On the other hand, the arrangement of regions A and B, which correspond to the equivalence classes based upon the attribute CURVATURE, is the same as in the model in Figure 46.
Generating Content Objects so that they Fit
The present embodiment provides facilities for a designer to use to ensure that content objects fit together without gaps and without encroaching upon each other (that is, two content objects do not occupy the same space) .
More particularly, content creator 94 provides means for a user to define functions for the creation of a content object such that, as part of the creation, the right side of the content in a base and the left side of the content in the next base (or vice versa) are cut with the same plane .
As a result, encroachment of content objects can be eliminated because the cutting plane is shared between the content objects of neighbouring bases and therefore no solid object cut with this plane can encroach in the space intended for the other base and its content objects.
These features of the content creator 94 will now be illustrated with reference to the generation of a model using the same procedure as described previously, but with different values of some parameters. (Actually, the procedure for creating cut solid objects is already described in the example of step S700 in the third round of processing, where solid objects BIL are cut with planes created at step S700 in the second round of processing. The resulting trimmed solid object is named "BlL cut".)
In the section "Variation of Content Objects with Reference Base" above, the mapping function M is used to change the shape of polygon F. The same mapping function is used in rhis example, but the difference is in the start and end polygons F3 and FE respectively. These polygons are shown in Figure 54a and have vertex coordinates.
Fs = {{-4.0, 0.0, -4.0}, {4.0, 0.0, -4.0}, {4.0, 0.0, 4.0} , {-4.0, 0.0, 4.0} } FE = {{ 0.0, 0.0, -6.0}, {6.0, 0.0, 0.0}, {0.0, 0.0, 6.0}, {-6.0, 0.0, 0.0}} The parameters that are also adjusted for this example govern the creation of the backbone bases (see step S300 in the first round of processing) and the transformation of points PL, PR, Ph, Pτ into points PLT, PR1 , PBτ, PTT (see step S600 in the third round of processing) .
The new values for these parameters are:
Parameter F: 3.0.
Point D r αs α
PL {-o .35 , "2, 0} 0.5 0° 22.5°
PR { o .35 , -2, 0} 0.5 0° 45°
PB {0, -2 , -o. 35} 0.5 90° 90°
PT {0, _2 , o. 35} 0.5 90° 180°
Figure 54b shows two adjacent solid objects. On the left are BILn3 and BILU4 that encroach on each other, and on the right are the same objects trimmed with planes, namely "BIL cutiis" and "BIL cutiJ4".
The resulting model from executing the generating procedure with the parameters above is shown in Figure 54c. The trimmed objects "BIL cutu>" and "BIL CUt1I4" are shown in their position in the model.
Sensor Functions to Detect a Property of the Model Using the Model Graph
At step S800 in the second round of processing described previously, a sensor function was executed which divided I 17
bases into equivalence classes m dependence upon Lhe value of an attribute of each base (that is, the attribute "CURVATURE") .
However, sensor function executer 110 is also operable Lo generate and execute a sensor function to divide bases into equivalence classes in dependence upon connections to/from the vertex representing that base in the model graph.
An example of such a sensor function will be described below .
In this example, graph manager 80 adds two additional connections to the model generated in rounds 1-3 of the processing described previously, and sensor function executer 110 defines a sensor function which divides the ring bases into now equivalence classes.
These operations are performed at steps S400 and S800 in the second round of processing.
More particularly, at step S450 m the second round of processing, graph manager 80 defines two additional i ntragenerati on connections, namely LINE-I and LINE-2.
Connections LINE-] are produced by the following procedure:
A finite series of indices S is created by applying the following rules:
50 = starting index
51 = S1-I + 19
S1 <= total number of ring bases Series S is completely defined by its starting index. When starting indices S0 = 1, 4, 7, 10, 13, and 16 are used, six series o£ indices are created:
Ll-] = {1, 20, 39, 58, 77, 96, 115, 134}
Ll-4 = {4, 23, 42, 61, 80, 99, 118, 137}
Ll-7 = {7, 26, 45, 64, 83, 102, 121, 140}
Ll-IO = {10, 29, 48, 67, 86, 105, 124, 143}
Ll-13 = {13, 32, 51, 70, 89, 108, 127} Ll-16 = {16, 35, 54, 73, 92, 111, 130}
Connection LINE-I is applied to each pair of consecutive indices from each series Ll-I to Ll-16 (that is, from series Ll-I, pairs (1, 20), (20, 39), (39, 58), (58, 77), (77, 96), (96, 115) and (115, 134) are connected).
The connections LINE-I in a model graph are shown in Figure 55.
Connections from the second additional connection LINE-2 are produced by the following procedure:
A finite series of indices S is created by applying the following rules:
50 = starting index
51 = Si_i + Displacement [i ]
Sx <= total number of ring bases
Displacement [i] is a random series of whole numbers between 15 and 21. For this example following series is used: Displacement [i] = { 19, 19, 21, 17, 20, 21, 15, 18, 21, 18, 19, 17, 17, ... }
When starting indices sn = 1, 5, 9 and 13 are used, four series of indices are created:
L2-1 = {1, 20, 39, 58, 77, 96, 115, 134}
L2-5 = {4, 23, 42, 61, 80, 99, 118, 137}
L2-9 = {7, 26, 45, 64, 83, 102, 121, 140} L2-13 = {13, 32, 51, 70, 89, 108, 127}
Connection LINE-2 is then applied to each pair of consecutive indices from each series L2-1 to L2-13.
The connections LINE-2 in a model graph are shown in Figure 56.
At step S800 in the second round of processing, ring bases are classified into 5 equivalence classes based upon the results of a sensor function SG, which checks what connections are going out of each node in a model graph.
These 5 equivalence classes are:
Equivalence Description class
EQLN-O ring bases which lack both of connections
LINE-I and LINE-2
EQLN-I ring bases with connection LINE-I only
EQLN-2 ring bases with connection LINE-2 only
EQLN-3 ring bases with connections LINE-I and LINE- 2, which connects to different end points
EQLN-4 ring bases with connections LINE-I and LINE- 2, which connects to the same end point The above classification is achieved with a sensor function SG defined and executed by sensor function executer 110:
0, (SLl[I] = 0) and (SL2[I] = 0)
1, (SLl[I] > 0) and (SL2[I] = 0)
2, (SLl[I] = 0) and (SL2[I] > 0)
SG[I' = < 3, (SLl[I] > 0) and (SL2[I] > 0) and (SLl[I] ≠ SL2[I] )
4, (SLl[I] > 0) and (SL2[I] > 0) and (SLl[I] = SL2[I])
Index I = index of i-th ring base
Function SLl[I] returns the index o C the end point of connection LINE-I from the ring base with index 1. If there is no connection LINE-I from this base, function SLl[I] returns 0.
Function SL2[I] returns the index of the end point of connection LINE-2 from the ring base with index I. If there is no connection LINE-2 from this base, function SL2[I] returns 0.
Each value of the sensor function SG[I] defines one equivalence class, which is represented with an additional attribute "LINE NODE" on each ring base. Depending on the value of function SG[I], the following values are assigned to the attribute "LINE NODE": Value of function 3 4 SG[I] : value of attribute EQLN-O EQLN-I EQLN-2 EQLN- 3 EQLN-4 "LINE NODE"
Figure 57 shows the graphical distribution of equivalence classes over a model. On the figure, white blocks are shaded with a different pattern according to the value of the attribute LINE NODE. Also connections LINE-I and LINE- 2 are shown in the form of lines.
Identifying Bases with Defined Relationships, and Adding Different Content Objects
In this part, another use for equivalence classes is described. The difference from the main example is only at step S500 in the third round of processing, where content objects are inserted in the centre bases.
At this step, content object polygon F is inserted in each of the centre bases (Figures 41a and 41b) . In the example below, instead of the same po.l ygon F, different polygons F1 and F2 are inserted in the centre bases C1 (Figure 58a) . Polygon F; is inserted in the centre bases where the value of the attribute "CURVATURE" of its parent ring base R1 is "-" and polygon F2 in the centre bases where the value of the attribute "CURVATURE" of its parent ring base Ri is
The coordinates of the vertices of the polygons F1 and F2 relative to centre base in this example are: F1 - {{-2.1, 0.0, -2.1}, {2.1, 0.0, -2.1},
{2.1, 0.0, 2.1}, {-2.1, 0.0, 2.1}} F2 = {{0.0, 0.0, -3.156}, {0.0, 0.0, -3.156},
{2.733, 0.0, 1.578}, {-2.733, 0.0, 1.578}}
Subsequent processing is then carried on as in the main example. The result of this change is shown in Figure 58b.
Referring to Figure 58b, the ring bases, centre bases and solid objects named BILCoτ are shown. The main difference in the model produced by the use of different polygons Fi in this example is in the shape of the solid objects BILCTτ in region A in comparison to the objects in the same region A shown in Figure 46. Objects in region B are the same in both Figures 58b and 46 since the polygon F1 from this example used for construction of objects BILCUT is the same as polygon F from the main example.
Identifying of Bases and _Conj^en_t_ _jDkτj_ec_ts_ wi th _Dejfi_n_ed
Relationships, Identifying Content Objects with Defined Relationships, and Adding Further Content Objects
At step S800 .in the second round of processing described previously, a sensor function was executed which divided bases into equivalence classes in dependence upon the value of an attribute of each base (that is, the attribute "CURVATURE") .
An example will now be described of two additional sensor functions executed at step S800 in the third round of processing. First, sensor function SA [ i ] will compute a directed angle between the X-axis direction of backbone base B:_ni and the normal vector of the plane in which polygon F1 lies. Second, sensor function LA[J] will compute a directed angle between the normal vector of the plane PL1 from ring base R1 and the normal vector of the plane in which polygon Fi lies. Based upon different criteria for each sensor, two attributes are assigned to centre bases C1: "SIDE-ANGLE" depending on the values of sensor function SA and "LOCAL-ANGLE" depending on the values of sensor function LA. The result will be a generation of centre bases partitioned into two sets of equivalence classes, one set of equivalence classes per attribute.
Sensor function SA[i] :
R1 - i-th rJng base
Cj -- i-th centre base, contained in ring base R^
F1 - Polygon F in centre base C Biref - Reference backbone base for i-th ring base R1 (index Iier is computed by formula from step S215 on second round of processing)
Xi,ef ~ X-axis direction of reference backbone base Blief
NFl - Normal vector of plane in which lies polygon F1
SA[i] = AngleBetween [ x[ Iref[i] J, NFl ]
Figure 59a shows objects involved in the computation of sensor function SA for bases C1 and C1+i8. The attribute "SIDE-ANGLE" for each centre base C1 is defined with the following function:
I" EQSA - I , 0° < SΛ[/] < 120°
S I DE-ANGLE [ I ] = J EQSA - 2, 120° < SA [Z] < 240°
[EQSA - 3, 240° < SA[/j < 360°
Since the angle is always between 0° and 360°, all possible values for the function SA [i] are covered, thus splitting the generation of centre bases Ci into three distinct groups (equivalence classes), each group identified by the different values of the attribute "SIDE-ANGLE": EQSA-I, EQSA-2 or EQSA-3. Figure 61 shows the distribution of equivalence classes EQSA-I, EQSA-2 and EQSA-3 across the model (the view of the model is from the same position as that in Figure 35a) .
Different partitioning of the generation of centre bases can be achieved by using the second sensor function LA.
Sensor function LA[i] :
R1 - i-th ring base
C1 - i-th centre base, contained in ring base R3 Fi - Polygon F in centre base C1 PLi - Left plane in ring base Ri (defined in step S700 on second round of processing)
NFi - Normal vector of plane in which lies polygon F1 NpLi - Normal vector of plane PL1 LA [ i ] = AngleBetween [ NPLl, NFi ]
Figure 59b shows the objects involved in computation of sensor function LA for bases Cα and C1, is.
The attribute "LOCAL-ANGLE" for each centre base C1 is defined with the following function:
[EQLA-I, 0° < SA[Z] < 75° v 283D < SAJz] < 36CP
LOCAL-ANGLE [ i ] = J EQLA- 2, 75° < SA[/] < 105? v 255° < SA[z] < 285=
[EQLA-3, 105= < SA[/] < 283D
Since the angle is always between 0° and 360°, all possible values for the function LA[i] are covered, thus splitting the generation of centre bases C1 into three distinct groups (equivalence classes), each group identified by the different values of the attribute "LOCAL-ANGLE": EQLA-I, EQLA-2 or EQLA-3. Figure 63 shows the distribution of equivalence classes EQLA-I, EQLA-2 and EQLA-3 across the model (the view of the modeJ is from the same position as that in Figure 35a) .
By partitioning the centre bases into distinct groups of bases, different content objects can be inserted into each group of bases, as will now be shown.
After assigning attributes "SIDE-ANGLE" and "LOCAL-ANGLE" in step S800, the processing procedure goes back to step S700 to add new content objects to the model. A solid block FB will be created in the centre bases C1 from equivalence class EQSA-I (having value of attribute "SIDE-ANGLE" equal to EQSA-I), solid block FBM will be created in the centre bases C1 from equivalence class EQSA-2, and shelled solid block FBS will be created in the centre bases Ci from equivalence class EQSA-3. The procedures for creating these content objects are described below and shown in Figures 60a, 60b and 60c.
Solid block FB is created from polygon F by an operation "Thicken to solid" executed in the external geometric modelling kernel. This operation thickens polygons on both sides and in the direction of a supplied vector.
Making of solid block FB:
Ci - Reference centre base Ci F - Polygon F in centre base Ci d1N - Thickness of the solid FB on negative side of polygon
F (= 0.15 in) douτ ~ Thickness of the solid FB on positive side of polygon
F (= 0.50 m) FB - Created solid block
The orientation of the polygon F and with it the labelling of one side of the polygon as positive and the other as negative is defined by the order in which the vertices on the polygon are enumerated. In this case, the vertices are enumerated in such a way that the positive side of polygon F points in the direction of the negative Y-axis of the reference centre base Ci. Before thickening to solid, polygon F is scaled by a factor of 0.85 around its centre, which, in this example, corresponds to the origin of the reference centre base Ci. The vector along which the thickening is carried out is the Y-axis of the reference centre base C1. Figure 60a shows the relevant objects for the execution of this operation.
Making of solid block FBM:
Ci - Reference centre base Ci
FBMi - Copy of solid block FBi in new position relative to the centre base Ci
FBMN - Copy of solid block FBN in new position relative to the centre base CN v - Vector v represents path for translating solid blocks FBMi from centre base C1
Solid block FBM1 has the same shape as solid block FBi. The difference is in its position relative to the reference centre base C1. Each solid block FBM1 is created as a solid block FB1 and then transformed with transformation TRF[IJ .
FBM [i] = TRF [i] FB [ i ]
Transformation TRF[Ij comprises translation TF [i] and identity rotation matrix which are calculated relative to each centre base Ci. Translation TF [i] is defined as a move along a vector v given relative to the centre base C1 for the amount FBMDiPT[i].
TF[i] = FBMDIST[i] v = ( ItI1 + (i - 1) (mN - mi) / (N - 1) ) v
mi = 2.5 m mN = -2.5 m v = {2.0, 1.0, 1.0}
N = number of centre bases In other words, solid blocks FBM1 are moved in a straight line defined by vector v from the position occupied by the solid block FBM1 to the position of the solid block FBMN. This situation is shown on Figure 60b.
Although index i runs for all centre bases C1, it should be noted that the translated objects FBMi will be created only in the centre bases Cj that are part of the equivalence class EQSA-2.
Making of solid block FBS:
Ci - Reference centre base C1 FB - Solid block
FBS - shelled solid block SF - front side of solid block FB SB ~ back side of solid block FB s - shell thickness (= 0.15 m)
Solid block FBS is derived from solid block FB by applying a shelling operation on it. Shell is a standard operation for most geometric modelling kernels (sometimes called offset) which takes the surface of the solid and then thickens it by a specified amount in the desired direction - in or out. Parameters for the shell operation can also include a list of faces of the solid which must remain open (actually they are removed before thickening) .
In this example, the solid object FBS is created by applying a shell operation on solid block FB, where front and back faces of the solid FB must remain open. The orientation front/back is defined by the relative position of the faces of the solid FB against reference centre base C,: the face pointing in the direction of the Y-Axis of the centre base C3 is the front face S1., and the opposite face is the back face SD. Shell thickness "s" is applied toward the inside of the solid block FB, meaning that the outer limits of solid blocks FB and FBS are the same. Figure 60c shows the initial solid block FB with front and back face and the final shelled solid block FBS.
In step S700, solid objects FB, FBM and FBS are created in the centre bases Ci corresponding to the equivalence classes EQSA-I, EQSA-2 and EQSA-3 respectively. Steps S705 to S799 are executed three times in a row, for each content object once. Which centre bases are used for a particular content object is determined in step S720.
The solid objects FB must be created in the centre bases belonging to the equivalence class EQSA-I, which is governed by the value of the attribute "SIDE-ANGLE" (the procedure for making the solid objects FB being as described above) .
The so] id objects FBM must be created in the centre bases from the equivalence class EQSA-2 (the procedure for making the solid objects FBM being as described above) .
It should be noted that another way of producing the solid objects FBM exists. Firstly, the solid objects FB are created using the same procedure as for the solid objects FB for the equivalence class EQSA-I (basically, they are created in all of the bases from equivalence classes EQSA-I and EQSA-2) . Secondly, their names are changed to FBM in step S800 and, finally, they are transformed with transformation TRF (described above) in the step S600.
The solid object FBS is then created in the centre bases from equivalence class EQSA-3 (the procedure for making solid objects FBS being as described above) .
The distribution of the newly added content objects FB, FBM and FBS to the model is shown in Figure 62 (ring bases and centre bases are also shown in this figure) .
If the criteria for selecting the bases for creation of the new content objects FB, FBM and FBS is based upon equivalence classes EQLA-I, EQLA-2 and EQLA-3, such that the content objects FB are created in the centre bases from equivalence class EQLA-I, the content objects FBM in the centre bases from equivalence class EQLA-2, and the content objects FBS in the centre bases from equivalence class EQLA-3, a different distribution of content objects FB, FBM and FBS is achieved. This distribution is shown on Figure 64 (ring bases and centre bases are also shown in this figure) .
Modifications and Variations
Many modifications and variations can be made to the embodiment described above.
For example, at step S300 on the first round of processing, base generator 70 calculated the position and orientation of each backbone base in accordance with mathematical functions. This enables a large number of backbone bases to be generated without the user having to position and orientate each backbone base individually. However, base generator 70 is operable to generate the backbone bases in accordance with positions and orientations input by a user (for example, if only a small number of backbone bases are required) .
In the embodiment described above, the generations of bases are generated sequentially - that is, all of the first generation (backbone) bases are generated, then all of the second generation (ring bases) are generated, and then all of the third generation (centre) bases are generated.
However, base generator 70 is operable to generate the bases in different ways. For example, base generator 70 is operable to generate one first generation base and all of its second generation bases, followed by a next first generation base and all of its second generation bases, and so on up to the final first generation base and all of its second generation bases. In addition, base generator 70 is operable to generate bases in other orders.
In the embodiment described above, base generator 70 and content generator 90 are operable to generate bases and content objects respectively using a mathematical function or functions having base index values (base identification numbers) as a variable of the function (s). In this way, the bases and content objects change position, orientation and/or shape in accordance with the base index value of the base in which they are located. In the embodiment described above, the base index values used as the variables in the function are the base index values stored in the model graph, namely the base index values that were assigned when the bases were created. However, instead, temporary base index values (base identification numbers) can be used as the variables in the mathematical function (s) . For example, when reference bases are selected to hold the new bases or content objects, each selected reference base can be assigned a temporary base index value which is independent of its actual base index value. For example, if twenty four bases are selected as reference bases, then temporary base index values 1 to 24 can be assigned to the selected reference bases, irrespective of their actual base index values stored in the model graph (which could be, for example, 25 to 48) . The temporary base index values would then be used as the variables in the mathematical function (s) to generate the new bases and/or content objects, with the same effects as those described in the embodiment above.
In the embodiment described above, graph manager 80 generates and maintains a graph comprising a directed and labelled multigraph. However, graph manager 80 may generate and maintain other types of graph instead, such as a directed graph without labels, with the labels being stored Jn separate notes connected to the object nodes (that is bases and content objects) .
In the embodiment described above, three-dimensional coordinate systems and three-dimensional mathematics are used to generate the design for a three-dimensional object. However, coordinate systems and/or mathematics of dimensions greater than three could be used to generate a design for a three-dimensional object. In the embodiment described above, the bases within each generation have different respective positions and different respective orientations. However, some or all of the bases within a generation may have different respective positions but the same orientation, or the same position with different respective orientations.
In the embodiment described above, content creator 94 employs geometric modelling kernels that are pre-stored m apparatus 2 in order to create content objects. However, in addition or instead, content creator 94 may be arranged to download modelling kernels from a separate apparatus, at the time when the modelling kernels are required. Furthermore, content creator 94 may be arranged to export all of the necessary data for content object creation (instructions for operations and data for parameters; either to a separate software application running on apparatus 2 or to a separate processing apparatus, w±Lh the results (the created content object) then being imported back. Similarly, sensor function executer 110 may be arranged to export data to a separate application or apparatus for the execution of a sensor function, and to import the results. It will therefore De understood that an embodiment may comprise multiple processing apparatus (which may operate in series or m parallel), and that the term "apparatus" used in the claims is not restricted to a single apparatus.
The nature of the bases and content objects described above are specific to the example described, whereas base generator 70 and content generator 90 are operable to generate a wide variety of bases and content objects. For example, in the example described above, one backbone base is generated for each floor of the building - in the centre of the floor with ring bases around it. However, in the case of a square or rectangular building, base generator 70 is operable to generate a backbone base at each corner of each floor. Of course, other bases and content objects can be generated depending upon the application and design.

Claims

1. A computer-aided design apparatus (2) for the design of three-dimensional objects to be fabricated, the apparatus comprising: base generating means (70) for generating a plurality of bases in a reference coordinate system, each base comprising a local coordinate system; and means (70, 90) for generating a respective further feature for the design in the local coordinate system of each base in accordance with at least one mathematical function having base identification numbers representative of the respective bases as a variable of the function, such that each further feature has at least one of a position and orientation relative to the local coordinate system of the base in which it is located which depends upon the value of the base identification number thereof and such that at least one of the positions and orientations of the further features relative to their local coordinate systems changes in accordance with the values of the base identification numbers.
2. Apparatus according to Claim 1, wherein the base identification numbers representative of the plurality of bases correspond to the order of creation of the bases.
3. Apparatus according to Claim 1 or Claim 2, wherein: each respective further feature has a unique feature identification number; and the means for generating the further features (70, 90) is operable to generate the further features using at least one mathematical function havj ng the base identification numbers and also the feature identification numbers as variables of the function (s) so that each further feature has at least one of a position and orientation relative to S the local coordinate system of the base m which it is located which depends upon both the value of the base identification number thereof and the value of the feature identification number of the feature. 0
4. Apparatus according to Claim 3, wherein the means for generating the further features (70, 90) is operable to generate a plurality of respective further features in the local coordinate system of each base in accordance with the at least one mathematical function having the base5 identification numbers and also the feature identification numbers as variables of the function (s) so that each further feature has at least one of a position and orientation relative to the local coordinate system of the base m which it is located which depends upon both the0 value of the base identification number thereof and the value of the feature identification number of the feature.
5. Apparatus according to any preceding claim, wherein the means tor generating the further features (70, 90) is5 operable to generate a plurality of groups of further features m accordance with the at least one mathematical function, each respective group of further features being located in the local coordinate system of a different base and each further feature having a unique feature0 identification number, and wherein the at least one mathematical function has the base identification numbers and also the feature identification numbers as variables of the function (s) such that each group of further features has at least one of a position and orientation relative to the local coordinate system of the base in which it is located which depends upon the value of the base identification number thereof and each further feature has at least one of a position and orientation within the group to which it belongs which depends upon the feature identification number of the feature.
6. Apparatus according to any of Claims 3 to 5, wherein the means for generating the further features (70, 90) is operable to generate the further features in accordance with a first mathematical function having the base identification numbers as a variable thereof and a second mathematical function having the feature identification numbers as a variable thereof.
7. Apparatus according to any preceding claim, further comprising means (100) for transforming at least some of the further features in accordance with a mathematical transformation dependent upon the base identification numbers such that the further features are transformed differently in dependence upon the values of the base identification numbers of their corresponding bases.
8. Apparatus according to any preceding claim, wherein the base generating means (70) is operable to generate each of the plurality of bases before the means for generating the further features (70, 90) generates any of the further features.
9. Apparatus according to any preceding claim, wherein the means for generating the further features (70, 90) is operable to generate further features comprising bases, each base comprising a local coordinate system.
10. Apparatus according to any preceding claim, wherein the means for generating the further features (70, 90) is operable to generate further features comprising content objects .
11. Apparatus according to any preceding claim, further comprising : means (80) for generating attributes for the bases generated by the base generating means (70); and means (110) for identifying bases having attributes satisfying user-defined criteria and dividing the bases into equivalence classes in accordance with the attributes and the user-defined criteria; and wherein the means for generating the further features (70, 90) is operable to generate further features which differ for the bases in each equivalence class.
12. Apparatus according to any preceding claim, further comprising : means (80) for generating data defining connections between the bases and the further features; and means (110) for identifying bases having connections satisfying user-defined criteria and dividing the bases into equivalence classes in accordance with the connections and user-defined criteria; and wherein the means foi generating the further features (70, 90) is operable io generate further features which differ for the bases in each equivalence class.
13. A method of operating a computer-aided design apparatus to design a three-dimensional object to be fabricated, the method comprising: generating a plurality of bases in a reference coordinate system, each base comprising a local coordinate system; and generating a respective further feature for the design in the local coordinate system of each base in accordance with at least one mathematical function having base identification numbers representative of the respective bases as a variable of the function, such that each further feature has at least one of a position and orientation relative to the Local coordinate system of the base m which it is ] ocated which depends upon the value of the base identification number thereof and such that at least one of the positions and orientations of the further features relative to their local coordinate systems changes m accordance with the values of the base identification numbers .
14. A method according to Claim 13, wherein the base identification numbers of the plurality of bases correspond to the order of creation of the bases.
15. A method according to Claim 13 or Claim 14, wherein: each respective further feature has a unique feature identification number; and the further features are generated using at least one mathematical function having the base identification numbers and also the feature identification numbers as variables of the function (s) so that each further feature has at least one of a position and orientation relative to the local coordinate system of the base in which it is located which depends upon both the value of the base identification number thereof and the value of the feature identification number of the feature.
16. A method according to Claim 15, wherein a plurality of respective further features are generated in the local coordinate system of each base in accordance with the at least one mathematical function having the base identification numbers and also the feature identification numbers as variables of the function (s) so that each further feature has at least one of a positron and orientation relative to the J ocal coordinate system of the base in which it is located which depends upon both the value of the base identification number thereof and the value of the feature identification number of the feature.
17. A method according to any of Claims 13 to 16, wherein a plurality of groups of further features are generated in accordance with the at least one mathematical function, each respective group of further features being located in the local coordinate system of a different base and each further feature having a unique feature identification number, and wherein the at least one mathematical function has the base identification numbers and also the feature identification numbers as variables of the function (s) such that each group of further features has at least one of a position and orientation relative to the local cooidmat0 system of the base in which it is located which depends upon the value of the base identification number thereof and each further feature has at least one of a position and orientation within the group to which Jt belongs which depends upon the feature identification number of the feature .
18. A method according to any of Claims 15 to 17, wherein the further features are generated m accordance with a first mathematical function having the base identification numbers as a variable thereof and a second mathematical function having the feature identification numbers as a variable thereof.
19. A method according to any of Claims 13 to 18, further comprising transforming at least some of the further features m accordance witn a mathematical transformation dependent upon the base identification numbers such that the further features are transformed differently ..n dependence upon the values of the base identification numbers or their corresponding bases.
20. A method according to any of Claims 13 to 19, wherein each of the plurality of bases is generated before any or the further features are generated.
21. A method according to any of Claims 13 to 20, wherein the further features comprise bases, each base comprising a local coordinate system.
22. A method according to any of Claims 13 to 20, wherein the further features comprise content objects.
23. A method according to any of Claims 13 to 22, further comprising: generating attributes for the bases; identifying bases having attributes satisfying user- defined criteria; dividing the bases into equivalence classes in accordance with the attributes and the user-defined criteria; and generating further features which differ for the bases in each equivalence class.
24. A method according to any of Claims 13 to 23, further compr Lsi ng : generating data defining connections between the bases and the further features; identifying bases having connections satisfying user- defined criteria; dividing the bases into equivalence classes in accordance with the connections and the user-defined criteria; and generating further features which differ for the bases in each equivalence class.
25. A storage medium storing computer program instructions to program a programmable processing apparatus to become configured as an apparatus as set out in at least one of Claims 1 to 12.
26. A signal carrying computer program instructions to program a programmable processing apparatus to become configured as an apparatus as set out m at least one of Claims 1 to 12.
27. A computer-aided design apparatus (2) for the design of three-dimensional objects to be fabricated, the apparatus comprising: base generating means (70) operable to generate a topology for a design of a three-dimensional object by generating a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases and each base comprises a local coordinate system, and wherein the bases m the second and any subsequent generation are arranged in a plurality of groups such that each respective group is located in the local coordinate system of a different base m a preceding generation; and data generating means (80) operable to generate and store base data defining bases generated by the base generating means (7O) and connection data defining, for each base, at least one adjacent base m the same group, a base m the consecutive preceding group of the same generation, and a base m the consecutive following group of the same generation.
28. Apparatus according to Claim 27, wherein the data generating means (80) is operable to generate and store connection data for each base defining first and second adjacent bases in the same group, each located on a different side of the base.
29. Apparatus according to Claim 27 or Claim 28, wherein the data generating means is arranged to: generate and store the base data as a respective vertex for each base rn a graph; and generate and store the relation data as directed edges between the vertices in the graph.
30. Apparatus according to any of Claims 27 to 29, further comprising : base identifying means (110) operable to process the data generated by the data generating means (80) to identify bases having a defined relationship.
31. Apparatus according to Claim 30, wherein the base identifying means (110) is operable to process the data generated by the data generating means (80) to identify bases having a defjned geometrical relationship.
32. Apparatus according to any of Claims 27 to 31, further comprising content generating means (90) operable to generate a three-dimensional content object using the same mathematical procedure or procedures for a plurality of bases comprising bases within different groups of a gener ation .
33. Apparatus according to Claim 32 when dependent upon Claim 30 or Claim 31, wherein the content generating means (90) is operable to generate the three-dimensional content object for each identified base.
34. Apparatus according to Claim 32 or Claim 33, wherein the content generating means (90) is operable to generate the three-dimensional content object using at least one mathematical procedure which defines the content object m dependence upon at least two bases m different groups, with the bases being defined m the mathematical procedure (s) in accordance with the connection data.
35. A method of operating a computer-aided design apparatus to design a three-dimensional object to be fabricated, the method comprising: generating a topology for a design of a three- dimensional object by generating a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases and each base comprises a local coordinate system, and wherein the bases m the second and any subsequent generation are arranged m a plurality of groups such that each respective group is located m the local cooroma^e system of a αifferent base Ln a preceding generation; and geneiatmg and stoimg base data defining the generateα bases and connection data defining, for eacn base, at least one adjacent base m the same group, a base in the consecutive preceding group of the same generation, and a base in the consecutive following group of the same generation .
36. A method according to CIa^m 35, wherein connection data is generated and stored for each base defining first and second adjacent bases m the same group, each located on a different side of the base.
37. A method according to Claim 35 or Claim 36, wherein: the base data is generated and stored as a respective vertex for each base in a graph; and the relation data is generated and stored as directed edges between the vertices in the graph.
38. A method according to any of Claims 35 to 37, further comprising processing the stored data to identify bases having a defined relationship.
39. A method according to Claim 38, wherein the stored data is processed to identify bases having a defined geometrical relationship.
40. A method according to any of Claims 35 to 39, further comprising generating a three-dimensional content object using the same mathematical procedure or procedures for a plurality of bases comprising bases within different groups of a generation.
41. A method according to Claim 40 when dependent upon Claim 38 or Claim 39, wherein the three-dimensional content object is generated for each identified base.
42. A method according to Claim 40 or Claim 41, wherein the three-dimensional content object is generated using at least one mathematical procedure which defines the content object in dependence upon at least two bases in different groups, with the bases being defined in the mathematical procedure (s) in accordance with the connection data.
43. A storage medium storing computer program instructions to program a programmable processing apparatus to become configured as an apparatus as set out in at least one of Claims 27 to 34.
44. A signal carrying computer program instructions to program a programmable processing apparatus to become configured as an apparatus as set out in at least one of Claims 27 to 34.
45. A computer-aided design apparatus (2) for the design of three-dimensional objects to be fabricated, the apparatus comprising: base generating means (70) operable to generate a topology for a design of a three-dimensional object by generating a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases in the second and any subsequent generation are located m the local coordinate system of a base in a preceding generation; base identifying means (110) operable to identify bases having a defined relationship; and content generating means (90) operable to generate content objects for the identified bases.
46. Apparatus according to Claim 45, wherein the base identifying means (110) is operable to identify bases comprising bases in different local coordinate systems having a defined relationship.
47. Apparatus according to Claim 45 or Claim 46, wherein the base identifying means (110) is operable to identify bases having a defined geometrical relationship.
48. Apparatus according to any of Claims 45 to 47, further comprising : means (80) for generating attributes for the bases generated by the base generating means (70); and wherein the base identifying means (110) is operable to identify bases having a defined attribute relationship.
49. Apparatus according to any of Claims 45 to 48, wherein : the base identifying means (110) is operable to identify bases having a first relationship and bases having a second, different relationship; and the content generating means is operable to generate first content objects for the bases having the first relationship and second, different content objects for the bases having the second relationship.
50. A computer-aided design apparatus (2) for the design of three-dimensional objects to be fabricated, the apparatus comprising: base generating means (70) operable to generate a topology for a design of a three-dimensional object by generating a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases in the second and any subsequent generation are located in the local coordinate system of a base in a preceding generation; content generating means (90) operable to generate content objects in the bases; and identifying means (110) operable to identify features comprising content objects having a defined relationship and/or operable to identify features comprising at least one base and at least one content object having a defined relationship; and wherein the content generating means (90) is operable to generate further content objects for the identified features.
51. Apparatus according to Claim 50, wherein the identifying means (110) is operable to identify features having a defined geometrical relationship.
52. Apparatus according to Claim 50 or Claim 51, further comprising: means (80) for generating attributes for at least one of the bases and the content objects; and wherein the identifying means (110) is operable to identify features having a defined attribute relationship.
53. Apparatus according to any of Claims 50 to 52, wherein : the identifying means (110) is operable to identify features having a first relationship and features having a second, different relatj onship; and the content generating means is operable to generate first further content objects for the features having the first relationship and second, different further content objects for the features having the second relationship.
54. A method of operating a computer-aided design apparatus (2) to design a three-dimensional object to be fabricated, the method comprising: generating a topology for a design of a three- dimensional object by generating a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases in the second and any subsequent generation are located in the local coordinate system of a base in a preceding generation; identifying bases having a defined relationship; and generating content objects for the identified bases.
55. A method according to Claim 54, wherein bases are identified comprising bases in different local coordinate systems having a defined relationship.
56. A method according to Claim 54 or Claim 55, wherein bases having a defined geometrical relationship are identified .
57. A method according to Claim 54 or Claim 55, wherein attributes are generated for the bases, and wherein bases having a defined attribute relationship are identified.
58. A method according to any of Claims 54 to 57, wherein: bases having a first relationship and bases having a second, different relationship are identified; and first content objects are generated for the bases having the first relationship and second, different content objects are generated for the bases having the second relationship p .
59. A method of operating a computer-aided design apparatus (2) to design a three-dimensional object to be fabricated, the method comprising: generating a topology for a design of a three- dimensional object by generating a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases m the second and any subsequent generation are located in the local coordinate system of a base in a preceding generation; generating content objects in the bases; identifying features comprising content objects having a defined relationship and/or identifying features comprising at least one base and at least one content object having a defined relationship; and generating further content objects for the identified features .
60. Λ method according to Claim 59, wherein features having a defined geometrical relationship are identified.
61. A method according to Claim 59, wherein attributes are generated for at least one of the bases and the content objects, and wherein features having a defined attribute relationship are identified.
62. A method according to any of Claims 59 to 61, wherein: features having a first relationship and features having a second, different relationship are identified; and first content objects are generated for the features having the first relationship and second, different content objects are generated for the features having the second relationship .
63. A storage medium storing computer program instructions to program a programmable processing apparatus to become configured as an apparatus as set out in at least one of Claims 45 to 53.
64. A signal carrying computer program instructions to program a programmable processing apparatus to become configured as an apparatus as set out in at least one of Claims 45 to 53.
65. A computer-aided design apparatus (2) for the design of three-dimensional objects to be fabricated, the apparatus comprising: base generating means (70) operable to generate a topology for a design of a three-dimensional object by generating a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases in the second and any subsequent generation are arranged in a plurality of groups such that each respective group is located in the local coordinate system of a different base in a preceding generation; and content generating means (90) operable to add content to the design by using the same mathematical procedure or procedures to generate a three-dimensional content object in eacn of a plurality of bases comprising bases within different groups of a generation.
66. Apparatus according to Claim 65, wherein the base generating means (70) is operable to generate a further generation of bases, wherein each base in the further generation has at least one of a position and orientation dependent upon a content object.
67. Apparatus according to Claim 65 or Claim 66, wherein: the apparatus is arranged to store data defining the mathematical procedure (s) used by the content generating means (90) to generate the content objects; the apparatus further comprises means (20, 70, 90) for changing the stored data defining the mathematical procedure (s) in accordance with user instructions; and the content generating means (90) is operable to regenerate the content objects m accordance with the changed mathematical procedure (s) .
68. Apparatus according to any of Claims 65 to 67, wherein the content generating means (90) is operabJe to generate the content objects using at least one mathematical function having a variable defining respective bases in which the content objects are to be located, such that each content object has at least one of a position and orientation relative to the local coordinate system of the base m which it is located which depends upon the value of the variable and such that at least one of the positions and orientations of the content objects relative to their local coordinate systems changes in accordance with the value of the variable.
69. Apparatus according to Claim 68, wherein: each content object has a unique feature identification number; and the content generating means (90) is operable to generate the content objects using at least one mathematical function having the variable defining the respective bases and also the feature identification number as variables of the function (s) so that each content object has at least one of a position and orientation relative to the local coordinate system of the base in which it is located which depends upon both the value of the variable defining the base in which it is located and the value of the feature identification number of the content object.
70. Apparatus according to Claim 69, wherein the content generating means (90) is operable to generate the content objects using a first mathematical function having the variable defining the respective bases as a variable thereof and a second mathematical function having the feature identification number as a variable thereof.
71. Apparatus according to any of Claims 65 to 70, wherein the apparatus further comprises data generating means (80) for generating and storing base data defining bases generated by the base generating means (70) and connection data defining, for each base, at least one base in the same group, a base in the consecutive preceding group of the same generation, and a base in the consecutive following group of the same generation.
72. Apparatus according to Claim 71, wherein the data generating means is arranged to: generate and store the base data as a respective vertex for each base in a graph; and generate and store the relation data as directed edges between the vertices in the graph.
73. Apparatus according to Claim 71 or Claim 72, further comprising: base identifying means (110) operable to process the data generated by the data generating means (80) to identify bases having a defined relationship; and wherein the content generating means (90) is operable to generate further three-dimensional content objects for the identified bases.
74. Apparatus according to Claim 73, wherein the base identifying means (110) is operable to process the data generated by the data generating means (80) to identj Ty bases having a defined geometricaJ relationship.
75. Apparatus according to any of Claims 65 to 74, further comprising : identifying means (110) operable to identify features comprising content objects having a defined relationship and/or operable to identify features comprising at least one base and at least one content object having a defined relationship; and wherein the content generating means (90) is operable to generate further three-dimensional content objects for the identified features.
76. Apparatus according to Claim 75, wherein the identifying means (110) is operable to identify features having a defined geometrical relationship.
77. A method of operating a computer-aided design apparatus (2) to design a three-dimensional object to be fabricated, the method comprising: generating a topology for a design of a three- dimensional object by generating a plurality of different generations of bases, wherein each generation of bases comprises a plurality of bases, each base comprising a local coordinate system, and wherein the bases in the second and any subsequent generation are arranged in a plurality of groups such that each respective group is located in the local coordinate system of a different base in a preceding generation; and adding content to the design by using the same mathematical procedure or procedures to generate a three- dimensional content object in each of a plurality of bases comprising bases within different groups of a generation.
78. A method according to Claim 77, further comprising generating a further generation of bases, each base in the further generation having at least one of a position and orientation dependent upon a content object.
79. A method according to Claim 77 or Claim 78, wherein: data is stored defining the mathematical procedure (s) used to generate the content objects; the stored data defining the mathematical procedure (s) is changed in accordance with user instructions; and the content objects are regenerated in accordance with the changed mathematical procedure (s) .
80. A method according to any of Claims 77 to 79, wherein the content objects are generated using at least one mathematical function having a variable defining respective bases in which the content objects are to be located, such that each content object has at least one of a position and orientation relative to the local coordinate system of the base in which it is located which depends upon the value of the variable and such that at least one of the positions and orientations of the content objects relative to their local coordinate systems changes in accordance with the value of the variable.
81. A method according to Claim 80, wherein: each content object has a unique feature identification number; and the content objects are generated using at least one mathematical function having the variable defining the respective bases and also the feature identification number as variables of the function (s) so that each content object has at least one of a position and orientation relative to the local coordinate system of the base in which it is located which depends upon both the value of the variable defining the base in which it is located and the value of the feature identification number of the content object.
82. A method according to Claim 81, wherein the content objects are generated using a first mathematical function having the variable defining the respective bases as a variable thereof and a second mathematical function having the feature identification number as a variable thereof.
83. A method according to any of Claims 77 to 82, wherein the method further comprises generating and storing base data defining the generated bases, and connection data defining, for each base, at least one base in the same group, a base in the consecutive preceding group of the same generation, and a base in the consecutive following group of the same generation.
84. A method according to Claim 83, wherein: the base data is generated and stored as a respective vertex for each base in a graph; and the relation data is generated and stored as directed edges between the vertices in the graph.
85. A method according to Claim 83 or Claim 84, further comprising : processing the stored data to identify bases having a αefined relationship; and generating further three-dimensional content objects for the identified bases.
86. A method according to Claim 85, wherein bases having a defined geometrical relationship are identified.
87. A method according to any of Claims 77 to 86, further comprising: identifying features comprising content objects having a defined relationship and/or identifying features comprising at least one base and at least one content object having a defined relationship; and generating further three-dimensional content objects for the identified features.
88. A method according to Claim 87, wherein features having a defined geometrical relationship are identified.
89. A storage medium storing computer program instructions to program a programmable processing apparatus to become configured as an apparatus as set out in at least one of Claims 65 to 76.
90. A signal carrying computer program instructions to program a programmable processing apparatus to become configured as an apparatus as set out in at least one of
Claims 65 to 76.
91. A computer-aided design apparatus (2) for the design of three-dimensional objects to be fabricated, the apparatus comprising: base generating means (70) for generating a plurality of bases in a reference coordinate system, each base comprising a local coordinate system; and content generating means (90) for generating a respective content object in the local coordinate system of each of a plurality of bases in accordance with at least one mathematical function having a variable representative of the respective bases in which the content objects are to be located, such that each content object has a shape which depends upon the value of the variable representative of the base in which it is located and such that the shape of the content objects changes from base to base in accordance with the values of the variable.
92. Apparatus according to Claim 91, wherein the variable representative of the respective bases corresponds to the order of creation of the bases.
93. Apparatus according to Claim 91 or Claim 92, wherein: each respective content object has a unique feature identification number; and the content generating means (90) is operable to generate the content objects using at least one mathematical function having the variable representative of the respective bases and also the feature identification numbers as variables of the function (s) so that each content object has a shape which depends upon both the value of the variable representative of the base in which the content object is located and the value of the feature identification number of the content object.
94. Apparatus according to Claim 93, wherein the content generating means (90) is operable to generate a plurality of respective content objects in the local coordinate system of each base in accordance with the at least one mathematical function having the variable representative of the respective bases and also the feature identification numbers as variables of the function (s) so that each content object has a shape which depends upon both the value of the variable representative of the base in which the content object is located and the value of the feature identification number of the content object.
95. Apparatus according to Claim 93 or Claim 94, wherein the content generating means (90) is operable to generate the content objects in accordance with a first mathematical function having the variable representative of the respective bases as a variable thereof and a second mathematical function having the feature identification numbers as a variable thereof.
96. Apparatus according to any of Claims 91 to 95, further comprising means (100) for transforming at least some of the content objects in accordance with a mathematical transformation dependent upon the variable representative of the respective bases such that the content objects are transformed differently in dependence upon the values of the variable for their corresponding bases.
97. Apparatus according to any of Claims 9] to 96, wherein the base generating means (70) is operable to generate each of the plurality of bases before the content generating means (90) generates any of the content objects.
98. A method of operating a computer-aided design apparatus to design a three-dimensional object to be fabricated, the method comprising: generating a plurality of bases in a reference coordinate system, each base comprising a local coordinate system; and generating a respective content object in the local coordinate system of each of a plurality of bases in accordance with at least one mathematical function having a variable representative of the respective bases in which the content objects are to be located, such that each content object has a shape which depends upon the value of the variable representative of the base in which it is ] ocated and such that the shape of the content objects changes from base to base in accordance with the values of the variable.
99. A method according to Claim 98, wherein the variable representative of the respective bases corresponds to the order of creation of the bases.
100. A method according to Claim 98 or Claim 99, wherein: each respective content object has a unique feature identification number; and the content objects are generated using at least one mathematical function having the variable representative of the respective bases and also the feature identification numbers as variables of the function (s) so that each content object has a shape which depends upon both the value of the variable representative of the base in which the content object is located and the value of the feature identification number of the content object.
101. A method according to Claim 100, wherein a plurality of respective content objects are generated in the local coordinate system of each base in accordance with the at least one mathematical function having the variable representative of the respective bases and also the feature identification numbers as variables of the function (s) so that each content object has a shape which depends upon both the value of the variable representative of the base in which the content object is located and the value of the feature identification number of the content object.
102. A method according to Claim 100 or Claim 101, wherein the content objects are generated in accordance with a first mathematical function having the variable representative of the respective bases as a variable thereof and a second mathematical function having the feature identification numbers as a variable thereof.
103. A method according to any of Claims 98 to 102, further comprising transforming at least some of the content objects in accordance with a mathematical transformation dependent upon the variable representative of the respective bases such that the content objects are transformed differently in dependence upon the values of the variable for their corresponding bases.
104. A method according to any of Claims 98 to 103, wherein each of the plurality of bases is generated before any of the content objects are generated.
105. A storage medium storing computer program instructions to program a programmable processing apparatus to become configured as an apparatus as set out in at least one of Claims 91 to 97.
106. A signal carrying computer program instructions to program a programmable processing apparatus to become configured as an apparatus as set out in at least one of Claims 91 to 97.
PCT/EP2008/056267 2007-05-21 2008-05-21 Computer-aided design apparatus WO2008142114A2 (en)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
EP07010053A EP1995673A1 (en) 2007-05-21 2007-05-21 Computer-aided design apparatus
EP07010053.2 2007-05-21
EP08006352A EP1995675A1 (en) 2007-05-21 2008-03-31 Computer-aided design apparatus
EP08006354.8 2008-03-31
EP08006356.3 2008-03-31
EP08006354A EP1995677A1 (en) 2007-05-21 2008-03-31 Computer-aided design apparatus
EP08006353A EP1995676A1 (en) 2007-05-21 2008-03-31 Computer-aided design apparatus
EP08006351.4 2008-03-31
EP08006352.2 2008-03-31
EP08006356A EP1995678A1 (en) 2007-05-21 2008-03-31 Computer-aided design apparatus
EP08006353.0 2008-03-31
EP08006351A EP1995674A1 (en) 2007-05-21 2008-03-31 Computer-aided design apparatus

Publications (2)

Publication Number Publication Date
WO2008142114A2 true WO2008142114A2 (en) 2008-11-27
WO2008142114A3 WO2008142114A3 (en) 2009-03-05

Family

ID=38325640

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2008/056267 WO2008142114A2 (en) 2007-05-21 2008-05-21 Computer-aided design apparatus

Country Status (3)

Country Link
US (7) US8103484B2 (en)
EP (7) EP1995673A1 (en)
WO (1) WO2008142114A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2487489A (en) * 2011-01-20 2012-07-25 Lluis Enrique Monzo Method of defining the geometry of first and second overlapping components

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8036863B2 (en) * 2008-02-07 2011-10-11 American Axle & Manufacturing, Inc. Method for customizing a bearing bore
US8301417B2 (en) * 2008-11-12 2012-10-30 The Boeing Company Method for identifying the analytical transitional cross-sections of a rigid transport element
EP2534449B1 (en) * 2010-02-12 2016-07-06 Marquardt Mechatronik GmbH Method for measuring a position
WO2012149961A1 (en) * 2011-05-03 2012-11-08 Fujitsu Limited Computer - implemented method of simplifying a complex part in a geometric model
EP2523132A1 (en) * 2011-05-11 2012-11-14 Dassault Systèmes Designing a three-dimensional modeled assembly of objects in a three-dimensional scene
US8719229B1 (en) * 2012-10-12 2014-05-06 Autodesk, Inc. Cloud platform for managing design data
WO2014071048A1 (en) * 2012-11-01 2014-05-08 Fluor Technologies Corporation Three-dimensional modeling and drawing extraction tool
US20140136151A1 (en) * 2012-11-09 2014-05-15 Gary Arnold Crocker Methods and Systems for Generating Continuous Surfaces from Polygonal Data
EP2733630A1 (en) * 2012-11-15 2014-05-21 Dassault Systèmes Designing a circular staggered pattern of objects
DK3005308T3 (en) 2013-06-06 2018-01-22 Vert Rotors Uk Ltd PROCEDURE FOR USING A COMPUTER GRAPHIC SYSTEM TO CHANGE THE FORM OF THE SURFACE OF MODELS OF GEOMETRIC SOLIDS BY DEFORMATION AND IMPLEMENTATION THEREOF
US9817639B2 (en) * 2013-09-27 2017-11-14 Autodesk, Inc. Computational design method and interface
US9417911B2 (en) * 2014-03-12 2016-08-16 Live Planet Llc Systems and methods for scalable asynchronous computing framework
US20150302114A1 (en) * 2014-04-22 2015-10-22 Siemens Product Lifecycle Management Software Inc. Duplicate pattern of assembly components in cad models
US20150358165A1 (en) * 2014-06-08 2015-12-10 Teknologian Tutkimuskeskus Vtt Oy Method and arrangement for distributed realisation of token set management and recommendation system with clustering
US10437938B2 (en) 2015-02-25 2019-10-08 Onshape Inc. Multi-user cloud parametric feature-based 3D CAD system
US9734278B1 (en) * 2015-06-29 2017-08-15 Cadence Design System, Inc. Methods, systems, and articles of manufacture for automatic extraction of connectivity information for implementation of electronic designs
US10409945B1 (en) 2015-06-29 2019-09-10 Cadence Design Systems, Inc. Methods, systems, and computer program product for connectivity verification of electronic designs
US10303811B2 (en) * 2015-07-31 2019-05-28 Autodesk, Inc. Deep-learning based functional correlation of volumetric designs
CN108804776A (en) * 2018-05-22 2018-11-13 中车青岛四方机车车辆股份有限公司 A kind of carbody modeling method, apparatus and equipment
US10834413B2 (en) * 2018-08-24 2020-11-10 Disney Enterprises, Inc. Fast and accurate block matching for computer generated content
US11281820B2 (en) 2019-04-02 2022-03-22 Desktop Metal, Inc. Systems and methods for growth-based design

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4600919A (en) 1982-08-03 1986-07-15 New York Institute Of Technology Three dimensional animation
US4821214A (en) 1986-04-17 1989-04-11 Brigham Young University Computer graphics method for changing the shape of a geometric model using free-form deformation
US4858146A (en) * 1986-08-13 1989-08-15 The Babcock & Wilcox Company Automated design of structures using a finite element database
US5452238A (en) * 1989-06-13 1995-09-19 Schlumberger Technology Corporation Method for solving geometric constraint systems
US5524187A (en) * 1991-03-25 1996-06-04 The Trustees Of Columbia University Worlds-within-worlds nested display and interaction system and method
US6587746B1 (en) * 1996-12-04 2003-07-01 D'souza Melanius Process and apparatus for facilitating automatic production of drawing using a CAD system
US6154213A (en) 1997-05-30 2000-11-28 Rennison; Earl F. Immersive movement-based interaction with large complex information structures
US6600485B1 (en) * 1998-07-03 2003-07-29 Sega Enterprises, Ltd. Polygon data generation method and image display apparatus using same
AU2382300A (en) * 1998-12-23 2000-07-12 National Institute Of Standards And Technology ("Nist") Method and system for a virtual assembly design environment
US20050000127A1 (en) 1999-01-18 2005-01-06 Trutan Pty. Ltd. Dynamic optical grid providing more than two angles of view per viewer
FR2793926B1 (en) * 1999-05-20 2001-07-20 Univ Rennes METHOD FOR CONSTRUCTING THREE DIMENSIONS OF A REPRESENTATIVE VIRTUAL MEMBER OF A REAL MEMBER
US6718291B1 (en) * 1999-07-02 2004-04-06 Vadim Shapiro Mesh-free method and system for modeling and analysis
US6936835B2 (en) 2000-09-21 2005-08-30 Hitachi, Ltd. Method and its apparatus for inspecting particles or defects of a semiconductor device
AU2002227376A1 (en) * 2000-10-30 2002-05-15 Tririga, Inc. Susiness asset management system
JP2002359515A (en) * 2001-03-26 2002-12-13 Matsushita Electric Ind Co Ltd M-shaped antenna apparatus
WO2002097735A1 (en) * 2001-05-31 2002-12-05 Kent Ridge Digital Labs System and method of anatomical modeling
JP4775989B2 (en) * 2001-08-23 2011-09-21 株式会社バンダイナムコゲームス Image generation system, program, and information storage medium
US6844877B1 (en) * 2001-11-05 2005-01-18 Solidworks Corporation Automated mirroring of components
CN1306444C (en) * 2001-11-07 2007-03-21 鹿岛建设株式会社 Building production information integration system
US6791549B2 (en) * 2001-12-21 2004-09-14 Vrcontext S.A. Systems and methods for simulating frames of complex virtual environments
US20040205519A1 (en) * 2002-01-10 2004-10-14 Chris Chapel Method and system for automatically generating construction documents
US7042451B2 (en) * 2002-04-19 2006-05-09 Geometric Software Solutions Co., Limited Methods using specific attributes and graph grammars in graph-based techniques for feature recognition
US6940505B1 (en) 2002-05-20 2005-09-06 Matrox Electronic Systems Ltd. Dynamic tessellation of a base mesh
US20040004612A1 (en) 2002-07-08 2004-01-08 Lockheed Martin Corporation Method and system for processing graphics simulation data
US7949690B2 (en) * 2002-09-06 2011-05-24 Autodesk, Inc. Project structure
US6985793B2 (en) * 2003-01-31 2006-01-10 Delphi Technologies, Inc. Horizontally structured CAD/CAM coordinate system for manufacturing design
US7079908B2 (en) * 2003-01-31 2006-07-18 Delphi Technologies,Inc. Horizontally-structured modeling for analysis
US20040236561A1 (en) * 2003-05-21 2004-11-25 Gary Smith Component management engine
JP3968056B2 (en) 2003-06-10 2007-08-29 インターナショナル・ビジネス・マシーンズ・コーポレーション Shape creation apparatus, control method for operating computer apparatus as shape creation apparatus, and computer-executable program for causing computer apparatus to execute control method
US7089511B2 (en) * 2003-12-10 2006-08-08 International Business Machines Corporation Framework for hierarchical VLSI design
US7526359B2 (en) * 2004-10-01 2009-04-28 Delphi Technologies, Inc. Enhanced digital process design methodology for process centric CAD systems
US20090204373A1 (en) * 2008-02-13 2009-08-13 Bentley Systems, Inc. System, method and computer program product for computer modeling with generative components

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS: "Allplan 2004 Schritt für Schritt Geodäsie" NEMETSCHEK CAMPUS, 1 June 2004 (2004-06-01), pages 116-133, XP007904798 Munich, Germany *
DAY A M ET AL: "Combining polygonal and subdivision surface approaches to modelling of urban environments" CYBERWORLDS, 2003. PROCEEDINGS. 2003 INTERNATIONAL CONFERENCE ON 3-5 DEC. 2003, PISCATAWAY, NJ, USA,IEEE, 3 December 2003 (2003-12-03), pages 189-196, XP010674966 ISBN: 0-7695-1922-9 *
JEAN-EUDES MARVIE ET AL: "The FL-system: a functional L-system for procedural geometric modeling" THE VISUAL COMPUTER ; INTERNATIONAL JOURNAL OF COMPUTER GRAPHICS, SPRINGER-VERLAG, BE, vol. 21, no. 5, 1 June 2005 (2005-06-01), pages 329-339, XP019339112 ISSN: 1432-8726 *
MAI ALI NUR ET AL: "Animating the escape response of the sea anemone, Stomphia coccinea from the starfish, Dermasterias imbricata modeled using implicit surfaces" COMPUTER GRAPHICS INTERNATIONAL 2001. PROCEEDINGS 3-6 JULY 2001, PISCATAWAY, NJ, USA,IEEE, 3 July 2001 (2001-07-03), pages 81-88, XP010552304 ISBN: 0-7695-1007-8 *
MARHL M ET AL: "Extensions of sweep surface constructions" COMPUTERS AND GRAPHICS, PERGAMON PRESS LTD. OXFORD, GB, vol. 20, no. 6, November 1996 (1996-11), pages 893-903, XP004729282 ISSN: 0097-8493 *
VAN EMMERIK M J G M: "Interactive design of 3D models with geometric constraints" VISUAL COMPUTER, SPRINGER, BERLIN, DE, vol. 7, no. 5-6, 1991, pages 309-325, XP009088118 ISSN: 0178-2789 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2487489A (en) * 2011-01-20 2012-07-25 Lluis Enrique Monzo Method of defining the geometry of first and second overlapping components

Also Published As

Publication number Publication date
EP1995673A1 (en) 2008-11-26
EP1995674A1 (en) 2008-11-26
US8380465B2 (en) 2013-02-19
WO2008142114A3 (en) 2009-03-05
EP1995675A1 (en) 2008-11-26
US8103484B2 (en) 2012-01-24
US20080294389A1 (en) 2008-11-27
EP1995677A1 (en) 2008-11-26
EP1995678A1 (en) 2008-11-26
US20080294392A1 (en) 2008-11-27
US20080291199A1 (en) 2008-11-27
EP2309404A1 (en) 2011-04-13
US20120169727A1 (en) 2012-07-05
US20080294390A1 (en) 2008-11-27
US8112255B2 (en) 2012-02-07
US20110295566A1 (en) 2011-12-01
US8117011B2 (en) 2012-02-14
EP1995676A1 (en) 2008-11-26
US8112256B2 (en) 2012-02-07
US8280701B2 (en) 2012-10-02
US20080294391A1 (en) 2008-11-27

Similar Documents

Publication Publication Date Title
WO2008142114A2 (en) Computer-aided design apparatus
Choi et al. Sculptured surface machining: theory and applications
Gao et al. Automatic recognition of interacting machining features based on minimal condition subgraph
Shah et al. Expert form feature modelling shell
Lin Applied Computational Geometry. Towards Geometric Engineering: FCRC'96 Workshop, WACG'96, Philadelphia, PA, May 27-28, 1996, Selected Papers
Konobrytskyi et al. 5-Axis tool path planning based on highly parallel discrete volumetric geometry representation: Part I contact point generation
Arbab Requirements and architecture of a CAM-oriented CAD system for design and manufacture of mechanical parts
Shen et al. Analysis neutral data structure for GD&T
Dong et al. Manufacturing feature determination and extraction—Part II: a heuristic approach
WO1999029479A1 (en) Method and systems for nesting objects
Wolfe et al. Solid modeling for production design
Buric et al. Towards Automated Drafting in CAD Systems
Lee INTEGRATION OF SOLID MODELING AND DATABASE MANAGEMENT FOR CAD/CAM (QUERY LANGUAGE, GEOMETRIC DATABASE, FEATURE EXTRACTION)
Tolouei-Rad An approach towards fully integration of CAD and CAM technologies
Grum et al. Design of the database for CAD based on group technology
Venu et al. A methodology to recognize manufacturing features of prismatic parts from STEP AP 203 file
Xia Motion based geometric modeling
Chen Feature-based numerical control program generation from computer-aided design models
Dong et al. Vehicle Component Layout With Shape Morphing: An Initial Study
Rangel et al. Integration of commercial CAD/CAM system with custom CAPP using Orbix Middleware and CORBA standard
Nasr et al. Methodologies of Feature Representations
Bao On loosely-coupled parallel implementation of algorithms for computer-aided manufacturing
Roller et al. Geometric constraint modelling: Boundary planar B-spline curves and control polyhedra for 5-axes response surface graph
Özkan The way architectural model as a new collaborative design environment talks with machines
Yeh CAD-based automatic object recognition and determination of symmetric properties of objects

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: 08759869

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase in:

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 08759869

Country of ref document: EP

Kind code of ref document: A2