A3DSDKGeometryCrv.h
Header file for curve entities.
- Author
Tech Soft 3D
- Version
23.0
- Date
January 2023
- Copyright (c) 2010 - 2023 by Tech Soft 3D, Inc. All rights reserved.
Content
Data Structures
NURBS curve structure. |
|
Structure for defining linear curves. |
|
Circle arc structure. |
|
Elliptic curve structure. |
|
Parabola arc structure. |
|
Hyperbola arc structure. |
|
PolyLine structure. |
|
Composite curve structure. |
|
Equation structure. |
|
Transform curve structure. |
|
Curve on Surface structure. |
|
Offset structure. |
|
Constant pitch structure for helix curves. |
|
Variable Pitch structure for helical arc structure. |
|
Helical arc structure. |
|
Crossing point curve intersection data. |
|
Intersection structure. |
|
Blend02Boundary structure. |
Functions
Populates the A3DCrvNurbsData structure. |
|
Creates an A3DCrvNurbs from A3DCrvNurbsData structure. |
|
Populates the A3DCrvNurbsData structure from any type of A3DCrvBase . |
|
Populates the A3DCrvLineData structure. |
|
Creates an A3DCrvLine from A3DCrvLineData structure. |
|
Populates the A3DCrvCircleData structure. |
|
Creates an A3DCrvCircle from A3DCrvCircleData structure. |
|
Populates the A3DCrvEllipseData structure. |
|
Creates an A3DCrvEllipse from A3DCrvEllipseData structure. |
|
Populates the A3DCrvParabolaData structure. |
|
Creates an A3DCrvParabola from A3DCrvParabolaData structure. |
|
Populates the A3DCrvHyperbolaData structure. |
|
Creates an A3DCrvHyperbola from A3DCrvHyperbolaData structure. |
|
Populates the A3DCrvPolyLineData structure. |
|
Creates an A3DCrvPolyLine from A3DCrvPolyLineData structure. |
|
Populates the A3DCrvCompositeData structure. |
|
Creates an A3DCrvPolyLine from A3DCrvCompositeData structure. |
|
Populates the A3DCrvEquationData structure. |
|
Creates an A3DCrvEquation from A3DCrvEquationData structure. |
|
Populates the A3DCrvTransformData structure. |
|
Creates an A3DCrvTransform from A3DCrvTransformData structure. |
|
Populates the A3DCrvOnSurfData structure. |
|
Creates an A3DCrvOnSurf from A3DCrvOnSurfData structure. |
|
Populates the A3DCrvOffsetData structure. |
|
Creates an A3DCrvOffset from A3DCrvOffsetData structure. |
|
Populates the A3DCrvHelixData structure. |
|
Creates an A3DCrvHelix from A3DCrvHelixData structure. |
|
Populates the A3DCrvIntersectionData structure. |
|
Creates an A3DCrvIntersection from A3DCrvIntersectionData structure. |
|
Populates the A3DCrvBlend02BoundaryData structure. |
|
Creates an A3DCrvBlend02Boundary from A3DCrvBlend02BoundaryData structure. |
Functions
-
A3DStatus A3DCrvNurbsGet(const A3DCrvNurbs *pCrv, A3DCrvNurbsData *pData)
Populates the A3DCrvNurbsData structure.
- Version
2.0
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_CRV_NURBS_CANNOT_ACCESS_CONTROL_POINTS –
A3D_CRV_NURBS_INCONSISTENT_DATA –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvNurbsCreate(const A3DCrvNurbsData *pData, A3DCrvNurbs **ppCrv)
Creates an A3DCrvNurbs from A3DCrvNurbsData structure.
- Version
2.0
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INTERVAL_INCONSISTENT_DATA –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvBaseGetAsNurbs(const A3DCrvBase *pCrv, A3DDouble dTolerance, A3DBool bUseSameParameterization, A3DCrvNurbsData *pData)
Populates the A3DCrvNurbsData structure from any type of A3DCrvBase.
This structure must be freed with A3DCrvNurbsGet call.
- Version
2.1
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 modify the parameterization for curve. You must treat related entities accordingly.
Warning
This function can be called with any type of curve.
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INTERVAL_INCONSISTENT_DATA –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvLineGet(const A3DCrvLine *pCrv, A3DCrvLineData *pData)
Populates the A3DCrvLineData structure.
- Version
2.0
Note
Y vector from A3DMiscCartesianTransformationData has no particular meaning in this case and must be ignored.
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvLineCreate(const A3DCrvLineData *pData, A3DCrvLine **ppCrv)
Creates an A3DCrvLine from A3DCrvLineData structure.
- Version
2.0
Note
The Y vector from A3DMiscCartesianTransformationData has no particular meaning in this case, but must be set so that it is normed and perpendicular to the X vector. This is mandatory.
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INTERVAL_INCONSISTENT_DATA –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvCircleGet(const A3DCrvCircle *pCrv, A3DCrvCircleData *pData)
Populates the A3DCrvCircleData structure.
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvCircleCreate(const A3DCrvCircleData *pData, A3DCrvCircle **ppCrv)
Creates an A3DCrvCircle from A3DCrvCircleData structure.
- Version
2.0
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INTERVAL_INCONSISTENT_DATA –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvEllipseGet(const A3DCrvEllipse *pCrv, A3DCrvEllipseData *pData)
Populates the A3DCrvEllipseData structure.
- Version
2.0
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvEllipseCreate(const A3DCrvEllipseData *pData, A3DCrvEllipse **ppCrv)
Creates an A3DCrvEllipse from A3DCrvEllipseData structure.
- Version
2.0
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INTERVAL_INCONSISTENT_DATA –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvParabolaGet(const A3DCrvParabola *pCrv, A3DCrvParabolaData *pData)
Populates the A3DCrvParabolaData structure.
- Version
2.0
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvParabolaCreate(const A3DCrvParabolaData *pData, A3DCrvParabola **ppCrv)
Creates an A3DCrvParabola from A3DCrvParabolaData structure.
- Version
2.0
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INTERVAL_INCONSISTENT_DATA –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvHyperbolaGet(const A3DCrvHyperbola *pCrv, A3DCrvHyperbolaData *pData)
Populates the A3DCrvHyperbolaData structure.
- Version
2.0
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvHyperbolaCreate(const A3DCrvHyperbolaData *pData, A3DCrvHyperbola **ppCrv)
Creates an A3DCrvHyperbola from A3DCrvHyperbolaData structure.
- Version
2.0
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INTERVAL_INCONSISTENT_DATA –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvPolyLineGet(const A3DCrvPolyLine *pCrv, A3DCrvPolyLineData *pData)
Populates the A3DCrvPolyLineData structure.
- Version
2.0
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvPolyLineCreate(const A3DCrvPolyLineData *pData, A3DCrvPolyLine **ppCrv)
Creates an A3DCrvPolyLine from A3DCrvPolyLineData structure.
- Version
2.0
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INTERVAL_INCONSISTENT_DATA –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvCompositeGet(const A3DCrvComposite *pCrv, A3DCrvCompositeData *pData)
Populates the A3DCrvCompositeData structure.
- Version
2.0
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvCompositeCreate(const A3DCrvCompositeData *pData, A3DCrvComposite **ppCrv)
Creates an A3DCrvPolyLine from A3DCrvCompositeData structure.
- Version
2.0
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INTERVAL_INCONSISTENT_DATA –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvEquationGet(const A3DCrvEquation *pCrv, A3DCrvEquationData *pData)
Populates the A3DCrvEquationData structure.
- Version
2.0
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvEquationCreate(const A3DCrvEquationData *pData, A3DCrvEquation **ppCrv)
Creates an A3DCrvEquation from A3DCrvEquationData structure.
- Version
2.0
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_CRV_EQUATION_CANNOT_CREATE_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvTransformGet(const A3DCrvTransform *pCrv, A3DCrvTransformData *pData)
Populates the A3DCrvTransformData structure.
- Version
2.0
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvTransformCreate(const A3DCrvTransformData *pData, A3DCrvTransform **ppCrv)
Creates an A3DCrvTransform from A3DCrvTransformData structure.
- Version
2.0
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_CRV_TRANSFORM_CANNOT_CREATE_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvOnSurfGet(const A3DCrvOnSurf *pCrv, A3DCrvOnSurfData *pData)
Populates the A3DCrvOnSurfData structure.
- Version
2.0
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvOnSurfCreate(const A3DCrvOnSurfData *pData, A3DCrvOnSurf **ppCrv)
Creates an A3DCrvOnSurf from A3DCrvOnSurfData structure.
- Version
2.0
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_CRV_CRVONSURF_CANNOT_CREATE_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvOffsetGet(const A3DCrvOffset *pCrv, A3DCrvOffsetData *pData)
Populates the A3DCrvOffsetData structure.
- Version
2.0
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvOffsetCreate(const A3DCrvOffsetData *pData, A3DCrvOffset **ppCrv)
Creates an A3DCrvOffset from A3DCrvOffsetData structure.
- Version
2.0
Warning
Associated transformation must be Identity
Warning
Trimming interval must be defined inside curve definition
Warning
Parameterization must have CoeffA = 1. and CoeffB = 0.
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_CRV_OFFSET_CANNOT_CREATE_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvHelixGet(const A3DCrvHelix *pCrv, A3DCrvHelixData *pData)
Populates the A3DCrvHelixData structure.
- Version
2.0
- Attention
FUNCTION IS NOT IMPLEMENTED YET
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvHelixCreate(const A3DCrvHelixData *pData, A3DCrvHelix **ppCrv)
Creates an A3DCrvHelix from A3DCrvHelixData structure.
- Version
2.0
- Attention
FUNCTION IS NOT IMPLEMENTED YET
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INTERVAL_INCONSISTENT_DATA –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvIntersectionGet(const A3DCrvIntersection *pCrv, A3DCrvIntersectionData *pData)
Populates the A3DCrvIntersectionData structure.
Not yet implemented.
- Version
2.0
- Attention
FUNCTION IS NOT IMPLEMENTED YET
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvIntersectionCreate(const A3DCrvIntersectionData *pData, A3DCrvIntersection **ppCrv)
Creates an A3DCrvIntersection from A3DCrvIntersectionData structure.
Not yet implemented.
- Version
2.0
- Attention
FUNCTION IS NOT IMPLEMENTED YET
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INTERVAL_INCONSISTENT_DATA –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvBlend02BoundaryGet(const A3DCrvBlend02Boundary *pCrv, A3DCrvBlend02BoundaryData *pData)
Populates the A3DCrvBlend02BoundaryData structure.
Not yet implemented.
- Version
2.0
- Attention
FUNCTION IS NOT IMPLEMENTED YET
- Return values
A3D_INITIALIZE_NOT_CALLED –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_CRV_CANNOT_ACCESS_CANONICAL –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code
-
A3DStatus A3DCrvBlend02BoundaryCreate(const A3DCrvBlend02BoundaryData *pData, A3DCrvBlend02Boundary **ppCrv)
Creates an A3DCrvBlend02Boundary from A3DCrvBlend02BoundaryData structure.
Not yet implemented.
- Version
2.0
- Attention
FUNCTION IS NOT IMPLEMENTED YET
- Return values
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INTERVAL_INCONSISTENT_DATA –
A3D_SUCCESS –
- Returns
A3D_SUCCESS in case of success or an error code