NURBS Curve
Data Structures | |
struct | A3DCrvNurbsData |
NURBS curve structure. More... | |
Enumerations | |
enum | A3DEBSplineCurveForm { kA3DBSplineCurveFormUnspecified, kA3DBSplineCurveFormPolyline, kA3DBSplineCurveFormCircularArc, kA3DBSplineCurveFormEllipticArc, kA3DBSplineCurveFormParabolicArc, kA3DBSplineCurveFormHyperbolicArc } |
Enumerate to characterize curve form. More... | |
enum | A3DEKnotType { kA3DKnotTypeUniformKnots, kA3DKnotTypeUnspecified, kA3DKnotTypeQuasiUniformKnots, kA3DKnotTypePieceWiseBezierKnots } |
enumerate to characterize knot vector More... | |
Functions | |
A3DStatus | A3DCrvBaseGetAsNurbs (const A3DCrvBase *pCrv, A3DDouble dTolerance, A3DBool bUseSameParameterization, A3DCrvNurbsData *pData) |
Populates the A3DCrvNurbsData structure from any type of A3DCrvBase. More... | |
A3DStatus | A3DCrvNurbsCreate (const A3DCrvNurbsData *pData, A3DCrvNurbs **ppCrv) |
Creates an A3DCrvNurbs from A3DCrvNurbsData structure. More... | |
A3DStatus | A3DCrvNurbsGet (const A3DCrvNurbs *pCrv, A3DCrvNurbsData *pData) |
Populates the A3DCrvNurbsData structure. More... | |
Detailed Description
Entity type is kA3DTypeCrvNurbs.
- Note
- This curve type contains neither A3DParameterizationData nor A3DMiscCartesianTransformationData.
Enumeration Type Documentation
enum A3DEBSplineCurveForm |
Enumerate to characterize curve form.
- Version
- 2.0
enum A3DEKnotType |
Function Documentation
A3DStatus A3DCrvBaseGetAsNurbs | ( | const A3DCrvBase * | pCrv, |
A3DDouble | dTolerance, | ||
A3DBool | bUseSameParameterization, | ||
A3DCrvNurbsData * | pData | ||
) |
Populates the A3DCrvNurbsData structure from any type of A3DCrvBase.
- Version
- 2.1
This structure must be freed with A3DCrvNurbsGet call.
- Warning
- This function can modify the parameterization for curve. You must treat related entities accordingly.
- Note
- dTolerance must be computed to obtain the final targeted precision. The inputs are:
- the tolerance that you want to achieve (that is: the maximum deviation between the original geometry and its approximation), which you should express in mm. This is the starting point with a physical significance.
- you have to take into account the body scale
- you have to take into account the part unit
- you have to take into account eventual additional scales in the product hierarchy to come up to the actual value that you should input for he function. Let’s assume that the part is in inches, that there is no scale (all set to 1.) in the product hierarchy, and that the body scale is 1000. As a reminder, here is how to interpret the meaning of the values stored in the curve’s data: let’s assume that you have a value of “0.1” stored for the curve definition (say a coordinate for a control point or an origin of cylinder axis). This value is to be interpreted as multiplied by the body scale (here: 1000.) and then expressed in the unit of the part. Thus this “0.1” corresponds physically to 0.1*1000=100 inches or 2500.4 mm. Hence, imagine that you want to convert this curve into a NURBS with a tolerance of 0.001 mm (which is a classical value), the calculation is following: tolerance to put = Wanted tolerance in mm / (body scale * unit in times mm); In example above, this leads to a final tolerance to put being 1/25.4 e-6 = 0.001 / (1000 * 25.4 mm); With this value, all the numbers which are manipulated at the “TopoContext” level, including for instance coordinates of control points, will be treated consistently with their physical significance.
- Warning
- This function can be called with any type of curve.
A3DStatus A3DCrvNurbsCreate | ( | const A3DCrvNurbsData * | pData, |
A3DCrvNurbs ** | ppCrv | ||
) |
Creates an A3DCrvNurbs from A3DCrvNurbsData structure.
- Version
- 2.0
A3DStatus A3DCrvNurbsGet | ( | const A3DCrvNurbs * | pCrv, |
A3DCrvNurbsData * | pData | ||
) |
Populates the A3DCrvNurbsData structure.
- Version
- 2.0