Eval on curves and surfaces
Types
Fields
|
|
Functions
Detailed Description
- group a3d_evaluate
Type Documentation
-
enum A3DEAnalyticType
Tells what kind of curve has been created by A3DGetCurveAsAnalytic.
- Version
5.0
Values:
-
enumerator kA3DAnalyticNone
No Curve.
-
enumerator kA3DAnalyticCircle
Changed to circle.
-
enumerator kA3DAnalyticAlreadyCircle
Kept as a circle.
-
enumerator kA3DAnalyticLine
Changed to Line.
-
enumerator kA3DAnalyticAlreadyLine
Kept as a line.
-
enumerator kA3DAnalyticCone
Changed to Cone.
-
enumerator kA3DAnalyticAlreadyCone
Kept as a cone.
-
enumerator kA3DAnalyticCylinder
Changed to Cylinder.
-
enumerator kA3DAnalyticAlreadyCylinder
Kept as a cylinder.
-
enumerator kA3DAnalyticPlane
Changed to Plane.
-
enumerator kA3DAnalyticAlreadyPlane
Kept as a plane.
-
enumerator kA3DAnalyticSphere
Changed to Sphere.
-
enumerator kA3DAnalyticAlreadySphere
Kept as a sphere.
-
enumerator kA3DAnalyticTorus
Changed to Torus.
-
enumerator kA3DAnalyticAlreadyTorus
Kept as a torus.
Field Documentation
- A3DStatus A3DGetCurveAsAnalytic param
Function to get curves as analytic (line or circle) according to a certain tolerance.
delete RTF data created by A3DMkpRTFInit
Get each independent field of a RTF data.
Calculates the bounding box of the model file entity, without using any callback functions.
Draws the markup item entities, using the callbacks defined by A3DDrawInitCallbacks.
Draws the representation item entities, using the callbacks defined by A3DDrawInitCallbacks.
Draws the model file entities, using the callbacks defined by A3DDrawInitCallbacks.
Enables internal SIGSEGV handling (Linux only)
Function to compute Hidden Line Removal on a A3DAsmModelFile.
Function to project Point Cloud on BrepModel with a A3DProjectPointCloudManager.
Function to get surface as analytic according to a certain tolerance.
Function to get curves as analytic (line or circle) according to a certain tolerance Try to use UV curves from Edges if exist, otherwise use 3D Curves.
Use A3DEntityDelete to delete the analytic curve after using it.
- Deprecated:
Use A3DSimplifyCurveWithAnalytics instead. This will be removed in version 2026.1.0.
- Deprecated:
use A3DSimplifyCurveWithAnalyticsFromCoEdge instead. This will be removed in version 2026.1.0.
- Deprecated:
use A3DSimplifySurfaceWithAnalytics instead. This will be removed in version 2026.1.0.
- Version
5.0
- Version
5.0
- Version
5.0
- Deprecated:
use A3DProjectPointCloud3 instead. This will be removed in version 2026.1.0.
- Version
8.1
Memory Management
In case of success,
ppProjectedPointCloud
contains heap allocated memory you are responsible for. To free the memory onppProjectedPointCloud
, callA3DProjectPointCloud2
by settingpManager
to 0. In this case, all other parameters are ignored:A3DProjectPointCloud2(0, 0, 0, A3D_FALSE, 0, 0.0, ppProjectedPointCloud);
- Deprecated:
use A3DComputeOrthoHLROnModelFile3 instead. This will be removed in version 2026.1.0.
- Version
8.1
- Deprecated:
use A3DComputeOrthoHLROnModelFile3 instead. This will be removed in version 2026.1.0.
- Version
9.0
Call A3DComputeOrthoHLROnModelFile2( NULL, NULL, NULL, pNumberHLRRepItem, pppHLRRepItem) to release pppHLRRepItem structure ( internal A3DCrvPolyLine was not released)
If
pOptMrkRView
is a cutting view,psSectionParametersData
can be set to0
. In this case, the cutting planes withinpOptMrkRView
are used for the computation. Planes must to ordered and be set a profile, otherwise the function will return#A3D_TOOLS_INVALID_SECTION_PLANE
.This function activates the handling of the SIGSEGV signal on Linux. When this function is activated, SIGSEGV is handled and an exception is thrown to return A3D_EXCEPTION.
Remark
If the model file doesn’t contain any representation item, the function will return
#A3D_INVALID_DATA error
- Deprecated:
the default behavior has changed with 11.2 to disable the SIGSEGV handling This will be removed in version 2026.1.0.
- Deprecated:
The Draw module is deprecated and will be removed in version 2026.1.0.
uiDrawFlags
argument, use the flags defined in Flags for Drawing Model File Entities.- Version
2.0
- Deprecated:
The Draw module is deprecated and will be removed in version 2026.1.0.
- Deprecated:
The Draw module is deprecated and will be removed in version 2026.1.0.
- Deprecated:
The Draw module is deprecated and will be removed in version 2026.1.0.
uiDrawFlags
argument, use the flags defined in Flags for Drawing Model File Entities.- Version
2.0
- Version
2.0
- Version
2.0
- Deprecated:
This function is deprecated. Please use A3DMkpRTFFieldGet instead to implement the same behaviour. This will be removed in version 2026.1.0.
- Version
4.2
- Deprecated:
This function is deprecated. Please use A3DMkpRTFFieldDelete instead to implement the same behaviour. This will be removed in version 2026.1.0.
- Version
4.2
Warning
must be deleted by the user
Warning
If A3DProjectPointCloudManagerCreateFromRI is used to create pManager, and A3DProjectPointCloudManagerDataFromRI::m_bUseExactComputation is set to false, you can’t set bUseExactComputation to true. In this case, an A3D_INVALID_DATA error is returned.
Warning
You must call this function before
A3DDllInitialize
- Retval A3D_SUCCESS:
if an analytic has been created
- Retval A3D_ERROR:
- Retval A3D_SUCCESS:
if an analytic has been created
- Retval A3D_ERROR:
- Return:
A3D_SUCCESS
on success, or an error code on failure- Return:
A3D_SUCCESS
on success, or an error code on failure- Param pSrf:
[in] The input surface
- Param dTol:
[in] Tolerance
- Param pAnalyticSurface:
[out] The new analytic surface.
- Param peAnalyticType:
[out] The type of analytic surface
- Retval A3D_SUCCESS:
- Retval A3D_INVALID_ENTITY_NULL:
- Retval A3D_INVALID_ENTITY_TYPE:
- Retval A3D_ERROR:
- Return:
A3D_SUCCESS
on success, or an error code on failure- Param pManager:
[in] A3DProjectPointCloudManager created by A3DProjectPointCloudManagerCreateFromModelFile function.
- Param uPointCloudSize:
[in] Number of points in pPointCloudToProject.
- Param pPointCloudToProject:
[in] Point cloud to project. This point cloud must be in the same coordinate system as the BrepData structures stored in BrepModel.
- Param bUseExactComputation:
[in] Flag to use exact topology. When this flag is false, the algorithm drops the point cloud on the faceted geometry, otherwise, the exact topology is used.
- Param uNbThreads:
[in] Number of threads wanted. 0 means non multi-thread. Please avoid setting a number of threads larger than the number of CPU cores.
- Param dInsidePointEdgeTolerance:
[in] Tolerance used to check if projection point which is inside a face is on edge.
- Param ppProjectedPointCloud:
[out] Point cloud projected.
- Retval A3D_SUCCESS:
- Retval A3D_INVALID_DATA_STRUCT_NULL:
- Retval A3D_INVALID_DATA_STRUCT_SIZE:
- Retval A3D_INVALID_ENTITY_TYPE:
- Retval A3D_INVALID_DATA:
- Retval A3D_ERROR:
- Return:
A3D_SUCCESS
on success, or an error code on failure- Param pModelFile:
[in] Model file to work on.
- Param pOptMrkRView:
[in] optional A3DMkpView (cut, filter and/or move entities).
- Param psHLRViewPlaneData:
[in] define a plane as a camera with orthogonal projection.
- Param pNumberHLRData:
[out] Number A3DHLRRepresentationItemData.
- Param pppHLRData:
[out] HLR curve result grouped by A3DRiRepresentationItem entity. pppHLRData is automatically allocated by A3DComputeOrthoHLROnModelFile.
- Retval A3D_SUCCESS:
- Retval A3D_INVALID_DATA_STRUCT_NULL:
- Retval A3D_INVALID_DATA_STRUCT_SIZE:
- Retval A3D_INVALID_ENTITY_TYPE:
- Retval A3D_INVALID_DATA:
- Retval A3D_ERROR:
- Retval A3D_INCOMPATIBLE_FUNCTION_WITH_KEEP_PARSED_ENTITY_MODE:
- Return:
A3D_SUCCESS
on success, or an error code on failure- Param pModelFile:
[in] Model file to work on.
- Param pOptMrkRView:
[in] optional A3DMkpView (cut, filter and/or move entities).
- Param psHLRViewPlaneData:
[in] define a plane as a camera with orthogonal projection.
- Param pNumberHLRRepItem:
[out] Number A3DHLRRepresentationItem.
- Param pppHLRRepItem:
[out] HLR curve result grouped by A3DRiRepresentationItem entity. pppHLRRepItem is automatically allocated by A3DComputeOrthoHLROnModelFile.
- Retval A3D_SUCCESS:
- Retval A3D_INVALID_DATA_STRUCT_NULL:
- Retval A3D_INVALID_DATA_STRUCT_SIZE:
- Retval A3D_INVALID_ENTITY_TYPE:
- Retval A3D_INVALID_DATA:
- Retval A3D_ERROR:
- Retval A3D_TOOLS_INVALID_SECTION_PLANE:
- Retval A3D_INCOMPATIBLE_FUNCTION_WITH_KEEP_PARSED_ENTITY_MODE:
- Return:
A3D_SUCCESS
on success, or an error code on failure- Retval A3D_SUCCESS:
- Retval A3D_ERROR:
if not on Linux
- Return:
A3D_SUCCESS
on success, or an error code on failure- Retval A3D_INITIALIZE_NOT_CALLED:
- Retval A3D_INVALID_DATA_STRUCT_SIZE:
- Retval A3D_INVALID_DATA_STRUCT_NULL:
- Retval A3D_INVALID_ENTITY_NULL:
- Retval A3D_INVALID_ENTITY_TYPE:
- Retval A3D_SUCCESS:
- Retval A3D_INITIALIZE_NOT_CALLED:
- Retval A3D_INVALID_DATA_STRUCT_SIZE:
- Retval A3D_INVALID_DATA_STRUCT_NULL:
- Retval A3D_INVALID_ENTITY_NULL:
- Retval A3D_INVALID_ENTITY_TYPE:
- Retval A3D_SUCCESS:
- Retval A3D_INITIALIZE_NOT_CALLED:
- Retval A3D_INVALID_DATA_STRUCT_SIZE:
- Retval A3D_INVALID_DATA_STRUCT_NULL:
- Retval A3D_INVALID_ENTITY_NULL:
- Retval A3D_INVALID_ENTITY_TYPE:
- Retval A3D_SUCCESS:
- Return:
A3D_SUCCESS
on success, or an error code on failure- Return:
A3D_SUCCESS
on success, or an error code on failure- Return:
A3D_SUCCESS
on success, or an error code on failure- Retval A3D_INITIALIZE_NOT_CALLED:
- Retval A3D_INVALID_DATA_STRUCT_SIZE:
- Retval A3D_INVALID_DATA_STRUCT_NULL:
- Retval A3D_INVALID_ENTITY_NULL:
- Retval A3D_INVALID_ENTITY_TYPE:
- Retval A3D_SUCCESS:
- Return:
A3D_SUCCESS
on success, or an error code on failure- Retval A3D_ERROR:
- Retval A3D_SUCCESS:
- Return:
A3D_SUCCESS
on success, or an error code on failure- Retval A3D_ERROR:
- Retval A3D_SUCCESS:
- Return:
A3D_SUCCESS
on success, or an error code on failure
Function Documentation
-
A3DStatus A3DCrvGetInterval(const A3DCrvBase *pCrv, A3DIntervalData *pInterval)
Function to get a curve parametric interval.
- Return values:
A3D_SUCCESS –
- Returns:
A3D_SUCCESS
on success, or an error code on failure
-
A3DStatus A3DCrvEvaluate(const A3DCrvBase *pCrv, A3DDouble dParameter, A3DUns32 uiNbDerivatives, A3DVector3dData *pPointAndDerivatives)
Function to evaluate a point and the derivatives of a curve at a parameter.
Derivatives are stored in the following order:
pPointAndDerivatives size must be equal to (uiNbDerivatives+1):\li With uiNbDerivatives = 0: Point \li With uiNbDerivatives = 1: Point, First Derivative \li With uiNbDerivatives = 2: Point, First Derivative, Second Derivative
size = 1 if uiNbDerivatives=0
size = 2 if uiNbDerivatives=1;
size = 3 if uiNbDerivatives=2;
- Version
4.0
Warning
The number of derivatives must be less than or equal to 2.
- Return values:
A3D_SUCCESS –
A3D_ERROR –
- Returns:
A3D_SUCCESS
on success, or an error code on failure
-
A3DStatus A3DCrvEvaluatePointAndNormal(A3DCrvBase const *psCrv, A3DDouble dParameter, A3DUns32 uiNbSurfaces, A3DSurfBase **ppsSurfaces, A3DUns32 uiNbDerivatives, A3DVector3dData *psPointAndDerivatives, A3DVector3dData *psNormal)
Function to evaluate a point and the derivatives of a curve at a parameter, then the normal of this point to each of the given surfaces.
Derivatives are stored in the following order:
psPointAndDerivatives size must be equal to (uiNbDerivatives+1):\li With uiNbDerivatives = 0: Point \li With uiNbDerivatives = 1: Point, First Derivative \li With uiNbDerivatives = 2: Point, First Derivative, Second Derivative
size = 1 if uiNbDerivatives=0
size = 2 if uiNbDerivatives=1;
size = 3 if uiNbDerivatives=2; psNormal size must be equal to the uiNbSurfaces, the number of given surfaces. Life time of psPointAndDerivatives and psNormal must be handled by the user.
- Version
8.2
Warning
The number of derivatives must be less than or equal to 2.
- Return values:
A3D_SUCCESS –
A3D_ERROR –
- Returns:
A3D_SUCCESS
on success, or an error code on failure
-
A3DStatus A3DCrvIsPeriodic(const A3DCrvBase *pCrv, A3DBool *pbIsPeriodic)
Function to determine if a curve is periodic.
- Version
10.1
- Parameters:
pCrv – [in] The input curve.
pbIsPeriodic – [out] The returned value.
- Return values:
A3D_SUCCESS –
A3D_ERROR –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
- Returns:
A3D_SUCCESS
on success, or an error code on failure
-
A3DStatus A3DSurfGetDomain(const A3DSurfBase *pSrf, A3DDomainData *pDomain)
Function to get a surface parametric domain.
- Return values:
A3D_SUCCESS –
- Returns:
A3D_SUCCESS
on success, or an error code on failure
-
A3DStatus A3DSurfEvaluate(const A3DSurfBase *pSurf, const A3DVector2dData *pUVParameter, A3DUns32 uiNbDerivatives, A3DVector3dData *pPointAndDerivatives)
Evaluate a point and its derivative on a surface.
This function evaluates the point and its derivatives (1st and 2nd) on the surface
pSurf
given thepUVParameter
coordinates.- Version
4.0
Reading the Result
If the function successfully evaluates
pUVParameter
onpSurf
, the memory atpPointAndDerivatives
is filled with a row-major 2D array representing the derivatives in the order of u and v.u
v
Content
Description
uiNbDerivatives
0
0
Point
The evaluated point at
pUVParameter
0
1
V
First derivative with respect to v
>= 1
0
2
V2
Second derivative with respect to v
== 2
1
0
U
First derivative with respect to u
>= 1
1
1
UV
Mixed first derivates (u and v)
== 2
1
2
U2
Second derivative with respect to u
== 2
To retrieve the value in the table given the partial derivative orders
u
andv
use:pPointAndDerivatives[u * (uiNbDerivatives+1) + v]
When
uiNbDerivatives
is 0, the table contains a single element:0
0
Point
When
uiNbDerivatives
is 1, the array has 2 rows and 2 columns:0
1
0
Point
V
1
U
When
uiNbDerivatives
is 2, the table has 3 rows and 3 columns:0
1
2
0
Point
V
V2
1
U
UV
2
U2
Memory Layout
As a 2D array expressed in a C-style array, the memory layout for
pPointAndDerivatives
depends on the value ofuiNbDerivatives
:The memory layout for
pPointAndDerivatives
is as follows:uiNbDerivatives
0
1
2
3
4
5
6
7
8
0
Point
1
Point
V
U
2
Point
V
V2
U
UV
U2
The values left blank in this table correspond to uninitialized data. Dereferencing them is unsupported behavior.
Memory Management
The pointer
pPointAndDerivatives
must reference an already initialized array of A3DVector3dData. The allocated memory should be sufficient to store all results, and the required size depends on the value ofuiNbDerivatives
:uiNbDerivates
= 0: 1 element.uiNbDerivates
= 1: 4 elements.uiNbDerivates
= 2: 9 elements.
pPointAndDerivatives
must point to an allocated memory ofsizeof(A3DVector3dData * (uiNbDerivates + 1) * (uiNbDerivates + 1))
.A3DSurfEvaluate does not perform bound checking. Therefore, it is the caller’s responsibility to ensure that the allocated memory is sufficient.
- Parameters:
pSurf – The surface on which the point will be evaluated.
pUVParameter – The coordinates of the point to evaluate, expressed in UV parameeters on
pSurf
.uiNbDerivatives – The number of derivatives to evaluate. This value cannot exceed 2.
pPointAndDerivatives – The resulting evaluation, stored in this pointer.
- Return values:
A3D_SUCCESS –
A3D_ERROR – if
uiNbDerivatives
> 2A3D_ERROR – if
pSurf
is 0A3D_ERROR – if
pUVParameter
is 0A3D_ERROR – if
pPointAndDerivatives
is 0A3D_ERROR – if evaluation is not possible.
- Returns:
A3D_SUCCESS
on success, or an error code on failure
-
A3DStatus A3DSurfIsDegenerated(const A3DSurfBase *pSurf, const A3DVector2dData *pUVParameter, A3DDouble dTolerance, A3DBool *pbIsDegenerated, A3DBool *pbUDirection)
Function to determine if a surface is degenerated at a point.
- Version
9.0
- Parameters:
pSurf – [in] The input surface.
pUVParameter – [in] The coordinates of the point.
dTolerance – [in] The tolerance of the test.
pbIsDegenerated – [out] The returned value.
pbUDirection – [out] The direction of the degeneracy if a degeneracy is detected (true = U direction, and false = V direction).
- Return values:
A3D_SUCCESS –
A3D_ERROR –
- Returns:
A3D_SUCCESS
on success, or an error code on failure
-
A3DStatus A3DSurfIsPeriodic(const A3DSurfBase *pSrf, A3DBool *pbUIsPeriodic, A3DBool *pbVIsPeriodic)
Function to determine if a surface is periodic.
- Version
10.1
- Parameters:
pSrf – [in] The input surface.
pbUIsPeriodic – [out] The returned value for u direction.
pbVIsPeriodic – [out] The returned value for v direction.
- Return values:
A3D_SUCCESS –
A3D_ERROR –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
- Returns:
A3D_SUCCESS
on success, or an error code on failure
-
A3DStatus A3DSurfIsG1Continuous(const A3DSurfBase *pSurf, const A3DVector2dData *pUVParameter, A3DDouble dAngleTolerance, A3DBool *pbUG1Continuous, A3DBool *pbVG1Continuous)
Function to determine if a surface is G1 discontinuous at a point.
- Version
9.0
- Parameters:
pSurf – [in] The input surface.
pUVParameter – [in] The coordinates of the point.
dAngleTolerance – [in] The derivative angle tolerance.
pbUG1Continuous – [out] The returned value for u direction.
pbVG1Continuous – [out] The returned value for v direction.
- Return values:
A3D_SUCCESS –
A3D_ERROR –
- Returns:
A3D_SUCCESS
on success, or an error code on failure
-
A3DStatus A3DSimplifyCurveWithAnalytics(const A3DCrvBase *pCurve, A3DDouble dTol, A3DUns32 uNbRecognizedType, A3DEEntityType const *pOptRecognizedType, A3DCrvBase **pAnalyticCurve, A3DEAnalyticType *peAnalyticType)
Function to get curves as analytic (line or circle) according to a certain tolerance.
Use A3DEntityDelete to delete the analytic curve after using it. Recognized curve type are: Linear Curve Circular Curve If uNbRecognizedType and pOptRecognizedType are defined, A3DSimplifyCurveWithAnalytics recognizes only given types.
- Version
7.0
Warning
must be deleted by the user.
- Parameters:
pCurve – [inout] The input curve.
dTol – [in] The tolerance.
uNbRecognizedType – [in] Size of array pOptRecognizedType.
pOptRecognizedType – [in] Optional type of curve we want to recognize.
pAnalyticCurve – [out] The new analytic curve.
peAnalyticType – [out] The type of analytic curve.
- Return values:
A3D_SUCCESS – if an analytic has been created
A3D_ERROR –
- Returns:
A3D_SUCCESS
on success, or an error code on failure
-
A3DStatus A3DSimplifyCurveWithAnalyticsFromCoEdge(const A3DTopoCoEdge *pCoEdge, A3DDouble dTol, A3DUns32 uNbRecognizedType, A3DEEntityType const *pOptRecognizedType, A3DCrvBase **pAnalyticCurve, A3DEAnalyticType *peAnalyticType)
Function to get curves as analytic (line or circle) according to a certain tolerance Try to use 3D curves from Edges if exist, otherwise use UV Curves on CoEdge.
Use A3DEntityDelete to delete the analytic curve after using it. Recognize curve type are: Linear Curve Circular Curve If uNbRecognizedType and pOptRecognizedType are defined, A3DSimplifyCurveWithAnalytics recognizes only given types.
- Version
7.0
Warning
must be deleted by the user.
- Parameters:
pCoEdge – [in] The input coEdge.
dTol – [in] The tolerance.
uNbRecognizedType – [in] Size of array pOptRecognizedType.
pOptRecognizedType – [in] Optional type of curve we want to recognize.
pAnalyticCurve – [out] The new analytic curve.
peAnalyticType – [out] The type of analytic curve.
- Return values:
A3D_SUCCESS – if an analytic has been created
A3D_ERROR –
- Returns:
A3D_SUCCESS
on success, or an error code on failure
-
A3DStatus A3DSimplifySurfaceWithAnalytics(A3DSurfBase const *pSrf, A3DDouble dTol, A3DUns32 uNbRecognizedType, A3DEEntityType const *pOptRecognizedType, A3DSurfBase **pAnalyticSurface, A3DEAnalyticType *peAnalyticType)
Function to get surface as analytic according to a certain tolerance.
Use A3DEntityDelete to delete the analytic surface after using it. Recognized surface type are Conic Surface Cylindrical Surface Plane Surface Spherical Surface Toric Surface If uNbRecognizedType and pOptRecognizedType are defined, A3DSimplifySurfaceWithAnalytics recognizes only given types.
- Version
7.0
Warning
must be deleted by the user.
- Parameters:
pSrf – [in] The input surface.
dTol – [in] Tolerance.
uNbRecognizedType – [in] Size of array pOptRecognizedType.
pOptRecognizedType – [in] Optional type of surface we want to recognize.
pAnalyticSurface – [out] The new analytic surface.
peAnalyticType – [out] The type of analytic surface.
- Return values:
A3D_SUCCESS –
A3D_INVALID_ENTITY_NULL –
A3D_INVALID_ENTITY_TYPE –
A3D_ERROR –
- Returns:
A3D_SUCCESS
on success, or an error code on failure
-
A3DStatus A3DSurfEvaluateNormal(const A3DSurfBase *pSurf, const A3DVector2dData *pUVParameter, A3DVector3dData *pNormal)
Function to evaluate a normal on a surface.
- Parameters:
pSurf – [in] The input surface.
pUVParameter – [in] The input UV point to evaluate the normal of the surface.
pNormal – [out] The normal of the surface at the UV parameter.
- Return values:
A3D_SUCCESS –
A3D_INVALID_DATA_STRUCT_NULL –
A3D_INVALID_DATA_STRUCT_SIZE –
A3D_INVALID_ENTITY_TYPE –
A3D_ERROR –
- Returns:
A3D_SUCCESS
on success, or an error code on failure