A3DSDKAdvancedTools.h File Reference

Header file for surface entities. More...

Data Structures

struct  A3DCompareInputData
 A3DCompareInputData structure that contains input data of A3DCompareFaces. More...
 
struct  A3DCompareOutputData
 A3DCompareOutputData structure that contains result data of A3DCompareFaces or A3DCompareFacesInBrepModels. More...
 
struct  A3DFaceUVPointInsideManagerData
 A3DFaceUVPointInsideManager structure. More...
 
struct  A3DHLRCurveData
 A3DHLRCurveData structure. More...
 
struct  A3DHLRRepresentationItemData
 A3DHLRCurveData structure. More...
 
struct  A3DHLRSectionFaceData
 A3DHLRSectionFaceData structure. More...
 
struct  A3DHLRViewPlaneData
 A3DHLRViewPlaneData structure. More...
 
struct  A3DMultiPlanarSectionData
 
struct  A3DPlanarSectionData
 A3DPlanarSectionData structure. More...
 
struct  A3DProjectedPointCloudData
 A3DProjectedPointCloudData structure. More...
 
struct  A3DProjectPointCloudManagerDataFromRI
 A3DProjectPointCloudManagerDataFromRI sructure. More...
 

Functions

A3DStatus A3DAsmModelFileSew (A3DAsmModelFile **ppModelFile, A3DDouble dToleranceInMM)
 Function to sew one model file. More...
 
A3DStatus A3DCompareFaces (A3DCompareInputData *pInput, A3DCompareOutputData *pOutput)
 Function to compare the faces of two groups of A3DRiBrepModel. This function will detect if every points in a face of the first group (referenced as group of the old faces) can be projected to one of the faces of the other group (referenced as group of the new faces) within the given tolerance. This is useful for exemple to understand what has changed in a part between two versions: a hole has been added, an edge has been blended. More...
 
A3DStatus A3DCompareFacesInBrepModels (A3DAsmModelFile *pOldModelFile, A3DAsmModelFile *pNewModelFile, A3DDouble dToleranceInMM, A3DCompareOutputData *pOutput)
 Function to compare the faces of two A3DAsmModelFile. This is the same as A3DCompareFaces except that A3DRiBrepModel will be found by traversing the two A3DAsmModelFile. More...
 
A3DStatus A3DComputeOrthoHLROnModelFile (A3DAsmModelFile const *pModelFile, A3DMkpView const *pOptMrkRView, A3DHLRViewPlaneData const *psHLRViewPlaneData, A3DUns32 *pNumberHLRData, A3DHLRRepresentationItemData **pppHLRData)
 Function to compute Hidden Line Removal on a A3DAsmModelFile. More...
 
A3DStatus A3DComputeOrthoHLROnModelFile2 (A3DAsmModelFile const *pModelFile, A3DMkpView const *pOptMrkRView, A3DHLRViewPlaneData const *psHLRViewPlaneData, A3DUns32 *pNumberHLRRepItem, A3DHLRRepresentationItem ***pppHLRRepItem)
 Function to compute Hidden Line Removal on a A3DAsmModelFile. More...
 
A3DStatus A3DComputeOrthoHLROnRepresentationItems (A3DUns32 uiNbRepItems, A3DRiRepresentationItem const **apRepItems, A3DDouble **pOptPlacements, A3DHLRViewPlaneData const *psHLRViewPlaneData, A3DUns32 *pNumberHLRData, A3DHLRRepresentationItemData **pppHLRData)
 Function to compute Hidden Line Removal on a set of A3DRiRepresentationItem. More...
 
A3DStatus A3DComputePlanarSectionOnModelFile (A3DAsmModelFile const *pModelFile, A3DPlanarSectionData const *psSectionParametersData, A3DUns32 *pNumberOfSections, A3DRiSet ***pppRISectionElements)
 Function to compute plane section on ModelFile. More...
 
A3DStatus A3DComputePlanarSectionOnRepresentationItem (A3DRiBrepModel const *pRiBrepModel, A3DPlanarSectionData const *psSectionParametersData, A3DRiSet **ppRISectionResults)
 Function to compute plane section on BrepModel. More...
 
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
. More...
 
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
. More...
 
A3DStatus A3DCrvGetInterval (const A3DCrvBase *pCrv, A3DIntervalData *pInterval)
 Function to get a curve parametric interval. More...
 
A3DStatus A3DCrvLocalProjectPoint (const A3DCrvBase *pCrv, const A3DVector3dData *pPointToProject, A3DDouble dGuessParameter, A3DBool *pbFindSolution, A3DDouble *pdSolutionParameter, A3DDouble *pdSolutionDistance)
 This function projects a point on a curve with a guess parameter pdSolutionParameter and pdSolutionDistance give the parameter on the curve and the spatial distance between pPointToProject and the solution (on the curve). More...
 
A3DStatus A3DCrvProjectPoint (const A3DCrvBase *pCrv, const A3DVector3dData *pPointToProject, A3DUns32 *puiNbSolutions, A3DDouble **ppdSolutionParameter, A3DDouble **ppdSolutionDistance)
 This function projects a point on a curve The number of returned solutions is given by puiNbSolutions and for each one, ppdSolutionParameter and ppdSolutionDistance arrays give the parameter on the curve and the spatial distance between pPointToProject and the solution (on the curve). More...
 
A3DStatus A3DCurveLength (const A3DCrvBase *pCrv, A3DIntervalData *pOptInterval, A3DDouble *pdLength)
 Function to compute the length of a curve (optionally restricted to an interval) More...
 
A3DStatus A3DCutWithMultiPlanarSectionOnModelFile (A3DAsmModelFile const *pModelFile, A3DMkpView const *pOptMrkRView, A3DMultiPlanarSectionData const *psSectionParametersData, A3DUns32 *pNumberOfRepItems, A3DRiRepresentationItem ***pppRIRepresentationItem, A3DRiRepresentationItem ***pppRIPlanarSections)
 Function to compute the result of a section with several plane on a A3DAsmModelFile. More...
 
A3DStatus A3DCutWithMultiPlanarSectionOnRepresentationItems (A3DUns32 uiNbRepItems, A3DRiRepresentationItem const **apRepItems, A3DDouble **pOptPlacements, A3DMultiPlanarSectionData const *psSectionParametersData, A3DUns32 *pNumberOfRepItems, A3DRiRepresentationItem ***pppRIRepresentationItem, A3DRiRepresentationItem ***pppRIPlanarSections)
 Function to compute the result of a section with several plane on a set of A3DRiRepresentationItem. More...
 
A3DStatus A3DFaceUVPointInside (A3DFaceUVPointInsideManager *pManager, A3DTopoFace const *psFace, A3DVector2dData const *pUVParameter, A3DDouble dTol3D, A3DUns8 *puiUVInFace)
 This function projects a UV point on a face, and return if it's inside or not. puiUVInFace gives the result: 0 if the point is outside the face, and 1 if it's inside. dTol3D is used to check if a UV point is on edges. If it's set to zero and the point is not inside the face but potentially on its edges, the tolerance check will not happen. More...
 
A3DStatus A3DFaceUVPointInsideManagerCreate (A3DFaceUVPointInsideManagerData const *pData, A3DFaceUVPointInsideManager **pManager)
 Creates an A3DFaceUVPointInsideManager from an A3DFaceUVPointInsideManagerData structure. More...
 
A3DStatus A3DFaceUVPointInsideManagerDelete (A3DFaceUVPointInsideManager *pManager)
 Deletes an A3DFaceUVPointInsideManager. More...
 
A3DStatus A3DGetCurveAsAnalytic (const A3DCrvBase *pCurve, double dTol, 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. More...
 
A3DStatus A3DGetCurveAsAnalyticFromCoEdge (const A3DTopoCoEdge *pCoEdge, double dTol, A3DCrvBase **pAnalyticCurve, A3DEAnalyticType *peAnalyticType)
 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. More...
 
A3DStatus A3DGetSurfaceAsAnalytic (A3DSurfBase const *pSrf, double dTol, 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. More...
 
A3DStatus A3DHLRRepresentationItemGet (A3DHLRRepresentationItem const *pHLRRepItem, A3DHLRRepresentationItemData *psRIData)
 Populates the A3DHLRRepresentationItemData structure. More...
 
A3DStatus A3DProjectPointCloud (unsigned int uRiBrepModelSize, A3DRiBrepModel **pRiBrepModel, A3DUns32 uPointCloudSize, A3DVector3dData *pPointCloudToProject, A3DBool bUseExactComputation, A3DUns32 uNbThreads, A3DProjectedPointCloudData **ppProjectedPointCloud)
 Function to project Point Cloud on BrepModel. More...
 
A3DStatus A3DProjectPointCloud2 (A3DProjectPointCloudManager *pManager, A3DUns32 uPointCloudSize, A3DVector3dData *pPointCloudToProject, A3DBool bUseExactComputation, A3DUns32 uNbThreads, A3DDouble dInsidePointEdgeTolerance, A3DProjectedPointCloudData **ppProjectedPointCloud)
 Function to project Point Cloud on BrepModel with a A3DProjectPointCloudManager. More...
 
A3DStatus A3DProjectPointCloudManagerCreateFromModelFile (A3DAsmModelFile *pModelFile, A3DProjectPointCloudManager **pManager)
 Create a Point Cloud Manager from a A3DAsmModelFile. More...
 
A3DStatus A3DProjectPointCloudManagerCreateFromRI (A3DProjectPointCloudManagerDataFromRI *pData, A3DProjectPointCloudManager **pManager)
 Create a Point Cloud Manager from a set of A3DRiRepresentationItem with matrix placement. More...
 
A3DStatus A3DProjectPointCloudManagerDelete (A3DProjectPointCloudManager *pManager)
 Deletes an A3DProjectPointCloudManager. More...
 
A3DStatus A3DSewBrep (A3DRiBrepModel ***p, A3DUns32 uNbBrepModels, double dTolerance, A3DRiBrepModel ***pBrepModelsOut, A3DUns32 *const uNbBrepOut)
 Function to sew multiple B-rep data structures. More...
 
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. More...
 
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. More...
 
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. More...
 
A3DStatus A3DSrfGetDomain (const A3DSurfBase *pSrf, A3DDomainData *pDomain)
 Function to get a surface parametric domain. More...
 
A3DStatus A3DSurfEvaluate (const A3DSurfBase *pSurf, const A3DVector2dData *pUVParameter, A3DUns32 uiNbDerivatives, A3DVector3dData *pPointAndDerivatives)
 Function to evaluate a point and the derivatives on a surface. More...
 
A3DStatus A3DSurfEvaluateNormal (const A3DSurfBase *pSurf, const A3DVector2dData *pUVParameter, A3DVector3dData *pNormal)
 Function to evaluate a normal on a surface. More...
 
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. More...
 
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. More...
 
A3DStatus A3DSurfLocalProjectPoint (const A3DSurfBase *pSurf, const A3DVector3dData *pPointToProject, const A3DVector2dData *pGuessPoint, A3DBool *pbFindSolution, A3DVector2dData *pSolutionParameter, A3DDouble *pdSolutionDistance)
 This function projects a point on a surface with a guess parameter pSolutionParameter and pdSolutionDistance give the 2D point in surface parametric domain and the spatial distance between pPointToProject and the solution (on the surface). More...
 
A3DStatus A3DSurfProjectPoint (const A3DSurfBase *pSurf, const A3DVector3dData *pPointToProject, A3DUns32 *puiNbSolutions, A3DVector2dData **ppdSolutionParameters, A3DDouble **ppdSolutionDistance)
 This function projects a point on a surface The number of returned solutions is given by puiNbSolutions and for each one, ppdSolutionParameters and ppdSolutionDistance arrays give the 2D point in surface parametric domain and the spatial distance between pPointToProject and the solution (on the surface). More...
 

Detailed Description

Header file for surface entities.

Author
Tech Soft 3D
Version
9.2
Date
July 2016
Copyright (c) 2016 by Tech Soft 3D, LLC. All rights reserved.

Function Documentation

A3DStatus A3DCrvLocalProjectPoint ( const A3DCrvBase pCrv,
const A3DVector3dData pPointToProject,
A3DDouble  dGuessParameter,
A3DBool pbFindSolution,
A3DDouble pdSolutionParameter,
A3DDouble pdSolutionDistance 
)

This function projects a point on a curve with a guess parameter pdSolutionParameter and pdSolutionDistance give the parameter on the curve and the spatial distance between pPointToProject and the solution (on the curve).

Version
5.0
Parameters
[in]pCrvThe input curve.
[in]pPointToProjectThe input point to project on curve.
[in]dGuessParameterThe input guess parameters.
[out]pbFindSolutionResult status.
[out]pdSolutionParameterparameter solution.
[out]pdSolutionDistancespatial distance (optional).
Returns
A3D_SUCCESS
A3D_INVALID_ENTITY_NULL
A3D_CRV_INVALID_PARAMETER
A3D_ERROR
A3DStatus A3DCrvProjectPoint ( const A3DCrvBase pCrv,
const A3DVector3dData pPointToProject,
A3DUns32 puiNbSolutions,
A3DDouble **  ppdSolutionParameter,
A3DDouble **  ppdSolutionDistance 
)

This function projects a point on a curve The number of returned solutions is given by puiNbSolutions and for each one, ppdSolutionParameter and ppdSolutionDistance arrays give the parameter on the curve and the spatial distance between pPointToProject and the solution (on the curve).

Version
5.0
Parameters
[in]pCrvThe input curve.
[in]pPointToProjectThe input point to project on curve.
[out]puiNbSolutionsThe number of returned solutions.
[out]ppdSolutionParameterArray of parameters on the curve.
[out]ppdSolutionDistanceArray of spatial distances between pPointToProject and the solution (on the curve).
Returns
A3D_SUCCESS
A3D_ERROR
A3DStatus A3DCurveLength ( const A3DCrvBase pCrv,
A3DIntervalData pOptInterval,
A3DDouble pdLength 
)

Function to compute the length of a curve (optionally restricted to an interval)

Version
7.0
Parameters
[in]pCrvThe curve: A3DCrvBase.
[in]pOptIntervalThe interval of restriction of the curve (if NULL, the natural interval of the curve will be used).
[out]pdLengthThe length of the curve.
Returns
A3D_SUCCESS
A3D_INITIALIZE_NOT_CALLED
A3D_INVALID_DATA_STRUCT_SIZE
A3D_INVALID_DATA_STRUCT_NULL
A3D_INVALID_ENTITY_NULL
A3D_INVALID_ENTITY_TYPE
A3D_ERROR
A3DStatus A3DSurfLocalProjectPoint ( const A3DSurfBase pSurf,
const A3DVector3dData pPointToProject,
const A3DVector2dData pGuessPoint,
A3DBool pbFindSolution,
A3DVector2dData pSolutionParameter,
A3DDouble pdSolutionDistance 
)

This function projects a point on a surface with a guess parameter pSolutionParameter and pdSolutionDistance give the 2D point in surface parametric domain and the spatial distance between pPointToProject and the solution (on the surface).

pGuessPoint must be contained by the domain of the surface.

Version
5.0
Parameters
[in]pSurfThe input surface.
[in]pPointToProjectThe input point to project on surface.
[in]pGuessPointThe input guess parameters.
[out]pbFindSolutionResult status.
[out]pSolutionParameterparameter solution.
[out]pdSolutionDistancespatial distance (optional).
Returns
A3D_SUCCESS
A3D_INVALID_ENTITY_NULL
A3D_SRF_INVALID_PARAMETERS
A3D_ERROR
A3DStatus A3DSurfProjectPoint ( const A3DSurfBase pSurf,
const A3DVector3dData pPointToProject,
A3DUns32 puiNbSolutions,
A3DVector2dData **  ppdSolutionParameters,
A3DDouble **  ppdSolutionDistance 
)

This function projects a point on a surface The number of returned solutions is given by puiNbSolutions and for each one, ppdSolutionParameters and ppdSolutionDistance arrays give the 2D point in surface parametric domain and the spatial distance between pPointToProject and the solution (on the surface).

Version
5.0
Parameters
[in]pSurfThe input surface.
[in]pPointToProjectThe input point to project on surface.
[out]puiNbSolutionsThe number of returned solutions.
[out]ppdSolutionParametersArray of 2D points in the surface parametric domain.
[out]ppdSolutionDistanceArray of spatial distances between pPointToProject and the solution (on the surface).
Returns
A3D_SUCCESS
A3D_ERROR