 |
PK_change_edge_geom_data_t |
|
struct PK_change_edge_geom_data_s
{
int n_edge_arrays; --- number of arrays of edges
--- with geom_data
--- supplied (0)
const PK_EDGE_array_t *edge_arrays; --- arrays of edges for which
--- the data has been
--- provided to control the
--- geometry created (NULL)
const PK_change_edge_method_t *methods; --- array of edge control
--- methods (NULL)
const PK_EDGE_step_t *steps; --- array of controls for
--- step face creation (NULL)
--- [PF]
const PK_VECTOR_t *directions; --- array of directions
--- (NULL)
const PK_ENTITY_t *entities; --- array containing the
--- entity to be used when
--- defining the geometry of
--- the associated edges
--- (NULL)
const PK_LOGICAL_t *reversals; --- array of logicals
--- indicating whether the
--- direction of the
--- associated edges should
--- be reversed (NULL)
const double *offsets; --- array of signed distances
--- by which the associated
--- entity in 'entities'
--- should be offset (NULL)
const PK_TRANSF_t *transforms; --- array of transforms to be
--- applied to the associated
--- entity in 'entities'
--- (NULL)
const double *tolerances; --- array of tolerances
--- desired for the
--- associated edges in the
--- 'edge_arrays' (NULL)
const PK_replace_use_t *replace_uses; --- array of controls on how
--- the associated entity in
--- 'entities' should be used
--- (NULL) [PF]
};
typedef struct PK_change_edge_geom_data_s PK_change_edge_geom_data_t;
This structure is part of the PK_FACE_change_o_t options structure. It contains
data to control the geometry created for the given arrays of edges.
Specific Errors:
PK_ERROR_bad_value (MILD) Member of 'replace_uses' set to
PK_replace_use_existing_c.
PK_ERROR_bad_combination (MILD) Incompatible options specified as
follows:
- a member of 'entities' is a
PK_CURVE_t, or a member of 'methods'
was set as
PK_change_edge_method_proj_c, and a
non-zero corresponding 'offsets'
value has been supplied.
- a member of 'entities' is a
PK_SURF_t or PK_FACE_t, or a member
of 'methods' is not
PK_change_edge_method_entity_c
and the corresponding 'replace_uses'
value is not PK_replace_use_yes_c.
- at least one of the 'edge_arrays'
contains an edge that is not one of
the edges of the 'faces' handed into
PK_FACE_change.
- a member of 'entities' is a
PK_SURF_t or PK_FACE_t and the
corresponding 'methods' value is not
PK_change_edge_method_entity_c.
- a member of 'entities' is a
PK_CURVE_t and the corresponding
'methods' value is
PK_change_edge_method_ruled_c.
- a member of 'steps' is
PK_EDGE_step_method_c and the
corresponding 'methods' is
PK_change_edge_method_proj_c.
- a member of 'steps' is
PK_EDGE_step_method_c and the
corresponding 'methods' is
PK_change_edge_method_entity_c
and the corresponding member of
'entities' is not a PK_SURF_t.
- at least one of the
'edge_arrays' contains a
non-manifold edge and one or
more of the following are true:
* the corresponding 'replace_uses'
value is not PK_replace_use_yes_c.
* the corresponding 'methods' is not
PK_change_edge_method_entity_c.
* the corresponding member of
'entities' is a PK_SURF_t or
PK_FACE_t
PK_ERROR_wrong_transf (MILD) A member of 'transforms' contains
scale, shear, perspective or
reflection components.
PK_ERROR_unsuitable_entity (MILD) The 'entities' array has been supplied
and contains an entity other than
PK_CURVE_t, PK_SURF_t or PK_FACE_t.
A member of 'entities' is a PK_FACE_t
and at least one of the associated
edges lies in this face.
A member of 'entities' is a PK_SURF_t
and at least one of the associated
edges lies in a face whose geometry is
this surface.
PK_ERROR_not_implemented (MILD) At least one of the 'edge_arrays'
contains a non-laminar edge and one or
more of the following are true:
- the corresponding entity is a
PK_SURF_t or PK_FACE_t.
- the corresponding method is not
PK_change_edge_method_entity_c.
- the corresponding entity is a
PK_CURVE_t and an adjacent face
has a patch operation and the
supplied curve is not coincident to
an edge supplied in 'patch_edges'.
- the edge has multiple adjacent faces
with patch operations using same
sheet entity.
At least one of the 'edge_arrays'
contains a laminar edge whose adjacent
face has a patch operation, and the
corresponding entity is a PK_CURVE_t
or PK_ENTITY_null.
PK_ERROR_bad_orientation (SERIOUS) Two laminar edges which share a common
two edge vertex have the same entity
supplied, but the reversals associated
with the edges would result in the
edges having inconsistent
orientations.
Used in:
PK_FACE_change_o_t
Description of fields:
'n_edge_arrays' Number of arrays of edges supplied. Length of
'edge_arrays' and the length of any of the parallel
arrays if specified. The parallel arrays are the
'methods', 'steps', 'directions', 'entities',
'reversals', 'offsets', 'transforms', 'tolerances' and
'replace_uses' arrays.
The default value is 0.
'edge_arrays' Arrays of the edges.
Note that edges which will be mixed after the operation
must be supplied in 'edge_arrays', if any adjacent
face which is being changed has a bend operation.
The array default value is NULL.
'methods' Array of PK_change_edge_method_t values used to define
the method for controlling the geometry of the
corresponding edges and, if 'steps' option is set to
PK_EDGE_step_method_c, of any associated step faces.
PK_change_edge_method_entity_c:
Attempt to use the supplied entity in the
'entities' array to define the new edge geometry,
or, if no entity is supplied, to use the existing
edge geometry.
PK_change_edge_method_swept_c:
The existing edge curve or supplied entity curve
should be swept in the corresponding direction
specified in the 'directions' array. The new edge
geometry is defined by the intersection of this
swept surface with the new face geometry. Any
offsets and transformations supplied will be
applied to the swept surface before it is
intersected with the new face geometry.
PK_change_edge_method_ruled_c:
The existing edge curve should be swept along the
normals of the original face to generate a ruled
surface. The new edge geometry is defined by the
intersection of this surface with the new face
geometry. Any offsets and transformations supplied
will be applied to the swept surface before it is
intersected with the new face geometry.
PK_change_edge_method_proj_c:
The existing edge curve or supplied entity curve
should be projected onto the corresponding new
face along the normals of the new face.
The default value is NULL indicating that the
operation should use the PK_change_edge_method_entity_c
method.
Note: if the method is not
PK_change_edge_method_entity_c then the associated
edges must be laminar unless a step face is requested
by associated 'steps' option.
See here for more information
'steps' Array of PK_EDGE_step_t values used to control
the creation of step faces for the corresponding edges.
This option will override any operation specific
step option.
PK_EDGE_step_default_c:
Indicates the data is only used to control the
geometry of the edges, and will not override any
operation specific step option.
PK_EDGE_step_auto_c:
Create step faces along the edges with Parasolid
internally creating the step face surface geometry.
PK_EDGE_step_method_c:
Create step faces along the edges with the step face
surface geometry being derived from the associated
'methods' option.
If 'methods' option is set to
PK_change_edge_method_entity_c, then only an entity
of type surface is supported.
The 'methods' option PK_change_edge_method_proj_c is
not supported.
PK_EDGE_step_no_c:
Will prevent the creation of a step face along
the corresponding edges.
The default value is NULL indicating that the
operation will use PK_EDGE_step_default_c.
For values of PK_EDGE_step_auto_c and
PK_EDGE_step_method_c, there may be cases where a step
face is not required, such as an edge with both faces
having the same transformation. These cases will not
result in an error, but no step face will be created.
Note: only the value of PK_EDGE_step_default_c is
supported for non-manifold and mixed edges.
See here for more information
'directions' If PK_change_edge_method_swept_c is specified, this
array defines the direction of sweeping. For other
methods the 'directions' array is ignored.
'entities' Array of user provided entities used when defining
curves for the associated array of edges. Each member
of 'entities' must be one of the following types:
PK_ENTITY_null this_indicates that the geometry of the
edges in the corresponding edge array
is expected to be preserved.
PK_CURVE_t edges in the corresponding edge array
are expected to have geometry that lies
within tolerance of this curve after
the operation.
PK_SURF_t edges in the corresponding edge array
are expected to have geometry that lies
within tolerance of this surface after
the operation.
PK_FACE_t edges in the corresponding edge array
are expected to have geometry that lies
within tolerance of this face after
the operation.
If the entity is a PK_CURVE_t, the associated edges
will go in the direction of the curve.
If the entity is a PK_SURF_t or PK_FACE_t, the
associated edges will go in the direction of the cross
product of the normal of the first face of the edge and
the normal of the entity. The first face of the edge
is defined to be the face of the fin of the edge
returned by PK_EDGE_ask_first_fin.
The default value is NULL indicating that all edges in
the 'edge_arrays' are expected to have their geometry
preserved.
Note: if the entity is a PK_FACE_t or a PK_SURF_t then
the associated edges must be laminar unless a step face
is requested by associated 'steps' option.
If the entity is a PK_FACE_t this must not be the face
that any of the associated edges already lie in.
If the entity is a PK_SURF_t this must not be the
surface of any face that any of the associated edges
already lie in.
If the entity is a PK_FACE_t or a PK_SURF_t then
the associated method must be
PK_change_edge_method_entity_c.
If the entity is a PK_CURVE_t then the associated
method must not be PK_change_edge_method_ruled_c
'reversals' A PK_LOGICAL_t array indicating whether the associated
edges should go in the opposite direction to that
described above.
This value is ignored if the 'entities' array is NULL
or if the corresponding entity in 'entities' is set to
PK_ENTITY_null.
The default value is NULL indicating that none of the
'entities' should be reversed.
'offsets' Array of signed distances by which the corresponding
entity in the 'entities' array will be offset, oriented
in the direction of the entity normal.
If the method in 'methods' is set as either
PK_change_edge_method_swept_c or
PK_change_edge_method_ruled_c then the surface
generated by sweeping either the entity curve or the
original edge curve (when the entity is PK_ENTITY_null)
will be offset in the direction of the swept surface
normal. In such cases the positive direction is defined
by the cross product of the fin direction and the
original face normal (the first face of the edge -
defined as the face associated with the fin returned
by PK_EDGE_ask_first_fin).
An offset may only be supplied for entities of type
PK_SURF_t and PK_FACE_t, or for methods
PK_change_edge_method_swept_c and
PK_change_edge_method_ruled_c.
The default value is NULL indicating that none of the
'entities' or swept surfaces should be offset.
If any of the 'entities' or swept surfaces cannot be
offset PK_local_status_cant_offset_c will be returned.
'transforms' Array of transforms to be applied to the corresponding
entity in the 'entities' array or to the corresponding
original edge curve if the entity is PK_ENTITY_null.
If the method in the 'methods' array is either
PK_change_edge_method_swept_c or
PK_change_edge_method_ruled_c then the transform
will be applied to the surface generated by
sweeping either the entity curve or the original edge
curve (when the entity is PK_ENTITY_null).
If the method in the 'methods' array is
PK_change_edge_method_proj_c then the transform
will be applied to the entity or original edge curve
before the projection is applied.
Each transform must be either PK_ENTITY_null
(indicating that the entity should not be transformed),
or a transform containing only translation and rotation
components. Scaling, shearing, perspective and
reflection components are not allowed.
The default value is NULL indicating that none of the
'entities' should be transformed.
'tolerances' Array of tolerances associated with the corresponding
edges in the 'edge_array'. A value of 0.0 indicates
that the associated edges are to be treated as
accurate. A value of -1 indicates that the original
edge tolerances should be used.
The corresponding edges in the resulting body will
not necessarily have this tolerance; if possible
the edge will be made accurate, otherwise, if a value
smaller than the supplied tolerance is found this is
used. In some cases the tolerance may need to be
greater than this supplied tolerance. In these cases
the operation tolerance will be used to determine if a
suitable value exists.
The default value is NULL indicating that their
original tolerances should be used for all edges.
Note: This value is ignored for facet edges or when the
associated entity is a PK_SURF_t or PK_FACE_t.
Note: Edges which will be mixed after the operation
must have a tolerance of at least 5 times the
session precision.
'replace_uses' Array of PK_replace_use_t values used to control the
behaviour for the corresponding edges in cases where:
- the corresponding entity is PK_ENTITY_null or no
'entities' have been supplied but it is not
possible to use the edges' existing geometry
- the corresponding entity is a PK_CURVE_t but it
is not possible for the edges in the resulting
body to have geometry that lies within tolerance
of this curve
- the corresponding entity is a PK_SURF_t but it
is not possible for the edges in the resulting
body to have geometry that lies on this surface.
- the corresponding entity is a PK_FACE_t but it
is not possible for the edges in the resulting
body to have geometry that lies on the surface
of this face (after any associated
PK_FACE_change operation has been applied).
- the corresponding method is either
PK_change_edge_method_swept_c,
PK_change_edge_method_ruled_c or
PK_change_edge_method_proj but it is not
possible for the edges in the resulting body to
have geometry that lies within tolerance of the
generated curve.
PK_replace_use_attempt_c Attempt to use the geometry
indicated by the corresponding
entity or method but create a
new curve if this cannot be
used.
PK_replace_use_yes_c Return a fault if the geometry
indicated by the corresponding
entity or method cannot be
used.
Note: the value PK_replace_use_attempt_c is not
implemented for entities of type PK_SURF_t and
PK_FACE_t, or for any method other than
PK_change_edge_method_entity_c. It is also not
implemented for non-manifold edges.
Note: the value PK_replace_use_existing_c is not
implemented for any entity.
Note: the value PK_replace_use_yes_c must be used for
edges which will be mixed after the operation,
if any adjacent face which is being changed has
a bend operation.
The default value is NULL indicating that the
operation should return a fault if the indicated
geometry cannot be used.
If a member of 'entities' is of type PK_FACE_t and is one of the faces handed
into PK_FACE_change, then the face used to define the associated edges will be
the face after the PK_FACE_change operation has been applied. Similarly any
transform or offset associated with that entity will be applied after the
PK_FACE_change operation.