## 1.8 NON-BOOLEAN DESIGN DATA

While the equation forms presented before concentrate on high level representation of the product, they do not consider representation of set properties. To allow set properties to accompany the equations, a symbolic form of representation has been chosen. Each symbol in the equation has a list of symbols associated with it. This allows a set of arbitrary properties to be associated with each set. For example, if we have a Boolean expression ‘( * A ( ~ B ) )’, it is possible for ‘B’ to have a list of properties such as,

B.form = CYLINDER

B.height = 2.0

B.height_max_tolerance = +0.02

B.material = 1040Steel

The reason for this representation is that it is not necessary to be more specific for this method. The reader will notice in the next chapter that the CAPP planning rules are made to use arbitrary symbols. This allows more freedom in the CAD system, where geometry is represented because it is essential, but the other properties are often ignored because they are a nuisance for the CAD software designer. The set ‘B’ above can be used to illustrate some common problems related to tightly specified data components. The form of ‘B’ is a cylinder. When this is interpreted in the solid modeler, the location of the origin for the primitive is critical. But, various solid modelers set the origin either at the centre of one end or at the centre of mass. Obviously this would lead to the definition of two different geometries.

The data structure to store symbol lists is given in Figure 1.6 Set Data Structure (With Example). In the diagram there are two lists, and a pointer into the lists. There are two separate types of lists stored. The first list is for all sets (not including members). The second list is specifically for the set members (also called properties). In the diagram there is a pointer to the set list. This serves as a reference to the position in the set list. The ‘Term List’ is used specifically for lists of objects (and is similar to the ‘Term List’ used for storing equations, and it uses the same C++ class). The ‘pointer’ field refers to symbols containing the name of the set. The ‘type’ field is filled in to indicate that it is a set pointer, but this is only useful for checking data integrity. Obviously the ‘point to next’ field is used for linking the lists. The list of symbols are treated in a similar manner.

The symbol list is used to store the set names and the symbol names. Pointers are also used for the set names. These pointers refer back to the term list, so as to give the list of symbols. The type field is used to differentiate between numeric and symbolic properties. This reason for this becomes apparent when trying to compare fields, and field values. Numeric values must be treated differently than character strings.

Figure 1.6 Set Data Structure (With Example)

A set of functions has been developed to manipulate the data structures. Some of these functions are,