- riduzione del numero di copie di polyline nel tree di una bezier.

This commit is contained in:
Daniele Bariletti
2025-03-24 10:09:39 +01:00
parent 0b9c9f375c
commit eb9aaef53a
3 changed files with 86 additions and 76 deletions
+23 -14
View File
@@ -1611,19 +1611,18 @@ SurfBezier::GetCurveOnVApproxLen( double dU) const
bool
SurfBezier::UpdateEdgesFromTree( Tree& tr) const
{
POLYLINEMATRIX mPlEdges ;
tr.GetEdges3D( mPlEdges) ;
for ( int i= 0 ; i < int( mPlEdges.size()); ++i) {
for ( int j = 0 ; j < int ( mPlEdges[i].size()) ; ++j) {
m_mCCEdge[i].emplace_back(CreateBasicCurveComposite()) ;
if ( ! m_mCCEdge[i].back()->FromPolyLine(mPlEdges[i][j]) ) {
Point3d ptStart ;
if ( ! mPlEdges[i][j].GetFirstPoint( ptStart))
continue ;
m_mCCEdge[i].back()->FromPoint( ptStart) ;
}
}
}
tr.GetEdges3D( m_mCCEdge) ;
//for ( int i= 0 ; i < int( mPlEdges.size()); ++i) {
// for ( int j = 0 ; j < int ( mPlEdges[i].size()) ; ++j) {
// m_mCCEdge[i].emplace_back(CreateBasicCurveComposite()) ;
// if ( ! m_mCCEdge[i].back()->FromPolyLine(mPlEdges[i][j]) ) {
// Point3d ptStart ;
// if ( ! mPlEdges[i][j].GetFirstPoint( ptStart))
// continue ;
// m_mCCEdge[i].back()->FromPoint( ptStart) ;
// }
// }
//}
if ( m_bTrimmed) {
POLYLINEVECTOR vPl ;
@@ -1636,6 +1635,17 @@ SurfBezier::UpdateEdgesFromTree( Tree& tr) const
}
}
// if ( m_bTrimmed) {
// //POLYLINEVECTOR vPl ;
// tr.GetSplitLoops( m_vCCLoop) ;
// //// recupero i loop nel parametrico
// //for( int i = 0 ; i < int( vPl.size()); ++i) {
// // m_vCCLoop.emplace_back(CreateBasicCurveComposite()) ;
// // m_vCCLoop.back()->FromPolyLine(vPl[i]) ;
// //}
// }
return true ;
}
@@ -1681,7 +1691,6 @@ SurfBezier::GetApproxSurf( double dTol, double dSideMin) const
bool bTest = false ; // per debug
// resetto il vettore degli edge
m_mCCEdge.clear() ;
m_mCCEdge = vector<ICRVCOMPOPOVECTOR>(4) ;
m_vCCLoop.clear() ;
for ( int i = 0 ; i < (int) vTrees.size() ; ++ i) {
Point3d ptMin = get<0>( vTrees[i]) ;