EgtGeomKernel :

- migliorie e correzioni a SurfExtend e Offset3d.
This commit is contained in:
Daniele Bariletti
2026-07-07 16:13:17 +02:00
parent dc46c92c95
commit f0137d26f4
2 changed files with 8 additions and 7 deletions
+6 -5
View File
@@ -1295,8 +1295,7 @@ GetCurveOnSurfInfo( const ICurve& crCrv, const ISurfTriMesh& pSurf,
// approssimo la curva con una polilinea entro la tolleranza
PolyLine PL ;
if ( ! crCrv.ApproxWithLines( 10 * EPS_SMALL, ANG_TOL_STD_DEG, ICurve::APL_SPECIAL, PL) ||
! PL.RemoveAlignedPoints( dLinTol, false) )
if ( ! crCrv.ApproxWithLines( 10 * EPS_SMALL, ANG_TOL_STD_DEG, ICurve::APL_SPECIAL, PL))
return false ;
const double MAX_SEG_LEN = min( dMaxSegmLen, 0.977) ;
if ( ! PL.AdjustForMaxSegmentLen( MAX_SEG_LEN))
@@ -1345,7 +1344,7 @@ GetCurveOnSurfInfo( const ICurve& crCrv, const ISurfTriMesh& pSurf,
nTria = nTriaCurr ;
if ( bJoint) {
int nTria2 ; pCC->GetCurveTempProp( int( dPar), nTria2, 0) ;
Triangle3d trTria2 ; pSurf.GetTriangle( nTria2, trTria2) ;
Triangle3dEx trTria2 ; pSurf.GetTriangle( nTria2, trTria2) ;
if ( ! CalcNormal( ptP, trTria2, Pt5ax.vtDir2))
Pt5ax.vtDir2 = trTria2.GetN() ;
nTria = nTria2 ;
@@ -1368,13 +1367,15 @@ GetCurveOnSurfInfo( const ICurve& crCrv, const ISurfTriMesh& pSurf,
else
vtDir = vtDirPrev ;
// in caso sia stato superato l'angolo limite dò priorità alla direzione precedente
bool bEdge = false ;
if ( vtDirPrev.IsValid() && (! bFirst || ( bFirst && bClosed))) {
double dProj = vtDirNext * vtDirPrev ;
if ( dProj > COS_ANG_MAX_CORNER)
bEdge = dProj < COS_ANG_MAX_CORNER ;
if ( ! bEdge)
vtDir = Media( vtDirNext, vtDirPrev) ;
}
vtDirPrev = vtDirNext ;
bool bEdge = ! AreSameVectorExact( vPt5ax.back().vtDir1, vPt5ax.back().vtDir2) ;
bEdge = bEdge || ! AreSameVectorExact( vPt5ax.back().vtDir1, vPt5ax.back().vtDir2) ;
Vector3d vtTang = vtDir ^ vtNorm ; vtTang.Normalize() ;
vPt5ax.back().vtDir1 = vtTang ;
if ( bEdge) {