EgtGeomKernel :

- correzione alla ruled guided.
This commit is contained in:
Daniele Bariletti
2026-02-23 10:57:15 +01:00
parent 3a7b6f1343
commit 69916e7756
+24 -3
View File
@@ -6016,6 +6016,14 @@ SurfBezier::CreateByIsoParamSet( const ICurve* pCurve0, const ICurve* pCurve1, c
CrvU1.GetParamAtPoint( vCrv[vIso[i].nCrv].second, vIso[i].dParam1) ;
}
}
else {
vIso.emplace_back( -1, 0, 0) ;
rotate( vIso.begin(), vIso.begin() + ssize(vIso) - 1, vIso.end()) ;
}
// se manca aggiungo la coppia finale
if ( vIso.back().dParam0 != nSpanU0 || vIso.back().dParam1 != nSpanU1)
vIso.emplace_back( -1, nSpanU0, nSpanU1) ;
// scorro vIso per verificare che non ci siano curve che si intersecano
int c = 0 ;
@@ -6035,9 +6043,22 @@ SurfBezier::CreateByIsoParamSet( const ICurve* pCurve0, const ICurve* pCurve1, c
if ( vIso[0].dParam0 > 0 || vIso[0].dParam1 > 0)
vPairs.emplace_back( 0, 0) ;
for ( int i = 0 ; i < ssize( vIso) ; ++i) {
const BIPOINT& pCrv = vCrv[vIso[i].nCrv] ;
Point3d ptU0 = pCrv.first ;
Point3d ptU1 = pCrv.second ;
Point3d ptU0, ptU1 ;
if ( vIso[i].nCrv != -1) {
const BIPOINT& pCrv = vCrv[vIso[i].nCrv] ;
ptU0 = pCrv.first ;
ptU1 = pCrv.second ;
}
else {
if ( vIso[i].dParam0 == 0 && vIso[i].dParam1 == 0) {
CrvU0.GetStartPoint( ptU0) ;
CrvU1.GetStartPoint( ptU1) ;
}
else {
CrvU0.GetEndPoint( ptU0) ;
CrvU1.GetEndPoint( ptU1) ;
}
}
double& dParam0 = vIso[i].dParam0 ;
double& dParam1 = vIso[i].dParam1 ;
// se sono vicino ad un'intero allora considero il parametro intero ( uno split già esistente)