 |
PK_ATTDEF_sf_t |
|
struct PK_ATTDEF_sf
{
char *name; --- name of attribute type
PK_ATTDEF_class_t attdef_class; --- transform characteristics
int n_owner_types; --- number of legal owners (>0)
PK_CLASS_t *owner_types; --- legal owner types
int n_fields; --- number of fields (>= 0)
PK_ATTRIB_field_t *field_types; --- types of above fields
};
typedef struct PK_ATTDEF_sf PK_ATTDEF_sf_t;
This data structure is the standard form for an attribute definition.
Used in:
PK_ATTDEF_ask
PK_ATTDEF_create
See Attribute Definitions for a full description of attribute
definitions.
Description of fields:
'name' Acts as a label for the type which is fixed across transmit and
receive. It is specified by a string containing only printable
characters. Names beginning with the string SDL/TY are reserved
for attribute types generated internally by Parasolid.
'attdef_class'
Determines the behaviour of an attribute of the new type when
the entity to which the attribute is attached is changed by a
modelling operation. The meaning of each possible value of
'class' is as follows.
PK_ATTDEF_class_01_c Attribute is independent of physical size
and position of entity to which it is
attached
(e.g. density).
PK_ATTDEF_class_02_c Attribute is dependent on entity size but
not on position. (e.g. weight).
PK_ATTDEF_class_03_c Attribute may vary with position or
orientation (e.g. moment of inertia).
PK_ATTDEF_class_04_c Attribute transforms with its owner, but
is otherwise independent of the size and
shape of its owner (e.g. start-point or
direction of movement of the tool that
cuts a face)
PK_ATTDEF_class_05_c Attribute transforms with its owner
provided
its owner is not changed in other ways
(e.g. centre of gravity)
PK_ATTDEF_class_06_c As for class 01, attribute is independent
of physical size and position of the entity
to which it is attached. However this class
of attribute supports multiple values - one
entity may have a list of attributes of the
same type attached.
PK_ATTDEF_class_07_c As for class 04, attribute transforms with
its owner, but is otherwise independent of
size and shape of the owner. However this
class supports multiple values - an entity
may have a list of attributes of the same
type attached.
PK_ATTDEF_class_internal_c
Attribute is only created and used
internally by Parasolid. Definitions of
this class and attributes of these
definitions cannot be created and they
have no user visible fields.
The response of a field of an attribute when the attribute
transforms (with its owner) depends on the type of the field as
follows:
real, integer and string fields are unaffected,
coordinate fields are acted on by the transformation,
vector and direction fields are acted on by the reflection and
rotation parts of the transformation.
axis fields behave as a coordinate field and a direction field.
'owner_types' An array of length 'n_owner_types' which dictates the entity
class which may legitimately own attributes of the given type.
Legitimate classes are as follows.
PK_CLASS_assembly
PK_CLASS_instance
PK_CLASS_body
PK_CLASS_region
PK_CLASS_shell
PK_CLASS_face
PK_CLASS_loop
PK_CLASS_edge
PK_CLASS_fin
PK_CLASS_vertex
PK_CLASS_group
PK_CLASS_lattice
PK_CLASS_surf
PK_CLASS_curve
PK_CLASS_point
The geometric entity classes, PK_CLASS_lattice, PK_CLASS_surf,
PK_CLASS_curve and PK_CLASS_point, may only be specified as
legal owners for attribute types with class PK_ATTDEF_class_01_c,
PK_ATTDEF_class_04_c, PK_ATTDEF_class_06_c, or
PK_ATTDEF_class_07_c.
Note: Attributes cannot be attached to orphan geometry.
A valid attribute definition must specify at least one owner.
'field_types' An array of length 'n_fields' which specifies the sequence and
type of fields for attributes of the given type. The permitted
field types are as follows.
PK_ATTRIB_field_real_c
PK_ATTRIB_field_integer_c
PK_ATTRIB_field_string_c
PK_ATTRIB_field_ustring_c
PK_ATTRIB_field_vector_c
PK_ATTRIB_field_coordinate_c
PK_ATTRIB_field_direction_c
PK_ATTRIB_field_axis_c
PK_ATTRIB_field_pointer_c
'n_fields' may be zero.