核心
CATCGMCreateLocalAnalysis2D
CATCGMCreateLocalAnalysis1D
线上曲率
V6
在这里插入代码片
V5
在这里插入代码片
面上曲率
V6
#include "CATSoftwareConfiguration.h"
#include "CATCGMCreateProjection.h"
#include "CATICGMProjectionPtSur.h"
#include "CATICGMLocalAnalysis2D.h"
void GetCurvatureRadius(CATIMmiUsePrtPart_var spPart, CATPoint *pPoint, CATSurface *pSurface, CATUnicodeString &MaxRadius, CATUnicodeString &MinRadius)
{
if(spPart == NULL_var || pPoint == NULL || pSurface == NULL)
return;
//投影点做保障 并取参数。可换直接eval方法取到
CATIMmiPrtContainer_var spPrtContainer = NULL_var;
CATIMmiMechanicalFeature_var(spPart) -> GetPrtContainer(spPrtContainer);
CATGeoFactory_var spGeoFactory = GetGeoFactory(spPrtContainer);
CATICGMProjectionPtSur *pProjectionPtSur = CATCGMCreateProjection(spGeoFactory, new CATSoftwareConfiguration(), pPoint, pSurface);
pProjectionPtSur -> Run();
CATSurParam SurParam = pProjectionPtSur -> GetParam();
CATICGMLocalAnalysis2D *pLocalAnalysis2D = CATCGMCreateLocalAnalysis2D(new CATSoftwareConfiguration(), pSurface, SurParam);
double oCMin, oCMax;
pLocalAnalysis2D -> GetMinMaxCurvature(oCMin, oCMax);
double CMinRadius, CMaxRadius;
CMinRadius = int(1 / oCMax);
CMaxRadius = int(1 / oCMin);
double CMinR = CATFabs(CMinRadius) < CATFabs(CMaxRadius) ? CMinRadius : CMaxRadius;
double CMaxR = CATFabs(CMaxRadius) > CATFabs(CMinRadius) ? CMaxRadius : CMinRadius;
MaxRadius.BuildFromNum(CMaxR);
MinRadius.BuildFromNum(CMinR);
}
V5
CATICGMLocalAnalysis2D
void GetCurvatureRadius(CATIMmiUsePrtPart_var spPart, CATPoint *pPoint, CATSurface *pSurface, CATUnicodeString &MaxRadius, CATUnicodeString &MinRadius)
{
if(spPart == NULL_var || pPoint == NULL || pSurface == NULL)
return;
CATIMmiPrtContainer_var spPrtContainer = NULL_var;
CATIMmiMechanicalFeature_var(spPart) -> GetPrtContainer(spPrtContainer);
CATGeoFactory_var spGeoFactory = GetGeoFactory(spPrtContainer);
CATICGMProjectionPtSur *pProjectionPtSur = CATCGMCreateProjection(spGeoFactory, new CATSoftwareConfiguration(), pPoint, pSurface);
pProjectionPtSur -> Run();
CATSurParam SurParam = pProjectionPtSur -> GetParam();
CATICGMLocalAnalysis2D *pLocalAnalysis2D = CATCGMCreateLocalAnalysis2D(new CATSoftwareConfiguration(), pSurface, SurParam);
double oCMin, oCMax;
pLocalAnalysis2D -> GetMinMaxCurvature(oCMin, oCMax);
double CMinRadius, CMaxRadius;
CMinRadius = int(1 / oCMax);
CMaxRadius = int(1 / oCMin);
double CMinR = CATFabs(CMinRadius) < CATFabs(CMaxRadius) ? CMinRadius : CMaxRadius;
double CMaxR = CATFabs(CMaxRadius) > CATFabs(CMinRadius) ? CMaxRadius : CMinRadius;
MaxRadius.BuildFromNum(CMaxR);
MinRadius.BuildFromNum(CMinR);
}