From 2a106c4263289142e21de183b6bceca62c7a5c3c Mon Sep 17 00:00:00 2001 From: Riccardo Elitropi Date: Wed, 6 Mar 2024 16:28:48 +0100 Subject: [PATCH] EgtExecutor : - Codice di test per RMF. --- EXE_GdbCreateSurf.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/EXE_GdbCreateSurf.cpp b/EXE_GdbCreateSurf.cpp index 9ece426..3b39f0b 100644 --- a/EXE_GdbCreateSurf.cpp +++ b/EXE_GdbCreateSurf.cpp @@ -33,6 +33,12 @@ #include "/EgtDev/Include/EGkCurveLocal.h" #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 ; //------------------------------------------------------------------------------- @@ -1271,6 +1277,34 @@ ExeCreateSurfTmSwept( int nParentId, int nSectId, int nGuideId, bool bCapEnds, d 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) ; + + + // TEMP ***************************************** + if ( nNewId == -1) { + PtrOwner 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 = 10 ; + 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]) ; + pGeomDB->AddGeoObj( GDB_ID_NULL, 764, frCurr->Clone()) ; + delete( frCurr) ; + } + } + // ********************************************** + + ExeSetModified() ; // se richiesto, salvo il comando Lua equivalente if ( IsCmdLog()) {