Files
EgtGeomKernel/CAvToolSurfTm.h
T
Dario Sassi 866ed0b3d7 EgtGeomKernel 1.9h1 :
- sistemazioni varie in CAvToolTriangle
- utilizzo di std::async in CAvToolSurfTm
- corretto GetAllTriaAroundVertex di SurfTm
- aggiunto ( nothrow) a tutti i new.
2018-08-08 11:02:56 +00:00

62 lines
2.6 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2018-2018
//----------------------------------------------------------------------------
// File : CAToolSurfTm.h Data : 08.05.18 Versione : 1.9e2
// Contenuto : Dichiarazioni per classe CAToolSurfTm.
//
//
//
// Modifiche : 27.04.18 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "HashGrids2d.h"
#include "SurfTriMesh.h"
#include "Tool.h"
#include "/EgtDev/Include/EGkCAvToolSurfTm.h"
#include <atomic>
//-----------------------------------------------------------------------------
class CAvToolSurfTm : public ICAvToolSurfTm
{
public : // ICAvToolSurfTm
bool SetSurfTm( const ISurfTriMesh& Stm) override ;
bool SetMoveDir( const Vector3d& vtrMove) override ;
bool SetStdTool( double dH, double dR, double dCornR) override ;
bool SetAdvTool( double dH, double dR, double dTipH, double dTipR, double dCornR) override ;
bool SetSawTool( double dH, double dR, double dThick, double dStemR, double dCornR) override ;
bool SetGenTool( const ICurveComposite* pToolOutline) override ;
double GetToolRadius( void) const override
{ return m_Tool.GetRadius() ; }
double GetToolHeight( void) const override
{ return m_Tool.GetHeigth() ; }
const ICurveComposite* GetToolOutline( void) const override
{ return m_Tool.GetOutline() ;}
bool TestPosition( const Point3d& ptT, const Vector3d& vtDir, double& dTotDist) override ;
bool TestPath( PNTULIST& lPntM, const Vector3d& vtDir, double dLinTol) override ;
public :
CAvToolSurfTm( void) ;
private :
bool TestSubPath( int nId, PNTULIST& lPntM, const Vector3d& vtDir, double dLinTol) ;
double MyTestPosition( Point3d& ptT, const Vector3d& vtDir) ;
double MyTestPositionHG( Point3d& ptT, const Vector3d& vtDir) ;
bool MyTestMidPointHG( PNTULIST& lPntM, const PNTULIST::iterator& itPntMPrev, const PNTULIST::iterator& itPntMCurr,
const Point3d& ptPrev, const Point3d& ptCurr, const Vector3d& vtDir, double dLinTol, int nLev) ;
bool PrepareHashGrid( void) ;
private :
Frame3d m_frMove ;
const SurfTriMesh* m_pSTm ;
HashGrids2d m_HGrids ;
Tool m_Tool ;
int m_nTotPnt ;
std::atomic<int> m_nCurrPnt ;
std::atomic<bool> m_bBreak ;
} ;