PK_ATTDEF_sf_2_t   

struct PK_ATTDEF_sf_2
    {
    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
    PK_LOGICAL_t         unicode_names;    --- Unicode or char names
    PK_field_names_t     field_names;      --- names of above fields
    int                 *field_sizes;      --- for future use
    };
typedef struct PK_ATTDEF_sf_2 PK_ATTDEF_sf_2_t;



This data structure is the standard form for a named-field attribute
definition.

Used in:

PK_ATTDEF_ask_2
PK_ATTDEF_create_2
PK_ATTDEF_name_cb_f_t
PK_ATTRIB_cb_f_t


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.


'unicode_names'
            A switch specifying whether names are supplied in Unicode
            form, or in the native character set of the machine.

            Currently, only native names are supported, so PK_LOGICAL_false
            is required.


'field_names'
            An array of length 'n_fields' which specifies the names of fields
            for attributes of the given type.


'field_sizes'
            For future use.

            Currently this field must be set to NULL.