Compare commits

..

16 Commits

Author SHA1 Message Date
LorenzoM d73c231820 Virtual milling additivo 2021-10-25 09:27:11 +02:00
LorenzoM d769bc57df Gestione multi-utensile virtual milling 2021-10-20 10:24:44 +02:00
LorenzoM df5d74161f Merge remote-tracking branch 'origin/HEAD' into LorenzoM 2021-10-18 10:48:23 +02:00
LorenzoM 8a031e252f Merge commit 'd1f85278b680ee7d5ef8aca241ab1fa317e071be' into LorenzoM 2021-09-01 17:52:10 +02:00
LorenzoM bb0e351cc4 Merge commit '0d0fccf1d461d6cdbbde7ce6df71066f76e61573' into LorenzoM 2021-08-03 16:32:47 +02:00
LorenzoM d954d264e7 Merge commit '7c182e9d3368160f41d3ded6505c9ed967912ab4' into LorenzoM 2021-07-23 11:09:16 +02:00
LorenzoM de55faf6e4 Aggiunta seconda temp prop 2021-07-21 12:53:58 +02:00
LorenzoM 8d7401f07f Milgiorie varie 2021-07-05 19:00:02 +02:00
LorenzoM 1e988cf77c Merge commit '10309c05287be601201832247f105c6cd4cacc45' into LorenzoM 2021-06-30 11:19:29 +02:00
LorenzoM c2e0d3ce14 Spostati prototipi di funz in EGkPolyLine.h 2021-06-30 11:17:00 +02:00
LorenzoM bd2cb827e9 Merge remote-tracking branch 'origin/HEAD' into LorenzoM 2021-06-23 16:30:35 +02:00
LorenzoM 53e5fcc269 Spostate in PolyLine funzioni ad esse inerenti 2021-06-23 16:29:58 +02:00
LorenzoM 8ad32287b4 Merge remote-tracking branch 'origin/master' into LorenzoM 2021-05-14 17:49:06 +02:00
LorenzoM 300665ea03 Aggiunta creazione SurfFlatRegion Da PolyLineVector 2021-05-14 10:16:37 +02:00
LorenzoM 621221b24e Correzione casi intersezione triangolo triangolo 2021-05-14 10:15:50 +02:00
LorenzoM 6b8f97230d Fix path 2021-05-14 10:14:38 +02:00
136 changed files with 505 additions and 2150 deletions
-73
View File
@@ -1,73 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2023-2023
//----------------------------------------------------------------------------
// File : EE3DllMain.h Data : 14.11.23 Versione : 2.5k2
// Contenuto : Prototipi funzioni generali della DLL.
//
//
//
// Modifiche : 14.11.23 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include <string>
class ILogger ;
//----------------------- Macro per import/export ----------------------------
#undef EE3_EXPORT
#if defined( I_AM_EE3) // da definirsi solo nella DLL
#define EE3_EXPORT __declspec( dllexport)
#else
#define EE3_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
// E' necessaria l'interfaccia in C per caricare queste funzioni dinamicamente
extern "C" {
// restituisce la versione della Dll
EE3_EXPORT const char* GetEE3Version( void) ;
// permette di impostare il logger per la Dll
EE3_EXPORT void SetEE3Logger( ILogger* pLogger) ;
// imposta la chiave di protezione
EE3_EXPORT void SetEE3Key( const std::string& sKey) ;
// imposta se chiave hardware di rete
EE3_EXPORT void SetEE3NetHwKey( bool bNetHwKey) ;
}
//-----------------------------------------------------------------------------
#include "/EgtDev/Include/EGnStringUtils.h"
#include "/EgtDev/Include/EgtILogger.h"
#include "/EgtDev/Include/EgtKeyCodes.h"
#include "/EgtDev/Include/SELkKeyProc.h"
//-----------------------------------------------------------------------------
// Test della chiave per caricare la DLL
inline bool
TestKeyForEE3( const std::string& sKey, int nKeyOpt, ILogger* pLogger)
{
// verifico la chiave e le opzioni
unsigned int nOpt1, nOpt2 ;
int nOptExpDays ;
int nRet = GetKeyOptions( sKey, KEY_BASELIB_PROD, KEY_BASELIB_VER, KEY_BASELIB_LEV,
nOpt1, nOpt2, nOptExpDays) ;
if ( nRet != KEY_OK && ! EqualNoCase( sKey, "EE3Base")) {
if ( nRet != KEY_OK) {
std::string sErr = "Error on Key (EE3/" + ToString( nRet) + ")" ;
LOG_ERROR( pLogger, sErr.c_str()) ;
return false ;
}
if ( ( nOpt1 & ( KEYOPT_EEX_INPBASE|KEYOPT_EEX_EXPBASE)) == 0 ||
( nKeyOpt != 0 && ( nOpt1 & nKeyOpt) == 0) ||
nOptExpDays < GetCurrDay()) {
std::string sErr = "Warning on Key (EE3/OPT)" ;
LOG_ERROR( pLogger, sErr.c_str()) ;
return false ;
}
}
return true ;
}
-40
View File
@@ -1,40 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2023
//----------------------------------------------------------------------------
// File : EE3Export3dm.h Data : 21.09.23 Versione :
// Contenuto : Dichiarazione della interfaccia IExport3dm.
//
//
//
// Modifiche : 21.09.23 DB Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EExExportConst.h"
#include <string>
//----------------------- Macro per import/export ----------------------------
#undef EE3_EXPORT
#if defined( I_AM_EE3) // da definirsi solo nella DLL
#define EE3_EXPORT __declspec( dllexport)
#else
#define EE3_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
class __declspec( novtable) IExport3dm
{
public :
virtual ~IExport3dm( void) {}
virtual bool SetOptions( int nFilter) = 0 ;
virtual bool Export( IGeomDB* pGDB, int nId, const std::string& sFile) = 0 ;
} ;
//-----------------------------------------------------------------------------
extern "C" {
EE3_EXPORT IExport3dm* CreateExport3dm(void) ;
}
-39
View File
@@ -1,39 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2023
//----------------------------------------------------------------------------
// File : EE3Import3dm.h Data : 26.06.23 Versione : 2.5f1
// Contenuto : Dichiarazione della interfaccia IImport3dm.
//
//
//
// Modifiche : 26.06.23 DB Creazione modulo.
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include <string>
//----------------------- Macro per import/export ----------------------------
#undef EE3_EXPORT
#if defined( I_AM_EE3) // da definirsi solo nella DLL
#define EE3_EXPORT __declspec( dllexport)
#else
#define EE3_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
class __declspec( novtable) IImport3dm
{
public :
virtual ~IImport3dm( void) {}
virtual bool Import( const std::string& sFile, IGeomDB* pGDB, int nIdGroup,
double dTextHeight = 2.0, double dExtLine = 5.0, double dArrLen = 5.0, double dTextDist = 2.0,
bool bLenIsMM = true, int nDecDig = -2, std::string sFont = "ModernPropS.Nfe") = 0 ;
} ;
//-----------------------------------------------------------------------------
extern "C" {
EE3_EXPORT IImport3dm* CreateImport3dm( void) ;
}
+10 -12
View File
@@ -1,25 +1,23 @@
//----------------------------------------------------------------------------
// EgalTech 2020-2022
// EgalTech 2020-2020
//----------------------------------------------------------------------------
// File : EExBeamConst.h Data : 04.04.22 Versione : 2.4d2
// File : EExBeamConst.h Data : 30.08.20 Versione : 2.2i1
// Contenuto : Dichiarazione delle costanti per travi e pareti con BTL.
//
//
//
// Modifiche : 30.08.20 DS Creazione modulo.
// 04.04.22 DS Aggiunto EIBFLAG_TRIM_WITH_OUTLINE.
//
//
//----------------------------------------------------------------------------
#pragma once
//-----------------------------------------------------------------------------
enum EImBtlFlag { EIBFLAG_NONE = 0x0000,
EIBFLAG_FLAT_POS = 0x0001, // pezzi di piatto (prevale sul successivo)
EIBFLAG_VERT_POS = 0x0002, // pezzi in verticale
EIBFLAG_SPECIAL_TRIM = 0x0004, // trim speciale per pareti
EIBFLAG_TS3_POS = 0x0008, // pezzi come in TechnoEssetre (prevale sui precedenti POS)
EIBFLAG_SORT = 0x0010, // ordina i pezzi nel DB in base al nome
EIBFLAG_USEUATTR = 0x0020, // utilizza i parametri utente U per modificare la geometria delle features
EIBFLAG_OUTL_FLAT_POS = 0x0040, // pezzi secondo outline o di piatto (prevale sui precedenti POS)
EIBFLAG_TRIM_WITH_OUTLINE = 0x0080} ; // esegui il trim delle feature con l'outline (se presente)
enum EImBtlFlag { EIBFLAG_NONE = 0x0000,
EIBFLAG_FLAT_POS = 0x0001, // pezzi di piatto (prevale sul successivo)
EIBFLAG_VERT_POS = 0x0002, // pezzi in verticale
EIBFLAG_SPECIAL_TRIM = 0x0004, // trim speciale per pareti
EIBFLAG_TS3_POS = 0x0008, // pezzi come in TechnoEssetre (prevale sui precedenti POS)
EIBFLAG_SORT = 0x0010, // ordina i pezzi nel DB in base al nome
EIBFLAG_USEUATTR = 0x0020} ; // utilizza i parametri utente U per modificare la geometria delle features
+5 -12
View File
@@ -1,20 +1,19 @@
//----------------------------------------------------------------------------
// EgalTech 2020-2022
// EgalTech 2020-2021
//----------------------------------------------------------------------------
// File : EExBeamMgr.h Data : 06.07.22 Versione : 2.4g2
// File : EExBeamMgr.h Data : 01.06.21 Versione : 2.2f1
// Contenuto : Dichiarazione della interfaccia IBeamMgr.
//
//
//
// Modifiche : 30.08.20 DS Creazione modulo.
// 01.06.21 DS Aggiunti parametri vsUAtt per Process.
// 06.07.22 DS Aggiunta GetSideData.
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EgkGeomDB.h"
#include "/EgtDev/Include/EExBeamConst.h"
#include <string>
@@ -33,7 +32,6 @@ class __declspec( novtable) IBeamMgr
virtual ~IBeamMgr( void) {}
virtual bool Init( IGeomDB* pGDB, int nFlag = 0) = 0 ;
virtual bool SetFlag( int nFlag) = 0 ;
virtual int CreatePart( void) = 0 ;
virtual bool SetPart( int nPartId) = 0 ;
virtual bool ErasePart( void) = 0 ;
@@ -42,15 +40,10 @@ class __declspec( novtable) IBeamMgr
virtual bool SetPartName( const std::string& sName) = 0 ;
virtual bool SetPartCount( int nCount) = 0 ;
virtual bool SetPartBox( double dLength, double dHeight, double dWidth, bool bUpdate = true) = 0 ;
virtual bool GetSideData( int nSide, Frame3d& frRef, double& dLength, double& dWidth, double& dHeight) = 0 ;
virtual bool ShowFacesName( bool bShow) = 0 ;
virtual bool ShowLoadingSide( bool bShow, bool bFromLeft) = 0 ;
virtual int AddProcess( int nGroup, int nProc, int nSide, const std::string& sDes, int nProcId,
const Frame3d& frRef, const DBLVECTOR& vdPar, const std::string& sPar, const STRVECTOR& vsUAtt,
int nCrvId, int nCrv2Id, bool bUpdate = true) = 0 ;
const Frame3d& frRef, const DBLVECTOR& vdPar, const std::string& sPar, const STRVECTOR& vsUAtt, bool bUpdate = true) = 0 ;
virtual int ModifyProcess( int nGeomId, int nGroup, int nProc, int nSide, const std::string& sDes, int nProcId,
const Frame3d& frRef, const DBLVECTOR& vdPar, const std::string& sPar, const STRVECTOR& vsUAtt,
int nCrvId, int nCrv2Id, bool bUpdate = true) = 0 ;
const Frame3d& frRef, const DBLVECTOR& vdPar, const std::string& sPar, const STRVECTOR& vsUAtt, bool bUpdate = true) = 0 ;
virtual bool EraseProcess( int nGeomId, bool bUpdate = true) = 0 ;
virtual bool EnableProcess( int nGeomId, bool bEnable, bool bUpdate = true) = 0 ;
virtual bool CalcSolid( int nPartId, bool bRecalc = false) = 0 ;
-2
View File
@@ -34,8 +34,6 @@ extern "C" {
EEX_EXPORT void SetEExLogger( ILogger* pLogger) ;
// imposta la chiave di protezione
EEX_EXPORT void SetEExKey( const std::string& sKey) ;
// imposta se chiave hardware di rete
EEX_EXPORT void SetEExNetHwKey( bool bNetHwKey) ;
}
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGnCmdExecutor.h"
#include "/EgtDev/Include/EgnCmdExecutor.h"
class IGeomDB ;
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EgkGeomDB.h"
#include "/EgtDev/Include/EExExportConst.h"
#include <string>
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EgkGeomDB.h"
#include "/EgtDev/Include/EExExportConst.h"
#include <string>
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EgkGeomDB.h"
#include "/EgtDev/Include/EExExportConst.h"
#include <string>
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EgkGeomDB.h"
#include "/EgtDev/Include/EExExportConst.h"
#include <string>
-42
View File
@@ -1,42 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2022-2022
//----------------------------------------------------------------------------
// File : EExExportThreeJS.h Data : 22.10.22 Versione : 2.4j1
// Contenuto : Dichiarazione della interfaccia IExportStl.
//
//
//
// Modifiche : 22.10.22 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EExExportConst.h"
#include <string>
#include "/EgtDev/Include/EGrScene.h"
//----------------------- Macro per import/export ----------------------------
#undef EEK_EXPORT
#if defined( I_AM_EEX) // da definirsi solo nella DLL
#define EEX_EXPORT __declspec( dllexport)
#else
#define EEX_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
class __declspec( novtable) IExportThreeJS
{
public:
virtual ~IExportThreeJS( void) {}
virtual bool SetOptions( int nFilter) = 0 ;
virtual bool Export( IGeomDB* pGDB, int nId, IEGrScene* pScene, bool bUdm, const std::string& sFile) = 0 ;
} ;
//-----------------------------------------------------------------------------
extern "C" {
EEX_EXPORT bool SetThreeJSLibDir( const std::string& sThreeJSLibDir) ;
EEX_EXPORT IExportThreeJS* CreateExportThreeJS( void) ;
}
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EgkGeomDB.h"
#include <string>
//----------------------- Macro per import/export ----------------------------
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EgkGeomDB.h"
#include <string>
//----------------------- Macro per import/export ----------------------------
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EgkGeomDB.h"
#include <string>
//----------------------- Macro per import/export ----------------------------
+1 -1
View File
@@ -14,7 +14,7 @@
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EgkGeomDB.h"
#include <string>
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EgkGeomDB.h"
#include <string>
//----------------------- Macro per import/export ----------------------------
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EgkGeomDB.h"
#include <string>
//----------------------- Macro per import/export ----------------------------
+2 -5
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2023
// EgalTech 2014-2014
//----------------------------------------------------------------------------
// File : EGkAngle.h Data : 10.02.23 Versione : 2.5b1
// File : EGkAngle.h Data : 14.07.14 Versione : 1.5g2
// Contenuto : Dichiarazione funzioni per gestione angoli.
//
//
@@ -27,6 +27,3 @@ EGK_EXPORT double AngleNearAngle( double dAngDeg, double dAngRefDeg) ;
EGK_EXPORT double DiffAngle( double dAng1Deg, double dAng2Deg) ;
EGK_EXPORT double MediaAngle( double dAng1Deg, double dAng2Deg, double dCoeff) ;
EGK_EXPORT bool AngleInSpan( double dAngDeg, double dAngRefDeg, double dAngSpanDeg) ;
EGK_EXPORT bool AngleInRange( double dAngDeg, double dAngMinDeg, double dAngMaxDeg) ;
EGK_EXPORT bool AdjustAngleInSpan( double& dAngDeg, double dAngRefDeg, double dAngSpanDeg) ;
EGK_EXPORT bool AdjustAngleInRange( double& dAngDeg, double dAngMinDeg, double dAngMaxDeg) ;
+1 -1
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2015
//----------------------------------------------------------------------------
// File : EGkArcCenTgCurvePnt.h Data : 15.03.15 Versione : 1.6c2
// File : EgkArcCenTgCurvePnt.h Data : 15.03.15 Versione : 1.6c2
// Contenuto : Dichiarazione funzioni per calcolo arco dati centro,
// tangente a curva e punto vicino a finale.
//
+1 -1
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2015
//----------------------------------------------------------------------------
// File : EGkArcPntDirTgCurve.h Data : 13.03.15 Versione : 1.6c2
// File : EgkArcPntDirTgCurve.h Data : 13.03.15 Versione : 1.6c2
// Contenuto : Dichiarazione funzioni per calcolo arco dato punto iniziale
// direzione e tangente a curva.
//
+3 -6
View File
@@ -1,14 +1,13 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2023
// EgalTech 2014-2015
//----------------------------------------------------------------------------
// File : EGkArcSpecial.h Data : 04.08.23 Versione : 2.5h1
// File : EGkArcSpecial.h Data : 15.03.15 Versione : 1.6c2
// Contenuto : Dichiarazione funzioni per calcolo speciale archi.
//
//
//
// Modifiche : 12.06.14 DS Creazione modulo.
// 20.12.22 DS Aggiunta GetArc2PCN.
// 04.08.23 DS Aggiunta GetArc2PNB.
//
//
//----------------------------------------------------------------------------
@@ -28,6 +27,4 @@
//----------------------------------------------------------------------------
EGK_EXPORT ICurve* GetArc2PD( const Point3d& ptStart, const Point3d& ptEnd, double dDirStartDeg) ;
EGK_EXPORT ICurve* GetArc2PVN( const Point3d& ptStart, const Point3d& ptEnd, const Vector3d& vtDirS, const Vector3d& vtN) ;
EGK_EXPORT ICurve* GetArc2PNB( const Point3d& ptStart, const Point3d& ptEnd, const Vector3d& vtN, double dBulge) ;
EGK_EXPORT ICurve* GetArc3P( const Point3d& ptStart, const Point3d& ptOther, const Point3d& ptEnd, bool bCirc) ;
EGK_EXPORT ICurveArc* GetArc2PCN( const Point3d& ptStart, const Point3d& ptEnd, const Point3d& ptNearCen, const Vector3d& vtN) ;
+8 -46
View File
@@ -1,20 +1,19 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2023
// EgalTech 2013-2014
//----------------------------------------------------------------------------
// File : EGkBBox3d.h Data : 12.05.23 Versione : 2.5e3
// File : EGkBBox3d.h Data : 14.01.14 Versione : 1.5a4
// Contenuto : Dichiarazione della classe axis aligned bounding box BBox3d.
//
//
//
// Modifiche : 14.01.13 DS Creazione modulo.
// 17.08.22 DS Aggiunte GetDimX, GetDimY, GetDimZ.
// 12.05.23 DS Aggiunta Overlaps con Box su riferimento.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkPoint3d.h"
#include "/EgtDev/Include/EGKPoint3d.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
@@ -73,9 +72,6 @@ class EGK_EXPORT BBox3d
{ return m_ptMax ; }
bool GetMinMax( Point3d& ptMin, Point3d& ptMax) const ;
bool GetMinDim( Point3d& ptMin, double& dDimX, double& dDimY, double& dDimZ) const ;
double GetDimX( void) const ;
double GetDimY( void) const ;
double GetDimZ( void) const ;
bool GetCenterExtent( Point3d& ptCenter, Vector3d& vtExtent) const ;
bool GetCenter( Point3d& ptCenter) const ;
bool GetRadius( double& dRad) const ;
@@ -90,11 +86,10 @@ class EGK_EXPORT BBox3d
bool EnclosesXY( const Point3d& ptP) const ;
bool Encloses( const BBox3d& b3Box) const ;
bool EnclosesXY( const BBox3d& b3Box) const ;
bool Overlaps( const BBox3d& b3Box) const ;
bool OverlapsXY( const BBox3d& b3Box) const ;
bool Overlaps( const Frame3d& frBox, const BBox3d& b3Box) const ;
bool FindIntersection( const BBox3d& b3Box, BBox3d& b3Int) const ;
bool FindIntersectionXY( const BBox3d& b3Box, BBox3d& b3Int) const ;
bool Overlaps( const BBox3d& b3B) const ;
bool OverlapsXY( const BBox3d& b3B) const ;
bool FindIntersection( const BBox3d& b3B, BBox3d& b3Int) const ;
bool FindIntersectionXY( const BBox3d& b3B, BBox3d& b3Int) const ;
double SqDistFromPoint( const Point3d& ptP) const ;
double SqDistFromPointXY( const Point3d& ptP) const ;
double DistFromPoint( const Point3d& ptP) const
@@ -127,36 +122,3 @@ class EGK_EXPORT BBox3d
Point3d m_ptMin ;
Point3d m_ptMax ;
} ;
//----------------------------------------------------------------------------
//! Restituisce una copia in locale del box passato
//----------------------------------------------------------------------------
inline const BBox3d
GetToLoc( const BBox3d& b3Box, const Frame3d& frRef)
{
BBox3d b3New = b3Box ;
b3New.ToLoc( frRef) ;
return b3New ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia in globale del box passato
//----------------------------------------------------------------------------
inline const BBox3d
GetToGlob( const BBox3d& b3Box, const Frame3d& frRef)
{
BBox3d b3New = b3Box ;
b3New.ToGlob( frRef) ;
return b3New ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia dal primo al secondo riferimento del box passato
//----------------------------------------------------------------------------
inline const BBox3d
GetLocToLoc( const BBox3d& b3Box, const Frame3d& frOri, const Frame3d& frDest)
{
BBox3d b3New = b3Box ;
b3New.LocToLoc( frOri, frDest) ;
return b3New ;
}
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGkCurve.h"
#include "/EgtDev/Include/EgkCurve.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
+1 -8
View File
@@ -24,11 +24,4 @@
#endif
//----------------------------------------------------------------------------
// Il sistema di riferimento è allineato con il box e ha origine in un suo vertice.
// La distanza di sicurezza ha effetto solo se maggiore di EPS_SMALL.
// Il sistema di riferimento del box è riferito a quello della superficie.
// La funzione restituisce :
// - true in caso di collisione o inconsistenza dei parametri di input
// - false in caso di assenza di collisione.
//----------------------------------------------------------------------------
EGK_EXPORT bool CDeBoxClosedSurfTm( const Frame3d& frBox, const Vector3d& vtDiag, const ISurfTriMesh& Stm, double dSafeDist) ;
EGK_EXPORT bool CDeBoxClosedSurfTm( const Frame3d& frBox, const Vector3d& vtDiag, double dSafeDist, const ISurfTriMesh& Stm) ;
+6 -8
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2020-2024
// EgalTech 2020-2020
//----------------------------------------------------------------------------
// File : EGkCDeClosedSurfTmClosedSurfTm.h Data : 15.02.24 Versione : 2.6b2
// File : EGkCDeSurfTmSurfTm.h Data : 13.11.20 Versione :
// Contenuto : Dichiarazione funzione verifica collisione tra
// SurfTm e SurfTm.
//
@@ -12,7 +12,7 @@
#pragma once
#include "EgtDev/Include/EGkSurfTriMesh.h"
#include "/EgtDev/Include/EGkSurfTriMesh.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
@@ -23,10 +23,8 @@
#endif
//----------------------------------------------------------------------------
// La funzione restituisce true in caso di collisone, false in caso di assenza
// di collisione o inconsistenza dei parametri di input.
// Le due superfici devono essere espresse nel medesimo sistema di riferimento.
// La distanza di sicurezza ha effetto solo se maggiore di EPS_SMALL.
// La funzione restituisce :
// - true in caso di collisione o inconsistenza dei parametri di input
// - false in caso di assenza di collisione.
//----------------------------------------------------------------------------
EGK_EXPORT bool CDeClosedSurfTmClosedSurfTm( const ISurfTriMesh& SurfA, const ISurfTriMesh& SurfB, double dSafeDist) ;
EGK_EXPORT bool CDeClosedSurfTmClosedSurfTm( const SurfTriMesh& SurfA, const SurfTriMesh& SurfB, double dSafeDist) ;
+6 -9
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2020-2024
// EgalTech 2020-2020
//----------------------------------------------------------------------------
// File : EGkCDeConeFrustumClosedSurfTm.h Data : 15.02.24 Versione : 2.6b2
// File : EGkCDeConeFrustumClosedSurfTm.h Data : 09.11.20 Versione :
// Contenuto : Dichiarazione funzione verifica collisione tra
// Cone e Closed SurfTriMesh.
//
@@ -23,11 +23,8 @@
#endif
//----------------------------------------------------------------------------
// Il sistema di riferimento deve avere l'asse di simmetria del cono come asse Z e origine nel centro della base.
// La distanza di sicurezza ha effetto solo se maggiore di EPS_SMALL.
// Il sistema di riferimento del cono è riferito a quello della superficie.
// La funzione restituisce :
// - true in caso di collisione o inconsistenza dei parametri di input
// - false in caso di assenza di collisione.
// Il sisitema di riferimento deve avere l'asse di simmetria del cono come asse Z e origine nel centro della base.
// La distanza di sicurezza ha effetto solo se maggiore di epsilon, altrimenti è ignorata ed è ininfluente.
// Il sistema di riferimento del cono deve essere immerso in quello della superficie.
EGK_EXPORT bool CDeConeFrustumClosedSurfTm( const Frame3d& frCone, double dBaseRad, double dTopRad, double dHeight,
const ISurfTriMesh& Stm, double dSafeDist) ;
double dSafeDist, const ISurfTriMesh& Stm) ;
+6 -9
View File
@@ -12,8 +12,8 @@
#pragma once
#include "EgtDev/Include/EGkFrame3d.h"
#include "EgtDev/Include/EGkSurfTriMesh.h"
#include "/EgtDev/Include/EGkFrame3d.h"
#include "/EgtDev/Include/EGkSurfTriMesh.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
@@ -24,12 +24,9 @@
#endif
//----------------------------------------------------------------------------
// Il toro convesso è il disco solido limitato dalla sola parte esterna del toro.
// Il toro convesso è il disco limitato dalla sola parte esterna del toro.
// Raggio principale R1, raggio secondario R2.
// Il toro è posto nel piano XY del suo riferimento, centrato sull'origine.
// La funzione restituisce :
// - true in caso di collisione o inconsistenza dei parametri di input
// - false in caso di assenza di collisione.
//----------------------------------------------------------------------------
EGK_EXPORT bool CDeConvexTorusClosedSurfTm( const Frame3d& frTorus, double dRad1, double dRad2,
const ISurfTriMesh& tmSurf, double dSafeDist) ;
// La funzione restituisce true in caso di collisione.
EGK_EXPORT bool CDeConvexTorusClosedSurfTm( const Frame3d& frTorusFrame, double dRad1, double dRad2,
double dSafeDist, const ISurfTriMesh& tmSurf) ;
+1 -8
View File
@@ -23,11 +23,4 @@
#endif
//----------------------------------------------------------------------------
// Il sistema di riferimento deve avere l'asse di simmetria del cilindro come asse Z e origine nel centro della base.
// La distanza di sicurezza ha effetto solo se maggiore di EPS_SMALL, altrimenti è ignorata ed è ininfluente.
// Il sistema di riferimento del cilindro è riferito a quello della superficie.
// La funzione restituisce :
// - true in caso di collisione o inconsistenza dei parametri di input
// - false in caso di assenza di collisione.
//----------------------------------------------------------------------------
EGK_EXPORT bool CDeCylClosedSurfTm( const Frame3d& frCyl, double dR, double dH, const ISurfTriMesh& Stm, double dSafeDist) ;
EGK_EXPORT bool CDeCylClosedSurfTm( const Frame3d& frCyl, double dR, double dH, double dSafeDist, const ISurfTriMesh& Stm) ;
+1 -5
View File
@@ -26,10 +26,6 @@
// Il sistema di riferimento deve avere l'origine nel centro della Base, asse X lungo
// un segmento della stessa e asse Z ortogonale alle basi e diretto verso la base Top.
// Il sistema di riferimento della piramide deve essere immerso in quello della superficie.
// La funzione restituisce :
// - true in caso di collisione o inconsistenza dei parametri di input
// - false in caso di assenza di collisione.
//----------------------------------------------------------------------------
EGK_EXPORT bool CDeRectPrismoidClosedSurfTm( const Frame3d& frPrismoid, double dLenghtBaseX, double dLenghtBaseY,
double dLenghtTopX, double dLenghtTopY, double dHeight,
const ISurfTriMesh& Stm, double dSafeDist) ;
double dSafeDist, const ISurfTriMesh& Stm) ;
+1 -5
View File
@@ -23,8 +23,4 @@
#endif
//----------------------------------------------------------------------------
// La funzione restituisce :
// - true in caso di collisione o inconsistenza dei parametri di input
// - false in caso di assenza di collisione.
//----------------------------------------------------------------------------
EGK_EXPORT bool CDeSpheClosedSurfTm( const Point3d& ptCen, double dR, const ISurfTriMesh& Stm, double dSafeDist) ;
EGK_EXPORT bool CDeSpheClosedSurfTm( const Point3d& ptCen, double dR, double dSafeDist, const ISurfTriMesh& Stm) ;
-31
View File
@@ -1,31 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2023-2023
//----------------------------------------------------------------------------
// File : EGkCalcPocketing.h Data : 16.11.23 Versione : 2.5j1
// Contenuto : Calcolo dei percorsi elementari di pocketing.
//
//
//
// Modifiche : 16.11.23 RE Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurveComposite.h"
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
EGK_EXPORT bool CalcPocketing( const ISurfFlatRegion* pSfr, double dRad, double dStep, double dAngle, int nType,
bool bSmooth, ICRVCOMPOPOVECTOR& vCrv) ;
EGK_EXPORT bool CalcZigZagInfill( const ISurfFlatRegion* pSfr, double dStep, bool bSmooth, bool bRemoveOverlapLink,
ICRVCOMPOPOVECTOR& vCrvCompoRes) ;
+3 -1
View File
@@ -16,6 +16,7 @@
#include "/EgtDev/Include/EGkPointGrid3d.h"
#include "/EgtDev/Include/EGkGeoCollection.h"
#include <unordered_set>
class IGeomDB ;
@@ -58,6 +59,7 @@ class ChainCurves
EGK_EXPORT bool GetForkIds( INTVECTOR& vForkIds) ;
private :
typedef std::unordered_set<int> INTUSET ;
struct CrvData {
int nId ;
Point3d ptStart ;
@@ -90,7 +92,7 @@ class ChainCurves
private :
bool m_bAllowInvert ;
double m_dToler ;
INTUNORDSET m_sCrvId ;
INTUSET m_sCrvId ;
CRVDATAVECTOR m_vCrvData ;
PointGrid3d m_PointGrid ;
bool m_bFromNear ;
-28
View File
@@ -1,28 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2022-202
//----------------------------------------------------------------------------
// File : EGkCircle2Pe.h Data : 18.08.22 Versione : 2.4h2
// Contenuto : Dichiarazione funzioni per calcolo circonferenze per 2 punti
// diametrali.
//
//
// Modifiche : 18.08.22 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurveArc.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
EGK_EXPORT ICurveArc* GetCircle2P( const Point3d& ptP1, const Point3d& ptP2, const Vector3d& vtN) ;
+1 -1
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2015
//----------------------------------------------------------------------------
// File : EGkCircleCenTgCurve.h Data : 12.03.15 Versione : 1.6c2
// File : EgkCircleCenTgCurve.h Data : 12.03.15 Versione : 1.6c2
// Contenuto : Dichiarazione funzioni per calcolo circonferenze di centro
// dato tangenti a curve.
//
-5
View File
@@ -60,10 +60,6 @@ class Color
{ m_Col[ALPHA] = (( nAlpha < 0) ? 0 : (( nAlpha > MAX_ALPHA) ? MAX_ALPHA : nAlpha)) ; }
void SetAlpha( double dAlpha)
{ m_Col[ALPHA] = (( dAlpha < 0) ? 0 : (( dAlpha > 1) ? MAX_ALPHA : int( lround( dAlpha * MAX_ALPHA)))) ; }
void Intensify( double dCoeff)
{ Set( int( m_Col[RED] * dCoeff), int( m_Col[GREEN] * dCoeff), int( m_Col[BLUE] * dCoeff), m_Col[ALPHA]) ;
if ( dCoeff > 1 && m_Col[RED] < 64 && m_Col[GREEN] < 64 && m_Col[BLUE] < 64)
Set( 64, 64, 64, m_Col[ALPHA]) ; }
int GetIntRed( void) const
{ return m_Col[RED] ; }
int GetIntGreen( void) const
@@ -108,7 +104,6 @@ class Color
const Color WHITE( 255, 255, 255) ;
const Color LGRAY( 192, 192, 192) ;
const Color GRAY( 128, 128, 128) ;
const Color DGRAY( 64, 64, 64) ;
const Color BLACK( 0, 0, 0) ;
const Color RED( 255, 0, 0) ;
const Color MAROON( 128, 0, 0) ;
+1 -2
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2014
//----------------------------------------------------------------------------
// File : EGkCurve.h Data : 06.05.14 Versione : 1.5e3
// File : EgkCurve.h Data : 06.05.14 Versione : 1.5e3
// Contenuto : Dichiarazione della interfaccia ICurve.
//
//
@@ -31,7 +31,6 @@ class __declspec( novtable) ICurve : public IGeoObj
PP_END = 3} ; // punto coincidente con la fine
enum ApprLineType { APL_STD = 0, // approssimazione standard
APL_SPECIAL = 10, // come STD, per composite conserva estremi di curve componenti
APL_SPECIAL_INT = 20, // come SPECIAL, per composite anche almeno un interno di componenti non rettilinei
APL_LEFT = 1, // linee sempre a sinistra
APL_LEFT_CONVEX = 11, // linee sempre a sinistra convesse
APL_RIGHT = 2, // linee sempre a destra
+1 -1
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : EGkCurveArc.h Data : 22.11.13 Versione : 1.3a1
// File : EgkCurveArc.h Data : 22.11.13 Versione : 1.3a1
// Contenuto : Dichiarazione della interfaccia ICurveArc.
//
//
+2 -26
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2014
//----------------------------------------------------------------------------
// File : EGkCurveAux.h Data : 28.01.24 Versione : 2.6a2
// File : EgkCurveAux.h Data : 23.05.14 Versione : 1.5e9
// Contenuto : Dichiarazione funzioni ausiliarie per ICurve.
//
//
@@ -32,18 +32,14 @@ struct CNurbsData
bool bRat ; // flag di curva razionale (pesi non tutti unitari)
bool bPeriodic ; // flag per segnalare vettore dei nodi periodico
bool bClosed ; // flag di curva chiusa
bool bClamped ; // flag di curva clamped
bool bExtraKnotes ; // flag per segnalare presenza di nodi extra all'inizio e fine (totale 2)
DBLVECTOR vU ; // vettore dei nodi
PNTVECTOR vCP ; // vettore dei punti di controllo
DBLVECTOR vW ; // vettore dei pesi
CNurbsData( void) : nDeg( 0), bRat( false), bPeriodic( false), bClosed( false), bClamped( true), bExtraKnotes(false) {}
CNurbsData( void) : nDeg( 0), bRat( false), bPeriodic( false), bClosed( false), bExtraKnotes( false) {}
} ;
// N.B. : in caso la curva sia razionale i punti di controllo sono in forma NON OMOGENEA [ x, y, z, w] ( dove la forma OMOGENEA è [ w*x, w*y, w*z, w])
// tutte le operazioni richiedono la forma OMOGENEA, finite le quali posso riportarmi alla forma NON OMOGENEA
//----------------------------------------------------------------------------
//! Trasforma un arco in una nuova curva di Bezier semplice o composta
EGK_EXPORT ICurve* ArcToBezierCurve( const ICurve* pArc) ;
@@ -78,23 +74,3 @@ EGK_EXPORT ICurve* ProjectCurveOnPlane( const ICurve& crCrv, const Plane3d& plPl
//----------------------------------------------------------------------------
//! Uniforma la pendenza di una composita tra quota iniziale e finale assegnate
EGK_EXPORT bool AdjustCurveSlope( ICurveComposite* pCrv, double dNini, double dNfin) ;
//----------------------------------------------------------------------------
//! Calcolo del diagramma di Voronoi della curva, nei TempParam dei risultati la distanza
//! Per nBound tenere valore di default.
EGK_EXPORT bool CalcCurveVoronoiDiagram( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, int nBound = 3) ;
//----------------------------------------------------------------------------
//! Calcolo del Medial Axis della curva (sottoinsieme del diagramma di Voronoi), nei TempParam dei risultati la distanza
const int WMAT_BOTHSIDES = 0 ;
const int WMAT_LEFT = 1 ;
const int WMAT_RIGHT = 2 ;
EGK_EXPORT bool CalcCurveMedialAxis( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, int nSide) ;
//----------------------------------------------------------------------------
//! Calcola l'offset completo di una curva
EGK_EXPORT bool CalcCurveFatCurve( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, double dRadius, bool bSquareEnds, bool bSquareMids) ;
//----------------------------------------------------------------------------
//! Resetta l'oggetto voronoi associato alla curva liberandone la memoria
EGK_EXPORT void ResetCurveVoronoi( const ICurve& crvC) ;
+1 -1
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : EGkCurveBezier.h Data : 22.11.13 Versione : 1.3a1
// File : EgkCurveBezier.h Data : 22.11.13 Versione : 1.3a1
// Contenuto : Dichiarazione della interfaccia ICurveBezier.
//
//
+5 -6
View File
@@ -1,13 +1,13 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2023
// EgalTech 2015-2015
//----------------------------------------------------------------------------
// File : EGkCurveByApprox.h Data : 28.07.23 Versione : 2.5g3
// File : EGkCurveByApprox.h Data : 23.07.15 Versione : 1.6g7
// Contenuto : Dichiarazione della classe CurveByApprox.
//
//
//
// Modifiche : 23.07.15 DS Creazione modulo.
// 28.07.23 DS GetArcs e GetArcsCorner.
//
//
//----------------------------------------------------------------------------
@@ -35,11 +35,10 @@ class CurveByApprox
EGK_EXPORT bool Reset( void) ;
EGK_EXPORT bool AddPoint( const Point3d& ptP) ;
EGK_EXPORT ICurve* GetCurve( int nType, double dLinTol, double dAngTolDeg, double dLinFea) ;
EGK_EXPORT bool GetArcs( double dLinTol, double dAngTolDeg, PolyArc& PA) ;
EGK_EXPORT bool GetArcsCorner( double dLinTol, double dAngTolDeg, double dLinFea, PolyArc& PA) ;
EGK_EXPORT bool GetArcs( double dLinTol, double dAngTolDeg, double dLinFea, PolyArc& PA) ;
public :
enum TYPE { ARCS = 0, ARCS_CORNER = 1, CUBIC_BEZIERS = 2} ;
enum TYPE { ARCS_CORNER = 1, CUBIC_BEZIERS = 2} ;
private :
bool CalcParameterization( void) ;
+6 -43
View File
@@ -1,15 +1,13 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2022
// EgalTech 2013-2021
//----------------------------------------------------------------------------
// File : EGkCurveComposite.h Data : 24.03.22 Versione : 2.4c2
// File : EgkCurveComposite.h Data : 03.04.21 Versione : 2.3g2
// Contenuto : Dichiarazione della interfaccia ICurveComposite.
//
//
//
// Modifiche : 22.11.13 DS Creazione modulo.
// 21.07.21 LM Aggiunto parametro opzionale a Set/GetCurveTempProp.
// 23.01.22 DS Aggiunti metodi IsARectangle e IsATrapezoid.
// 24.03.22 DS Aggiunto metodo AddLineTg.
//
//----------------------------------------------------------------------------
@@ -41,13 +39,12 @@ class __declspec( novtable) ICurveComposite : public ICurve
virtual const ICurve* GetLastCurve( void) const = 0 ;
virtual const ICurve* GetPrevCurve( void) const = 0 ;
virtual bool IsParamAtJoint( double dU) const = 0 ;
virtual ICurve* RemoveFirstOrLastCurve( bool bLast = true) = 0 ;
virtual ICurve* RemoveFirstOrLastCurve( bool bLast = true) = 0 ;
virtual bool ChangeStartPoint( double dU) = 0 ;
virtual bool AddPoint( const Point3d& ptStart) = 0 ;
virtual bool AddLine( const Point3d& ptNew, bool bEndOrStart = true) = 0 ;
virtual bool AddLineTg( double dLen, bool bEndOrStart = true) = 0 ;
virtual bool AddArc2P( const Point3d& ptOther, const Point3d& ptNew, bool bEndOrStart = true) = 0 ;
virtual bool AddArcTg( const Point3d& ptNew, bool bEndOrStart = true) = 0 ;
virtual bool AddArc2P( const Point3d& ptOther, const Point3d& ptNew, bool bEndOrStart = true) = 0 ;
virtual bool AddJoint( double dU) = 0 ;
virtual bool ModifyJoint( int nU, const Point3d& ptNewJoint) = 0 ;
virtual bool RemoveJoint( int nU) = 0 ;
@@ -56,22 +53,13 @@ class __declspec( novtable) ICurveComposite : public ICurve
virtual bool ModifyCurveToLine( int nCrv) = 0 ;
virtual bool ArcsToBezierCurves( void) = 0 ;
virtual bool ArcsBezierCurvesToArcsPerpExtr( double dLinTol, double dAngTolDeg) = 0 ;
virtual bool StraightArcsToLines( double dLinTol, double dAngTolDeg) = 0 ;
virtual bool MergeCurves( double dLinTol, double dAngTolDeg, bool bStartEnd = true, bool bNeedSameProp = false) = 0 ;
virtual bool RemoveSmallParts( double dLinTol, double dAngTolDeg) = 0 ;
virtual bool RemoveSmallDefects( double dLinTol, double dAngTolDeg, bool bAlsoSpikes = false) = 0 ;
virtual bool RemoveUndercutOnY( double dLinTol, double dAngTolDeg) = 0 ;
virtual bool IsAPoint( void) const = 0 ;
virtual bool IsALine( double dLinTol, Point3d& ptStart, Point3d& ptEnd) const = 0 ;
virtual bool IsACircle( double dLinTol, Point3d& ptCen, Vector3d& vtN, double& dRad, bool& bCCW) const = 0 ;
virtual bool IsARectangle( double dLinTol, Point3d& ptP, Vector3d& vtL1, Vector3d& vtL2) const = 0 ;
virtual bool IsATrapezoid( double dLinTol, Point3d& ptP, Vector3d& vtB1, Vector3d& vtL1, Vector3d& vtB2) const = 0 ;
virtual bool SetCurveTempProp( int nCrv, int nProp, int nPropInd = 0) = 0 ;
virtual bool GetCurveTempProp( int nCrv, int& nProp, int nPropInd = 0) const = 0 ;
virtual bool SetCurveTempParam( int nCrv, double dParam, int nParamInd = 0) = 0 ;
virtual bool GetCurveTempParam( int nCrv, double& dParam, int nParamInd = 0) const = 0 ;
virtual bool FromPoint( Point3d& ptStart) = 0 ;
virtual bool GetOnlyPoint( Point3d& ptStart) const = 0 ;
virtual bool SetCurveTempProp( int nCrv, int nProp, int nPropNum = 0) = 0 ;
virtual bool GetCurveTempProp( int nCrv, int& nProp, int nPropNum = 0) const = 0 ;
} ;
//-----------------------------------------------------------------------------
@@ -89,31 +77,6 @@ inline ICurveComposite* GetCurveComposite( IGeoObj* pGObj)
{ if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO)
return nullptr ;
return (static_cast<ICurveComposite*>(pGObj)) ; }
inline ICurveComposite* ConvertCurveToComposite( IGeoObj* pGObj)
{ if ( pGObj == nullptr || ( pGObj->GetType() & GEO_CURVE) == 0) {
delete pGObj ;
return nullptr ;
}
ICurveComposite* pCrvCo = CreateCurveComposite() ;
if ( pCrvCo == nullptr) {
delete pGObj ;
return nullptr ;
}
ICurve* pCrv = static_cast<ICurve*>( pGObj) ;
Vector3d vtExtr ;
if ( pCrv->GetExtrusion( vtExtr) && ! vtExtr.IsSmall())
pCrvCo->SetExtrusion( vtExtr) ;
double dThick ;
if ( pCrv->GetThickness( dThick) && abs( dThick) > EPS_SMALL)
pCrvCo->SetThickness( dThick) ;
for ( int i = 0 ; i < 2 ; ++ i) {
int nProp = pCrv->GetTempProp( i) ;
if ( nProp != 0)
pCrvCo->SetTempProp( nProp, i) ;
}
pCrvCo->AddCurve( pCrv) ;
return pCrvCo ;
}
//----------------------------------------------------------------------------
// Raccolte di puntatori a ICurveComposite
+1 -8
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : EGkCurveLine.h Data : 22.11.13 Versione : 1.3a1
// File : EgkCurveLine.h Data : 22.11.13 Versione : 1.3a1
// Contenuto : Dichiarazione della interfaccia ICurveLine.
//
//
@@ -45,10 +45,3 @@ inline ICurveLine* GetCurveLine( IGeoObj* pGObj)
{ if ( pGObj == nullptr || pGObj->GetType() != CRV_LINE)
return nullptr ;
return (static_cast<ICurveLine*>(pGObj)) ; }
//----------------------------------------------------------------------------
// Raccolte di puntatori a ICurveLine
typedef std::vector<const ICurveLine*> CICRVLINEVECTOR ; // vettore di puntatori a const ICurveLine
typedef std::vector<ICurveLine*> ICRVLINEPVECTOR ; // vettore di puntatori a ICurveLine
typedef std::list<ICurveLine*> ICRVLINEPLIST ; // lista di puntatori a ICurveLine
typedef std::vector<PtrOwner<ICurveLine>> ICRVLINEPOVECTOR ; // vettore di puntatori esclusivi a ICurveLine
+1 -1
View File
@@ -14,7 +14,7 @@
#pragma once
#include "/EgtDev/Include/EGkCurve.h"
#include "/EgtDEv/Include/EGkGeomDB.h"
#include "/EgtDEv/Include/EgkGeomDB.h"
//-----------------------------------------------------------------------------
class CurveLocal
+1 -1
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : EGkCurvePointDiffGeom.h Data : 26.12.13 Versione : 1.4l4
// File : EgkCurvePointDiffGeom.h Data : 26.12.13 Versione : 1.4l4
// Contenuto : Tipi generali per calcoli geometrici.
//
//
+16 -17
View File
@@ -49,23 +49,22 @@ class DistPointCurve
// Il flag bIsSegment vale solo per linee.
public :
EGK_EXPORT bool GetSqDist( double& dSqDist) const ;
EGK_EXPORT bool GetDist( double& dDist) const ;
EGK_EXPORT bool IsEpsilon( double dTol) const
{ double dSqDist ; return ( GetSqDist( dSqDist) && ( dSqDist < SQ_EPS_ZERO || dSqDist < dTol * dTol)) ; }
EGK_EXPORT bool IsSmall( void) const
{ return IsEpsilon( EPS_SMALL) ; }
EGK_EXPORT bool IsZero( void) const
{ return IsEpsilon( EPS_ZERO) ; }
EGK_EXPORT int GetNbrMinDist( void) const
{ return (int) m_Info.size() ; }
EGK_EXPORT bool GetMinDistPoint( int nInd, Point3d& ptMinDist, int& nFlag) const ;
EGK_EXPORT bool GetMinDistPoint( double dNearParam, Point3d& ptMinDist, int& nFlag) const ;
EGK_EXPORT bool GetParamAtMinDistPoint( int nInd, double& dParam, int& nFlag) const ;
EGK_EXPORT bool GetParamAtMinDistPoint( double dNearParam, double& dParam, int& nFlag) const ;
EGK_EXPORT bool GetSideAtMinDistPoint( int nInd, const Vector3d& vtN, int& nSide) const ;
EGK_EXPORT bool GetSideAtMinDistPoint( double dNearParam, const Vector3d& vtN, int& nSide) const ;
EGK_EXPORT bool GetMinDistInfo( int nInd, MinDistPCInfo& aInfo) const ;
EGK_EXPORT bool GetSqDist( double& dSqDist) ;
EGK_EXPORT bool GetDist( double& dDist) ;
EGK_EXPORT bool IsEpsilon( double dTol)
{ double dSqDist ; return ( GetSqDist( dSqDist) && ( dSqDist < SQ_EPS_ZERO || dSqDist < dTol * dTol)) ; }
EGK_EXPORT bool IsSmall( void)
{ return IsEpsilon( EPS_SMALL) ; }
EGK_EXPORT bool IsZero( void)
{ return IsEpsilon( EPS_ZERO) ; }
EGK_EXPORT int GetNbrMinDist( void) { return (int) m_Info.size() ; }
EGK_EXPORT bool GetMinDistPoint( int nInd, Point3d& ptMinDist, int& nFlag) ;
EGK_EXPORT bool GetMinDistPoint( double dNearParam, Point3d& ptMinDist, int& nFlag) ;
EGK_EXPORT bool GetParamAtMinDistPoint( int nInd, double& dParam, int& nFlag) ;
EGK_EXPORT bool GetParamAtMinDistPoint( double dNearParam, double& dParam, int& nFlag) ;
EGK_EXPORT bool GetSideAtMinDistPoint( int nInd, const Vector3d& vtN, int& nSide) ;
EGK_EXPORT bool GetSideAtMinDistPoint( double dNearParam, const Vector3d& vtN, int& nSide) ;
EGK_EXPORT bool GetMinDistInfo( int nInd, MinDistPCInfo& aInfo) ;
private :
DistPointCurve( void) ;
+10 -22
View File
@@ -1,13 +1,13 @@
//----------------------------------------------------------------------------
// EgalTech 2018-2023
// EgalTech 2018-2018
//----------------------------------------------------------------------------
// File : EGkDistPointSurfTm.h Data : 06.07.23 Versione : 2.5g1
// File : EGkDistPointTria.h Data : 11.12.18 Versione : 1.9l2
// Contenuto : Dichiarazione della classe distanza Punto da Trimesh.
//
//
//
// Modifiche : 06.12.18 LM Creazione modulo.
// 06.07.23 DS Aggiunta GetSurfTmNearestVertex.
//
//
//----------------------------------------------------------------------------
@@ -23,13 +23,6 @@
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
// Calcola la distanza tra punto e superficie trimesh.
// Risultati :
// - distanza
// - punto sulla superficie a minima distanza
// - indice del triangolo su cui giace il punto
// - indicazione se il punto di riferimento è dalla parte interna o esterna della superficie.
//----------------------------------------------------------------------------
class DistPointSurfTm
{
@@ -37,16 +30,16 @@ class DistPointSurfTm
EGK_EXPORT DistPointSurfTm( const Point3d& ptP, const ISurfTriMesh& tmSurf) ;
public :
EGK_EXPORT bool GetDist( double& dDist) const ;
EGK_EXPORT bool IsEpsilon( double dTol) const
EGK_EXPORT bool GetDist( double& dDist) ;
EGK_EXPORT bool IsEpsilon( double dTol)
{ return ( m_dDist >= 0. && ( m_dDist < EPS_ZERO || m_dDist < dTol)) ; }
EGK_EXPORT bool IsSmall( void) const
EGK_EXPORT bool IsSmall( void)
{ return IsEpsilon( EPS_SMALL) ; }
EGK_EXPORT bool IsZero( void) const
EGK_EXPORT bool IsZero( void)
{ return IsEpsilon( EPS_ZERO) ; }
EGK_EXPORT bool GetMinDistPoint( Point3d& ptMinDistPoint) const ;
EGK_EXPORT bool GetMinDistTriaIndex( int& nMinDistTriaIndex) const ;
EGK_EXPORT bool IsPointInside( void) const
EGK_EXPORT bool GetMinDistPoint( Point3d& ptMinDistPoint) ;
EGK_EXPORT bool GetMinDistTriaIndex( int& nMinDistTriaIndex) ;
EGK_EXPORT bool IsPointInside( void)
{ return m_bIsInside ; }
private :
@@ -58,8 +51,3 @@ class DistPointSurfTm
int m_nMinDistTriaIndex ;
bool m_bIsInside ;
} ;
//----------------------------------------------------------------------------
// Calcola l'indice del vertice della superficie a minima distanza dal punto di riferimento.
//----------------------------------------------------------------------------
EGK_EXPORT int GetSurfTmNearestVertex( const Point3d& ptP, const ISurfTriMesh& tmSurf) ;
+2 -4
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2020
//----------------------------------------------------------------------------
// File : EGkDllMain.h Data : 19.09.20 Versione : 2.2i2
// File : EgkDllMain.h Data : 19.09.20 Versione : 2.2i2
// Contenuto : Prototipi funzioni generali della DLL.
//
//
@@ -38,8 +38,6 @@ EGK_EXPORT void SetEGkLogger( ILogger* pLogger) ;
EGK_EXPORT void SetEGkKey( const std::string& sKey) ;
// imposta il tipo di chiave di protezione
EGK_EXPORT void SetEGkKeyType( int nType) ;
// imposta se chiave hardware di rete
EGK_EXPORT void SetEGkNetHwKey( bool bNetHwKey) ;
// permette di inizializzare il font manager
EGK_EXPORT void InitFontManager( const std::string& sNfeFontDir, const std::string& sDefaultFont) ;
// restituisce il direttorio dei font proprietari (Nfe)
@@ -47,4 +45,4 @@ EGK_EXPORT const std::string& GetNfeFontDir( void) ;
// restituisce il nome del font di default
EGK_EXPORT const std::string& GetDefaultFont( void) ;
// imposto il gestore eventi
EGK_EXPORT bool SetEGkProcessEvents( pfProcEvents pFun) ;
EGK_EXPORT bool SetEGkProcessEvents( pfProcEvents pFun) ;
-9
View File
@@ -32,15 +32,6 @@ class __declspec( novtable) IExtDimension : public IGeoObj
int nDecDigit, const std::string& sFont, double dTextHeight) = 0 ;
virtual bool SetLinear( const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptPos,
const Vector3d& vtN, const Vector3d& vtDir, const std::string& sText) = 0 ;
virtual bool SetRadial( const Point3d& ptCen, const Point3d& ptPos,
const Vector3d& vtN, const std::string& sText) = 0 ;
virtual bool SetDiametral( const Point3d& ptCen, const Point3d& ptPos,
const Vector3d& vtN, const std::string& sText) = 0 ;
virtual bool SetAngular( const Point3d& ptV, const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptPos,
const Vector3d& vtN, const std::string& sText) = 0 ;
virtual bool SetAngularEx( const Point3d& ptV1, const Point3d& ptP1,
const Point3d& ptV2, const Point3d& ptP2, const Point3d& ptPos,
const Vector3d& vtN, const std::string& sText) = 0 ;
virtual const Vector3d& GetNormVersor( void) const = 0 ;
virtual const Vector3d& GetDirVersor( void) const = 0 ;
virtual const std::string& GetText( void) const = 0 ;
+24 -66
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2023
// EgalTech 2013-2014
//----------------------------------------------------------------------------
// File : EGkFrame3d.h Data : 20.07.23 Versione : 2.5g2
// File : EgkFrame3d.h Data : 30.05.14 Versione : 1.5e10
// Contenuto : Dichiarazione della classe Reference Frame 3d.
//
//
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGkPoint3d.h"
#include "/EgtDev/Include/EGKPoint3d.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
@@ -30,8 +30,8 @@ class EGK_EXPORT Frame3d
enum Type { ERR = 0, TOP = 1, BOTTOM = 2, FRONT = 3,
BACK = 4, LEFT = 5, RIGHT = 6, GEN = 7} ;
public :
Frame3d( bool bGlob = true)
: m_nType( bGlob ? TOP : ERR), m_nZType( bGlob ? TOP : ERR), m_ptOrig( ORIG),
Frame3d( void)
: m_nType( TOP), m_nZType( TOP), m_ptOrig( ORIG),
m_vtVersX( X_AX), m_vtVersY( Y_AX), m_vtVersZ( Z_AX) {}
Frame3d( const Point3d& ptOrig)
: m_nType( TOP), m_nZType( TOP), m_ptOrig( ptOrig),
@@ -43,7 +43,7 @@ class EGK_EXPORT Frame3d
bool Set( const Point3d& ptOrig, const Vector3d& vtDirZ, const Vector3d& vtNearDirX) ;
bool Set( const Point3d& ptOrig, Type nType) ;
bool Set( const Point3d& ptOrig, double dAngCDeg, double dAngADeg, double dAngC1Deg) ;
bool Reset( bool bGlob = true) ;
bool Reset( void) ;
bool ChangeOrig( const Point3d& ptOrig) ;
bool Translate( const Vector3d& vtMove) ;
bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dAngDeg) ;
@@ -56,23 +56,23 @@ class EGK_EXPORT Frame3d
bool ToLoc( const Frame3d& frRef) ;
bool LocToLoc( const Frame3d& frOri, const Frame3d& frDest) ;
Frame3d& operator*=( const Frame3d& frRef)
{ ToGlob( frRef) ; return *this ; }
{ this->ToGlob( frRef) ; return *this ;}
Frame3d& operator/=( const Frame3d& frRef)
{ ToLoc( frRef) ; return *this ; }
{ this->ToLoc( frRef) ; return *this ;}
bool IsValid( void) const
{ return ( m_nType != ERR) ; }
int GetType( void) const
{ return m_nType ; }
{ return m_nType ;}
int GetZType( void) const
{ return m_nZType ; }
{ return m_nZType ;}
const Point3d& Orig( void) const
{ return m_ptOrig ; }
{ return m_ptOrig ;}
const Vector3d& VersX( void) const
{ return m_vtVersX ; }
{ return m_vtVersX ;}
const Vector3d& VersY( void) const
{ return m_vtVersY ; }
{ return m_vtVersY ;}
const Vector3d& VersZ( void) const
{ return m_vtVersZ ; }
{ return m_vtVersZ ;}
bool GetRotationsCAC1( double& dAngC, double& dAngA, double& dAngC1) const ;
bool GetFixedAxesRotationsABC( double& dAngADeg, double& dAngBDeg, double& dAngCDeg) const ;
@@ -97,56 +97,23 @@ const Frame3d GLOB_FRM ;
//----------------------------------------------------------------------------
// Prodotto di due frame (porta il primo dal secondo nel globale)
//----------------------------------------------------------------------------
inline const Frame3d
operator*( const Frame3d& frRef, const Frame3d& frOri)
inline Frame3d
operator*( const Frame3d& frRef1, const Frame3d& frRef2)
{
Frame3d frNew = frRef ;
frNew.ToGlob( frOri) ;
return frNew ;
Frame3d frRefR = frRef1 ;
frRefR.ToGlob( frRef2) ;
return frRefR ;
}
//----------------------------------------------------------------------------
// Divisione di due frame (porta il primo dal globale nel secondo)
//----------------------------------------------------------------------------
inline const Frame3d
operator/( const Frame3d& frRef, const Frame3d& frDest)
inline Frame3d
operator/( const Frame3d& frRef1, const Frame3d& frRef2)
{
Frame3d frNew = frRef ;
frNew.ToLoc( frDest) ;
return frNew ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia in locale del frame passato
//----------------------------------------------------------------------------
inline const Frame3d
GetToLoc ( const Frame3d& frRef, const Frame3d& frDest)
{
Frame3d frNew = frRef ;
frNew.ToLoc( frDest) ;
return frNew ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia in globale del frame passato
//----------------------------------------------------------------------------
inline const Frame3d
GetToGlob( const Frame3d& frRef, const Frame3d& frOri)
{
Frame3d frNew = frRef ;
frNew.ToGlob( frOri) ;
return frNew ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia dal primo al secondo riferimento del frame passato
//----------------------------------------------------------------------------
inline const Frame3d
GetLocToLoc( const Frame3d& frRef, const Frame3d& frOri, const Frame3d& frDest)
{
Frame3d frNew = frRef ;
frNew.LocToLoc( frOri, frDest) ;
return frNew ;
Frame3d frRefR = frRef1 ;
frRefR.ToLoc( frRef2) ;
return frRefR ;
}
//----------------------------------------------------------------------------
@@ -167,12 +134,3 @@ AreSameFrame( const Frame3d& frRef1, const Frame3d& frRef2)
return false ;
return true ;
}
//----------------------------------------------------------------------------
// Verifica se il riferimento coincide con quello globale (o identità)
//----------------------------------------------------------------------------
inline bool
IsGlobFrame( const Frame3d& frRef)
{
return AreSameFrame( frRef, GLOB_FRM) ;
}
+5 -7
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2014
//----------------------------------------------------------------------------
// File : EGkGdbConst.h Data : 17.06.14 Versione : 1.5f5
// File : EgkGdbConst.h Data : 17.06.14 Versione : 1.5f5
// Contenuto : Costanti generali per DB geometrico.
//
//
@@ -83,9 +83,7 @@ const std::string GDB_SI_LIST = "!LST" ; // Vettore Id entit
const std::string GDB_SI_COPY = "!COP" ; // Id entità
const std::string GDB_SI_MGRPONLY = "!MGO" ; // Id entità
const std::string GDB_SI_DRAWMODE = "!DRM" ; // Flag
const std::string GDB_SI_DUPSOU = "!DSOU" ; // Duplo Id entità originale
const std::string GDB_SI_DUPLIST = "!DLST" ; // Duplo Vettore Id entità duplicate
const std::string GDB_SI_DUPMODIF = "!DMOD" ; // Flag di sorgente per duplo modificato
const std::string GDB_SI_DUPLOCKED = "!DLOK" ; // Flag di duplo bloccato (da non aggiornare seguendo originale)
const std::string GDB_SI_DUPTOUPDATE = "!DTUP" ; // Flag di duplo da aggiornare quando sbloccato
const std::string GDB_SI_SHOWEDGES = "!SEDG" ; // Flag per forzare visualizzazione spigoli vivi anche in shading
const std::string GDB_SI_DUPSOU = "!DSOU" ; // Id entità
const std::string GDB_SI_DUPLIST = "!DLST" ; // Vettore Id entità
const std::string GDB_SI_DUPMODIF = "!DMOD" ; // Flag
+2 -2
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : EGkGdbExecutor.h Data : 25.11.13 Versione : 1.3a1
// File : EgkGdbExecutor.h Data : 25.11.13 Versione : 1.3a1
// Contenuto : Dichiarazione della interfaccia IGdbExecutor.
//
//
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGnCmdExecutor.h"
#include "/EgtDev/Include/EgnCmdExecutor.h"
class IGeomDB ;
+1 -1
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2014
//----------------------------------------------------------------------------
// File : EGkGdbFunct.h Data : 13.03.14 Versione : 1.5c6
// File : EgkGdbFunct.h Data : 13.03.14 Versione : 1.5c6
// Contenuto : Funzioni generali per DB geometrico.
//
//
+4 -10
View File
@@ -1,14 +1,13 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2023
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : EGkGdbIterator.h Data : 09.07.23 Versione : 2.5g1
// File : EGkGdbIterator.h Data : 04.12.13 Versione : 1.4a3
// Contenuto : Dichiarazione della interfaccia IGdbIterator.
//
//
//
// Modifiche : 04.12.13 DS Creazione modulo.
// 29.01.23 DS Aggiunte GetAllInfo e CopyAllInfoFrom.
// 09.07.23 DS Aggiunte SetStipple e GetStipple.
//
//
//----------------------------------------------------------------------------
@@ -143,11 +142,6 @@ class __declspec( novtable) IGdbIterator
virtual bool GetInfo( const std::string& sKey, STRVECTOR& vsInfo) const = 0 ;
virtual bool ExistsInfo( const std::string& sKey) const = 0 ;
virtual bool RemoveInfo( const std::string& sKey) = 0 ;
virtual bool GetAllInfo( STRVECTOR& vsInfo) const = 0 ;
virtual bool CopyAllInfoFrom( const IGdbIterator& iIter) = 0 ;
// Stipple
virtual bool SetStipple( int nFactor, int nPattern) = 0 ;
virtual bool GetStipple( int& nFactor, int& nPattern) const = 0 ;
// TextureData
virtual bool SetTextureName( const std::string& sTxrName) = 0 ;
virtual bool SetTextureFrame( const Frame3d& frTxrRef) = 0 ;
@@ -162,4 +156,4 @@ class __declspec( novtable) IGdbIterator
} ;
//-----------------------------------------------------------------------------
EGK_EXPORT IGdbIterator* CreateGdbIterator( IGeomDB* pGDB = nullptr) ;
EGK_EXPORT IGdbIterator* CreateGdbIterator( IGeomDB* pGDB = nullptr) ;
+7 -19
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2019
//----------------------------------------------------------------------------
// File : EGkGeoCollection.h Data : 05.11.19 Versione : 2.1k1
// File : EgkGeoCollection.h Data : 05.11.19 Versione : 2.1k1
// Contenuto : Raccolte di oggetti geometrici.
//
//
@@ -23,24 +23,18 @@
typedef std::vector<Point3d> PNTVECTOR ; // vettore di punti
typedef std::list<Point3d> PNTLIST ; // lista di punti
typedef std::vector<PNTVECTOR> PNTMATRIX ; // matrice di punti
//----------------------------------------------------------------------------
// Raccolte di coppie Point3d,int
typedef std::pair<Point3d,int> POINTI ; // coppia punto, intero
typedef std::vector<POINTI> PNTIVECTOR ; // vettore di coppie punto, intero
typedef std::list<POINTI> PNTILIST ; // lista di coppie punto, intero
//----------------------------------------------------------------------------
// Raccolte di coppie Point3d,dU
typedef std::pair<Point3d,double> POINTU ; // coppia punto, parametro (o altro)
typedef std::vector<POINTU> PNTUVECTOR ; // vettore di coppie punto, parametro
typedef std::list<POINTU> PNTULIST ; // lista di coppie punto, parametro
typedef std::pair<Point3d,double> POINTU ; // coppia punto, parametro (o altro)
typedef std::vector<POINTU> PNTUVECTOR ; // vettore di coppie punto, parametro
typedef std::list<POINTU> PNTULIST ; // lista di coppie punto, parametro
//----------------------------------------------------------------------------
// Raccolte di coppie Point3d,Point3d
typedef std::pair<Point3d,Point3d> BIPOINT ; // coppia punto1, punto2
typedef std::vector<BIPOINT> BIPNTVECTOR ; // vettore di coppie punto1, punto2
typedef std::list<BIPOINT> BIPNTLIST ; // lista di coppie punto1, punto2
typedef std::pair<Point3d,Point3d> BIPOINT ; // coppia punto1, punto2
typedef std::vector<BIPOINT> BIPNTVECTOR ; // vettore di coppie punto1, punto2
typedef std::list<BIPOINT> BIPNTLIST ; // lista di coppie punto1, punto2
//----------------------------------------------------------------------------
// Raccolte di Punti di curva con loro geometria differenziale
@@ -57,9 +51,3 @@ typedef std::list<Vector3d> VCT3DLIST ; // lista di vettori 3d
typedef std::vector<BBox3d> BOXVECTOR ; // vettore di bounding box 3d
typedef std::list<BBox3d> BOXLIST ; // lista di bounding box 3d
typedef std::vector<std::pair<BBox3d,int>> BOXIVECTOR ; // vettore di bounding box 3d e Id
//----------------------------------------------------------------------------
// Raccolte di coppie Point3d,Vector3d
typedef std::pair<Point3d,Vector3d> PNTVECT ; // coppia punto, vettore
typedef std::vector<PNTVECT> PNTVECTVECTOR ; // vettore di coppie punto, vettore
typedef std::list<PNTVECT> PNTVECTLIST ; // lista di coppie punto, vettore
+1 -4
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2019
//----------------------------------------------------------------------------
// File : EGkGeoConst.h Data : 23.11.19 Versione : 2.1k5
// File : EgkGeoConst.h Data : 23.11.19 Versione : 2.1k5
// Contenuto : Costanti generali per calcoli geometrici.
//
//
@@ -33,9 +33,6 @@ const double SQ_EPS_ZERO = EPS_ZERO * EPS_ZERO ;
const double INFINITO = 1e10 ;
const double SQ_INFINITO = INFINITO * INFINITO ;
// coefficiente componente di vettore largamente predominante
const double KV_BIG = 1e5 ;
// conversione da gradi a radianti e viceversa
const double PIGRECO = 3.14159265358979323846 ;
const double DEGTORAD = PIGRECO / 180. ;
+2 -4
View File
@@ -54,10 +54,8 @@ class __declspec( novtable) IGeoObj
virtual void SetObjGraphics( IObjGraphics* pOGr) = 0 ;
virtual IObjGraphics* GetObjGraphics( void) = 0 ;
virtual const IObjGraphics* GetObjGraphics( void) const = 0 ;
virtual void SetTempProp( int nProp, int nPropInd = 0) = 0 ;
virtual int GetTempProp( int nPropInd = 0) const = 0 ;
virtual void SetTempParam( double dParam, int nParamInd = 0) = 0 ;
virtual double GetTempParam( int nParamInd = 0) const = 0 ;
virtual void SetTempProp( int nProp, int nPropNum = 0) = 0 ;
virtual int GetTempProp( int nPropNum = 0) const = 0 ;
} ;
//-----------------------------------------------------------------------------
+2 -41
View File
@@ -1,13 +1,12 @@
//----------------------------------------------------------------------------
// EgalTech 2017-2022
// EgalTech 2017-2017
//----------------------------------------------------------------------------
// File : EGkGeoObjSave.h Data : 25.04.22 Versione : 2.4d4
// File : EGkGeoObjSave.h Data : 30.10.17 Versione : 1.8j5
// Contenuto : Funzione per salvare su file un Oggetto Geometrico.
//
//
//
// Modifiche : 30.10.17 DS Creazione modulo.
// 25.04.22 DS Aggiunti controlli.
//
//----------------------------------------------------------------------------
@@ -21,9 +20,6 @@
bool
SaveGeoObj( IGeoObj* pGObj, const std::string& sFile, int nFlag = GDB_SV_BIN)
{
// verifico validità oggetto
if ( pGObj == nullptr || ! pGObj->IsValid())
return false ;
// creo GeomDB temporaneo
PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ;
if ( IsNull( pGeomDB))
@@ -39,40 +35,5 @@ SaveGeoObj( IGeoObj* pGObj, const std::string& sFile, int nFlag = GDB_SV_BIN)
// rimuovo l'oggetto dal GeomDB
bOk = ( pGeomDB->RemoveGeoObjAndErase( nId) != nullptr) && bOk ;
return bOk ;
}
//----------------------------------------------------------------------------
bool
SaveGeoObj( std::vector<IGeoObj*> vpGObj, const std::string& sFile, int nFlag = GDB_SV_BIN)
{
for ( int i = 0 ; i < int( vpGObj.size()); ++i) {
// verifico validità oggetto
if ( vpGObj[i] == nullptr || ! vpGObj[i]->IsValid() )
return false ;
}
// creo GeomDB temporaneo
PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ;
if ( IsNull( pGeomDB))
return false ;
INTVECTOR vIds ;
int nLayId = 0 ;
for ( int i = 0 ; i < int( vpGObj.size()); ++i) {
// inserisco l'oggetto nel GeomDB (sotto pezzo/layer)
if ( i == 0) {
int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
nLayId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
}
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, vpGObj[i]) ;
vIds.push_back( nId) ;
if ( nId == GDB_ID_NULL)
return false ;
}
// eseguo il salvataggio
bool bOk = pGeomDB->Save( vIds, sFile, nFlag) ;
// rimuovo l'oggetto dal GeomDB
for ( int i = 0 ; i < int( vIds.size()); ++i)
bOk = ( pGeomDB->RemoveGeoObjAndErase( vIds[i]) != nullptr ) && bOk ;
return bOk ;
}
+2 -9
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2023
// EgalTech 2013-2014
//----------------------------------------------------------------------------
// File : EGkGeomDB.h Data : 09.07.23 Versione : 2.5g1
// File : EGkGeomDB.h Data : 03.12.14 Versione : 1.5k1
// Contenuto : Dichiarazione della interfaccia IGeomDB.
//
//
@@ -11,8 +11,6 @@
// 21.05.14 DS Agg. GotoFirst/Next/Last/Prev.
// 30.05.14 DS Agg. metodi di Shear.
// 03.12.14 DS Aggiunta gestione riferimento di griglia.
// 29.01.23 DS Aggiunta GetAllInfo.
// 09.07.23 DS Aggiunte DumpStipple, SetStipple e GetStipple.
//
//----------------------------------------------------------------------------
@@ -178,12 +176,7 @@ class __declspec( novtable) IGeomDB
virtual bool GetInfo( int nId, const std::string& sKey, STRVECTOR& vsInfo) const = 0 ;
virtual bool ExistsInfo( int nId, const std::string& sKey) const = 0 ;
virtual bool RemoveInfo( int nId, const std::string& sKey) = 0 ;
virtual bool GetAllInfo( int nId, STRVECTOR& vsInfo) const = 0 ;
virtual bool CopyAllInfoFrom( int nId, int nSouId) = 0 ;
// Stipple (significativo solo per curve)
virtual bool DumpStipple( int nId, std::string& sOut, bool bMM = true, const char* szNewLine = "\n") const = 0 ;
virtual bool SetStipple( int nId, int nFactor, int nPattern) = 0 ;
virtual bool GetStipple( int nId, int& nFactor, int& nPattern) const = 0 ;
// TextureData
virtual bool DumpTextureData( int nId, std::string& sOut, bool bMM = true, const char* szNewLine = "\n") const = 0 ;
virtual bool SetTextureName( int nId, const std::string& sTxrName) = 0 ;
-76
View File
@@ -1,76 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2018
//----------------------------------------------------------------------------
// File : EGkHashGrids1d.h Data : 02.05.21 Versione : 2.4e1
// Contenuto : Dichiarazione della classe HashGrids1d.
//
//
//
// Modifiche : 04.07.15 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "EgtDev/Include/EGkBBox3d.h"
#include "EgtDev/Include/EgtNumCollection.h"
#include <unordered_map>
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
class HashGrids1d
{
public :
EGK_EXPORT HashGrids1d( void) ;
EGK_EXPORT ~HashGrids1d( void) ;
EGK_EXPORT void SetActivationGrid( bool bActivate) ;
EGK_EXPORT bool Add( int nObjId, const BBox3d& box) ;
EGK_EXPORT bool Modify( int nObjId, const BBox3d& box) ;
EGK_EXPORT bool Remove( int nObjId) ;
EGK_EXPORT bool Update( void) ;
EGK_EXPORT bool Find( const BBox3d& b3Test, INTVECTOR& vnIds) const ;
EGK_EXPORT void Clear( void) ;
friend class HashGrid1d ;
private :
struct ObjData {
int nId ;
BBox3d box ;
HashGrid1d* pHGrid ;
size_t nHash ;
size_t nCellId ;
ObjData( void)
: nId( -1), box(), pHGrid( nullptr), nHash( 0), nCellId( 0) {}
ObjData( int nI, const BBox3d& bb, HashGrid1d* pHG, size_t nH, size_t nCI)
: nId( nI), box( bb), pHGrid( pHG), nHash( nH), nCellId( nCI) {}
} ;
typedef std::list<ObjData> ObjList ;
typedef std::vector<ObjData*> PtrObjVector ;
typedef std::unordered_map<int,ObjData*> IntPObjUmap ;
private :
typedef std::list<HashGrid1d*> GridList ; // Tipo per lista di hash grid
private :
void addGrid( ObjData& obj) ;
void addList( ObjData& obj) ;
private :
ObjList m_ObjsList ; // Lista degli oggetti
IntPObjUmap m_ObjsMap ; // Map da Id a PtrObj
PtrObjVector m_objsToAdd ; // Vettore di puntatori agli oggetti da inserire
PtrObjVector m_nonGridObjs ; // Vettore di puntatori agli oggetti non assegnati alle griglie (per dimensioni o perchè pochi)
GridList m_GridList ; // Lista delle griglie di dimensione fissa ( in ordine crescente di dimensione di cella)
bool m_bActivate ; // Flag che abilita l'attivazione delle griglie
bool m_bGridActive ; // Flag di attivazione delle griglie
BBox3d m_b3Objs ; // Box totale di tutti gli oggetti inseriti
} ;
+2 -2
View File
@@ -13,8 +13,8 @@
#pragma once
#include "EgtDev/Include/EGkBBox3d.h"
#include "EgtDev/Include/EgtNumCollection.h"
#include "/EgtDev/Include/EGkBBox3d.h"
#include "/EgtDev/Include/EgtNumCollection.h"
#include <unordered_map>
//----------------------- Macro per import/export ----------------------------
+2 -2
View File
@@ -13,8 +13,8 @@
#pragma once
#include "EgtDev/Include/EGkBBox3d.h"
#include "EgtDev/Include/EgtNumCollection.h"
#include "/EgtDev/Include/EGkBBox3d.h"
#include "/EgtDev/Include/EgtNumCollection.h"
#include <unordered_map>
//----------------------- Macro per import/export ----------------------------
-63
View File
@@ -1,63 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2024-2024
//----------------------------------------------------------------------------
// File : EGkIntersCurveSurfTm.h Data : 23.02.24 Versione : 2.6b4
// Contenuto : Dichiarazione della classe intersezione Curva/SurfTriMesh.
//
//
//
// Modifiche : 23.02.24 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurve.h"
#include "/EgtDev/Include/EGkSurfTriMesh.h"
#include "/EgtDev/Include/EGkIntersLineTria.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
//! dati di intersezione curva - superficie trimesh
struct IntCrvStmInfo {
int nILTT ; //!< tipo di intersezione curva-triangolo
double dU ; //!< parametro sulla curva (non distanza)
double dU2 ; //!< secondo parametro sulla curva (non distanza)
int nT ; //!< indice del triangolo della superficie trimesh
double dCosDN ; //!< coseno dell'angolo tra la direzione della curva e la normale del triangolo
Point3d ptI ; //!< punto di intersezione
Point3d ptI2 ; //!< secondo punto di intersezione (termine di tratto sovrapposto)
// costruttori
IntCrvStmInfo( void) : nILTT( ILTT_NO), dU( 0), dU2( 0), nT(0), dCosDN(0), ptI(), ptI2() {}
IntCrvStmInfo( int nIL, double dUU, int nTT, double dCos, const Point3d& ptP)
: nILTT( nIL), dU( dUU), dU2( 0), nT( nTT), dCosDN( dCos), ptI( ptP), ptI2() {}
IntCrvStmInfo( int nIL, double dUU, double dUU2, int nTT, double dCos, const Point3d& ptP, const Point3d& ptP2)
: nILTT( nIL), dU( dUU), dU2( dUU2), nT( nTT), dCosDN( dCos), ptI( ptP), ptI2( ptP2) {}
} ;
//! vettore di IntCrvStmInfo
typedef std::vector<IntCrvStmInfo> ICSIVECTOR ;
//-----------------------------------------------------------------------------
// Costanti tipo intersezione filtrata Curva-Superficie
enum CSiType { CSIT_NONE = 0,
CSIT_OUT_IN = 1,
CSIT_IN_OUT = 2,
CSIT_IN_IN = 3,
CSIT_OUT_OUT = 4,
CSIT_IN_ON = 5,
CSIT_ON_IN = 6,
CSIT_OUT_ON = 7,
CSIT_ON_OUT = 8} ;
//-----------------------------------------------------------------------------
EGK_EXPORT bool IntersCurveSurfTm( const ICurve& Curve, const ISurfTriMesh& Stm, double dLinTol, ICSIVECTOR& vInfo) ;
EGK_EXPORT bool IntersCurveSurfTmExt( const ICurve& Curve, const ISurfTriMesh& Stm, double dLinTol, INTDBLVECTOR& vInters) ;
EGK_EXPORT bool FilterCurveSurfTmInters( const ICurve& Curve, const ICSIVECTOR& vInfo, INTDBLVECTOR& vInters) ;
+2 -2
View File
@@ -124,7 +124,7 @@ class IntersCurveCurve
//! Restituisce il punto di intersezione più vicino al punto passato
EGK_EXPORT bool GetIntersPointNearTo( int nCrv, const Point3d& ptNear, Point3d& ptI) ;
//! Restituisce la classificazione di una curva rispetto all'altra ( nCrv=0 -> CurvaA, nCrv=1 -> CurvaB)
EGK_EXPORT bool GetCurveClassification( int nCrv, double dLenMin, CRVCVECTOR& ccClass) ;
EGK_EXPORT bool GetCurveClassification( int nCrv, CRVCVECTOR& ccClass) ;
//! Restituisce la classificazione di curve chiuse secondo le regole delle regioni
EGK_EXPORT int GetRegionCurveClassification( void) ;
@@ -142,7 +142,7 @@ class IntersCurveCurve
void CrvCompoCrvCompoCalculate( const ICurve& CurveA, const ICurve& CurveB) ;
bool AdjustIntersParams( bool bAdjCrvA, bool bAdjCrvB) ;
bool SwapInfoAB( ICCIVECTOR& Info, int IndCrvOrd) ;
bool CalcCurveClassification( const ICurve* pCurve, const ICCIVECTOR& Info, double dLenMin, CRVCVECTOR& ccClass) ;
bool CalcCurveClassification( const ICurve* pCurve, const ICCIVECTOR& Info, CRVCVECTOR& ccClass) ;
bool CalcCurveInOrOut( const ICurve* pCurveA, const ICurve* pCurveB, CRVCVECTOR& ccClass) ;
bool GetCurveOutClass( const ICurve* pCurve, int& nClass) ;
+3 -3
View File
@@ -1,8 +1,8 @@
//----------------------------------------------------------------------------
// EgalTech 2020-2022
// EgalTech 2020-2020
//----------------------------------------------------------------------------
// File : EGkIntersLineBox.h Data : 08.01.22 Versione : 2.4a3
// Contenuto : Dichiarazione delle funzioni intersezione linea/box.
// File : EGkIntersLineBox.h Data : 07.05.20 Versione : 2.2e1
// Contenuto : Dichiarazione della classe intersezione linea/box.
//
//
//
+3 -15
View File
@@ -29,14 +29,14 @@
//! dati di intersezione linea - superficie trimesh
struct IntLinStmInfo {
int nILTT ; //!< tipo di intersezione linea-triangolo
double dU ; //!< distanza sulla linea
double dU2 ; //!< seconda distanza sulla linea
double dU ; //!< parametro sulla linea
double dU2 ; //!< secondo parametro sulla linea
int nT ; //!< indice del triangolo della superficie trimesh
double dCosDN ; //!< coseno dell'angolo tra la direzione della linea e la normale del triangolo
Point3d ptI ; //!< punto di intersezione
Point3d ptI2 ; //!< secondo punto di intersezione (termine di tratto sovrapposto)
// costruttori
IntLinStmInfo( void) : nILTT( ILTT_NO), dU( 0), dU2( 0), nT( 0), dCosDN( 0), ptI(), ptI2() {}
IntLinStmInfo( void) : nILTT( ILTT_NO), dU( 0), dU2( 0), nT(0), dCosDN(0), ptI(), ptI2() {}
IntLinStmInfo( int nIL, double dUU, int nTT, double dCos, const Point3d& ptP)
: nILTT( nIL), dU( dUU), dU2( 0), nT( nTT), dCosDN( dCos), ptI( ptP), ptI2() {}
IntLinStmInfo( int nIL, double dUU, double dUU2, int nTT, double dCos, const Point3d& ptP, const Point3d& ptP2)
@@ -45,15 +45,6 @@ struct IntLinStmInfo {
//! vettore di IntLinStmInfo
typedef std::vector<IntLinStmInfo> ILSIVECTOR ;
//-----------------------------------------------------------------------------
// Costanti tipo intersezione Linea SurfTriMesh dopo filtraggio
enum LSiType { LST_NONE = 0,
LST_IN = 1,
LST_OUT = 2,
LST_TG_INI = 3,
LST_TG_FIN = 4,
LST_TOUCH = 5} ;
//-----------------------------------------------------------------------------
EGK_EXPORT bool IntersLineSurfTm( const Point3d& ptL, const Vector3d& vtL, double dLen, const ISurfTriMesh& Stm,
ILSIVECTOR& vInfo, bool bFinite = true) ;
@@ -71,6 +62,3 @@ class IntersParLinesSurfTm
const ISurfTriMesh* m_pSTm ;
HashGrids2d m_HGrids ;
} ;
//-----------------------------------------------------------------------------
EGK_EXPORT bool FilterLineSurfTmInters( const ILSIVECTOR& vInfo, INTDBLVECTOR& vInters) ;
+6 -6
View File
@@ -23,6 +23,12 @@
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
EGK_EXPORT int IntersLineTria( const Point3d& ptL1, const Point3d& ptL2, const Triangle3d& trTria,
Point3d& ptInt, Point3d& ptInt2, bool bFinite = true) ;
EGK_EXPORT int IntersLineTria( const Point3d& ptL, const Vector3d& vtL, double dLen, const Triangle3d& trTria,
Point3d& ptInt, Point3d& ptInt2, bool bFinite = true) ;
//-----------------------------------------------------------------------------
// Tipo di intersezione linea-triangolo
enum IntLineTriaType { ILTT_NO = 0, // non c'è intersezione
@@ -31,9 +37,3 @@ enum IntLineTriaType { ILTT_NO = 0, // non c'
ILTT_VERT = 3, // intersezione coincide con un vertice
ILTT_EDGE = 4, // intersezione coincide con interno di un lato
ILTT_IN = 5} ; // intersezione in interno del triangolo
//-----------------------------------------------------------------------------
EGK_EXPORT int IntersLineTria( const Point3d& ptL1, const Point3d& ptL2, const Triangle3d& trTria,
Point3d& ptInt, Point3d& ptInt2, bool bFinite = true) ;
EGK_EXPORT int IntersLineTria( const Point3d& ptL, const Vector3d& vtL, double dLen, const Triangle3d& trTria,
Point3d& ptInt, Point3d& ptInt2, bool bFinite = true) ;
-62
View File
@@ -1,62 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2024-2024
//----------------------------------------------------------------------------
// File : EGkIntersLineVolZmap.h Data : 22.02.24 Versione : 2.6b4
// Contenuto : Dichiarazione prototipi intersezione Linea/VolZmap.
//
//
//
// Modifiche : 22.02.24 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkVolZmap.h"
#include "/EgtDev/Include/EGkIntersLineTria.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
// dati di intersezione linea - volume Zmap
struct IntLineZmapInfo {
int nILTT ; // Tipo di intersezione linea-triangolo
double dU ; // Distanza sulla linea
double dU2 ; // Seconda distanza sulla linea
int nVox ; // Indice del voxel del triangolo
int nBlock ; // Indice del blocco del triangolo
Triangle3d trTria ; // Triangolo
double dCosDN ; // Coseno dell'angolo tra la direzione della linea e la normale del triangolo
Point3d ptI ; // Punto di intersezione
Point3d ptI2 ; // Secondo punto di intersezione (termine di tratto sovrapposto)
// Costruttori
IntLineZmapInfo( void)
: nILTT( ILTT_NO), dU( 0), dU2( 0), nVox( -1), nBlock( -1), trTria(), dCosDN( 0), ptI(), ptI2() {}
IntLineZmapInfo( int nIL, double dUU, int nVx, int nBl, Triangle3d& trTr, double dCos, const Point3d& ptP)
: nILTT( nIL), dU( dUU), dU2( 0), nVox( nVx), nBlock( nBl), dCosDN( dCos), trTria( trTr), ptI( ptP), ptI2() {}
IntLineZmapInfo( int nIL, double dUU, double dUU2, int nVx, int nBl, Triangle3d& trTr, double dCos,
const Point3d& ptP, const Point3d& ptP2)
: nILTT( nIL), dU( dUU), dU2( dUU2), nVox( nVx), nBlock( nBl), trTria( trTr), dCosDN( dCos), ptI( ptP), ptI2( ptP2) {}
} ;
// Vettore di IntLineZmapInfo
typedef std::vector<IntLineZmapInfo> ILZIVECTOR ;
//-----------------------------------------------------------------------------
// Costanti tipo intersezione Linea VolZmap dopo filtraggio
enum LZiType { LZT_NONE = 0,
LZT_IN = 1,
LZT_OUT = 2,
LZT_TG_INI = 3,
LZT_TG_FIN = 4,
LZT_TOUCH = 5} ;
//-----------------------------------------------------------------------------
EGK_EXPORT bool IntersLineVolZmap( const Point3d& ptL, const Vector3d& vtL, const IVolZmap& Vzm, ILZIVECTOR& vInfo) ;
EGK_EXPORT bool FilterLineVolZmapInters( const ILZIVECTOR& vInfo, INTDBLVECTOR& vInters) ;
+4 -6
View File
@@ -1,19 +1,18 @@
//----------------------------------------------------------------------------
// EgalTech 2020-2022
// EgalTech 2020-2020
//----------------------------------------------------------------------------
// File : EGkIntersPlaneBox.h Data : 09.01.22 Versione : 2.4a3
// File : EGkIntersPlaneBox.h Data : 08.05.20 Versione : 2.2e1
// Contenuto : Dichiarazione della classe intersezione piano/box.
//
//
//
// Modifiche : 08.05.20 DS Creazione modulo.
// 09.01.22 DS Aggiunta TestIntersPlaneBox.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkPlane3d.h"
#include "/EgtDev/Include/EGkBBox3d.h"
#include "/EgtDev/Include/EGkGeoCollection.h"
@@ -26,6 +25,5 @@
#endif
//-----------------------------------------------------------------------------
EGK_EXPORT bool TestIntersPlaneBox( const Plane3d& plPlane, const BBox3d& b3Box) ;
EGK_EXPORT bool IntersPlaneBox( const Plane3d& plPlane, const BBox3d& b3Box,
EGK_EXPORT bool IntersPlaneBox( const Point3d& ptOn, const Vector3d& vtN, const BBox3d& b3Box,
PNTVECTOR& vPnt, BIPNTVECTOR& vBpt, TRIA3DVECTOR& vTria) ;
-16
View File
@@ -14,7 +14,6 @@
#pragma once
#include "/EgtDev/Include/EGkSurfTriMesh.h"
#include "/EgtDev/Include/EGkHashGrids1d.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
@@ -27,18 +26,3 @@
//-----------------------------------------------------------------------------
EGK_EXPORT bool IntersPlaneSurfTm( const Plane3d& plPlane, const ISurfTriMesh& Stm,
PNTVECTOR& vPnt, BIPNTVECTOR& vBpt, TRIA3DVECTOR& vTria) ;
//-----------------------------------------------------------------------------
class IntersParPlanesSurfTm
{
public :
EGK_EXPORT IntersParPlanesSurfTm( const Frame3d& frPlanes, const ISurfTriMesh& Stm) ;
EGK_EXPORT bool GetInters( double dDist, PNTVECTOR& vPnt, BIPNTVECTOR& vBpt, TRIA3DVECTOR& vTria) const ;
private :
bool m_bOk ;
const Frame3d m_frPlanes ;
const ISurfTriMesh* m_pSTm ;
HashGrids1d m_HGrids ;
} ;
-27
View File
@@ -1,27 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2024-2024
//----------------------------------------------------------------------------
// File : EGkIntersPlaneVolZmap.h Data : 22.02.24 Versione : 2.6b4
// Contenuto : Dichiarazione prototipi intersezione Piano/VolZmap.
//
//
//
// Modifiche : 22.02.24 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkVolZmap.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
EGK_EXPORT bool IntersPlaneVolZmap( const Plane3d& plPlane, const IVolZmap& Vzm, ICURVEPOVECTOR& vpLoop) ;
+12 -13
View File
@@ -32,17 +32,16 @@ EGK_EXPORT int IntersTriaTria( const Triangle3d& trTria1, const Triangle3d& trTr
//-----------------------------------------------------------------------------
// Tipo di intersezione triangolo-triangolo
enum IntTriaTriaType { ITTT_NO = 0, // non c'è intersezione
ITTT_OVERLAPS = 1, // i triangoli si sovrappongono (i triangoli del poligono sono in vTria)
ITTT_VERT_VERT = 2, // intersezione coppia di vertici
ITTT_VERT_EDGE = 3, // vertice del primo su lato del secondo
ITTT_EDGE_VERT = 4, // vertice del secondo su lato del primo
ITTT_VERT_INT = 5, // vertice del primo nell'interno del secondo
ITTT_INT_VERT = 6, // vertice del secondo nell'interno del primo
ITTT_EDGE_EDGE_PNT = 7, // punto sull'intersezione di due lati
ITTT_EDGE_EDGE_SEG = 8, // sovrapposizione di lati
ITTT_EDGE_INT = 9, // lato del primo nell'interno del secondo
ITTT_INT_EDGE = 10, // lato del secondo nell'interno del primo
ITTT_INT_INT_SEG = 11, // segmento all'interno di entrambi i triangoli
ITTT_COUNTER_OVERLAPS = 12 // triangoli sovrapposti controversi (i triangoli del poligono sono in vTria)
enum IntTriaTriaType { ITTT_NO = 0, // non c' intersezione
ITTT_OVERLAPS = 1, // i triangoli si sovrappongono (i triangoli del poligono sono in vTria)
ITTT_VERT_VERT = 2, // intersezione coppia di vertici
ITTT_VERT_EDGE = 3, // vertice del primo su lato del secondo
ITTT_EDGE_VERT = 4, // vertice del secondo su lato del primo
ITTT_VERT_INT = 5, // vertice del primo nell'interno del secondo
ITTT_INT_VERT = 6, // vertice del secondo nell'interno del primo
ITTT_EDGE_EDGE_PNT = 7, // punto sull'intersezione di due lati
ITTT_EDGE_EDGE_SEG = 8, // sovrapposizione di lati
ITTT_EDGE_INT = 9, // lato del primo nell'interno del secondo
ITTT_INT_EDGE = 10, // lato del secondo nell'interno del primo
ITTT_INT_INT_SEG = 11, // segmento all'interno di entrambi i triangoli
} ;
+1 -1
View File
@@ -20,7 +20,7 @@
#include "/EgtDev/Include/EGkColor.h"
#include "/EgtDev/Include/EGkGeoCollection.h"
#include "/EgtDev/Include/EGkSelection.h"
#include "/EgtDev/Include/EGnLuaAux.h"
#include "/EgtDev/Include/EgnLuaAux.h"
//----------------------------------------------------------------------------
inline bool
-27
View File
@@ -1,27 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2022-2022
//----------------------------------------------------------------------------
// File : MedialAxis.h Data : 22.08.22 Versione : 2.4h2
// Contenuto : Dichiarazione funzione calcolo MedialAxis principale.
//
//
//
// Modifiche : 22.08.22 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurve.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
EGK_EXPORT bool CurveSimpleMedialAxis( const ICurve* pCrv, PolyLine& PL) ;
+1 -1
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2019
//----------------------------------------------------------------------------
// File : EGkObjGraphics.h Data : 08/03/19 Versione : 2.1c1
// File : EgkObjGraphics.h Data : 08/03/19 Versione : 2.1c1
// Contenuto : Dichiarazione della interfaccia IObjGraphics.
//
//
-5
View File
@@ -26,8 +26,6 @@
class OffsetCurve
{
public :
EGK_EXPORT OffsetCurve(): m_dLinTol( 10 * EPS_SMALL) {} ;
EGK_EXPORT OffsetCurve( double dLinTol) : m_dLinTol( dLinTol) {} ;
EGK_EXPORT ~OffsetCurve( void) ;
public :
@@ -37,10 +35,7 @@ class OffsetCurve
EGK_EXPORT ICurve* GetCurve( void) ;
EGK_EXPORT ICurve* GetLongerCurve( void) ;
EGK_EXPORT ICurve* GetShorterCurve( void) ;
EGK_EXPORT double GetLinTol( void) const { return m_dLinTol ; }
EGK_EXPORT void SetLinTol( double dTol) { m_dLinTol = dTol ; }
private :
ICURVEPLIST m_CrvLst ;
double m_dLinTol ;
} ;
-10
View File
@@ -38,16 +38,6 @@ class Plane3d
m_dDist = ( ptP - ORIG) * m_vtN ;
return true ;
}
bool Set( const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptP3)
{ if ( AreSamePointApprox( ptP1, ptP2) ||
AreSamePointApprox( ptP2, ptP3) ||
AreSamePointApprox( ptP3, ptP1)) {
m_vtN = V_NULL ;
return false ;
}
Vector3d vtN = ( ptP2 - ptP1) ^ ( ptP3 - ptP2) ;
return Set( ptP1, vtN) ;
}
void Reset( void)
{ m_vtN = V_NULL ;
m_dDist = 0 ;
+17 -56
View File
@@ -1,13 +1,12 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2023
// EgalTech 2013-2014
//----------------------------------------------------------------------------
// File : EGkPoint3d.h Data : 23.08.23 Versione : 2.5h2
// File : EGkPoint3d.h Data : 30.05.14 Versione : 1.5e10
// Contenuto : Dichiarazione della classe Punto 3d.
//
//
//
// Modifiche : 30.12.12 DS Creazione modulo.
// 23.08.23 DS Aggiunto P_INVALID.
//
//
//----------------------------------------------------------------------------
@@ -43,9 +42,6 @@ class EGK_EXPORT Point3d
void Set( double dX, double dY, double dZ) { x = dX ; y = dY ; z = dZ ;}
public :
//! Verifica la validità delle coordinate del punto
bool IsValid( void) const
{ return ( std::isfinite( x) && std::isfinite( y) && std::isfinite( z)) ; }
//! Verifica se il punto è quasi l'origine
bool IsSmall( void) const
{ return ( ( x * x + y * y + z * z) < SQ_EPS_SMALL) ; }
@@ -54,19 +50,19 @@ class EGK_EXPORT Point3d
{ return ( ( x * x + y * y + z * z) < SQ_EPS_ZERO) ; }
//! Somma sul posto con un vettore
Point3d& operator +=( const Vector3d& vtV)
{ x += vtV.x ; y += vtV.y ; z += vtV.z ; return *this ; }
{ this->x += vtV.x ; this->y += vtV.y ; this->z += vtV.z ; return *this ; }
//! Sottrazione sul posto con un vettore
Point3d& operator -=( const Vector3d& vtV)
{ x -= vtV.x ; y -= vtV.y ; z -= vtV.z ; return *this ; }
{ this->x -= vtV.x ; this->y -= vtV.y ; this->z -= vtV.z ; return *this ; }
//! Somma sul posto con un altro punto (valida solo se equivalente ad una combinazione baricentrica)
Point3d& operator +=( const Point3d& ptP)
{ x += ptP.x ; y += ptP.y ; z += ptP.z ; return *this ; }
{ this->x += ptP.x ; this->y += ptP.y ; this->z += ptP.z ; return *this ; }
//! Moltiplicazione sul posto con un numero
Point3d& operator *=( double dMul)
{ x *= dMul ; y *= dMul ; z *= dMul ; return *this ; }
{ this->x *= dMul ; this->y *= dMul ; this->z *= dMul ; return *this ; }
//! Divisione sul posto con un numero
Point3d& operator /=( double dDiv)
{ double dMul = 1 / dDiv ; x *= dMul ; y *= dMul ; z *= dMul ; return *this ; }
{ double dMul = 1 / dDiv ; this->x *= dMul ; this->y *= dMul ; this->z *= dMul ; return *this ; }
//! Traslazione dato il vettore di movimento
void Translate( const Vector3d& vtMove) ;
//! Rotazione attorno ad un asse per un punto, dato l'angolo in gradi
@@ -100,15 +96,13 @@ class EGK_EXPORT Point3d
//----------------------------------------------------------------------------
// Punti notevoli
//----------------------------------------------------------------------------
//! Punto non valido
const Point3d P_INVALID( NAN, NAN, NAN) ;
//! Punto origine
const Point3d ORIG( 0, 0, 0) ;
//----------------------------------------------------------------------------
//! Somma di due punti (valida solo se equivalente ad una combinazione baricentrica)
//----------------------------------------------------------------------------
inline const Point3d
inline Point3d
operator+( const Point3d& ptP1, const Point3d& ptP2)
{
return Point3d( ptP1.x + ptP2.x, ptP1.y + ptP2.y, ptP1.z + ptP2.z) ;
@@ -117,16 +111,16 @@ operator+( const Point3d& ptP1, const Point3d& ptP2)
//----------------------------------------------------------------------------
//! Somma di un punto e un vettore
//----------------------------------------------------------------------------
inline const Point3d
inline Point3d
operator+( const Point3d& ptP1, const Vector3d& vtV2)
{
return Point3d( ptP1.x + vtV2.x, ptP1.y + vtV2.y, ptP1.z + vtV2.z) ;
}
//----------------------------------------------------------------------------
//! Opposto di un punto, genera un vettore
//! Opposto di un punto
//----------------------------------------------------------------------------
inline const Vector3d
inline Vector3d
operator-( const Point3d& ptP)
{
return Vector3d( - ptP.x, - ptP.y, - ptP.z) ;
@@ -135,7 +129,7 @@ operator-( const Point3d& ptP)
//----------------------------------------------------------------------------
//! Differenza di due punti, genera un vettore
//----------------------------------------------------------------------------
inline const Vector3d
inline Vector3d
operator-( const Point3d& ptP1, const Point3d& ptP2)
{
return Vector3d( ptP1.x - ptP2.x, ptP1.y - ptP2.y, ptP1.z - ptP2.z) ;
@@ -144,7 +138,7 @@ operator-( const Point3d& ptP1, const Point3d& ptP2)
//----------------------------------------------------------------------------
//! Sottrazione di un punto e un vettore
//----------------------------------------------------------------------------
inline const Point3d
inline Point3d
operator-( const Point3d& ptP1, const Vector3d& vtV2)
{
return Point3d( ptP1.x - vtV2.x, ptP1.y - vtV2.y, ptP1.z - vtV2.z) ;
@@ -153,7 +147,7 @@ operator-( const Point3d& ptP1, const Vector3d& vtV2)
//----------------------------------------------------------------------------
//! Prodotto con uno scalare
//----------------------------------------------------------------------------
inline const Point3d
inline Point3d
operator*( const Point3d& ptP, double dMul)
{
return Point3d( ptP.x * dMul, ptP.y * dMul, ptP.z * dMul) ;
@@ -162,7 +156,7 @@ operator*( const Point3d& ptP, double dMul)
//----------------------------------------------------------------------------
//! Prodotto di uno scalare con un punto
//----------------------------------------------------------------------------
inline const Point3d
inline Point3d
operator*( double dMul, const Point3d& ptP)
{
return Point3d( ptP.x * dMul, ptP.y * dMul, ptP.z * dMul) ;
@@ -171,7 +165,7 @@ operator*( double dMul, const Point3d& ptP)
//----------------------------------------------------------------------------
//! Divisione per uno scalare
//----------------------------------------------------------------------------
inline const Point3d
inline Point3d
operator/( const Point3d& ptP, double dDiv)
{
double dMul ;
@@ -183,7 +177,7 @@ operator/( const Point3d& ptP, double dDiv)
//----------------------------------------------------------------------------
//! Somma mediata di due punti (baricentrica)
//----------------------------------------------------------------------------
inline const Point3d
inline Point3d
Media( const Point3d& ptP1, const Point3d& ptP2, double dCoeff = 0.5)
{
return Point3d( ( 1 - dCoeff) * ptP1.x + dCoeff * ptP2.x,
@@ -370,36 +364,3 @@ AreSamePointXYExact( const Point3d& ptP1, const Point3d& ptP2)
{
return ( SqDistXY( ptP1, ptP2) < SQ_EPS_ZERO) ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia in locale del punto passato
//----------------------------------------------------------------------------
inline const Point3d
GetToLoc( const Point3d& ptP, const Frame3d& frRef)
{
Point3d ptQ = ptP ;
ptQ.ToLoc( frRef) ;
return ptQ ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia in globale del punto passato
//----------------------------------------------------------------------------
inline const Point3d
GetToGlob( const Point3d& ptP, const Frame3d& frRef)
{
Point3d ptQ = ptP ;
ptQ.ToGlob( frRef) ;
return ptQ ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia dal primo al secondo riferimento del punto passato
//----------------------------------------------------------------------------
inline const Point3d
GetLocToLoc( const Point3d& ptP, const Frame3d& frOri, const Frame3d& frDest)
{
Point3d ptQ = ptP ;
ptQ.LocToLoc( frOri, frDest) ;
return ptQ ;
}
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once
#include "/EgtDev/Include/EGkBBox3d.h"
#include "/EgtDev/Include/EgkBBox3d.h"
#include "/EgtDev/Include/EgtNumCollection.h"
#include <unordered_map>
+25 -19
View File
@@ -99,6 +99,8 @@ class PolyLine
{ return GetPrevULine( nullptr, &ptIni, nullptr, &ptFin) ; }
EGK_EXPORT PNTULIST& GetUPointList( void)
{ return m_lUPoints ; }
EGK_EXPORT const PNTULIST& GetUPointList( void) const
{ return m_lUPoints ; }
EGK_EXPORT bool IsFlat( int& nRank, Point3d& ptCen, Vector3d& vtDir, double dToler = EPS_SMALL) const ;
EGK_EXPORT bool IsFlat( Plane3d& plPlane, double dToler = EPS_SMALL) const ;
EGK_EXPORT bool IsClosedAndFlat( Plane3d& plPlane, double& dArea, double dToler = EPS_SMALL) const ;
@@ -116,11 +118,13 @@ class PolyLine
EGK_EXPORT bool GetConvexHullXY( PNTVECTOR& vConvHull) const ;
EGK_EXPORT bool GetMinAreaRectangleXY( Point3d& ptCen, Vector3d& vtAx, double& dLen, double& dHeight) const ;
EGK_EXPORT bool Trim( const Plane3d& plPlane, bool bInVsOut = true) ;
EGK_EXPORT void SetTempProp( int nProp, int nPropInd = 0)
{ if ( nPropInd >= 0 && nPropInd < 2)
m_nTempProp[nPropInd] = nProp ; }
EGK_EXPORT int GetTempProp( int nPropInd = 0) const
{ return (( nPropInd >= 0 && nPropInd < 2) ? m_nTempProp[nPropInd] : 0) ; }
EGK_EXPORT bool ChangePolyLineStart( const Point3d& ptNewStart, double dTol = EPS_SMALL) ;
// nSegNum 0-based
EGK_EXPORT bool PointPositionOnPolyLine( const Point3d& ptPoint, int& nSegNum, double& dParOnSeg, double dTol = EPS_SMALL) const ;
EGK_EXPORT bool IsPointInsidePolyLine( const Point3d& ptP) const ;
EGK_EXPORT bool DistPointPolyLine( const Point3d& ptP, double& dPointPolyLineDist) const ;
EGK_EXPORT bool SplitPolyLineAtPoint( const Point3d& ptPoint, PolyLine& Loop1, PolyLine& Loop2, double dTol = EPS_SMALL) const ;
EGK_EXPORT bool AddPolyLineToPolyLine( PolyLine& PolyToAdd, double dTol = EPS_SMALL) ;
private :
bool MyChangeStart( int nPos) ;
@@ -128,23 +132,25 @@ class PolyLine
bool MyMakeConvex( const Vector3d& vtN, bool bLeftSide) ;
private :
int m_nRejected ; // numero punti rifiutati perchè coincidenti
int m_nTempProp[2] ; // vettore proprietà temporanee
PNTULIST m_lUPoints ; // lista dei punti
mutable PNTULIST::const_iterator m_iter ; // iteratore corrente
int m_nRejected ;
PNTULIST m_lUPoints ;
mutable PNTULIST::const_iterator m_iter ;
} ;
//----------------------------------------------------------------------------
// Raccolte di PolyLine
typedef std::vector<PolyLine> POLYLINEVECTOR ; // vettore di PolyLine
typedef std::list<PolyLine> POLYLINELIST ; // lista di PolyLine
typedef std::vector<POLYLINEVECTOR> POLYLINEMATRIX ; // matrice di PolyLine
typedef std::vector<PolyLine> POLYLINEVECTOR ; // vettore di PolyLine
typedef std::list<PolyLine> POLYLINELIST ; // lista di PolyLine
//----------------------------------------------------------------------------
EGK_EXPORT bool DistPointPolyLine( const Point3d& ptP, const PolyLine& plPoly, double& dDist) ;
EGK_EXPORT bool DistPointPolyLine( const Point3d& ptP, const PolyLine& plPoly, double& dDist, double& dMinDistPar) ;
EGK_EXPORT bool IsPointInsidePolyLine( const Point3d& ptP, const PolyLine& plPoly, double dToler) ;
EGK_EXPORT bool GetPointParamOnPolyLine( const Point3d& ptP, const PolyLine& plPoly, double dToler, double& dPar) ;
EGK_EXPORT bool ChangePolyLineStart( PolyLine& plPoly, const Point3d& ptNewStart, double dToler) ;
EGK_EXPORT bool SplitPolyLineAtPoint( const PolyLine& plPoly, const Point3d& ptP, double dToler, PolyLine& plPoly1, PolyLine& plPoly2) ;
EGK_EXPORT bool AssociatePolyLinesMinDistPoints( const PolyLine& PL1, const PolyLine& PL2, PNTIVECTOR& vPnt1, PNTIVECTOR& vPnt2, bool& bCommonInternalPoints) ;
struct PositionOnPolyLine {
int nIndexInVec ;
int nSegNum ;
double dParOnSeg ;
PositionOnPolyLine( int nIndex, int nSeg, double dPar) {
nIndexInVec = nIndex ;
nSegNum = nSeg ;
dParOnSeg = dPar ;
}
} ;
+3 -3
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2023
// EgalTech 2015-2020
//----------------------------------------------------------------------------
// File : EGkPolygon3d.h Data : 17.12.23 Versione : 2.5l3
// File : Polygon3d.h Data : 02.10.20 Versione : 2.2j1
// Contenuto : Dichiarazione della classe Polygon3d (poligono nello spazio).
//
//
@@ -58,7 +58,7 @@ class Polygon3d
EGK_EXPORT bool ToGlob( const Frame3d& frRef) ;
EGK_EXPORT bool ToLoc( const Frame3d& frRef) ;
EGK_EXPORT bool LocToLoc( const Frame3d& frOri, const Frame3d& frDest) ;
EGK_EXPORT bool GetLocalBBox( BBox3d& b3Loc) const ;
EGK_EXPORT bool IsValid( void) const
{ return ! m_Plane.GetVersN().IsSmall() ; }
EGK_EXPORT const Plane3d& GetPlane( void) const
-32
View File
@@ -1,32 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2023-2023
//----------------------------------------------------------------------------
// File : EGkPolygonElevation.h Data : 02.10.20 Versione : 2.2j1
// Contenuto : Dichiarazione della classe Polygon3d (poligono nello spazio).
//
//
//
// Modifiche : 30.08.15 DS Creazione modulo.
// 19.06.19 DS Aggiunta GetVertices.
// 23.07.19 DS Aggiunte Offset e Invert.
// 02.10.20 DS A FromPlaneTrimmedWithBox aggiunto parametro dToler.
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkPolygon3d.h"
#include "/EgtDev/Include/EGkSurfTriMesh.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
EGK_EXPORT bool PolygonElevationInBBox( const Polygon3d& pgFacet, const BBox3d& b3Box, bool bAcceptOutFacet, double& dElev) ;
EGK_EXPORT bool PolygonElevationInClosedSurfTm( const Polygon3d& pgFacet, const ISurfTriMesh& CldStm, bool bAcceptOutFacet, double& dElev) ;
-43
View File
@@ -1,43 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2023-2023
//----------------------------------------------------------------------------
// File : EGkProjectCurveSurfTm.h Data : 31.08.23 Versione : 2.5h3
// Contenuto : Dichiarazione funzioni proiezione curve su superficie Trimesh.
//
//
//
// Modifiche : 31.08.23 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurve.h"
#include "/EgtDev/Include/EGkSurfTriMesh.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
// Definizione di Punto 5assi e sue raccolte
struct Point5ax {
Point3d ptP ;
Vector3d vtDir ;
double dPar ;
int nFlag ;
Point5ax( void) : ptP(), vtDir(), dPar(), nFlag() {} ;
Point5ax( const Point3d& ptBase, const Vector3d& vtTool, double dU, int nData)
: ptP( ptBase), vtDir( vtTool), dPar( dU), nFlag( nData) {} ;
} ;
typedef std::vector<Point5ax> PNT5AXVECTOR ; // vettore di Punti 5assi
//----------------------------------------------------------------------------
// Proiezione di una curva su una superficie TriMesh lungo la direzione data.
EGK_EXPORT bool ProjectCurveOnSurfTm( const ICurve& crCrv, const ISurfTriMesh& tmSurf, const Vector3d& vtDir,
double dLinTol, double dMaxSegmLen, PNT5AXVECTOR& vPt5ax) ;
+1 -1
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2015
//----------------------------------------------------------------------------
// File : EGkSelection.h Data : 11.06.15 Versione : 1.6f2
// File : EgkSelection.h Data : 11.06.15 Versione : 1.6f2
// Contenuto : Strutture e raccolte per indici di selezione,
// con funzioni di conversione da e verso stringhe.
//
+7 -4
View File
@@ -29,8 +29,11 @@ class Triangle3d ;
EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionRectangle( double dWidth, double dLen) ;
EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionStadium( double dWidth, double dLen) ;
EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionDisk( double dRadius) ;
EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionFromPolyLine( const PolyLine& ContourPolyLine) ;
EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionFromPolyLineVector( const POLYLINEVECTOR& vContoursPolyLineVec) ;
// la curva ingrassata non deve autointersecarsi
EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionFromFatCurve( ICurve* pCrv, double dRadius,
bool bSquareEnds, bool bSquareMids, double dOffsLinTol = 10 * EPS_SMALL) ;
bool bSquareEnds, bool bSquareMids) ;
// NB : la curva ingrassata non deve autointersecarsi
EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionFromTriangle( const Triangle3d& Tria) ;
EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionFromPolyLine( const PolyLine& ContourPolyLine) ;
@@ -56,9 +59,9 @@ class SurfFlatRegionByContours
typedef std::vector<INDAREA> INDAREAVECTOR ; // vettore di coppie indice, area
private :
bool m_bAllowedMore ; // ammesse più regioni
bool m_bAllowedMultiChunk ; // ammesse regioni con più componenti disgiunti (chunk)
bool m_bAllowedMore ; // ammesse pi regioni
bool m_bAllowedMultiChunk ; // ammesse regioni con pi componenti disgiunti (chunk)
bool m_bFirst ; // flag per prima superficie non ancora richiesta
ICURVEPVECTOR m_vpCrv ; // vettore di puntatori a curve, l'oggetto ne è possessore
ICURVEPVECTOR m_vpCrv ; // vettore di puntatori a curve, l'oggetto ne possessore
INDAREAVECTOR m_vArea ; // vettore indice + area di ogni curva
} ;
+4 -10
View File
@@ -1,19 +1,19 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2024
// EgalTech 2015-2015
//----------------------------------------------------------------------------
// File : EGkStmFromCurves.h Data : 27.02.24 Versione : 2.6b4
// File : EGkStmFromCurves.h Data : 01.02.15 Versione : 1.6b1
// Contenuto : Dichiarazione della classe StmFromTriangleSoup.
//
//
//
// Modifiche : 19.05.14 DS Creazione modulo.
// 27.02.24 DS Aggiunta GetSurfTriMeshTransSwept.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurve.h"
#include "/EgtDev/Include/EgkCurve.h"
#include "/EgtDev/Include/EGkSurfTriMesh.h"
//----------------------- Macro per import/export ----------------------------
@@ -24,9 +24,6 @@
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
enum RS_CAP { RSCAP_NONE = 0, RSCAP_FLAT = 1, RSCAP_ROUND = 2, RSCAP_BEVEL = 3} ;
//----------------------------------------------------------------------------
EGK_EXPORT ISurfTriMesh* GetSurfTriMeshByFlatContour( const ICurve* pCurve, double dLinTol = 10 * EPS_SMALL) ;
EGK_EXPORT ISurfTriMesh* GetSurfTriMeshByRegion( const CICURVEPVECTOR& vpCurve, double dLinTol = 10 * EPS_SMALL) ;
@@ -38,9 +35,6 @@ EGK_EXPORT ISurfTriMesh* GetSurfTriMeshByRevolve( const ICurve* pCurve, const Po
const Vector3d& vtAx, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ;
EGK_EXPORT ISurfTriMesh* GetSurfTriMeshByScrewing( const ICurve* pCurve, const Point3d& ptAx, const Vector3d& vtAx,
double dAngRotDeg, double dMove, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ;
EGK_EXPORT ISurfTriMesh* GetSurfTriMeshRectSwept( double dDimH, double dDimV, double dBevelH, double dBevelV,
const ICurve* pGuide, int nCapType, double dLinTol = 10 * EPS_SMALL) ;
EGK_EXPORT ISurfTriMesh* GetSurfTriMeshSwept( const ICurve* pSect, const ICurve* pGuide, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ;
EGK_EXPORT ISurfTriMesh* GetSurfTriMeshTransSwept( const ICurve* pSect, const ICurve* pGuide, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ;
EGK_EXPORT ISurfTriMesh* GetSurfTriMeshRuled( const Point3d& ptP, const ICurve* pCurve, double dLinTol = 10 * EPS_SMALL) ;
EGK_EXPORT ISurfTriMesh* GetSurfTriMeshRuled( const ICurve* pCurve1, const ICurve* pCurve2, int nType, double dLinTol = 10 * EPS_SMALL) ;
+4 -6
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2023
// EgalTech 2014-2014
//----------------------------------------------------------------------------
// File : EGkStmFromTriangleSoup.h Data : 07.05.23 Versione : 2.5e2
// File : EGkStmFromTriangleSoup.h Data : 19.05.14 Versione : 1.5e7
// Contenuto : Dichiarazione della classe StmFromTriangleSoup.
//
//
@@ -35,14 +35,12 @@ class StmFromTriangleSoup
EGK_EXPORT ~StmFromTriangleSoup( void) ;
EGK_EXPORT bool Start( int nBuckets = GRID_STD_BUCKETS) ;
EGK_EXPORT bool AddTriangle( const Triangle3d& Tria) ;
EGK_EXPORT bool AddTriangle( const Point3d& ptP0, const Point3d& ptP1, const Point3d& ptP2,
double dU0 = -1, double dV0 = -1, double dU1 = -1, double dV1 = -1, double dU2 = -1, double dV2 = -1) ;
EGK_EXPORT bool AddSurfTriMesh( const ISurfTriMesh& stmSource) ;
EGK_EXPORT bool AddTriangle( const Point3d& ptP0, const Point3d& ptP1, const Point3d& ptP2) ;
EGK_EXPORT bool End( void) ;
EGK_EXPORT ISurfTriMesh* GetSurf( void) ;
private :
inline int AddVertex( const Point3d& ptP, double dU = -1, double dV = -1) ;
inline int AddVertex( const Point3d& ptP) ;
private :
ISurfTriMesh* m_pSTM ;
+1 -1
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2014
//----------------------------------------------------------------------------
// File : EGkStringUtils3d.h Data : 10.03.14 Versione : 1.5c3
// File : EgkStringUtils3d.h Data : 10.03.14 Versione : 1.5c3
// Contenuto : Dichiarazione delle funzioni di utilità 3d per le stringhe.
//
//
-29
View File
@@ -1,29 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2023-2023
//----------------------------------------------------------------------------
// File : EGkSubtractProjectedFacesOnStmFace.h Data : 26.09.23 Versione : 2.5j1
// Contenuto : Dichiarazione della funzione per proiettare facce di TriMesh su una superficie di TriMesh.
//
//
//
// Modifiche : 26.09.23 RE Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkSurfTriMesh.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
EGK_EXPORT bool SubtractProjectedFacesOnStmFace( const ISurfTriMesh& Stm, int nFaceInd, ISURFTMPOVECTOR& vStmOthers,
bool bOCFlag, bool& bExistProjection, ISurfTriMesh*& pStmRes,
int& nNewFaceNbr) ;
+1 -1
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2019
//----------------------------------------------------------------------------
// File : EGkSurf.h Data : 06.06.19 Versione : 2.1f1
// File : EgkSurf.h Data : 06.06.19 Versione : 2.1f1
// Contenuto : Dichiarazione della interfaccia ISurf.
//
//
-61
View File
@@ -1,61 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2023-2023
//----------------------------------------------------------------------------
// File : EGkSurfAux.h Data : 09.08.23 Versione :
// Contenuto : Dichiarazione funzioni ausiliarie per ISurf.
//
//
//
// Modifiche : 09.08.23 DB Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurveComposite.h"
#include "/EgtDev/Include/EGkSurf.h"
#include "/EgtDev/Include/EGkGeoCollection.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
//! Struttura dati per superficie Nurbs
struct SNurbsSurfData
{
int nDegU ; // grado in U
int nDegV ; // grado in V
bool bRat ; // flag di superficie razionale (pesi non tutti unitari)
bool bPeriodicU ; // flag per segnalare vettore dei nodi periodico in U
bool bPeriodicV ; // flag per segnalare vettore dei nodi periodico in V
bool bClosedU ; // flag di superficie chiusa sul parametro U
bool bClosedV ; // flag di superficie chiusa sul parametro V
bool bClampedU ; // flag di superficie clamped sul parametro U
bool bClampedV ; // flag di superficie clamped sul parametro V
bool bExtraKnotes ; // flag per segnalare presenza di nodi extra all'inizio e fine (totale 2)
DBLVECTOR vU ; // vettore dei nodi in U
DBLVECTOR vV ; // vettore dei nodi in V
int nCPU ; // numero di punti di controllo in U
int nCPV ; // numero di punti di controllo in V
PNTVECTOR vCP ; // vettore dei punti di controllo
PNTMATRIX mCP ; // matrice dei punti di controllo
DBLMATRIX mW ; // matrice dei pesi
SNurbsSurfData( void) : nDegU( 0), nDegV( 0), bRat( false), bPeriodicU( false), bPeriodicV( false), bClosedU( false), bClosedV( false),
bClampedU( false), bClampedV( false), bExtraKnotes(false) {}
} ;
// N.B. : in caso la superficie sia razionale i punti di controllo sono in forma NON OMOGENEA [ x, y, z, w] ( dove la forma omogenea è [ w*x, w*y, w*z, w])
// tutte le operazioni richiedono la forma OMOGENEA, finite le quali posso riportarmi alla forma NON OMOGENEA
//----------------------------------------------------------------------------
//! Trasforma una superficie Nurbs standard in una nuova superficie di Bezier semplice o composta
EGK_EXPORT bool NurbsSurfaceCanonicalize( SNurbsSurfData& snData) ;
EGK_EXPORT ISurf* NurbsToBezierSurface( const SNurbsSurfData& snData) ;
+1 -17
View File
@@ -14,7 +14,6 @@
#pragma once
#include "/EgtDev/Include/EGkSurf.h"
#include "/EgtDev/Include/EGkCurveComposite.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
class PolyLine ;
@@ -37,8 +36,7 @@ class __declspec( novtable) ISurfBezier : public ISurf
virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl) = 0 ;
virtual bool SetControlPoint( int nIndU, int nIndV, const Point3d& ptCtrl, double dW) = 0 ;
virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl, double dW) = 0 ;
virtual bool SetTrimRegion( ISurfFlatRegion& sfrTrimReg, bool bIntersectOrSubtrct = true) = 0 ;
virtual ISurfFlatRegion* GetTrimRegion( void) const = 0 ;
virtual bool SetTrimRegion( const ISurfFlatRegion& sfrTrimReg) = 0 ;
virtual bool GetInfo( int& nDegU, int& nDegV, int& nSpanU, int& nSpanV, bool& bIsRat, bool& bTrimmed) const = 0 ;
virtual const Point3d& GetControlPoint( int nIndU, int nIndV, bool* pbOk) const = 0 ;
virtual const Point3d& GetControlPoint( int nInd, bool* pbOk) const = 0 ;
@@ -59,20 +57,6 @@ class __declspec( novtable) ISurfBezier : public ISurf
virtual bool GetControlCurveOnU( int nIndV, PolyLine& plCtrlU) const = 0 ;
virtual bool GetControlCurveOnV( int nIndU, PolyLine& plCtrlV) const = 0 ;
virtual const ISurfTriMesh* GetAuxSurf( void) const = 0 ;
virtual bool GetLeaves ( std::vector<std::tuple<int, Point3d, Point3d>>& vLeaves) const = 0 ;
virtual bool GetTriangles2D( std::vector<std::tuple<int,Point3d, Point3d, Point3d>>& vTria2D) const = 0 ;
virtual bool UnprojectPointFromStm( int nT, const Point3d& ptI, Point3d& ptSP, int nIL) const = 0 ;
virtual bool UnprojectPointFromStm( int nT, const Point3d& ptI, Point3d& ptSP, int nIL, const Point3d& ptIPrev, bool* bTroughEdge = nullptr) const = 0 ;
virtual bool UnprojectPoint( const Point3d& pt3D, Point3d& ptParam, const Point3d& ptIPrev, bool* bTroughEdge = nullptr, const Plane3d* plCut = nullptr) const = 0 ;
virtual bool UnprojectCurveFromStm( const ICurveComposite* pCC, ICRVCOMPOPVECTOR& vpCC, const Plane3d* pPlCut) const = 0 ;
// taglio la parte della superficie dalla parte positiva del versore del piano.
// Il booleano indica se tenere eventuali triangoli della trimesh ausiliaria che sono coplanari ed equiversi al piano di taglio
virtual bool Cut( const Plane3d& plPlane, bool bSaveOnEq) = 0 ;
// funzione da chiamare per calcolare i poli della superficie. NECESSARIO se si vuole tagliare la superficie con un piano
virtual bool CalcPoles( void) ;
virtual bool IncreaseUV( double& dU, double dx, bool bUOrV, double* dUVCopy = nullptr, bool bModifyOrig = true) const = 0 ;
virtual bool IncreaseUV( Point3d& ptUV, Vector3d vtH , Point3d* ptUVCopy, bool bModifyOrig) const = 0 ;
virtual bool GetLoops( ICRVCOMPOPOVECTOR& vCC, bool bLineOrBezier, int nEdge = -1) const = 0 ;
} ;
//-----------------------------------------------------------------------------
+2 -13
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2015
//----------------------------------------------------------------------------
// File : EGkSurfFlatRegion.h Data : 05.08.15 Versione : 1.6h2
// File : EgkSurfFlatRegion.h Data : 05.08.15 Versione : 1.6h2
// Contenuto : Dichiarazione della interfaccia ISurfFlatRegion.
//
//
@@ -15,7 +15,6 @@
#include "/EgtDev/Include/EGkSurf.h"
#include "/EgtDev/Include/EGkIntersCurves.h"
#include "/EgtDev/Include/EgkCurveComposite.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
class ISurfTriMesh ;
@@ -36,7 +35,6 @@ class __declspec( novtable) ISurfFlatRegion : public ISurf
virtual bool Subtract( const ISurfFlatRegion& Other) = 0 ;
virtual bool Intersect( const ISurfFlatRegion& Other) = 0 ;
virtual bool Offset( double dDist, int nType) = 0 ;
virtual ISurfFlatRegion* CreateOffsetSurf( double dDist, int nType) const = 0 ;
virtual bool GetGrossArea( double& dArea) const = 0 ;
virtual const Point3d& GetPlanePoint( void) const = 0 ;
virtual const Vector3d& GetNormVersor( void) const = 0 ;
@@ -47,11 +45,8 @@ class __declspec( novtable) ISurfFlatRegion : public ISurf
virtual const ISurfTriMesh* GetAuxSurf( void) const = 0 ;
virtual ISurfFlatRegion* CloneChunk( int nChunk) const = 0 ;
virtual bool GetChunkCentroid( int nChunk, Point3d& ptCen) const ;
virtual bool GetCurveClassification( const ICurve& Crv, double dLenMin, CRVCVECTOR& ccClass) const = 0 ;
virtual bool GetCurveClassification( const ICurve& Crv, CRVCVECTOR& ccClass) const = 0 ;
virtual int GetChunkSimpleClassification( int nChunk, const ISurfFlatRegion& Other, int nOthChunk) const ; // compare only outsides
virtual bool CalcVoronoiDiagram( ICURVEPOVECTOR& vCrvs, int nBound = 3) const = 0 ;
virtual bool CalcMedialAxis( ICURVEPOVECTOR& vCrvs, int nSide = 1) const = 0 ;
virtual void ResetVoronoiObject( void) const = 0 ;
} ;
//-----------------------------------------------------------------------------
@@ -85,9 +80,3 @@ const int REGC_IN2 = 2 ; //!< La seconda regione
const int REGC_SAME = 3 ; //!< Le due regioni coincidono
const int REGC_OUT = 4 ; //!< Le due regioni sono esterne
const int REGC_INTERS = 5 ; //!< Le due regioni si intersecano
//-----------------------------------------------------------------------------
// Costanti per zona calcolo medial axis della regione
const int WMAT_IN_OUT = 0 ;
const int WMAT_IN = 1 ;
const int WMAT_OUT = 2 ;
+1 -1
View File
@@ -14,7 +14,7 @@
#pragma once
#include "/EgtDev/Include/EGkSurf.h"
#include "/EgtDEv/Include/EGkGeomDB.h"
#include "/EgtDEv/Include/EgkGeomDB.h"
//-----------------------------------------------------------------------------
class SurfLocal
+6 -23
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2024
// EgalTech 2014-2021
//----------------------------------------------------------------------------
// File : EGkSurfTriMesh.h Data : 05.03.24 Versione : 2.6c2
// File : EgkSurfTriMesh.h Data : 26.09.21 Versione : 2.3i2
// Contenuto : Dichiarazione della interfaccia ISurfTriMesh.
//
//
@@ -25,16 +25,12 @@ const int SVT_DEL = - 2 ; // vertice o triangolo cancellato
inline bool IsValidSvt( int nSvt)
{ return ( nSvt != SVT_NULL && nSvt != SVT_DEL) ; }
//----------------------------------------------------------------------------
const double MAX_EDGE_LEN_STD = 5000.0 ;
//----------------------------------------------------------------------------
class __declspec( novtable) ISurfTriMesh : public ISurf
{
public :
enum RuledType { RLT_ISOPAR = 0, // con parametrizzazione simile tra le due curve
RLT_MINDIST = 1, // con distanza minima tra le due curve
RLT_ISOPAR_SMOOTH = 2} ; // con parametrizzazione simile tra le due curve e lisciatura delle parti torte
enum RuledType { RLT_ISOPAR = 0, // con parametrizzazione simile tra le due curve
RLT_MINDIST = 1} ; // con distanza minima tra le due curve
public : // IGeoObj
ISurfTriMesh* Clone( void) const override = 0 ;
public :
@@ -43,9 +39,7 @@ class __declspec( novtable) ISurfTriMesh : public ISurf
virtual void SetLinearTolerance( double dLinTol) = 0 ;
virtual void SetBoundaryAngle( double dBoundaryAngDeg) = 0 ;
virtual void SetSmoothAngle( double dSmoothAngDeg) = 0 ;
virtual void SetShowEdges( bool bShow) = 0 ;
virtual int AddVertex( const Point3d& ptVert, double dU = -1, double dV = -1) = 0 ;
virtual bool MoveVertex( int nInd, const Point3d& ptNewVert) = 0 ;
virtual int AddVertex( const Point3d& ptVert) = 0 ;
virtual int AddTriangle( const int nIdVert[3], int nTFlag = 0) = 0 ;
virtual bool RemoveTriangle( int nId) = 0 ;
virtual bool AdjustTopology( void) = 0 ;
@@ -60,7 +54,6 @@ class __declspec( novtable) ISurfTriMesh : public ISurf
double dAngRot, double dStepRot, double dMove) = 0 ;
virtual bool DoCompacting( double dTol = EPS_SMALL) = 0 ;
virtual bool DoSewing( const ISurfTriMesh& stmOther, const Frame3d& frOther = GLOB_FRM, double dTol = 2 * EPS_SMALL) = 0 ;
virtual bool IsEmpty( void) const = 0 ;
virtual int GetVertexCount( void) const = 0 ;
virtual int GetTriangleCount( void) const = 0 ;
virtual int GetTriangleCount( int nTFlag) const = 0 ;
@@ -68,9 +61,7 @@ class __declspec( novtable) ISurfTriMesh : public ISurf
virtual int GetTriangleSize( void) const = 0 ;
virtual double GetLinearTolerance( void) const = 0 ;
virtual double GetSmoothAngle( void) const = 0 ;
virtual bool GetShowEdges( void) const = 0 ;
virtual bool GetVertex( int nId, Point3d& ptP) const = 0 ;
virtual bool GetVertexParam( int nId, double& dU, double& dV) const = 0 ;
virtual int GetFirstVertex( Point3d& ptP) const = 0 ;
virtual int GetNextVertex( int nId, Point3d& ptP) const = 0 ;
virtual bool GetTriangle( int nId, int nIdVert[3]) const = 0 ;
@@ -86,14 +77,12 @@ class __declspec( novtable) ISurfTriMesh : public ISurf
virtual bool GetVertexSmoothNormal( int nV, int nT, Vector3d& vtN) const = 0 ;
virtual bool GetTriangleBoundaryEdges( int nId, TriFlags3d& TFlags) const = 0 ;
virtual bool GetTriangleSmoothNormals( int nId, TriNormals3d& TNrms) const = 0 ;
virtual ISurfTriMesh* CloneTriangle( int nTria) const = 0 ;
virtual bool GetLoops( POLYLINEVECTOR& vPL) const = 0 ;
virtual bool GetSilhouette( const Vector3d& vtDir, double dTol, POLYLINEVECTOR& vPL, bool bAllTria = false) const = 0 ;
virtual bool GetSilhouette( const Vector3d& vtDir, double dTol, POLYLINEVECTOR& vPL) const = 0 ;
virtual int GetFacetCount( void) const = 0 ;
virtual int GetFacetSize( void) const = 0 ;
virtual int GetFacetFromTria( int nT) const = 0 ;
virtual bool GetAllTriaInFacet( int nF, INTVECTOR& vT) const = 0 ;
virtual bool GetAllVertInFacet( int nF, INTVECTOR& vVert) const = 0 ;
virtual bool GetFacetLoops( int nF, POLYLINEVECTOR& vPL) const = 0 ;
virtual bool GetFacetAdjacencies( int nF, INTMATRIX& vAdj) const = 0 ;
virtual bool GetFacetNearestEndPoint( int nF, const Point3d& ptNear, Point3d& ptEnd, Vector3d& vtN) const = 0 ;
@@ -107,11 +96,6 @@ class __declspec( novtable) ISurfTriMesh : public ISurf
virtual bool SwapFacets( int nF1, int nF2) = 0 ;
virtual bool GetFacetLocalBBox( int nF, BBox3d& b3Loc, int nFlag = BBF_STANDARD) const = 0 ;
virtual bool GetFacetBBox( int nF, const Frame3d& frRef, BBox3d& b3Ref, int nFlag = BBF_STANDARD) const = 0 ;
virtual int GetEdgeCount( void) const = 0 ;
virtual int GetEdgeSize( void) const = 0 ;
virtual bool GetEdge( int nInd, int& nV1, int& nV2, int& nFl, int& nFr, double& dAng) const = 0 ;
virtual bool GetEdge( int nInd, Point3d& ptP1, Point3d& ptP2, double& dAng) const = 0 ;
virtual bool GetEdges( ICURVEPOVECTOR& vpCurve) const = 0 ;
virtual bool Cut( const Plane3d& plPlane, bool bSaveOnEq) = 0 ;
virtual bool GeneralizedCut( const ICurve& cvCurve, bool bSaveOnEq) = 0 ;
virtual bool Add( const ISurfTriMesh& Other) = 0 ;
@@ -120,7 +104,6 @@ class __declspec( novtable) ISurfTriMesh : public ISurf
virtual bool GetSurfClassification( const ISurfTriMesh& ClassifierSurf,
INTVECTOR& vTriaIn, INTVECTOR& vTriaOut, INTVECTOR& vTriaOnP, INTVECTOR& vTriaOnM, INTVECTOR& vTriaIndef) = 0 ;
virtual bool CutWithOtherSurf( const ISurfTriMesh& CutterSurf, bool bInVsOut, bool bSaveOnEq) = 0 ;
virtual bool Repair( double dMaxEdgeLen = MAX_EDGE_LEN_STD) = 0 ;
virtual bool GetAllTriaOverlapBox( const BBox3d& b3Box, INTVECTOR& vT) const = 0 ;
virtual const BBox3d& GetAllTriaBox( void) const = 0 ;
virtual int GetPartCount( void) const = 0 ;
+30 -99
View File
@@ -1,21 +1,19 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2023
// EgalTech 2013-2019
//----------------------------------------------------------------------------
// File : EGkVector3d.h Data : 23.08.23 Versione : 2.5h2
// File : EgkVector3d.h Data : 14.12.19 Versione : 2.1l4
// Contenuto : Dichiarazione della classe Vettore 3d.
//
//
//
// Modifiche : 31.12.13 DS Creazione modulo.
// 14.12.19 DS Aggiunti confronti con Epsilon.
// 23.08.23 DS Aggiunto V_INVALID.
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeoConst.h"
#include <algorithm>
#include <cmath>
//----------------------- Macro per import/export -----------------------------
@@ -45,9 +43,6 @@ class EGK_EXPORT Vector3d
void Set( double dX, double dY, double dZ) { x = dX ; y = dY ; z = dZ ; }
public :
//! Verifica la validità delle coordinate del vettore
bool IsValid( void) const
{ return ( std::isfinite( x) && std::isfinite( y) && std::isfinite( z)) ; }
//! Quadrato della lunghezza del vettore
double SqLen( void) const
{ return ( x * x + y * y + z * z) ; }
@@ -75,60 +70,44 @@ class EGK_EXPORT Vector3d
{ return ( abs( 1.0 - (x * x + y * y + z * z)) < ( 2 * EPS_ZERO)) ; }
//! Verifica se il vettore è parallelo ed equiverso con X+
bool IsXplus( void) const
{ double dMO = std::max( abs( y), abs( z)) ;
return ( x > EPS_ZERO && dMO < 10 * EPS_ZERO && x > KV_BIG * dMO) ; }
{ return ( x > EPS_ZERO && abs( y) < EPS_ZERO && abs( z) < EPS_ZERO) ; }
//! Verifica se il vettore è parallelo ed equiverso con X-
bool IsXminus( void) const
{ double dMO = std::max( abs( y), abs( z)) ;
return ( x < -EPS_ZERO && dMO < 10 * EPS_ZERO && x < -KV_BIG * dMO) ; }
//! Verifica se il vettore è parallelo a X
bool IsX( void) const
{ double dMO = std::max( abs( y), abs( z)) ;
return ( abs( x) > EPS_ZERO && dMO < 10 * EPS_ZERO && abs( x) > KV_BIG * dMO) ; }
{ return ( x < - EPS_ZERO && abs( y) < EPS_ZERO && abs( z) < EPS_ZERO) ; }
//! Verifica se il vettore è parallelo ed equiverso con Y+
bool IsYplus( void) const
{ double dMO = std::max( abs( z), abs( x)) ;
return ( y > EPS_ZERO && dMO < 10 * EPS_ZERO && y > KV_BIG * dMO) ; }
{ return ( abs( x) < EPS_ZERO && y > EPS_ZERO && abs( z) < EPS_ZERO) ; }
//! Verifica se il vettore è parallelo ed equiverso con Y-
bool IsYminus( void) const
{ double dMO = std::max( abs( z), abs( x)) ;
return ( y < -EPS_ZERO && dMO < 10 * EPS_ZERO && y < -KV_BIG * dMO) ; }
//! Verifica se il vettore è parallelo a Y
bool IsY( void) const
{ double dMO = std::max( abs( z), abs( x)) ;
return ( abs( y) > EPS_ZERO && dMO < 10 * EPS_ZERO && abs( y) > KV_BIG * dMO) ; }
{ return ( abs( x) < EPS_ZERO && y < - EPS_ZERO && abs( z) < EPS_ZERO) ; }
//! Verifica se il vettore è parallelo ed equiverso con Z+
bool IsZplus( void) const
{ double dMO = std::max( abs( x), abs( y)) ;
return ( z > EPS_ZERO && dMO < 10 * EPS_ZERO && z > KV_BIG * dMO) ; }
{ return ( abs( x) < EPS_ZERO && abs( y) < EPS_ZERO && z > EPS_ZERO) ; }
//! Verifica se il vettore è parallelo ed equiverso con Z-
bool IsZminus( void) const
{ double dMO = std::max( abs( x), abs( y)) ;
return ( z < -EPS_ZERO && dMO < 10 * EPS_ZERO && z < -KV_BIG * dMO) ; }
//! Verifica se il vettore è parallelo a Z
bool IsZ( void) const
{ double dMO = std::max( abs( x), abs( y)) ;
return ( abs( z) > EPS_ZERO && dMO < 10 * EPS_ZERO && abs( z) > KV_BIG * dMO) ; }
{ return ( abs( x) < EPS_ZERO && abs( y) < EPS_ZERO && z < - EPS_ZERO) ; }
//! Verifica se il vettore è generico
bool IsGeneric( void) const
{ return ( ! IsX() && ! IsY() && ! IsZ()) ; }
{ return (( abs( x) > EPS_ZERO && abs( y) > EPS_ZERO) ||
( abs( y) > EPS_ZERO && abs( z) > EPS_ZERO) ||
( abs( z) > EPS_ZERO && abs( x) > EPS_ZERO)) ; }
//! Somma sul posto con altro vettore
Vector3d& operator +=( const Vector3d& vtV)
{ x += vtV.x ; y += vtV.y ; z += vtV.z ; return *this ; }
{ this->x += vtV.x ; this->y += vtV.y ; this->z += vtV.z ; return *this ; }
//! Sottrazione sul posto con altro vettore
Vector3d& operator -=( const Vector3d& vtV)
{ x -= vtV.x ; y -= vtV.y ; z -= vtV.z ; return *this ; }
{ this->x -= vtV.x ; this->y -= vtV.y ; this->z -= vtV.z ; return *this ; }
//! Moltiplicazione sul posto con un numero
Vector3d& operator *=( double dMul)
{ x *= dMul ; y *= dMul ; z *= dMul ; return *this ; }
{ this->x *= dMul ; this->y *= dMul ; this->z *= dMul ; return *this ; }
//! Divisione sul posto con un numero
Vector3d& operator /=( double dDiv)
{ double dMul = 1 / dDiv ; x *= dMul ; y *= dMul ; z *= dMul ; return *this ; }
{ double dMul = 1 / dDiv ; this->x *= dMul ; this->y *= dMul ; this->z *= dMul ; return *this ; }
//! Ritorna la rappresentazione in coordinate sferiche
void ToSpherical( double* pdLen, double* pdAngVertDeg, double* pdAngOrizzDeg) const ;
//! Inversione del vettore
void Invert( void)
{ x = -x ; y = -y ; z = -z ; }
{ x = - x ; y = - y ; z = - z ; }
//! Normalizzazione del vettore (trasformazione in versore)
bool Normalize( double dEps = EPS_SMALL) ;
//! Rotazione attorno ad un asse, dato l'angolo in gradi
@@ -153,9 +132,7 @@ class EGK_EXPORT Vector3d
bool GetAngleXY( const Vector3d& vtEnd, double& dAngDeg) const ;
//! \brief Calcolo angolo di rotazione per portare la componente del vettore perpendicolare
//! all'asse di rotazione sulla stessa direzione della componente perpendicolare di vtEnd
bool GetRotation( const Vector3d& vtEnd, const Vector3d& vtAx, double dEpsZero, double& dAngDeg, bool& bDet) const ;
bool GetRotation( const Vector3d& vtEnd, const Vector3d& vtAx, double& dAngDeg, bool& bDet) const
{ return GetRotation( vtEnd, vtAx, EPS_ZERO, dAngDeg, bDet) ;}
bool GetRotation( const Vector3d& vtEnd, const Vector3d& vtAx, double& dAngDeg, bool& bDet) const ;
public :
union {
@@ -171,8 +148,6 @@ class EGK_EXPORT Vector3d
//----------------------------------------------------------------------------
// Vettori notevoli
//----------------------------------------------------------------------------
//! Vettore non valido
const Vector3d V_INVALID( NAN, NAN, NAN) ;
//! Vettore nullo
const Vector3d V_NULL( 0, 0, 0) ;
//! Versore asse X
@@ -197,15 +172,10 @@ EGK_EXPORT Vector3d FromPolar( double dLen, double dAngDeg) ;
//----------------------------------------------------------------------------
EGK_EXPORT Vector3d FromUprightOrtho( const Vector3d& vtV) ;
//----------------------------------------------------------------------------
//! Definizione come ortogonale al primo ricevuto, orizzontale e più vicino al secondo
//----------------------------------------------------------------------------
EGK_EXPORT Vector3d FromNearestHorizontalOrtho( const Vector3d& vtV, const Vector3d& vtNear) ;
//----------------------------------------------------------------------------
//! Opposto di un vettore
//----------------------------------------------------------------------------
inline const Vector3d
inline Vector3d
operator-( const Vector3d& vtV)
{
return ( Vector3d( - vtV.x, - vtV.y, - vtV.z)) ;
@@ -214,7 +184,7 @@ operator-( const Vector3d& vtV)
//----------------------------------------------------------------------------
//! Somma di due vettori
//----------------------------------------------------------------------------
inline const Vector3d
inline Vector3d
operator+( const Vector3d& vtV1, const Vector3d& vtV2)
{
return ( Vector3d( vtV1.x + vtV2.x, vtV1.y + vtV2.y, vtV1.z + vtV2.z)) ;
@@ -223,7 +193,7 @@ operator+( const Vector3d& vtV1, const Vector3d& vtV2)
//----------------------------------------------------------------------------
//! Sottrazione di due vettori
//----------------------------------------------------------------------------
inline const Vector3d
inline Vector3d
operator-( const Vector3d& vtV1, const Vector3d& vtV2)
{
return ( Vector3d( vtV1.x - vtV2.x, vtV1.y - vtV2.y, vtV1.z - vtV2.z)) ;
@@ -232,7 +202,7 @@ operator-( const Vector3d& vtV1, const Vector3d& vtV2)
//----------------------------------------------------------------------------
//! Prodotto con uno scalare
//----------------------------------------------------------------------------
inline const Vector3d
inline Vector3d
operator*( const Vector3d& vtV, double dMul)
{
return ( Vector3d( vtV.x * dMul, vtV.y * dMul, vtV.z * dMul)) ;
@@ -241,7 +211,7 @@ operator*( const Vector3d& vtV, double dMul)
//----------------------------------------------------------------------------
//! Prodotto di uno scalare con un vettore
//----------------------------------------------------------------------------
inline const Vector3d
inline Vector3d
operator*( double dMul, const Vector3d& vtV)
{
return ( Vector3d( vtV.x * dMul, vtV.y * dMul, vtV.z * dMul)) ;
@@ -250,7 +220,7 @@ operator*( double dMul, const Vector3d& vtV)
//----------------------------------------------------------------------------
//! Divisione con uno scalare
//----------------------------------------------------------------------------
inline const Vector3d
inline Vector3d
operator/( const Vector3d& vtV, double dDiv)
{
double dMul = 1 / dDiv ;
@@ -278,7 +248,7 @@ ScalarXY( const Vector3d& vtV1, const Vector3d& vtV2)
//----------------------------------------------------------------------------
//! Prodotto vettoriale
//----------------------------------------------------------------------------
inline const Vector3d
inline Vector3d
operator^( const Vector3d& vtV1, const Vector3d& vtV2)
{
return ( Vector3d( vtV1.y * vtV2.z - vtV1.z * vtV2.y,
@@ -298,8 +268,8 @@ CrossXY( const Vector3d& vtV1, const Vector3d& vtV2)
//----------------------------------------------------------------------------
//! Somma mediata di due vettori (baricentrica)
//----------------------------------------------------------------------------
inline const Vector3d
Media( const Vector3d& vtV1, const Vector3d& vtV2, double dCoeff = 0.5)
inline Vector3d
Media( const Vector3d& vtV1, const Vector3d& vtV2, double dCoeff)
{
return ( Vector3d( ( 1 - dCoeff) * vtV1.x + dCoeff * vtV2.x,
( 1 - dCoeff) * vtV1.y + dCoeff * vtV2.y,
@@ -309,25 +279,19 @@ Media( const Vector3d& vtV1, const Vector3d& vtV2, double dCoeff = 0.5)
//----------------------------------------------------------------------------
//! Restituisce il componente del vettore parallelo a quello di riferimento
//----------------------------------------------------------------------------
inline const Vector3d
inline Vector3d
ParallCompo( const Vector3d& vtV, const Vector3d& vtRef)
{
if ( vtRef.IsNormalized())
return ( ( vtV * vtRef) * vtRef) ;
else
return ( ( vtV * vtRef) * vtRef / vtRef.SqLen()) ;
return ( ( vtV * vtRef) * vtRef) ;
}
//----------------------------------------------------------------------------
//! Restituisce il componente del vettore ortogonale a quello di riferimento
//----------------------------------------------------------------------------
inline const Vector3d
inline Vector3d
OrthoCompo( const Vector3d& vtV, const Vector3d& vtRef)
{
if ( vtRef.IsNormalized())
return ( vtV - ( vtV * vtRef) * vtRef) ;
else
return ( vtV - ( vtV * vtRef) * vtRef / vtRef.SqLen()) ;
return ( vtV - ( vtV * vtRef) * vtRef) ;
}
//----------------------------------------------------------------------------
@@ -428,36 +392,3 @@ AreOrthoExact( const Vector3d& vtV1, const Vector3d& vtV2)
{
return ( abs( vtV1 * vtV2) < COS_ORTO_ANG_ZERO) ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia in locale del vettore passato
//----------------------------------------------------------------------------
inline const Vector3d
GetToLoc( const Vector3d& vtV, const Frame3d& frRef)
{
Vector3d vtW = vtV ;
vtW.ToLoc( frRef) ;
return vtW ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia in globale del vettore passato
//----------------------------------------------------------------------------
inline const Vector3d
GetToGlob( const Vector3d& vtV, const Frame3d& frRef)
{
Vector3d vtW = vtV ;
vtW.ToGlob( frRef) ;
return vtW ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia dal primo al secondo riferimento del vettore passato
//----------------------------------------------------------------------------
inline const Vector3d
GetLocToLoc( const Vector3d& vtV, const Frame3d& frOri, const Frame3d& frDest)
{
Vector3d vtW = vtV ;
vtW.LocToLoc( frOri, frDest) ;
return vtW ;
}
+56 -35
View File
@@ -1,23 +1,48 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2024
// EgalTech 2015-2020
//----------------------------------------------------------------------------
// File : EGkVolZmap.h Data : 09.03.24 Versione : 2.6c2
// File : EgkVolZmap.h Data : 12.05.19 Versione : 2.2k1
// Contenuto : Dichiarazione della interfaccia IVolZmap.
//
//
//
// Modifiche : 22.01.15 DS Creazione modulo.
// 12.09.23 DS Aggiunto metodo IsTriDexel.
// 09.03.24 DS Aggiunti SetShowEdges e GetShowEdges.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeoObj.h"
#include "/EgtDev/Include/EGkPolyLine.h"
#include "/EgtDev/Include/EGkCurveComposite.h"
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
#include "/EgtDev/Include/EGkSurfTriMesh.h"
#include "/EgtDev/Include/EGkTriangle3d.h"
#include "/EgtDev/Include/EGkIntersLineTria.h"
// ------------------------- STRUTTURE -----------------------------------------------------------
// Informazioni su intersezione linea - volume Zmap
struct IntLineZmapInfo {
int nILTT ; // Tipo di intersezione linea-triangolo
double dU ; // Parametro sulla linea
double dU2 ; // Secondo parametro sulla linea
int nVox ; // Indice del voxel del triangolo
int nBlock ; // Indice del blocco del triangolo
Point3d ptI ; // Punto di intersezione
Point3d ptI2 ; // Secondo punto di intersezione (termine di tratto sovrapposto)
Triangle3d trTria ; // Triangolo
// Costruttori
IntLineZmapInfo( void)
: nILTT( ILTT_NO), dU( 0), dU2( 0), nVox( -1), nBlock( -1), ptI(), ptI2(), trTria() {}
IntLineZmapInfo( int nIL, double dUU, int nVx, int nBl, const Point3d& ptP, Triangle3d& trTr)
: nILTT( nIL), dU( dUU), dU2( 0), nVox( nVx), nBlock( nBl), ptI( ptP), ptI2(), trTria( trTr) {}
IntLineZmapInfo( int nIL, double dUU, double dUU2, int nVx, int nBl,
const Point3d& ptP, const Point3d& ptP2, Triangle3d& trTr)
: nILTT( nIL), dU( dUU), dU2( dUU2), nVox( nVx), nBlock( nBl), ptI( ptP), ptI2( ptP2), trTria( trTr) {}
} ;
// Vettore di IntLineZmapInfo
typedef std::vector<IntLineZmapInfo> ILZIVECTOR ;
//----------------------------------------------------------------------------
class __declspec( novtable) IVolZmap : public IGeoObj
@@ -30,52 +55,48 @@ class __declspec( novtable) IVolZmap : public IGeoObj
virtual bool Create( const Point3d& ptO, double dDimX, double dDimY, double dDimZ, double dPrec, bool bTriDex) = 0 ;
virtual bool CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double dPrec, bool bTriDex) = 0 ;
virtual bool CreateFromTriMesh( const ISurfTriMesh& Surf, double dPrec, bool bTriDex) = 0 ;
virtual bool CreateEmptyMap( const Point3d& ptO, double dLengthX, double dLengthY, double dLengthZ, double dStep, bool bTriDex) = 0 ;
virtual int GetBlockCount( void) const = 0 ;
virtual int GetBlockUpdatingCounter( int nBlock) const = 0 ;
virtual bool GetBlockTriangles( int nBlock, TRIA3DEXVECTOR& vTria) const = 0 ;
virtual bool GetEdges( ICURVEPOVECTOR& vpCurve) const = 0 ;
virtual bool GetVolume( double& dVol) const = 0 ;
virtual bool IsTriDexel( void) const = 0 ;
virtual bool GetDexelLines( int nDir, int nPos1, int nPos2, POLYLINELIST& lstPL) const = 0 ;
virtual int GetResolution( void) const = 0 ;
virtual bool ChangeResolution( int nDexvoxRatio) = 0 ;
virtual void SetShowEdges( bool bShow) = 0 ;
virtual bool GetShowEdges( void) const = 0 ;
virtual bool SetToolTolerances( double dLinTol, double dAngTolDeg = 90) = 0 ;
virtual bool SetStdTool( const std::string& sToolName,
double dH, double dR, double dCornR, double dCutterH, int nFlag, bool bFirst) = 0 ;
virtual bool SetStdTool( const std::string& sToolName, double dH, double dR, double dCornR, double dCutterH, int nFlag) = 0 ;
virtual bool SetAdvTool( const std::string& sToolName,
double dH, double dR, double dTipH, double dTipR, double dCornR, double dCutterH, int nFlag, bool bFirst) = 0 ;
double dH, double dR, double dTipH, double dTipR, double dCornR, double dCutterH, int nFlag) = 0 ;
virtual bool SetSawTool( const std::string& sToolName,
double dH, double dR, double dThick, double dStemR, double dCornR, int nFlag, bool bFirst) = 0 ;
virtual bool SetGenTool( const std::string& sToolName,
const ICurveComposite* pToolOutline, int nFlag, bool bFirst) = 0 ;
virtual bool SetMortiserTool( const std::string& sToolName,
double dH, double dW, double dTh, double dRc, int nFlag, bool bFirst) = 0 ;
virtual bool SetChiselTool( const std::string& sToolName,
double dH, double dW, double dTh, int nFlag, bool bFirst) = 0 ;
virtual int GetToolCount( void) const = 0 ;
double dH, double dR, double dThick, double dStemR, double dCornR, int nFlag) = 0 ;
virtual bool SetGenTool( const std::string& sToolName, const ICurveComposite* pToolOutline, int nFlag) = 0 ;
virtual bool SetMortiserTool( const std::string& sToolName, double dH, double dW, double dTh, double dRc, int nFlag) = 0 ;
virtual bool SetChiselTool( const std::string& sToolName, double dH, double dW, double dTh, int nFlag) = 0 ;
virtual bool SetCurrTool( int nCurrTool) = 0 ;
virtual bool ResetTools( void) = 0 ;
virtual int GetToolCount( void) const = 0 ;
virtual int GetCurrTool( void) const = 0 ;
virtual bool AddTool( void) = 0 ;
virtual bool ResetAllTools( void) = 0 ;
virtual bool ResetTool( void) = 0 ;
virtual const ICurveComposite& GetToolOutline( bool bApprox = false) const = 0 ;
virtual bool MillingStep( int nCurrTool,
const Point3d& ptPs, const Vector3d& vtDs,
const Point3d& ptPe, const Vector3d& vtDe) = 0 ;
virtual bool MillingStep( int nCurrTool,
const Point3d& ptPs, const Vector3d& vtDs, const Vector3d& vtAs,
virtual bool MillingStep( const Point3d& ptPs, const Vector3d& vtDs, const Point3d& ptPe, const Vector3d& vtDe) = 0 ;
virtual bool MillingStep( const Point3d& ptPs, const Vector3d& vtDs, const Vector3d& vtAs,
const Point3d& ptPe, const Vector3d& vtDe, const Vector3d& vtAe) = 0 ;
virtual bool GetDepth( const Point3d& ptP, const Vector3d& vtDir, double& dInLength, double& dOutLength, bool bExact) const = 0 ;
virtual bool CDeBox( const Frame3d& frBox, const Vector3d& vtDiag, double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool CDeSphere( const Point3d& ptCenter, double dRad, double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool CDeCylinder( const Frame3d& frCyl, double dR, double dH, double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool CDeConeFrustum( const Frame3d& frCone, double dRadBot, double dRadTop, double dHeight,
double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool CDeRectPrismoid( const Frame3d& frPrismoid, double dLenghtBaseX, double dLenghtBaseY,
double dLenghtTopX, double dLenghtTopY, double dHeight,
double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool CDeTorus( const Frame3d& frTorus, double dRadMax, double dRadMin,
double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool CDeSurfTm( const ISurfTriMesh& tmSurf, double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool GetLineIntersection( const Point3d& ptP, const Vector3d& vtD, ILZIVECTOR& vIntersInfo) const = 0 ;
virtual bool GetPlaneIntersection( const Plane3d& plPlane, ICURVEPOVECTOR& vpLoop) const = 0 ;
virtual bool AvoidBox( const Frame3d& frBox, const Vector3d& vtDiag, double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool AvoidSphere( const Point3d& ptCenter, double dRad, double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool AvoidCylinder( const Frame3d& frCyl, double dR, double dH, double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool AvoidConeFrustum( const Frame3d& frCone, double dRadBot, double dRadTop, double dHeight,
double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool AvoidRectPrismoid( const Frame3d& frPrismoid, double dLenghtBaseX, double dLenghtBaseY,
double dLenghtTopX, double dLenghtTopY, double dHeight,
double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool AvoidTorus( const Frame3d& frTorus, double dRadMax, double dRadMin,
double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool AvoidSurfTm( const ISurfTriMesh& tmSurf, double dSafeDist, bool bPrecise = false) const = 0 ;
virtual bool Cut( const Plane3d& plPlane) = 0 ;
virtual bool Compact( void) = 0 ;
virtual int GetPartCount( void) const = 0 ;
+1 -1
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2014
//----------------------------------------------------------------------------
// File : EGnCmdExecutor.h Data : 21.03.14 Versione : 1.5c3
// File : EgnCmdExecutor.h Data : 21.03.14 Versione : 1.5c3
// Contenuto : Dichiarazione della interfaccia ICmdExecutor.
//
//
+1 -1
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2014
//----------------------------------------------------------------------------
// File : EGnCmdParser.h Data : 15.03.14 Versione : 1.5c
// File : EgnCmdParser.h Data : 15.03.14 Versione : 1.5c
// Contenuto : Dichiarazione della interfaccia ICmdParser.
//
//
+1 -7
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : EGnDllMain.h Data : 21.11.13 Versione : 1.4l2
// File : EgnDllMain.h Data : 21.11.13 Versione : 1.4l2
// Contenuto : Prototipi funzioni generali della DLL.
//
//
@@ -28,9 +28,3 @@ class ILogger ;
EGN_EXPORT const char* GetEGnVersion( void) ;
// permette di impostare il logger per la Dll
EGN_EXPORT void SetEGnLogger( ILogger* pLogger) ;
// imposta la chiave di protezione
EGN_EXPORT void SetEGnKey( const std::string& sKey) ;
// imposta il tipo di chiave di protezione
EGN_EXPORT void SetEGnKeyType( int nType) ;
// imposta se chiave hardware di rete
EGN_EXPORT void SetEGnNetHwKey( bool bNetHwKey) ;

Some files were not shown because too many files have changed in this diff Show More