EgtExecutor :

- rimozione codici di test.
- modifiche parametri LuaCreateSurfTmSwept.
This commit is contained in:
Riccardo Elitropi
2024-03-15 13:18:48 +01:00
parent 82633bf725
commit 88fa7ef54c
2 changed files with 36 additions and 49 deletions
+29 -46
View File
@@ -34,11 +34,6 @@
#include "/EgtDev/Include/EgtPointerOwner.h"
#include "/EgtDev/Include/EGkExtText.h"
// TEMP *********************
#include "EgtDev/EgtGeomKernel/RotationMinimizeFrame.h" // togliere !
#include "EgtDev/EgtGeomKernel/RotationMinimizeFrame.cpp"
// **************************
using namespace std ;
//-------------------------------------------------------------------------------
@@ -1257,7 +1252,7 @@ ExeCreateSurfTmRectSwept( int nParentId, double dDimH, double dDimV, double dBev
//-------------------------------------------------------------------------------
int
ExeCreateSurfTmSwept( int nParentId, int nSectId, int nGuideId, bool bCapEnds, double dLinTol)
ExeCreateSurfTmSwept( int nParentId, int nSectId, int nGuideId, bool bCapEnds, double dLinTol, Vector3d* vtStatic)
{
IGeomDB* pGeomDB = GetCurrGeomDB() ;
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
@@ -1266,52 +1261,40 @@ ExeCreateSurfTmSwept( int nParentId, int nSectId, int nGuideId, bool bCapEnds, d
// recupero il riferimento locale
Frame3d frLoc ;
bOk = bOk && pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
// recupero la sezione in locale
CurveLocal CrvSect( pGeomDB, nSectId, frLoc) ;
bOk = bOk && ( CrvSect.Get() != nullptr) ;
// recupero la guida in locale
CurveLocal CrvGuide( pGeomDB, nGuideId, frLoc) ;
bOk = bOk && ( CrvGuide.Get() != nullptr) ;
// creo la superficie trimesh
// inizializzazione superficie e suo Id
ISurfTriMesh* pSTM = nullptr ;
pSTM = ( bOk ? GetSurfTriMeshSwept( CrvSect, CrvGuide, bCapEnds, dLinTol) : nullptr) ;
// inserisco la superficie trimesh nel DB
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, pSTM) : GDB_ID_NULL) ;
int nNewId = GDB_ID_NULL ;
// recupero il tipo di entità della sezione
int nSecType = pGeomDB->GetGeoType( nSectId) ;
/* RIMUOVERE ! */
PtrOwner<ICurve> pCrv( CrvGuide.Get()->Clone()) ;
if ( IsNull( pCrv))
return false ;
Point3d ptStart ; Vector3d vtTan ;
if ( ! pCrv->GetPointD1D2( 0., ICurve::FROM_MINUS, ptStart, &vtTan))
return false ;
Frame3d frStart ;
frStart.Set( ptStart, vtTan) ; // la tangente è la Z del frame
double dStep = 5 ;
RotationMinimizeFrame RMF( pCrv, frStart, dStep) ;
FRAME3DVECTOR vRMF ;
if ( ! RMF.GetFrames( vRMF))
return false ;
// disegno i frames ricavati
for ( int i = 0 ; i < int( vRMF.size()) ; ++ i) {
IGeoFrame3d* frCurr( CreateGeoFrame3d()) ;
frCurr->Set( vRMF[i]) ;
/*
Vector3d vtH = vRMF[i].VersZ() ;
vtH.z = 0 ;
vtH.Normalize() ;
Frame3d frCCCCCC ; frCCCCCC.Set( vRMF[i].Orig(), vtH, Z_AX ^ vtH) ;
frCurr->Set( frCCCCCC) ;
*/
pGeomDB->AddGeoObj( GDB_ID_NULL, 3, frCurr->Clone()) ;
delete( frCurr) ;
// controllo se la sezione è definita da una curva
if ( nSecType == CRV_LINE || nSecType == CRV_ARC ||
nSecType == CRV_BEZIER || nSecType == CRV_COMPO) {
// recupero la sezione in locale
CurveLocal CrvSect( pGeomDB, nSectId, frLoc) ;
bOk = bOk && ( CrvSect.Get() != nullptr) ;
// calcolo la Swept
pSTM = ( bOk ? GetSurfTriMeshSwept( CrvSect, CrvGuide, bCapEnds, dLinTol, vtStatic) : nullptr) ;
// inserisco la superficie trimesh nel DB
nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, pSTM) : GDB_ID_NULL) ;
}
// controllo se la sezione è definita da una regione piana
else if ( nSecType == SRF_FLATRGN) {
// recupero la sezione e la porto nel frame corrente
ISurfFlatRegion* pSfrSec = GetSurfFlatRegion( pGeomDB->GetGeoObj( nSectId)) ;
Frame3d frSec ;
if ( pSfrSec != nullptr && pGeomDB->GetGlobFrame( nSectId, frSec) &&
pSfrSec->LocToLoc( frSec, frLoc)) {
// calcolo la Swept
pSTM = ( bOk ? GetSurfTriMeshSwept( pSfrSec, CrvGuide, bCapEnds, dLinTol, vtStatic) : nullptr) ;
// inserisco la superficie trimesh nel DB
nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, pSTM) : GDB_ID_NULL) ;
}
delete( pSfrSec) ;
}
/* RIMUOVERE ! */
ExeSetModified() ;
// se richiesto, salvo il comando Lua equivalente