EgtExch3dm :

- reso più robusto il controllo per capire se una superficie è trimmata.
This commit is contained in:
Daniele Bariletti
2024-05-20 15:08:57 +02:00
parent 74e3e2e4df
commit 691c3def9e
+3 -4
View File
@@ -36,7 +36,6 @@
#include "/EgtDev/Include/EGkExtText.h"
#include "/EgtDev/Include/EGkExtDimension.h"
#include "/EgtDev/Include/EGkVector3d.h"
#include "/EgtDev/Include/EGkGeoObjSave.h"
#include <map>
using namespace std ;
@@ -838,7 +837,7 @@ Import3dm::ConvertBrep( const ON_Brep* onBrep, const bool bForceTriMesh)
bOk = false ;
break ;
}
PtrOwner<ICurveComposite> pCrvCompo( ApproxTrim( Release(pCrv))) ;
PtrOwner<ICurveComposite> pCrvCompo( ApproxTrim( pCrv)) ;
double dArea = 0 ;
pCrvCompo->GetAreaXY(dArea) ;
if (abs(dArea) > EPS_SMALL) { // qui non sarebbe meglio mettere SQ_EPS_SMALL oppure addirittura EPS_ZERO o 0 ?
@@ -882,8 +881,8 @@ Import3dm::ConvertBrep( const ON_Brep* onBrep, const bool bForceTriMesh)
pSurfBezNew->GetInfo( nDegU, nDegV, nSpanU, nSpanV, bRat, bTrim) ;
// devo rendere lo spazio parametrico uniforme solo se la superficie è trimmata, sennò non serve
// per capire se la superficie sia trimmata controllo che lo spazio parametrico trimmato non coincida con tutto lo spazio parametrico
double dParamX = dScaleU /* * SBZ_TREG_COEFF*/ - EPS_SMALL ;
double dParamY = dScaleV /* * SBZ_TREG_COEFF*/ - EPS_SMALL ;
double dParamX = dScaleU /* * SBZ_TREG_COEFF*/ - 5 * EPS_SMALL ;
double dParamY = dScaleV /* * SBZ_TREG_COEFF*/ - 5 * EPS_SMALL ;
PtrOwner<ISurfFlatRegion> pSurfParam(GetSurfFlatRegionRectangle( dParamX > 0 ? dParamX : 2 * EPS_SMALL, dParamY > 0 ? dParamY : 2 * EPS_SMALL)) ;
// se la sottrazione tra spazio parametrico e superficie di trim è diversa da zero, allora la superficie era trimmata
if ( pSfrTrim != nullptr && pSurfParam->Subtract( *pSfrTrim) && pSurfParam->IsValid()) {