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.


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.

              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,

              co-ordinate 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_surf
              PK_CLASS_curve
              PK_CLASS_point

              The geometric entity classes, 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 or
              PK_ATTDEF_class_04_c.

              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.

Generated on: Fri, 15 Dec 2023 13:14:12 GMT