#ifndef PROFOREIGNCURVE_H
#define PROFOREIGNCURVE_H
#include <ProToolkit.h>
#include <ProObjects.h>
#include <ProSizeConst.h>
#include <ProSelection.h>
/*
Function and element tree declarations for foreign datum curves.
Foreign datum curves will be represented as Creo Parametric datum curves of type
spline, unless there are only two points, in which case the curve will
be represented as a line.
*/
/**********************************************************************\
Foreign Datum Curve feature element tree:
PRO_E_FEATURE_TREE
|
|--PRO_E_FEATURE_TYPE
|
|--PRO_E_CURVE_TYPE
|
|--PRO_E_FOREIGN_CURVE_CLASS
|
|--PRO_E_FOREIGN_CURVE_CSYS_REF
|
|--PRO_E_FOREIGN_CURVE_DATA_VAL
|
|--PRO_E_FOREIGN_CURVE_CONTINUITY
Feature elements table
---------------------------------------------------------------------------------------------------------------------------
\***************************************************************************/
PRO_BEGIN_C_DECLS
/*====================================================================*/
typedef ProError (*ProForeignCurveEvalFunction) (ProName crv_class,
wchar_t *data_val,
ProSelection csys,
double curve_param,
ProVector xyz_point,
ProVector deriv1,
ProVector deriv2);
/*
Purpose: Defines the format for a user-supplied function that serves as a
curve evaluator.
Input Arguments:
crv_class - The class
data_val - The data passed from an element in the tree
csys - The coordinate system
curve_param - The normalized curve parameter
Output Arguments:
xyz_point - The resulting XYZ point
deriv1 - The first derivative
deriv2 - The second derivative
Return Values:
PRO_TK_NO_ERROR - The function successfully evaluated the curve.
PRO_TK_BAD_INPUTS - One or more of the input arguments are invalid.
*/
extern ProError ProForeignCurveClassEvalSet (ProName crv_class,
ProForeignCurveEvalFunction eval_func);
/*
Purpose: Binds the foreign curve class to the user's evaluation function.
<p> NOTE:
<p> If you call this function with <I>eval_func</I> set to NULL,
the class will "unbind" from the previously bound evaluation
function.
Input Arguments:
crv_class - The curve class
eval_func - The evaluation function
Output Arguments:
none
Return Values:
PRO_TK_NO_ERROR - The function successfully bound the class.
PRO_TK_BAD_INPUTS - The specified class name is NULL, or the class name
is empty.
PRO_TK_E_NOT_FOUND - The specified class name was not found, when the
<I>eval_func</I> is NULL.
*/
/*
Feature elements table
------------------------------------------------------------------------
Element Id Element Name Data Type Valid Values
------------------------------------------------------------------------
PRO_E_FEATURE_TYPE Feature Type PRO_VALUE_TYPE_INT PRO_FEAT_CURVE
PRO_E_CURVE_TYPE Curve Type PRO_VALUE_TYPE_INT PRO_CURVE_TYPE_FOREIGN
PRO_E_FOREIGN_CURVE_CLASS Class PRO_VALUE_TYPE_WSTRING wchar_t *w
PRO_E_FOREIGN_CURVE_CSYS_REF Reference PRO_VALUE_TYPE_SELECTION CSYS
PRO_E_FOREIGN_CURVE_DATA_VAL Value PRO_VALUE_TYPE_WSTRING wchar_t *w
PRO_E_FOREIGN_CURVE_CONTINUITY Continuity PRO_VALUE_TYPE_INT see ProForeignCrvCont
----------------------------------------------------------------------------*/
#define PRO_CURVE_TYPE_FOREIGN 43
typedef enum pro_foreign_crv_cont
{
PRO_FOREIGN_CURVE_CALC_XYZ = 0,
PRO_FOREIGN_CURVE_CALC_XYZ_1_DER = 1,
PRO_FOREIGN_CURVE_CALC_XYZ_1_AND_2_DER = 2
} ProForeignCrvCont;
PRO_END_C_DECLS
#endif