//---------------------------------------------------------------------------- // EgalTech 2015-2016 //---------------------------------------------------------------------------- // File : EXE_ModifyVol.cpp Data : 27.10.16 Versione : 1.6v7 // Contenuto : Funzioni di modifica dei solidi per EXE. // // // // Modifiche : 27.10.16 DS Creazione modulo. // // //---------------------------------------------------------------------------- //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "EXE.h" #include "EXE_Macro.h" #include "AuxTools.h" #include "GeoTools.h" #include "/EgtDev/Include/EXeExecutor.h" #include "/EgtDev/Include/EXeConst.h" #include "/EgtDev/Include/EGkVolZmap.h" #include "/EgtDev/Include/EGkStringUtils3d.h" using namespace std ; //---------------------------------------------------------------------------- bool ExeVolZmapSetStdTool( int nId, const string& sToolName, double dLen, double dDiam, double dCornR) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) // recupero lo Zmap e assegno i dati dell'utensile IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nId)) ; bool bOk = ( pVZM != nullptr && pVZM->SetStdTool( sToolName, dLen, 0.5 * dDiam, dCornR)) ; ExeSetModified() ; // se richiesto, salvo il comando Lua equivalente if ( IsCmdLog()) { string sLua = "EgtVolZmapSetStdTool(" + IdToString( nId) + "," + sToolName + "," + ToString( dLen) + "," + ToString( dDiam) + "," + ToString( dCornR) + ")" + " -- Ok=" + ToString( bOk) ; LOG_INFO( GetCmdLogger(), sLua.c_str()) ; } // restituisco risultato return bOk ; } //---------------------------------------------------------------------------- bool ExeVolZmapMillingStep( int nId, const Point3d& ptPs, const Vector3d& vtDs, const Point3d& ptPe, const Vector3d& vtDe, int nRefType) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) // recupero il riferimento locale Frame3d frLoc ; bool bOk = pGeomDB->GetGlobFrame( nId, frLoc) ; // porto in locale i punti e i vettori Point3d ptPsL = GetPointLocal( pGeomDB, ptPs, nRefType, frLoc) ; Vector3d vtDsL = GetVectorLocal( pGeomDB, vtDs, nRefType, frLoc) ; Point3d ptPeL = GetPointLocal( pGeomDB, ptPe, nRefType, frLoc) ; Vector3d vtDeL = GetVectorLocal( pGeomDB, vtDe, nRefType, frLoc) ; // recupero lo Zmap e eseguo movimento di fresatura con l'utensile già associato IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nId)) ; bOk = bOk && ( pVZM != nullptr && pVZM->MillingStep( ptPsL, vtDsL, ptPeL, vtDeL)) ; ExeSetModified() ; // se richiesto, salvo il comando Lua equivalente if ( IsCmdLog()) { string sLua = "EgtVolZmapMillingStep(" + IdToString( nId) + ",{" + ToString( ptPs) + "},{" + ToString( vtDs) + "},{" + ToString( ptPe) + "},{" + ToString( vtDe) + "}," + RefTypeToString( nRefType) + ")" + " -- Ok=" + ToString( bOk) ; LOG_INFO( GetCmdLogger(), sLua.c_str()) ; } // restituisco risultato return bOk ; } //---------------------------------------------------------------------------- bool ExeVolZmapGetDepth( int nId, const Point3d& ptP, const Vector3d& vtDir, int nRefType, double& dInLen, double& dOutLen) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) // recupero il riferimento locale Frame3d frLoc ; bool bOk = pGeomDB->GetGlobFrame( nId, frLoc) ; // porto in locale il punto e il vettore Point3d ptPL = GetPointLocal( pGeomDB, ptP, nRefType, frLoc) ; Vector3d vtVL = GetVectorLocal( pGeomDB, vtDir, nRefType, frLoc) ; // recupero lo Zmap e calcolo profondità IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nId)) ; bOk = bOk && ( pVZM != nullptr && pVZM->GetDepth( ptP, vtDir, dInLen, dOutLen)) ; ExeSetModified() ; // se richiesto, salvo il comando Lua equivalente if ( IsCmdLog()) { string sLua = "EgtVolZmapGetDepth(" + IdToString( nId) + ",{" + ToString( ptP) + "},{" + ToString( vtDir) + "}," + RefTypeToString( nRefType) + ")" + " -- Ok=" + ToString( bOk) + "," + ToString( dInLen) + "," + ToString( dOutLen) ; LOG_INFO( GetCmdLogger(), sLua.c_str()) ; } // restituisco risultato return bOk ; } //---------------------------------------------------------------------------- bool ExeVolZmapAvoidBox( int nId, const Frame3d& frBox, const Vector3d& vtDiag, int nRefType) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) // recupero il riferimento locale Frame3d frLoc ; bool bOk = pGeomDB->GetGlobFrame( nId, frLoc) ; // porto in locale il riferimento (il vettore è già in locale a questo stesso riferimento) Frame3d frBoxL = GetFrameLocal( pGeomDB, frBox, nRefType, frLoc) ; // recupero lo Zmap e calcolo collisione IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nId)) ; bOk = bOk && ( pVZM != nullptr && pVZM->AvoidBox( frBoxL, vtDiag)) ; ExeSetModified() ; // se richiesto, salvo il comando Lua equivalente if ( IsCmdLog()) { string sLua = "EgtVolZmapAvoidBox(" + IdToString( nId) + ",{" + ToString( frBox.Orig()) + "},{" + ToString( frBox.VersX()) + "},{" + ToString( frBox.VersY()) + "},{" + ToString( frBox.VersZ()) + "}},{" + ToString( vtDiag) + "}," + RefTypeToString( nRefType) + ")" + " -- Ok=" + ToString( bOk) ; LOG_INFO( GetCmdLogger(), sLua.c_str()) ; } // restituisco risultato return bOk ; }