EgtExchange :
- aggiunte a import/export 3dm.
This commit is contained in:
+1
-1
@@ -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
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user