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

A3DCrvNurbsData

NURBS curve structure.

A3DCrvLineData

Structure for defining linear curves.

A3DCrvCircleData

Circle arc structure.

A3DCrvEllipseData

Elliptic curve structure.

A3DCrvParabolaData

Parabola arc structure.

A3DCrvHyperbolaData

Hyperbola arc structure.

A3DCrvPolyLineData

PolyLine structure.

A3DCrvCompositeData

Composite curve structure.

A3DCrvEquationData

Equation structure.

A3DCrvTransformData

Transform curve structure.

A3DCrvOnSurfData

Curve on Surface structure.

A3DCrvOffsetData

Offset structure.

A3DCrvHelixPitchCstData

Constant pitch structure for helix curves.

A3DCrvHelixPitchVarData

Variable Pitch structure for helical arc structure.

A3DCrvHelixData

Helical arc structure.

A3DCrossingPointsCrvIntersectionData

Crossing point curve intersection data.

A3DCrvIntersectionData

Intersection structure.

A3DCrvBlend02BoundaryData

Blend02Boundary structure.

Functions

A3DCrvNurbsGet()

Populates the A3DCrvNurbsData structure.

A3DCrvNurbsCreate()

Creates an A3DCrvNurbs from A3DCrvNurbsData structure.

A3DCrvBaseGetAsNurbs()

Populates the A3DCrvNurbsData structure from any type of A3DCrvBase .

A3DCrvLineGet()

Populates the A3DCrvLineData structure.

A3DCrvLineCreate()

Creates an A3DCrvLine from A3DCrvLineData structure.

A3DCrvCircleGet()

Populates the A3DCrvCircleData structure.

A3DCrvCircleCreate()

Creates an A3DCrvCircle from A3DCrvCircleData structure.

A3DCrvEllipseGet()

Populates the A3DCrvEllipseData structure.

A3DCrvEllipseCreate()

Creates an A3DCrvEllipse from A3DCrvEllipseData structure.

A3DCrvParabolaGet()

Populates the A3DCrvParabolaData structure.

A3DCrvParabolaCreate()

Creates an A3DCrvParabola from A3DCrvParabolaData structure.

A3DCrvHyperbolaGet()

Populates the A3DCrvHyperbolaData structure.

A3DCrvHyperbolaCreate()

Creates an A3DCrvHyperbola from A3DCrvHyperbolaData structure.

A3DCrvPolyLineGet()

Populates the A3DCrvPolyLineData structure.

A3DCrvPolyLineCreate()

Creates an A3DCrvPolyLine from A3DCrvPolyLineData structure.

A3DCrvCompositeGet()

Populates the A3DCrvCompositeData structure.

A3DCrvCompositeCreate()

Creates an A3DCrvPolyLine from A3DCrvCompositeData structure.

A3DCrvEquationGet()

Populates the A3DCrvEquationData structure.

A3DCrvEquationCreate()

Creates an A3DCrvEquation from A3DCrvEquationData structure.

A3DCrvTransformGet()

Populates the A3DCrvTransformData structure.

A3DCrvTransformCreate()

Creates an A3DCrvTransform from A3DCrvTransformData structure.

A3DCrvOnSurfGet()

Populates the A3DCrvOnSurfData structure.

A3DCrvOnSurfCreate()

Creates an A3DCrvOnSurf from A3DCrvOnSurfData structure.

A3DCrvOffsetGet()

Populates the A3DCrvOffsetData structure.

A3DCrvOffsetCreate()

Creates an A3DCrvOffset from A3DCrvOffsetData structure.

A3DCrvHelixGet()

Populates the A3DCrvHelixData structure.

A3DCrvHelixCreate()

Creates an A3DCrvHelix from A3DCrvHelixData structure.

A3DCrvIntersectionGet()

Populates the A3DCrvIntersectionData structure.

A3DCrvIntersectionCreate()

Creates an A3DCrvIntersection from A3DCrvIntersectionData structure.

A3DCrvBlend02BoundaryGet()

Populates the A3DCrvBlend02BoundaryData structure.

A3DCrvBlend02BoundaryCreate()

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