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.