EgtGeomKernel :
- aggiornamento funzioni per recuperare i loop di una surf di bezier.
This commit is contained in:
+18
-25
@@ -3333,7 +3333,7 @@ SurfBezier::CalcPoles( void) const
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
SurfBezier::GetLoops( ICRVCOMPOPOVECTOR& vCC, bool bLineOrBezier, int nEdge) const
|
||||
SurfBezier::GetLoops( ICRVCOMPOPOVECTOR& vCC, bool bLineOrBezier) const
|
||||
{
|
||||
// se necessario calcolo i poli
|
||||
if ( m_vbPole.empty())
|
||||
@@ -3347,30 +3347,23 @@ SurfBezier::GetLoops( ICRVCOMPOPOVECTOR& vCC, bool bLineOrBezier, int nEdge) con
|
||||
// se la superficie non è trimmata mi basta recuperare gli edge della superficie
|
||||
if ( ! m_bTrimmed) {
|
||||
// se decidessi di non restituire gli edge chiusi e i poli posso discriminare qui
|
||||
if ( nEdge == -1 ) {
|
||||
vCC = ICRVCOMPOPOVECTOR(4) ;
|
||||
if ( ! m_bClosedV ) {
|
||||
if ( ! m_vbPole[0])
|
||||
vCC[0].Set( GetSingleEdge3D( bLineOrBezier, 0)) ;
|
||||
if ( ! m_vbPole[2])
|
||||
vCC[2].Set( GetSingleEdge3D( bLineOrBezier, 2)) ;
|
||||
}
|
||||
if ( ! m_bClosedU ) {
|
||||
if ( ! m_vbPole[1])
|
||||
vCC[1].Set( GetSingleEdge3D( bLineOrBezier, 1)) ;
|
||||
if ( ! m_vbPole[3])
|
||||
vCC[3].Set( GetSingleEdge3D( bLineOrBezier, 3)) ;
|
||||
}
|
||||
//// se li volessi restituire tutti
|
||||
//vCC.emplace_back( GetSingleEdge3D( bLineOrBezier, 0)) ;
|
||||
//vCC.emplace_back( GetSingleEdge3D( bLineOrBezier, 1)) ;
|
||||
//vCC.emplace_back( GetSingleEdge3D( bLineOrBezier, 2)) ;
|
||||
//vCC.emplace_back( GetSingleEdge3D( bLineOrBezier, 3)) ;
|
||||
}
|
||||
else {
|
||||
if ( (((nEdge == 0 || nEdge == 2) && ! m_bClosedV) || ((nEdge == 1 || nEdge == 3) && ! m_bClosedU)) && ! m_vbPole[nEdge])
|
||||
vCC.emplace_back( GetSingleEdge3D( bLineOrBezier, nEdge)) ;
|
||||
}
|
||||
vCC.emplace_back() ;
|
||||
if ( ! m_bClosedV ) {
|
||||
if ( ! m_vbPole[0])
|
||||
vCC.back()->AddCurve( GetSingleEdge3D( bLineOrBezier, 0)) ;
|
||||
}
|
||||
if ( ! m_bClosedU ) {
|
||||
if ( ! m_vbPole[1])
|
||||
vCC.back()->AddCurve( GetSingleEdge3D( bLineOrBezier, 1)) ;
|
||||
}
|
||||
if ( ! m_bClosedV ) {
|
||||
if ( ! m_vbPole[2])
|
||||
vCC.back()->AddCurve( GetSingleEdge3D( bLineOrBezier, 2)) ;
|
||||
}
|
||||
if ( ! m_bClosedU ) {
|
||||
if ( ! m_vbPole[3])
|
||||
vCC.back()->AddCurve( GetSingleEdge3D( bLineOrBezier, 3)) ;
|
||||
}
|
||||
}
|
||||
// se la superficie è trimmata devo recuperare i loop dello spazio parametrico
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user