EgtGeomKernel 2.6c2 :

- modifiche a SurfTriMesh per flag visualizzazione spigoli vivi in shading
- modifiche a VolZmap per flag visualizzazione spigoli vivi in shading
- aggiunte funzioni PreSave, PostSave e PostLoad per consentire di convertire nuovi parametri delle entità in info prima del salvataggio e riprenderli alla lettura.
This commit is contained in:
Dario Sassi
2024-03-10 10:20:44 +01:00
parent 3630b85632
commit 7d3284fef3
20 changed files with 203 additions and 57 deletions
+9 -13
View File
@@ -4673,23 +4673,19 @@ VolZmap::GetEdges( ICURVEPOVECTOR& vpCurve) const
PtrOwner<CurveComposite> pCrvCompo( CreateBasicCurveComposite()) ;
if ( IsNull( pCrvCompo))
return false ;
// recupero gli estremi dei segmenti, creo le linee e le inserisco nella composita
// recupero gli estremi dei segmenti e li inserisco nella composita
for ( int i = 0 ; i < int( vId.size()) ; ++ i) {
// creo un segmento di retta
// recupero indice e flag di inversione
int nInd = abs( vId[i]) - 1 ;
bool bInvert = ( vId[i] < 0) ;
PtrOwner<CurveLine> pLine( CreateBasicCurveLine()) ;
if ( IsNull( pLine) || ! pLine->Set( vBpt[nInd].first, vBpt[nInd].second))
continue ;
if ( bInvert)
pLine->Invert() ;
// lo accodo alla composita
if ( ! pCrvCompo->AddCurve( Release( pLine), true, 1.1 * dToler) &&
! AreSamePointApprox( ptNear, ( bInvert ? vBpt[nInd].first : vBpt[nInd].second)))
return false ;
// aggiorno il prossimo near
ptNear = ( bInvert ? vBpt[nInd].first : vBpt[nInd].second) ;
// se primo segmento, inserisco il punto iniziale
if ( i == 0)
pCrvCompo->AddPoint( ! bInvert ? vBpt[nInd].first : vBpt[nInd].second) ;
// aggiungo il punto finale
pCrvCompo->AddLine( ! bInvert ? vBpt[nInd].second : vBpt[nInd].first) ;
}
// aggiorno il prossimo near
pCrvCompo->GetEndPoint( ptNear) ;
// se lunghezza curva inferiore a 5 volte la tolleranza, la salto
double dCrvLen ;
if ( ! pCrvCompo->GetLength( dCrvLen) || dCrvLen < 5 * dToler)