![]() |
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.
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.