EgtExchange :

- aggiunte a import/export 3dm.
This commit is contained in:
Daniele Bariletti
2023-10-24 14:33:15 +02:00
parent cc0c8e7ed8
commit 55f20bf4ec
2 changed files with 21 additions and 16 deletions
+1 -1
View File
@@ -150,7 +150,7 @@ Export3dm::ExportObject( const IGdbIterator& iIter, const int& nLayer)
return false ;
//recupero il colore dell'oggetto
Color cCol ;
iIter.GetMaterial( cCol) ;
iIter.GetCalcMaterial( cCol) ;
// recupero il livello dell'oggetto
int nLev = GDB_LV_USER ;
iIter.GetCalcLevel( nLev) ;
+20 -15
View File
@@ -970,24 +970,29 @@ Import3dm::ConvertCurve( const ON_Curve* onCurve)
ISurf*
Import3dm::ConvertSurface( const ON_Surface* onSurf)
{
if ( const ON_NurbsSurface* onNurbsSurface = ON_NurbsSurface::Cast( onSurf)) {
if ( const ON_NurbsSurface* onNurbsSurface_ = ON_NurbsSurface::Cast( onSurf)) {
ON_NurbsSurface onNurbsSurface( *onNurbsSurface_) ;
int nSpanU = onNurbsSurface.SpanCount(0);
int nSpanV = onNurbsSurface.SpanCount(1);
//onNurbsSurface.MakeClampedUniformKnotVector( 0) ; // rende non periodico, ma non toglie i punti in più
//onNurbsSurface.MakeClampedUniformKnotVector( 1) ;
SNurbsSurfData sNurbsSurf ;
sNurbsSurf.bClosedU = onNurbsSurface->IsClosed( 0) ;
sNurbsSurf.bClosedV = onNurbsSurface->IsClosed( 1) ;
sNurbsSurf.bPeriodicU = onNurbsSurface->IsPeriodic( 0) ;
sNurbsSurf.bPeriodicV = onNurbsSurface->IsPeriodic( 1) ;
sNurbsSurf.bRat = onNurbsSurface->IsRational() ;
sNurbsSurf.nDegU = onNurbsSurface->Degree( 0) ;
sNurbsSurf.nDegV = onNurbsSurface->Degree( 1) ;
sNurbsSurf.nCPU = onNurbsSurface->CVCount( 0) ;
sNurbsSurf.nCPV = onNurbsSurface->CVCount( 1) ;
sNurbsSurf.bClosedU = onNurbsSurface.IsClosed( 0) ;
sNurbsSurf.bClosedV = onNurbsSurface.IsClosed( 1) ;
sNurbsSurf.bPeriodicU = onNurbsSurface.IsPeriodic( 0) ;
sNurbsSurf.bPeriodicV = onNurbsSurface.IsPeriodic( 1) ;
sNurbsSurf.bRat = onNurbsSurface.IsRational() ;
sNurbsSurf.nDegU = onNurbsSurface.Degree( 0) ;
sNurbsSurf.nDegV = onNurbsSurface.Degree( 1) ;
sNurbsSurf.nCPU = onNurbsSurface.CVCount( 0) ;
sNurbsSurf.nCPV = onNurbsSurface.CVCount( 1) ;
vector<Point3d> vCPV( sNurbsSurf.nCPV) ;
sNurbsSurf.mCP.resize( sNurbsSurf.nCPU, vCPV) ;
DBLVECTOR vWV( sNurbsSurf.nCPV) ;
sNurbsSurf.mW.resize( sNurbsSurf.nCPU, vWV) ;
for ( int i = 0 ; i < sNurbsSurf.nCPU ; ++i) {
for ( int j = 0 ; j < sNurbsSurf.nCPV ; ++j) {
ON_4dPoint o4dPoint = onNurbsSurface->ControlPoint(i, j) ;
ON_4dPoint o4dPoint = onNurbsSurface.ControlPoint(i, j) ;
Point3d ptCP = ConvertPoint( o4dPoint) ;
sNurbsSurf.mCP[i][j] = ptCP ;
//// devo dividere per il peso se la sup è razionale ??? /////////////////////////////////////////////////////////
@@ -999,11 +1004,11 @@ Import3dm::ConvertSurface( const ON_Surface* onSurf)
sNurbsSurf.mW[i][j] = o4dPoint.w ;
}
}
for ( int i = 0 ; i < onNurbsSurface->KnotCount(0) ; ++i ) {
sNurbsSurf.vU.push_back( onNurbsSurface->Knot( 0, i)) ;
for ( int i = 0 ; i < onNurbsSurface.KnotCount(0) ; ++i ) {
sNurbsSurf.vU.push_back( onNurbsSurface.Knot( 0, i)) ;
}
for ( int j = 0 ; j < onNurbsSurface->KnotCount(1) ; ++j ) {
sNurbsSurf.vV.push_back( onNurbsSurface->Knot( 1, j)) ;
for ( int j = 0 ; j < onNurbsSurface.KnotCount(1) ; ++j ) {
sNurbsSurf.vV.push_back( onNurbsSurface.Knot( 1, j)) ;
}
if ( sNurbsSurf.bPeriodicU || sNurbsSurf.bPeriodicV)