 |
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