Compare commits
194 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b385f19273 | |||
| 5525970ea1 | |||
| 0deab361c2 | |||
| f4d5bb773e | |||
| f9f1e61a52 | |||
| 3c02ee2dc0 | |||
| d3528e3660 | |||
| 0399218643 | |||
| 83cfdfc50e | |||
| fe30d8316d | |||
| 9b3ee95672 | |||
| 67e90e56dd | |||
| 41671e933f | |||
| d5b6c5c278 | |||
| a9b5a7285f | |||
| e07eaed52b | |||
| 398a083be6 | |||
| 843f69c529 | |||
| 415493927e | |||
| d87a1037e6 | |||
| 9891ab1d29 | |||
| 32b9ee9f24 | |||
| 6944705676 | |||
| 00f5e38f61 | |||
| 020dca78bd | |||
| 65b3fe80d1 | |||
| c57e44db02 | |||
| 30a394960c | |||
| 50df61a97a | |||
| 992b4d1562 | |||
| 74c9c8d04e | |||
| e51df31d13 | |||
| dd0a2818ee | |||
| d6e6531d92 | |||
| 5919ebd8ec | |||
| f0968a8d40 | |||
| ba10a0cd58 | |||
| f81bb32e20 | |||
| 7d0a641b6d | |||
| d026cc2db7 | |||
| b691854993 | |||
| fe25f6e009 | |||
| 1c088f9e50 | |||
| 88bbc2580b | |||
| 2468e5c1c5 | |||
| af000e7c37 | |||
| 9464b52c0b | |||
| 6534f7bc32 | |||
| 5ba17dda50 | |||
| 64e225c11c | |||
| 26869b633d | |||
| fef9dd4ae5 | |||
| 1c6d7ed4ff | |||
| dec545da2e | |||
| c4241bfb88 | |||
| 77b84fdd17 | |||
| 9a8be81fd6 | |||
| e148024db1 | |||
| 4ede19d2ee | |||
| b4ee9e2b42 | |||
| 5644f837ed | |||
| d731ea7164 | |||
| ca4eb9f166 | |||
| 29bc318eaa | |||
| fda893f8e2 | |||
| 675c09e36b | |||
| e5873f66ce | |||
| d2880b5167 | |||
| a933bea836 | |||
| 9dbb6fac60 | |||
| d3c44f2241 | |||
| e6f0be1896 | |||
| 5d2497bc9c | |||
| b4c5b74e8a | |||
| 38b0309079 | |||
| 60f71c0601 | |||
| b3f6bd148a | |||
| 3ded442847 | |||
| 756f13e6d7 | |||
| 127fbb4be6 | |||
| f72ee830ff | |||
| c40a9a64c0 | |||
| 196e037ace | |||
| a6ccda3670 | |||
| a19e0e63a5 | |||
| fa91c10973 | |||
| ad970a39f5 | |||
| 3d7308fbd3 | |||
| 85e69405f1 | |||
| f4bb934999 | |||
| 129bff73f0 | |||
| 43eb33cf34 | |||
| 5b6d056eb9 | |||
| 88a4a91835 | |||
| a78f73f1f1 | |||
| 90d548b69d | |||
| 37768dc318 | |||
| 82e86fcdee | |||
| 728d677ad6 | |||
| 360c3c1ab1 | |||
| 062512cd2e | |||
| bdd2f34184 | |||
| 987a84181d | |||
| 9617f36230 | |||
| 14fe1a913a | |||
| 9d7207e898 | |||
| f1ce998815 | |||
| 58ce7bc753 | |||
| 7d922116ed | |||
| c3d3c1e0bc | |||
| c45d88829a | |||
| ad87ee5da8 | |||
| 079e9e027a | |||
| 88fa15f216 | |||
| 8efa4243b0 | |||
| 7c3a4e4ef8 | |||
| a5ae1f617a | |||
| fbbefba01e | |||
| ece9282f17 | |||
| 95d828ea9a | |||
| 08e53e8872 | |||
| 6a315e2180 | |||
| 2f821e645e | |||
| a55b658dd3 | |||
| a6fa2fd1eb | |||
| abca64412e | |||
| 620ffdd3c8 | |||
| a8f06e3724 | |||
| 85dbf13d9e | |||
| a98e3a91a8 | |||
| 7eae7b1771 | |||
| a66f159deb | |||
| a9e5a7ada7 | |||
| 841fc508db | |||
| bb7da199a9 | |||
| e821a72ac9 | |||
| 1dc36f32ee | |||
| 1a6f7ace71 | |||
| db90c2e032 | |||
| ac2da7f310 | |||
| 3466eb44dd | |||
| a0244abf46 | |||
| 80b71e7d5d | |||
| 2ae2d43e19 | |||
| cda56e4f1e | |||
| c9cd2e6436 | |||
| 954f7a602a | |||
| 384eacf837 | |||
| be18f4ceab | |||
| e9c515b1cb | |||
| e4d75803ce | |||
| cc2290fdde | |||
| 736131c937 | |||
| fa7dc81a0f | |||
| 5870d60433 | |||
| c709b90c74 | |||
| b6947be971 | |||
| 6cb8988822 | |||
| 5424ebcfd1 | |||
| 0c6127648c | |||
| c259450b4f | |||
| 3f86c9f333 | |||
| a488d0248c | |||
| 6d06630d0a | |||
| b90644dcd2 | |||
| eab80828f7 | |||
| 52d64962cd | |||
| 3b1ffa6f4a | |||
| c96642c373 | |||
| 0f84188120 | |||
| 7a36482787 | |||
| b3d5483564 | |||
| 22c4c89a5b | |||
| 270bb60b26 | |||
| 98bcfa2230 | |||
| 0b2c4b24b1 | |||
| c5da2d52f5 | |||
| 447719df31 | |||
| 841523fb00 | |||
| 2ded5d72ed | |||
| 93b180b129 | |||
| fd9ad51978 | |||
| 29c292b075 | |||
| 63b93b0cbf | |||
| ba18004154 | |||
| 09409e92e8 | |||
| 65b7c14f62 | |||
| d2f78740bb | |||
| f7a3a6f00f | |||
| dc7a6fa31f | |||
| 3ca2a64bfa | |||
| 8b52d7e8aa | |||
| cf09eda254 | |||
| 4a81b0fc94 |
@@ -0,0 +1,39 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2024-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkCAvSilhouetteSurfTm.h Data : 08.06.24 Versione : 2.6f2
|
||||
// Contenuto : Dichiarazione della funzione calcolo silhouette.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 08.06.24 DS 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 CAvSilhouetteSurfTm( const ISurfTriMesh& Stm, const Plane3d& plPlane, double dTol, POLYLINEVECTOR& vPL) ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
class __declspec( novtable) ICAvParSilhouettesSurfTm
|
||||
{
|
||||
public :
|
||||
virtual ~ICAvParSilhouettesSurfTm( void) {}
|
||||
virtual bool SetData( const CISURFTMPVECTOR& vpStm, const Frame3d& frPlanes, double dTol) = 0 ;
|
||||
virtual bool GetSilhouette( double dLevel, POLYLINEVECTOR& vPL) = 0 ;
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
EGK_EXPORT ICAvParSilhouettesSurfTm* CreateCAvParSilhouettesSurfTm( void) ;
|
||||
+6
-2
@@ -23,6 +23,8 @@
|
||||
#define EGK_EXPORT __declspec( dllimport)
|
||||
#endif
|
||||
|
||||
class ICurveComposite ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
class __declspec( novtable) ICAvToolSurfTm {
|
||||
public :
|
||||
@@ -36,8 +38,10 @@ class __declspec( novtable) ICAvToolSurfTm {
|
||||
virtual double GetToolRadius( void) const = 0 ;
|
||||
virtual double GetToolHeight( void) const = 0 ;
|
||||
virtual const ICurveComposite& GetToolOutline( bool bApprox = false) const = 0 ;
|
||||
virtual bool TestPosition( const Point3d& ptT, const Vector3d& vtDir, const Vector3d& vtMove, double& dTotDist) = 0 ;
|
||||
virtual bool TestPath( PNTULIST& lPntM, const Vector3d& vtDir, const Vector3d& vtMove, double dLinTol) = 0 ;
|
||||
virtual bool TestPosition( const Point3d& ptT, const Vector3d& vtDir, const Vector3d& vtMove,
|
||||
double& dTotDist, Vector3d* pvtTriaN = nullptr) const = 0 ;
|
||||
virtual bool TestSeries( PNTUVECTOR& vPntM, const Vector3d& vtDir, const Vector3d& vtMove, double dProgCoeff = 1) = 0 ;
|
||||
virtual bool TestPath( PNTULIST& lPntM, const Vector3d& vtDir, const Vector3d& vtMove, double dLinTol, double dProgCoeff = 1) = 0 ;
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
+16
-3
@@ -1,12 +1,13 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2016-2020
|
||||
// EgalTech 2016-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkCDeBoxClosedSurfTm.h Data : 09.01.20 Versione : 2.2a2
|
||||
// File : EGkCDeBoxClosedSurfTm.h Data : 24.03.24 Versione : 2.6c2
|
||||
// Contenuto : Dichiarazione funzione verifica collisione tra
|
||||
// BoundingBox e Closed SurfTriMesh.
|
||||
//
|
||||
// Modifiche : 05.10.16 DS Creazione modulo.
|
||||
// 09.01.20 DS Cambio nome alla funzione e cambio parametri.
|
||||
// 24.03.24 DS Aggiunta TestBoxSurfTm.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -24,4 +25,16 @@
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool CDeBoxClosedSurfTm( const Frame3d& frBox, const Vector3d& vtDiag, double dSafeDist, const ISurfTriMesh& Stm) ;
|
||||
// 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) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Verifica l'interferenza tra il box e la superficie : restituisce true in caso di interferenza.
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool TestBoxSurfTm( const Frame3d& frBox, const Vector3d& vtDiag, const ISurfTriMesh& Stm, double dSafeDist) ;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2020-2023
|
||||
// EgalTech 2020-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkCDeClosedSurfTmClosedSurfTm.h Data : 14.06.23 Versione : 2.5f3
|
||||
// File : EGkCDeClosedSurfTmClosedSurfTm.h Data : 24.03.24 Versione : 2.6c2
|
||||
// Contenuto : Dichiarazione funzione verifica collisione tra
|
||||
// SurfTm e SurfTm.
|
||||
//
|
||||
// Modifiche : 13.11.20 LM Creazione modulo.
|
||||
//
|
||||
// 24.03.24 DS Aggiunta TestSurfTmSurfTm.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -23,8 +23,15 @@
|
||||
#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) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Verifica l'interferenza tra le due superfici : restituisce true in caso di interferenza.
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool TestSurfTmSurfTm( const ISurfTriMesh& SurfA, const ISurfTriMesh& SurfB, double dSafeDist) ;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2020-2020
|
||||
// EgalTech 2020-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkCDeConeFrustumClosedSurfTm.h Data : 09.11.20 Versione :
|
||||
// File : EGkCDeConeFrustumClosedSurfTm.h Data : 24.03.24 Versione : 2.6c2
|
||||
// Contenuto : Dichiarazione funzione verifica collisione tra
|
||||
// Cone e Closed SurfTriMesh.
|
||||
//
|
||||
// Modifiche : 09.11.20 LM Creazione modulo.
|
||||
//
|
||||
// 24.03.24 DS Aggiunta TestConeFrustumSurfTm.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -23,8 +23,17 @@
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// 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.
|
||||
// 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.
|
||||
EGK_EXPORT bool CDeConeFrustumClosedSurfTm( const Frame3d& frCone, double dBaseRad, double dTopRad, double dHeight,
|
||||
double dSafeDist, const ISurfTriMesh& Stm) ;
|
||||
const ISurfTriMesh& Stm, double dSafeDist) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Verifica l'interferenza tra il tronco di cono e la superficie : restituisce true in caso di interferenza.
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool TestConeFrustumSurfTm( const Frame3d& frCone, double dBaseRad, double dTopRad, double dHeight,
|
||||
const ISurfTriMesh& Stm, double dSafeDist) ;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2020-2020
|
||||
// EgalTech 2020-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkCDeConvexTorusTria.h Data : 18.11.20 Versione :
|
||||
// File : EGkCDeConvexTorusTria.h Data : 24.03.24 Versione : 2.6c2
|
||||
// Contenuto : Dichiarazione funzione verifica collisione tra
|
||||
// toro convesso e SurfTriMesh.
|
||||
//
|
||||
// Modifiche : 18.11.20 LM Creazione modulo.
|
||||
//
|
||||
// 24.03.24 DS Aggiunta TestConvexTorusSurfTm.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -24,9 +24,18 @@
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Il toro convesso è il disco limitato dalla sola parte esterna del toro.
|
||||
// Il toro convesso è il disco solido 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.
|
||||
// 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,
|
||||
double dSafeDist, const ISurfTriMesh& tmSurf) ;
|
||||
const ISurfTriMesh& tmSurf, double dSafeDist) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Verifica l'interferenza tra il toro convesso e la superficie : restituisce true in caso di interferenza
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool TestConvexTorusSurfTm( const Frame3d& frTorus, double dRad1, double dRad2,
|
||||
const ISurfTriMesh& Stm, double dSafeDist) ;
|
||||
|
||||
+16
-4
@@ -1,12 +1,12 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2020-2020
|
||||
// EgalTech 2020-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkCDeCylClosedSurfTm.h Data : 09.01.20 Versione : 2.2a2
|
||||
// File : EGkCDeCylClosedSurfTm.h Data : 24.03.24 Versione : 2.6c2
|
||||
// Contenuto : Dichiarazione funzione verifica collisione tra
|
||||
// Cylinder e Closed SurfTriMesh.
|
||||
//
|
||||
// Modifiche : 09.01.20 DS Creazione modulo.
|
||||
//
|
||||
// 24.03.24 DS Aggiunta TestCylSurfTm.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -23,4 +23,16 @@
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool CDeCylClosedSurfTm( const Frame3d& frCyl, double dR, double dH, double dSafeDist, const ISurfTriMesh& Stm) ;
|
||||
// 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) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Verifica l'interferenza tra il cilindro e la superficie : restituisce true in caso di interferenza.
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool TestCylSurfTm( const Frame3d& frCyl, double dR, double dH, const ISurfTriMesh& Stm, double dSafeDist) ;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2020-2020
|
||||
// EgalTech 2020-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkCDeRectPrismoidClosedSurfTm.h Data : 09.11.20 Versione :
|
||||
// File : EGkCDeRectPrismoidClosedSurfTm.h Data : 24.03.24 Versione : 2.6c2
|
||||
// Contenuto : Dichiarazione funzione verifica collisione tra
|
||||
// prismoide a basi rettangolari e Closed SurfTriMesh.
|
||||
//
|
||||
// Modifiche : 09.11.20 LM Creazione modulo.
|
||||
//
|
||||
// 24.03.24 DS Aggiunta TestRectPrismoidSurfTm.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -26,6 +26,17 @@
|
||||
// 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,
|
||||
double dSafeDist, const ISurfTriMesh& Stm) ;
|
||||
const ISurfTriMesh& Stm, double dSafeDist) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Verifica l'interferenza tra il Prismoide a basi rettangolari e la superficie : restituisce true in caso di interferenza.
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool TestRectPrismoidSurfTm( const Frame3d& frPrismoid, double dLenghtBaseX, double dLenghtBaseY,
|
||||
double dLenghtTopX, double dLenghtTopY, double dHeight,
|
||||
const ISurfTriMesh& Stm, double dSafeDist) ;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2020-2020
|
||||
// EgalTech 2020-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkCDeSpheClosedSurfTm.h Data : 09.01.20 Versione : 2.2a2
|
||||
// File : EGkCDeSpheClosedSurfTm.h Data : 24.03.24 Versione : 2.6c2
|
||||
// Contenuto : Dichiarazione funzione verifica collisione tra
|
||||
// Sphere e Closed SurfTriMesh.
|
||||
//
|
||||
// Modifiche : 09.01.20 DS Creazione modulo.
|
||||
//
|
||||
// 24.03.24 DS Aggiunta TestSpheSurfTm.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -23,4 +23,13 @@
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool CDeSpheClosedSurfTm( const Point3d& ptCen, double dR, double dSafeDist, const ISurfTriMesh& Stm) ;
|
||||
// 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) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Verifica l'interferenza tra la sfera e la superficie : restituisce true in caso di interferenza
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool TestSpheSurfTm( const Point3d& ptCen, double dR, const ISurfTriMesh& Stm, double dSafeDist) ;
|
||||
|
||||
+23
-2
@@ -25,7 +25,28 @@
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool CalcPocketing( const ISurfFlatRegion* pSfr, double dRad, double dStep, double dAngle, int nType,
|
||||
bool bSmooth, ICRVCOMPOPOVECTOR& vCrv) ;
|
||||
EGK_EXPORT bool CalcPocketing( const ISurfFlatRegion* pSfr, double dRad, double dRadOffs, double dStep,
|
||||
double dAngle, int nType, bool bSmooth, bool bInvert, bool bAvoidOpt,
|
||||
bool bAllowZigZagOneWayBorders, const Point3d& ptEndPrec, const ISurfFlatRegion* pSfrLimit,
|
||||
ICRVCOMPOPOVECTOR& vCrv) ;
|
||||
EGK_EXPORT bool CalcZigZagInfill( const ISurfFlatRegion* pSfr, double dStep, bool bSmooth, bool bRemoveOverlapLink,
|
||||
ICRVCOMPOPOVECTOR& vCrvCompoRes) ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
enum { POCKET_ZIGZAG = 0,
|
||||
POCKET_ONEWAY = 1,
|
||||
POCKET_SPIRALIN = 2,
|
||||
POCKET_SPIRALOUT = 3,
|
||||
POCKET_CONFORMAL_ZIGZAG = 4,
|
||||
POCKET_CONFORMAL_ONEWAY = 5} ;
|
||||
|
||||
enum { TEMP_PROP_SMOOTH = -2,
|
||||
TEMP_PROP_INVALID = -1,
|
||||
TEMP_PROP_CLOSE_EDGE = 0,
|
||||
TEMP_PROP_OPEN_EDGE = 1,
|
||||
TEMP_PROP_OUT_START = 2,
|
||||
TEMP_PROP_SINGLE_CURVE = 3,
|
||||
TEMP_PROP_OPT_TRAPEZOID = 4,
|
||||
TEMP_PROP_BORDER_CURVE = 5,
|
||||
TEMP_PROP_CURVE_ACTIVE = 6,
|
||||
TEMP_PROP_CURVE_INACTIVE = 7} ;
|
||||
|
||||
@@ -108,6 +108,7 @@ 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) ;
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
#include "/EgtDev/Include/EGkPlane3d.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
|
||||
class Voronoi ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
class __declspec( novtable) ICurve : public IGeoObj
|
||||
{
|
||||
@@ -94,7 +92,6 @@ class __declspec( novtable) ICurve : public IGeoObj
|
||||
virtual bool TrimEndAtLen( double dLenTrim) = 0 ;
|
||||
virtual bool ExtendStartByLen( double dLenExt) = 0 ;
|
||||
virtual bool ExtendEndByLen( double dLenExt) = 0 ;
|
||||
virtual Voronoi* GetVoronoiObject( void) const = 0 ;
|
||||
} ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
+63
-4
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2014-2014
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkCurveAux.h Data : 23.05.14 Versione : 1.5e9
|
||||
// File : EGkCurveAux.h Data : 28.01.24 Versione : 2.6a2
|
||||
// Contenuto : Dichiarazione funzioni ausiliarie per ICurve.
|
||||
//
|
||||
//
|
||||
@@ -15,6 +15,8 @@
|
||||
|
||||
#include "/EgtDev/Include/EGkCurveComposite.h"
|
||||
|
||||
class ICurveBezier ;
|
||||
class ICurveLine ;
|
||||
|
||||
//----------------------- Macro per import/export ----------------------------
|
||||
#undef EGK_EXPORT
|
||||
@@ -44,9 +46,53 @@ struct CNurbsData
|
||||
// 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 una linea in una nuova curva di Bezier semplice
|
||||
EGK_EXPORT ICurve* CurveToBezierCurve( const ICurve* pCrv, int nDeg = 3, bool bMakeRatOrNot = true) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Trasforma una linea in una nuova curva di Bezier semplice
|
||||
EGK_EXPORT ICurveBezier* LineToBezierCurve( const ICurveLine* pLine, int nDeg = 3, bool bMakeRatOrNot = true) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Trasforma un arco in una nuova curva di Bezier semplice o composta
|
||||
EGK_EXPORT ICurve* ArcToBezierCurve( const ICurve* pArc) ;
|
||||
EGK_EXPORT ICurve* ArcToBezierCurve( const ICurve* pArc, int nDeg = 3, bool bMakeRatOrNot = true) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Trasforma una curva compo in una nuova curva di Bezier semplice o composta
|
||||
EGK_EXPORT ICurve* CompositeToBezierCurve( const ICurveComposite* pCrvCompo, int nDeg = 3, bool bMakeRatOrNot = true) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Trasforma una curva bezier in una nuova curva di Bezier semplice o composta della razionalità e grado desiderato ( minimo 3)
|
||||
EGK_EXPORT ICurve* EditBezierCurve( const ICurveBezier* pCrvBezier, int nDeg = 3, bool bMakeRatOrNot = true, double dTol = 10 * EPS_SMALL) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Approssima una bezier con una serie di bezier cubiche
|
||||
EGK_EXPORT ICurve* ApproxBezierWithCubics( const ICurveBezier* pCrvBezier, double dTol) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Approssima una bezier con una serie di bezier cubiche
|
||||
EGK_EXPORT ICurveBezier* ApproxArcCurveBezierWithSingleCubic( const ICurveBezier* pCrvBezier, const Point3d& ptCen) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Campiona una serie di punti dalla curva e li approssima con una o più curve di bezier
|
||||
EGK_EXPORT ICurve* ApproxCurveWithBezier( const ICurve*, double dTol) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Interpola un set di punti e li approssima con una o più curve di bezier cubiche
|
||||
EGK_EXPORT ICurve* InterpolatePointSetWithBezier( const PNTVECTOR& vPnt, double dTol) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Aumento il grado della curva di Bezier
|
||||
EGK_EXPORT ICurveBezier* BezierIncreaseDegree( const ICurveBezier* pCrvBezier) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Riduco il grado della curva di Bezier
|
||||
EGK_EXPORT ICurveBezier* BezierDecreaseDegree( const ICurveBezier* pCrvBezier, double dTol) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Misura l'errore di approsimazione tra la curva originale e quella modificata
|
||||
EGK_EXPORT bool CalcBezierApproxError( const ICurveBezier* pCrvOri, const ICurveBezier* pCrvNew, double& dErr, int nPoints = 20) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Trasforma una curva in una nuova curva semplice o composta senza archi (solo linee o curve di Bezier)
|
||||
@@ -80,14 +126,27 @@ EGK_EXPORT ICurve* ProjectCurveOnPlane( const ICurve& crCrv, const Plane3d& plPl
|
||||
EGK_EXPORT bool AdjustCurveSlope( ICurveComposite* pCrv, double dNini, double dNfin) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Calcolo del diagramma di Voronoi della curva, nei TempParam dei risultati la distanza
|
||||
//! Calcolo del diagramma di Voronoi della curva/e, nei TempParam dei risultati la distanza
|
||||
//! Per nBound tenere valore di default.
|
||||
EGK_EXPORT bool CalcCurveVoronoiDiagram( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, int nBound = 3) ;
|
||||
EGK_EXPORT bool CalcCurvesVoronoiDiagram( const CICURVEPVECTOR& vCrvC, ICURVEPOVECTOR& vCrvs, int nBound = 3) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Calcolo del Medial Axis della curva (sottoinsieme del diagramma di Voronoi), nei TempParam dei risultati la distanza
|
||||
//! Calcolo del Medial Axis della curva/e (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) ;
|
||||
EGK_EXPORT bool CalcCurvesMedialAxis( const CICURVEPVECTOR& vCrvC, 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) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Calcola, nel caso di curve chiuse, il valore limite di offset ( in valore assoluto) che fa sparire la curva
|
||||
EGK_EXPORT bool CalcCurveLimitOffset( const ICurve& crvC, double& dOffs) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Resetta l'oggetto voronoi associato alla curva liberandone la memoria
|
||||
EGK_EXPORT void ResetCurveVoronoi( const ICurve& crvC) ;
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "/EgtDev/Include/EGkCurve.h"
|
||||
|
||||
class ICurveArc ;
|
||||
class ICurveLine ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
class __declspec( novtable) ICurveBezier : public ICurve
|
||||
@@ -27,7 +28,9 @@ class __declspec( novtable) ICurveBezier : public ICurve
|
||||
virtual bool Init( int nDeg, bool bIsRational) = 0 ;
|
||||
virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl) = 0 ;
|
||||
virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl, double dW) = 0 ;
|
||||
virtual bool SetControlWeight( int nInd, double dW) = 0 ;
|
||||
virtual bool FromArc( const ICurveArc& crArc) = 0 ;
|
||||
virtual bool FromLine( const ICurveLine& crLine) = 0 ;
|
||||
virtual int GetDegree( void) const = 0 ;
|
||||
virtual bool IsRational( void) const = 0 ;
|
||||
virtual bool IsAPoint( void) const = 0 ;
|
||||
@@ -35,6 +38,10 @@ class __declspec( novtable) ICurveBezier : public ICurve
|
||||
virtual double GetControlWeight( int nInd, bool* pbOk = NULL) const = 0 ;
|
||||
virtual bool GetControlPolygonLength( double& dLen) const = 0 ;
|
||||
virtual int GetSingularParam( double& dPar) const = 0 ;
|
||||
virtual bool MakeRational( void) = 0 ;
|
||||
virtual bool MakeRationalStandardForm( void) = 0 ;
|
||||
virtual bool MakeNonRational( double dTol) = 0 ;
|
||||
virtual bool IsALine( void) const = 0 ;
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
@@ -70,6 +70,8 @@ class __declspec( novtable) ICurveComposite : public ICurve
|
||||
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 ;
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2020-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkDistLineLine.h Data : 10.05.24 Versione : 2.6e31
|
||||
// Contenuto : Dichiarazione della classe distanza fra elementi lineari.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 06.11.20 LM Creazione modulo.
|
||||
// 10.05.24 DS Portata in Include.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkPoint3d.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
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
class DistLineLine
|
||||
{
|
||||
public :
|
||||
EGK_EXPORT DistLineLine( const Point3d& ptSt1, const Point3d& ptEn1,
|
||||
const Point3d& ptSt2, const Point3d& ptEn2,
|
||||
bool bIsSegment1 = true, bool bIsSegment2 = true) ;
|
||||
EGK_EXPORT DistLineLine( const Point3d& ptSt1, const Vector3d& vtD1, double dLen1,
|
||||
const Point3d& ptSt2, const Vector3d& vtD2, double dLen2,
|
||||
bool bIsSegment1 = true, bool bIsSegment2 = true) ;
|
||||
|
||||
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 bool GetMinDistPoints( Point3d& ptMinDist1, Point3d& ptMinDist2) const ;
|
||||
EGK_EXPORT bool GetPositionsAtMinDistPoints( double& dPos1, double& dPos2) const ;
|
||||
|
||||
private :
|
||||
void Calculate( const Point3d& ptSt1, const Vector3d& vtD1, double dLen1,
|
||||
const Point3d& ptSt2, const Vector3d& vtD2, double dLen2,
|
||||
bool bIsSegment1, bool bIsSegment2) ;
|
||||
private:
|
||||
double m_dSqDist ;
|
||||
mutable double m_dDist ;
|
||||
double m_dPos1 ;
|
||||
double m_dPos2 ;
|
||||
Point3d m_ptMinDist1 ;
|
||||
Point3d m_ptMinDist2 ;
|
||||
} ;
|
||||
+2
-3
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2013-2014
|
||||
// EgalTech 2013-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkDistPointCurve.h Data : 02.01.14 Versione : 1.5a1
|
||||
// File : EGkDistPointCurve.h Data : 20.05.24 Versione : 2.6e5
|
||||
// Contenuto : Dichiarazione della classe distanza punto da Curva.
|
||||
//
|
||||
//
|
||||
@@ -68,7 +68,6 @@ class DistPointCurve
|
||||
EGK_EXPORT bool GetMinDistInfo( int nInd, MinDistPCInfo& aInfo) const ;
|
||||
|
||||
private :
|
||||
DistPointCurve( void) ;
|
||||
void LineCalculate( const Point3d& ptP, const ICurve& Curve, bool bIsSegment) ;
|
||||
void ArcCalculate( const Point3d& ptP, const ICurve& Curve) ;
|
||||
void CrvBezierCalculate( const Point3d& ptP, const ICurve& Curve) ;
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2013-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkDistPointLine.h Data : 20.05.24 Versione : 2.6e5
|
||||
// Contenuto : Dichiarazione della classe distanza punto da linea/segmento.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 30.12.12 DS Creazione modulo.
|
||||
// 20.05.24 DS Pubblicato in Include.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkPoint3d.h"
|
||||
#include "/EgtDev/Include/EGkCurveLine.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
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
class DistPointLine
|
||||
{
|
||||
friend class DistPointCurve ;
|
||||
|
||||
public :
|
||||
EGK_EXPORT DistPointLine( const Point3d& ptP,
|
||||
const ICurveLine& crvLine, bool bIsSegment = true) ;
|
||||
EGK_EXPORT DistPointLine( const Point3d& ptP,
|
||||
const Point3d& ptIni, const Point3d& ptFin, bool bIsSegment = true) ;
|
||||
EGK_EXPORT DistPointLine( const Point3d& ptP,
|
||||
const Point3d& ptIni, const Vector3d& vtDir, double dLen, bool bIsSegment = true) ;
|
||||
|
||||
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 (( m_dSqDist < 0) ? 0 : 1) ; }
|
||||
EGK_EXPORT bool GetMinDistPoint( Point3d& ptMinDist) const ;
|
||||
EGK_EXPORT bool GetParamAtMinDistPoint( double& dParam) const ;
|
||||
|
||||
private :
|
||||
void Calculate( const Point3d& ptP,
|
||||
const Point3d& ptIni, const Vector3d& vtDir, double dLen, bool bIsSegment) ;
|
||||
|
||||
private :
|
||||
double m_dSqDist ;
|
||||
mutable double m_dDist ;
|
||||
double m_dParam ;
|
||||
Point3d m_ptMinDist ;
|
||||
} ;
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2024-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkDistPointSurfFr.h Data : 18.07.24 Versione : 2.6g5
|
||||
// Contenuto : Dichiarazione della classe distanza Punto da FlatRegion.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 18.07.24 DS Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#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
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Calcola la distanza tra punto e Flat Region.
|
||||
// Risultati :
|
||||
// - distanza
|
||||
// - punto sulla superficie a minima distanza
|
||||
// - indici del chunk e del loop e parametro del punto di frontiera a minima distanza
|
||||
// - indicazione se il punto passato è sul bordo (PRS_ON), interno (PRS_IN) o esterno (PRS_OUT) alla regione.
|
||||
// Note :
|
||||
// - nel caso di più punti di frontiera vicini, ne viene calcolato solo uno
|
||||
// - se il punto non giace nel piano della Regione
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
enum PrSide { PRS_IN = -1, PRS_ON = 0, PRS_OUT = +1} ;
|
||||
// Corrispondono a MDS_LEFT, MDS_ON e MDS_RIGHT per giacitura punto rispetto a curva.
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
class DistPointSurfFr
|
||||
{
|
||||
public :
|
||||
EGK_EXPORT DistPointSurfFr( const Point3d& ptP, const ISurfFlatRegion& frSurf) ;
|
||||
|
||||
public :
|
||||
EGK_EXPORT bool GetDist( double& dDist) const ;
|
||||
EGK_EXPORT bool GetDistOnRegionPlane( double& dDist) const ;
|
||||
EGK_EXPORT bool GetPointAtMinDist( Point3d& ptMinDistPoint) const ;
|
||||
EGK_EXPORT bool GetParamAtMinDist( int& nMinChunk, int& nMinLoop, double& dMinPar) const ;
|
||||
EGK_EXPORT bool GetSideAtMinDist( int& nSide) const ;
|
||||
|
||||
private :
|
||||
void Calculate( const Point3d& ptP, const ISurfFlatRegion& frSurf) ;
|
||||
|
||||
private :
|
||||
double m_dDist ;
|
||||
double m_dDistOnPlane ;
|
||||
int m_nMinChunk ;
|
||||
int m_nMinLoop ;
|
||||
double m_dMinPar ;
|
||||
Point3d m_ptMinDistPoint ;
|
||||
int m_nSide ;
|
||||
} ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Verifica velocizzata
|
||||
EGK_EXPORT bool IsPointInsideSurfFr( const Point3d& ptP, const ISurfFlatRegion* pSfr, double dMinDist, bool& bInside, int& nChunk) ;
|
||||
inline bool IsPointInsideSurfFr( const Point3d& ptP, const ISurfFlatRegion* pSfr, double dMinDist, bool& bInside)
|
||||
{ int nChunk ; return IsPointInsideSurfFr( ptP, pSfr, dMinDist, bInside, nChunk) ;}
|
||||
@@ -29,7 +29,8 @@
|
||||
// - 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.
|
||||
// - indicazione se il punto di riferimento è dalla parte interna o esterna della superficie ( se chiusa ).
|
||||
// - indicazione se il punto di riferimento è a destra o sinistra della superficie ( se aperta )
|
||||
//----------------------------------------------------------------------------
|
||||
class DistPointSurfTm
|
||||
{
|
||||
@@ -47,7 +48,9 @@ class DistPointSurfTm
|
||||
EGK_EXPORT bool GetMinDistPoint( Point3d& ptMinDistPoint) const ;
|
||||
EGK_EXPORT bool GetMinDistTriaIndex( int& nMinDistTriaIndex) const ;
|
||||
EGK_EXPORT bool IsPointInside( void) const
|
||||
{ return m_bIsInside ; }
|
||||
{ return ( m_bIsInside && m_bIsSurfClosed) ; }
|
||||
EGK_EXPORT bool IsPointOnLeftSide( void) const
|
||||
{ return m_bIsInside ;}
|
||||
|
||||
private :
|
||||
void Calculate( const Point3d& ptP, const ISurfTriMesh& tmSurf) ;
|
||||
@@ -57,6 +60,7 @@ class DistPointSurfTm
|
||||
Point3d m_ptMinDistPoint ;
|
||||
int m_nMinDistTriaIndex ;
|
||||
bool m_bIsInside ;
|
||||
bool m_bIsSurfClosed ;
|
||||
} ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
+6
-2
@@ -36,8 +36,11 @@ class __declspec( novtable) IExtDimension : public IGeoObj
|
||||
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& ptP1, const Point3d& ptP2, const Point3d& ptV, 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 ;
|
||||
@@ -55,6 +58,7 @@ class __declspec( novtable) IExtDimension : public IGeoObj
|
||||
virtual double GetTextHeight( void) const = 0 ;
|
||||
virtual bool GetMidPoint( Point3d& ptMid) const = 0 ;
|
||||
virtual bool GetCenterPoint( Point3d& ptCen) const = 0 ;
|
||||
virtual const std::string& GetSubType( void) const = 0 ;
|
||||
virtual bool ApproxWithLines( double dLinTol, double dAngTolDeg, POLYLINELIST& lstPL) const = 0 ;
|
||||
} ;
|
||||
|
||||
|
||||
+12
-1
@@ -116,11 +116,22 @@ operator/( const Frame3d& frRef, const Frame3d& frDest)
|
||||
return frNew ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Restituisce il frame inverso di quello passato
|
||||
//----------------------------------------------------------------------------
|
||||
inline const Frame3d
|
||||
GetInvert( const Frame3d& frRef)
|
||||
{
|
||||
Frame3d frNew = GLOB_FRM ;
|
||||
frNew.ToLoc( frRef) ;
|
||||
return frNew ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Restituisce una copia in locale del frame passato
|
||||
//----------------------------------------------------------------------------
|
||||
inline const Frame3d
|
||||
GetToLoc ( const Frame3d& frRef, const Frame3d& frDest)
|
||||
GetToLoc( const Frame3d& frRef, const Frame3d& frDest)
|
||||
{
|
||||
Frame3d frNew = frRef ;
|
||||
frNew.ToLoc( frDest) ;
|
||||
|
||||
+3
-1
@@ -58,7 +58,8 @@ enum GdbStatus { GDB_ST_OFF = 0,
|
||||
|
||||
//----------------- Costanti marcatura oggetti del DB geometrico ---------------
|
||||
enum GdbMark { GDB_MK_OFF = 0,
|
||||
GDB_MK_ON = 1} ;
|
||||
GDB_MK_ON = 1,
|
||||
GDB_MK_ON_2 = 2} ;
|
||||
|
||||
//----------------- Costante per numero proprietà temporanee -------------------
|
||||
const int GDB_NUM_TEMP_PROP = 2 ;
|
||||
@@ -88,3 +89,4 @@ const std::string GDB_SI_DUPLIST = "!DLST" ; // Duplo Vettore Id entit
|
||||
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
|
||||
|
||||
+1
-1
@@ -80,7 +80,7 @@ CalcMark( int nObjMark, int nParentMark)
|
||||
if ( nObjMark == GDB_MK_OFF && nParentMark == GDB_MK_OFF)
|
||||
return GDB_MK_OFF ;
|
||||
|
||||
return GDB_MK_ON ;
|
||||
return ( nParentMark != GDB_MK_OFF ? nParentMark : nObjMark) ;
|
||||
}
|
||||
// ovviamente la marcatura si combina con lo stato, nel senso che un oggetto
|
||||
// non visibile non viene nemmeno marcato
|
||||
+1
-1
@@ -104,7 +104,7 @@ class __declspec( novtable) IGdbIterator
|
||||
virtual bool RevertStatus( void) = 0 ;
|
||||
virtual bool GetStatus( int& nStat) const = 0 ;
|
||||
virtual bool GetCalcStatus( int& nStat) const = 0 ;
|
||||
virtual bool SetMark( void) = 0 ;
|
||||
virtual bool SetMark( int nMark = GDB_MK_ON) = 0 ;
|
||||
virtual bool ResetMark( void) = 0 ;
|
||||
virtual bool GetMark( int& nMark) const = 0 ;
|
||||
virtual bool GetCalcMark( int& nMark) const = 0 ;
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
#include "/EgtDev/Include/EGkPoint3d.h"
|
||||
#include "/EgtDev/Include/EGkBBox3d.h"
|
||||
#include "/EgtDev/Include/EGkFrame3d.h"
|
||||
#include "/EgtDev/Include/EGkCurvePointDiffGeom.h"
|
||||
#include "/EgtDev/Include/EgtNumCollection.h"
|
||||
|
||||
@@ -52,6 +53,12 @@ typedef std::list<CrvPointDiffGeom> CPDGLIST ; // lista di CrvPointDiffGe
|
||||
typedef std::vector<Vector3d> VCT3DVECTOR ; // vettore di vettori 3d
|
||||
typedef std::list<Vector3d> VCT3DLIST ; // lista di vettori 3d
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Raccolte di Frame3d
|
||||
typedef std::vector<Frame3d> FRAME3DVECTOR ; // vettore di riferimenti 3d
|
||||
typedef std::list<Frame3d> FRAME3DLIST ; // lista di riferimenti 3d
|
||||
typedef std::vector<std::pair<Frame3d,int>> FRAME3DIVECTOR ; // vettore di riferimenti 3d e Id
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Raccolte di BBox3d
|
||||
typedef std::vector<BBox3d> BOXVECTOR ; // vettore di bounding box 3d
|
||||
|
||||
+205
-1
@@ -21,7 +21,7 @@
|
||||
bool
|
||||
SaveGeoObj( IGeoObj* pGObj, const std::string& sFile, int nFlag = GDB_SV_BIN)
|
||||
{
|
||||
// verifico validità oggetto
|
||||
// verifico validità oggetto
|
||||
if ( pGObj == nullptr || ! pGObj->IsValid())
|
||||
return false ;
|
||||
// creo GeomDB temporaneo
|
||||
@@ -39,5 +39,209 @@ 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 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
SaveGeoObj( std::vector<std::vector<IGeoObj*>> vvpGObj, std::vector<Color> vCol,
|
||||
const std::string& sFile, int nFlag = GDB_SV_BIN)
|
||||
{
|
||||
// verifico validità oggetti
|
||||
for ( int i = 0 ; i < int( vvpGObj.size()) ; ++ i) {
|
||||
for ( int j = 0 ; j < int( vvpGObj[i].size()) ; ++ j) {
|
||||
if ( vvpGObj[i][j] == nullptr || ! vvpGObj[i][j]->IsValid())
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
if ( int( vCol.size()) <= int( vvpGObj.size())) {
|
||||
for ( int i = int( vCol.size()) ; i < int( vvpGObj.size()) ; ++ i)
|
||||
vCol.push_back( BLACK) ;
|
||||
}
|
||||
else
|
||||
return false ;
|
||||
|
||||
// creo GeomDB temporaneo
|
||||
PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ;
|
||||
if ( IsNull( pGeomDB))
|
||||
return false ;
|
||||
INTVECTOR vIds ;
|
||||
int nLayId = 0 ;
|
||||
|
||||
// creo il part
|
||||
int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
|
||||
|
||||
// per ogni elemento i-esimo, creo un layer
|
||||
for ( int i = 0 ; i < int( vvpGObj.size()) ; ++i) {
|
||||
// creo il layer
|
||||
nLayId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
|
||||
pGeomDB->SetMaterial( nLayId, vCol[i]) ;
|
||||
|
||||
for ( int j = 0 ; j < int( vvpGObj.size()) ; ++ j) {
|
||||
// inserisco gli oggetti corrispondenti
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, vvpGObj[i][j]) ;
|
||||
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 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
SaveCurveCompo( ICRVCOMPOPOVECTOR& vCompo, bool bUniform, const std::string& sFile, int nFlag = GDB_SV_BIN)
|
||||
{
|
||||
// controllo validità delle curve
|
||||
std::vector<IGeoObj*> vpGObj ;
|
||||
for ( int i = 0 ; i < int( vCompo.size()) ; ++ i) {
|
||||
if ( vCompo[i] == nullptr || ! vCompo[i]->IsValid())
|
||||
return false ;
|
||||
vpGObj.emplace_back( static_cast<IGeoObj*>( vCompo[i]->Clone())) ;
|
||||
}
|
||||
// creo GeomDB temporaneo
|
||||
PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ;
|
||||
if ( IsNull( pGeomDB))
|
||||
return false ;
|
||||
INTVECTOR vIds ;
|
||||
|
||||
// se curve con colore uniforme
|
||||
if ( bUniform)
|
||||
return SaveGeoObj( vpGObj, sFile, nFlag) ;
|
||||
|
||||
// altrimenti scorro le sottocurve e le coloro in base alle temp prop
|
||||
int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
|
||||
int nLayId = 0 ;
|
||||
for ( int i = 0 ; i < int( vCompo.size()) ; ++i) {
|
||||
// inserisco l'oggetto nel GeomDB (sotto pezzo/layer)
|
||||
nLayId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
|
||||
for ( int u = 0 ; u < vCompo[i]->GetCurveCount() ; ++ u) {
|
||||
const ICurve* pCrv = vCompo[i]->GetCurve( u) ;
|
||||
if ( pCrv == nullptr)
|
||||
return false ;
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, pCrv->Clone()) ;
|
||||
pGeomDB->SetMaterial( nId, ( pCrv->GetTempProp( 0) == 1 ? RED :
|
||||
( pCrv->GetTempProp( 0)) == 0 ? BLUE : WHITE)) ;
|
||||
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 ;
|
||||
|
||||
}
|
||||
|
||||
bool SaveVoronoi( const ICRVCOMPOPOVECTOR& vCrvsCompo, const ICURVEPOVECTOR& vBisectors,
|
||||
bool bUniform, const std::string& sFile, int nFlag = GDB_SV_BIN)
|
||||
{
|
||||
// controllo validità delle curve
|
||||
std::vector<IGeoObj*> vpGObj_crv ;
|
||||
for ( int i = 0 ; i < int( vCrvsCompo.size()) ; ++ i) {
|
||||
if ( vCrvsCompo[i] == nullptr || ! vCrvsCompo[i]->IsValid())
|
||||
return false ;
|
||||
vpGObj_crv.emplace_back( static_cast<IGeoObj*>( vCrvsCompo[i]->Clone())) ;
|
||||
}
|
||||
std::vector<IGeoObj*> vpGObj_bisect ;
|
||||
for ( int i = 0 ; i < int( vBisectors.size()) ; ++ i) {
|
||||
if ( vBisectors[i] == nullptr || ! vBisectors[i]->IsValid())
|
||||
return false ;
|
||||
vpGObj_bisect.emplace_back( static_cast<IGeoObj*>( vBisectors[i]->Clone())) ;
|
||||
}
|
||||
|
||||
// creo GeomDB temporaneo
|
||||
PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ;
|
||||
if ( IsNull( pGeomDB))
|
||||
return false ;
|
||||
INTVECTOR vIds ;
|
||||
|
||||
// salvo le curve
|
||||
int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
|
||||
int nLayId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
|
||||
pGeomDB->SetName( nLayId, "Curves") ;
|
||||
for ( int i = 0 ; i < int( vpGObj_crv.size()) ; ++i) {
|
||||
// inserisco l'oggetto nel GeomDB
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, vpGObj_crv[i]->Clone()) ;
|
||||
if ( nId == GDB_ID_NULL)
|
||||
return false ;
|
||||
vIds.push_back( nId) ;
|
||||
pGeomDB->SetMaterial( nId, LIME) ;
|
||||
}
|
||||
|
||||
// salvo i bisettori
|
||||
nLayId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
|
||||
pGeomDB->SetName( nLayId, "Bisectors") ;
|
||||
for ( int i = 0 ; i < int( vpGObj_bisect.size()) ; ++i) {
|
||||
// inserisco l'oggetto nel GeomDB
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, vpGObj_bisect[i]->Clone()) ;
|
||||
if ( nId == GDB_ID_NULL)
|
||||
return false ;
|
||||
vIds.push_back( nId) ;
|
||||
if ( bUniform)
|
||||
pGeomDB->SetMaterial( nId, RED) ;
|
||||
else {
|
||||
if ( vBisectors[i]->GetTempParam( 0) < EPS_SMALL ||
|
||||
vBisectors[i]->GetTempParam( 1) < EPS_SMALL)
|
||||
pGeomDB->SetMaterial( nId, ORANGE) ;
|
||||
else
|
||||
pGeomDB->SetMaterial( nId, RED) ;
|
||||
}
|
||||
pGeomDB->SetInfo( nId, "START_PARAM", vBisectors[i]->GetTempParam( 0)) ;
|
||||
pGeomDB->SetInfo( nId, "END_PARAM", vBisectors[i]->GetTempParam( 1)) ;
|
||||
}
|
||||
|
||||
// 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 ;
|
||||
}
|
||||
+1
-1
@@ -134,7 +134,7 @@ class __declspec( novtable) IGeomDB
|
||||
virtual bool RevertStatus( int nId) = 0 ;
|
||||
virtual bool GetStatus( int nId, int& nStat) const = 0 ;
|
||||
virtual bool GetCalcStatus( int nId, int& nStat) const = 0 ;
|
||||
virtual bool SetMark( int nId) = 0 ;
|
||||
virtual bool SetMark( int nId, int nMark = GDB_MK_ON) = 0 ;
|
||||
virtual bool ResetMark( int nId) = 0 ;
|
||||
virtual bool GetMark( int nId, int& nMark) const = 0 ;
|
||||
virtual bool GetCalcMark( int nId, int& nMark) const = 0 ;
|
||||
|
||||
+3
-3
@@ -56,11 +56,11 @@ private :
|
||||
typedef std::list<ObjData> ObjList ;
|
||||
typedef std::vector<ObjData*> PtrObjVector ;
|
||||
typedef std::unordered_map<int,ObjData*> IntPObjUmap ;
|
||||
typedef std::list<HashGrid1d*> GridList ;
|
||||
|
||||
private :
|
||||
typedef std::list<HashGrid1d*> GridList ; // Tipo per lista di hash grid
|
||||
|
||||
private :
|
||||
HashGrids1d( const HashGrids1d&) = delete ;
|
||||
HashGrids1d& operator=( const HashGrids1d&) = delete ;
|
||||
void addGrid( ObjData& obj) ;
|
||||
void addList( ObjData& obj) ;
|
||||
|
||||
|
||||
+3
-3
@@ -56,11 +56,11 @@ class HashGrids2d
|
||||
typedef std::list<ObjData> ObjList ;
|
||||
typedef std::vector<ObjData*> PtrObjVector ;
|
||||
typedef std::unordered_map<int,ObjData*> IntPObjUmap ;
|
||||
typedef std::list<HashGrid2d*> GridList ;
|
||||
|
||||
private :
|
||||
typedef std::list<HashGrid2d*> GridList ; // Tipo per lista di hash grid
|
||||
|
||||
private :
|
||||
HashGrids2d( const HashGrids2d&) = delete ;
|
||||
HashGrids2d& operator=( const HashGrids2d&) = delete ;
|
||||
void addGrid( ObjData& obj) ;
|
||||
void addList( ObjData& obj) ;
|
||||
|
||||
|
||||
+3
-3
@@ -56,11 +56,11 @@ class HashGrids3d
|
||||
typedef std::list<ObjData> ObjList ;
|
||||
typedef std::vector<ObjData*> PtrObjVector ;
|
||||
typedef std::unordered_map<int,ObjData*> IntPObjUmap ;
|
||||
typedef std::list<HashGrid3d*> GridList ;
|
||||
|
||||
private :
|
||||
typedef std::list<HashGrid3d*> GridList ; // Tipo per lista di hash grid
|
||||
|
||||
private :
|
||||
HashGrids3d( const HashGrids3d&) = delete ;
|
||||
HashGrids3d& operator=( const HashGrids3d&) = delete ;
|
||||
void addGrid( ObjData& obj) ;
|
||||
void addList( ObjData& obj) ;
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// 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) ;
|
||||
@@ -0,0 +1,79 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkIntersLineSurfBez.h Data : 06.02.24 Versione : 2.6b1
|
||||
// Contenuto : Dichiarazione della classe intersezione Linea/SurfTriMesh.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 06.02.24 DB Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkSurfTriMesh.h"
|
||||
#include "/EgtDev/Include/EGkIntersLineTria.h"
|
||||
#include "/EgtDev/Include/EGkHashGrids2d.h"
|
||||
#include "/EgtDev/Include/EGkSurfBezier.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 - superficie trimesh
|
||||
struct IntLinSbzInfo {
|
||||
int nILTT ; //!< tipo di intersezione linea-triangolo
|
||||
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)
|
||||
Point3d ptUV ; //!< coordinate del punto nello spazio parametrico
|
||||
Point3d ptUV2 ; //!< coordinate del secondo punto nello spazio parametrico
|
||||
// costruttori
|
||||
IntLinSbzInfo( void) : nILTT( ILTT_NO), dU( 0), dU2( 0), nT(0), dCosDN(0), ptI(), ptI2(), ptUV(), ptUV2(){}
|
||||
IntLinSbzInfo( int nIL, double dUU, int nTT, double dCos, const Point3d& ptP, const Point3d ptSP)
|
||||
: nILTT( nIL), dU( dUU), dU2( 0), nT( nTT), dCosDN( dCos), ptI( ptP), ptI2(), ptUV( ptSP), ptUV2() {}
|
||||
IntLinSbzInfo( int nIL, double dUU, double dUU2, int nTT, double dCos, const Point3d& ptP, const Point3d& ptP2, const Point3d& ptSP, const Point3d& ptSP2)
|
||||
: nILTT( nIL), dU( dUU), dU2( dUU2), nT( nTT), dCosDN( dCos), ptI( ptP), ptI2( ptP2), ptUV( ptSP), ptUV2( ptSP2) {}
|
||||
} ;
|
||||
//! vettore di IntLinSbzInfo
|
||||
typedef std::vector<IntLinSbzInfo> ILSBIVECTOR ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Costanti tipo intersezione Linea SurfTriMesh dopo filtraggio
|
||||
enum LSBiType { LSBT_NONE = 0,
|
||||
LSBT_IN = 1,
|
||||
LSBT_OUT = 2,
|
||||
LSBT_TG_INI = 3,
|
||||
LSBT_TG_FIN = 4,
|
||||
LSBT_TOUCH = 5} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool IntersLineSurfBz( const Point3d& ptL, const Vector3d& vtL, double dLen, const ISurfBezier* pSBz,
|
||||
ILSBIVECTOR& vInfo, bool bFinite = true) ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
class IntersParLinesSurfBz
|
||||
{
|
||||
public :
|
||||
EGK_EXPORT IntersParLinesSurfBz( const Frame3d& frLines, const ISurfBezier& SBz) ;
|
||||
EGK_EXPORT bool GetInters( const Point3d& ptL, double dLen, ILSBIVECTOR& vInfo, bool bFinite = true) const ;
|
||||
|
||||
private :
|
||||
bool m_bOk ;
|
||||
const Frame3d m_frLines ;
|
||||
const ISurfBezier* m_pSBz ;
|
||||
HashGrids2d m_HGrids ;
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool FilterLineSurfBzInters( const ILSBIVECTOR& vInfo, INTDBLVECTOR& vInters) ;
|
||||
+15
-3
@@ -29,14 +29,14 @@
|
||||
//! dati di intersezione linea - superficie trimesh
|
||||
struct IntLinStmInfo {
|
||||
int nILTT ; //!< tipo di intersezione linea-triangolo
|
||||
double dU ; //!< parametro sulla linea
|
||||
double dU2 ; //!< secondo parametro sulla linea
|
||||
double dU ; //!< distanza sulla linea
|
||||
double dU2 ; //!< seconda distanza 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,6 +45,15 @@ 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) ;
|
||||
@@ -62,3 +71,6 @@ class IntersParLinesSurfTm
|
||||
const ISurfTriMesh* m_pSTm ;
|
||||
HashGrids2d m_HGrids ;
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
EGK_EXPORT bool FilterLineSurfTmInters( const ILSIVECTOR& vInfo, INTDBLVECTOR& vInters) ;
|
||||
|
||||
+6
-6
@@ -23,12 +23,6 @@
|
||||
#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
|
||||
@@ -37,3 +31,9 @@ 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) ;
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// 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) ;
|
||||
@@ -0,0 +1,27 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// 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) ;
|
||||
+62
-5
@@ -1,13 +1,14 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2015-2015
|
||||
// EgalTech 2015-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkLuaAux.h Data : 21.03.15 Versione : 1.6c6
|
||||
// File : EGkLuaAux.h Data : 08.05.24 Versione : 2.6e2
|
||||
// Contenuto : Funzioni per gestione parametri geometrici con LUA.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 21.03.15 DS Creazione modulo.
|
||||
//
|
||||
// 14.04.24 DS Aggiunta gestione Quaternion.
|
||||
// 08.05.24 DS Aggiunta LuaSetParam per VCT3DVECTOR.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -17,6 +18,7 @@
|
||||
#include "/EgtDev/Include/EGkPoint3d.h"
|
||||
#include "/EgtDev/Include/EGkFrame3d.h"
|
||||
#include "/EgtDev/Include/EGkBBox3d.h"
|
||||
#include "/EgtDev/Include/EGkQuaternion.h"
|
||||
#include "/EgtDev/Include/EGkColor.h"
|
||||
#include "/EgtDev/Include/EGkGeoCollection.h"
|
||||
#include "/EgtDev/Include/EGkSelection.h"
|
||||
@@ -25,12 +27,16 @@
|
||||
//----------------------------------------------------------------------------
|
||||
inline bool
|
||||
LuaGetParam( lua_State* L, int nInd, Vector3d& vtPar)
|
||||
{ return LuaGetParam( L, nInd, vtPar.v) ; }
|
||||
{
|
||||
return LuaGetParam( L, nInd, vtPar.v) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
inline bool
|
||||
LuaGetParam( lua_State* L, int nInd, Point3d& ptPar)
|
||||
{ return LuaGetParam( L, nInd, ptPar.v) ; }
|
||||
{
|
||||
return LuaGetParam( L, nInd, ptPar.v) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
inline bool
|
||||
@@ -114,6 +120,13 @@ LuaGetParam( lua_State* L, int nInd, BBox3d& b3Par)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
inline bool
|
||||
LuaGetParam( lua_State* L, int nInd, Quaternion& qtPar)
|
||||
{
|
||||
return LuaGetParam( L, nInd, qtPar.v) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
inline bool
|
||||
LuaGetParam( lua_State* L, int nInd, Color& colPar)
|
||||
@@ -264,6 +277,33 @@ LuaSetParam( lua_State* L, const Vector3d& vtPar)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
inline bool
|
||||
LuaSetParam( lua_State* L, const VCT3DVECTOR& vPar)
|
||||
{
|
||||
try {
|
||||
// recupero dimensione vettore
|
||||
int nDim = int( vPar.size()) ;
|
||||
// creo tavola principale
|
||||
lua_createtable( L, nDim, 0) ;
|
||||
// creo e inserisco tavola per ogni componente
|
||||
for ( int i = 1 ; i <= nDim ; ++ i) {
|
||||
// creo tavola componente
|
||||
lua_createtable( L, 3, 0) ;
|
||||
for ( int j = 1 ; j <= 3 ; ++ j) {
|
||||
lua_pushnumber( L, vPar[i-1].v[j-1]) ;
|
||||
lua_rawseti( L, -2, j) ;
|
||||
}
|
||||
// la metto nel vettore
|
||||
lua_rawseti( L, -2, i) ;
|
||||
}
|
||||
}
|
||||
catch( ...) {
|
||||
return false ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
inline bool
|
||||
LuaSetParam( lua_State* L, const Point3d& ptPar)
|
||||
@@ -369,6 +409,23 @@ LuaSetParam( lua_State* L, const BBox3d& b3Par)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
inline bool
|
||||
LuaSetParam( lua_State* L, const Quaternion& qtPar)
|
||||
{
|
||||
try {
|
||||
lua_createtable( L, 4, 0) ;
|
||||
for ( int i = 1 ; i <= 4 ; ++ i) {
|
||||
lua_pushnumber( L, qtPar.v[i-1]) ;
|
||||
lua_rawseti( L, -2, i) ;
|
||||
}
|
||||
}
|
||||
catch( ...) {
|
||||
return false ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
inline bool
|
||||
LuaSetParam( lua_State* L, const Color& colPar)
|
||||
|
||||
+30
-3
@@ -323,7 +323,16 @@ DirDist( const Point3d& ptP1, const Point3d& ptP2, Vector3d& vtDir, double& dDis
|
||||
inline bool
|
||||
AreSamePointEpsilon( const Point3d& ptP1, const Point3d& ptP2, double dToler)
|
||||
{
|
||||
return ( SqDist( ptP1, ptP2) < ( dToler * dToler)) ;
|
||||
double dX = ptP1.x - ptP2.x ;
|
||||
if ( abs( dX) > dToler)
|
||||
return false ;
|
||||
double dY = ptP1.y - ptP2.y ;
|
||||
if ( abs( dY) > dToler)
|
||||
return false ;
|
||||
double dZ = ptP1.z - ptP2.z ;
|
||||
if ( abs( dZ) > dToler)
|
||||
return false ;
|
||||
return ( ( dX * dX + dY * dY + dZ * dZ) < ( dToler * dToler)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -341,7 +350,16 @@ AreSamePointXYEpsilon( const Point3d& ptP1, const Point3d& ptP2, double dToler)
|
||||
inline bool
|
||||
AreSamePointApprox( const Point3d& ptP1, const Point3d& ptP2)
|
||||
{
|
||||
return ( SqDist( ptP1, ptP2) < SQ_EPS_SMALL) ;
|
||||
double dX = ptP1.x - ptP2.x ;
|
||||
if ( abs( dX) > EPS_SMALL)
|
||||
return false ;
|
||||
double dY = ptP1.y - ptP2.y ;
|
||||
if ( abs( dY) > EPS_SMALL)
|
||||
return false ;
|
||||
double dZ = ptP1.z - ptP2.z ;
|
||||
if ( abs( dZ) > EPS_SMALL)
|
||||
return false ;
|
||||
return ( ( dX * dX + dY * dY + dZ * dZ) < SQ_EPS_SMALL) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -359,7 +377,16 @@ AreSamePointXYApprox( const Point3d& ptP1, const Point3d& ptP2)
|
||||
inline bool
|
||||
AreSamePointExact( const Point3d& ptP1, const Point3d& ptP2)
|
||||
{
|
||||
return ( SqDist( ptP1, ptP2) < SQ_EPS_ZERO) ;
|
||||
double dX = ptP1.x - ptP2.x ;
|
||||
if ( abs( dX) > EPS_ZERO)
|
||||
return false ;
|
||||
double dY = ptP1.y - ptP2.y ;
|
||||
if ( abs( dY) > EPS_ZERO)
|
||||
return false ;
|
||||
double dZ = ptP1.z - ptP2.z ;
|
||||
if ( abs( dZ) > EPS_ZERO)
|
||||
return false ;
|
||||
return ( ( dX * dX + dY * dY + dZ * dZ) < SQ_EPS_ZERO) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2024-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkProjectCurveSurfTm.h Data : 07.05.24 Versione : 2.6e3
|
||||
// Contenuto : Dichiarazione funzioni proiezione curve su superficie Bezier.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 07.05.24 DB Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkGeoPoint3d.h"
|
||||
#include "/EgtDev/Include/EGkCurve.h"
|
||||
#include "/EgtDev/Include/EGkSurfBezier.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
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Proiezione di una curva su una superficie TriMesh lungo la direzione data.
|
||||
EGK_EXPORT bool ProjectCurveOnSurfBez( const ICurve& crCrv, const ISurfBezier& surfBez, const Vector3d& vtDir,
|
||||
double dLinTol, double dMaxSegmLen, PNT5AXVECTOR& vPt5ax) ;
|
||||
EGK_EXPORT bool ProjectCurveOnSurfBez( const ICurve& crCrv, const ISurfBezier& surfBez, const IGeoPoint3d& gpRef,
|
||||
double dLinTol, double dMaxSegmLen, PNT5AXVECTOR& vPt5ax) ;
|
||||
EGK_EXPORT bool ProjectCurveOnSurfBez( const ICurve& crCrv, const ISurfBezier& surfBez, const ICurve& crRef,
|
||||
double dLinTol, double dMaxSegmLen, PNT5AXVECTOR& vPt5ax) ;
|
||||
EGK_EXPORT bool ProjectCurveOnSurfBez( const ICurve& crCrv, const ISurfBezier& surfBez, const ISurfTriMesh& tmRef,
|
||||
double dLinTol, double dMaxSegmLen, PNT5AXVECTOR& vPt5ax) ;
|
||||
+14
-4
@@ -13,6 +13,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkGeoPoint3d.h"
|
||||
#include "/EgtDev/Include/EGkCurve.h"
|
||||
#include "/EgtDev/Include/EGkSurfTriMesh.h"
|
||||
|
||||
@@ -29,15 +30,24 @@
|
||||
struct Point5ax {
|
||||
Point3d ptP ;
|
||||
Vector3d vtDir ;
|
||||
Vector3d vtDir2 ;
|
||||
double dPar ;
|
||||
int nFlag ;
|
||||
Point5ax( void) : ptP(), vtDir(), dPar(), nFlag() {} ;
|
||||
Point5ax( void) : ptP(), vtDir(), vtDir2(), dPar(), nFlag() {} ;
|
||||
Point5ax( const Point3d& ptBase, const Vector3d& vtTool, double dU, int nData)
|
||||
: ptP( ptBase), vtDir( vtTool), dPar( dU), nFlag( nData) {} ;
|
||||
: ptP( ptBase), vtDir( vtTool), vtDir2(), dPar( dU), nFlag( nData) {} ;
|
||||
Point5ax( const Point3d& ptBase, const Vector3d& vtTool, const Vector3d& vtTool2, double dU, int nData)
|
||||
: ptP( ptBase), vtDir( vtTool), vtDir2( vtTool2), 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,
|
||||
PNT5AXVECTOR& vPt5ax) ;
|
||||
EGK_EXPORT bool ProjectCurveOnSurfTm( const ICurve& crCrv, const ISurfTriMesh& tmSurf, const Vector3d& vtDir,
|
||||
double dLinTol, double dMaxSegmLen, PNT5AXVECTOR& vPt5ax) ;
|
||||
EGK_EXPORT bool ProjectCurveOnSurfTm( const ICurve& crCrv, const ISurfTriMesh& tmSurf, const IGeoPoint3d& gpRef,
|
||||
double dLinTol, double dMaxSegmLen, PNT5AXVECTOR& vPt5ax) ;
|
||||
EGK_EXPORT bool ProjectCurveOnSurfTm( const ICurve& crCrv, const ISurfTriMesh& tmSurf, const ICurve& crRef,
|
||||
double dLinTol, double dMaxSegmLen, PNT5AXVECTOR& vPt5ax) ;
|
||||
EGK_EXPORT bool ProjectCurveOnSurfTm( const ICurve& crCrv, const ISurfTriMesh& tmSurf, const ISurfTriMesh& tmRef,
|
||||
double dLinTol, double dMaxSegmLen, PNT5AXVECTOR& vPt5ax) ;
|
||||
|
||||
+174
@@ -0,0 +1,174 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2024-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkQuaternion.h Data : 13.04.243 Versione : 2.6d4
|
||||
// Contenuto : Dichiarazione della classe Quaternion.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 31.12.13 DS Creazione modulo.
|
||||
//
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkFrame3d.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
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
class EGK_EXPORT Quaternion
|
||||
{
|
||||
public :
|
||||
Quaternion( double dW = 0, double dX = 0, double dY = 0, double dZ = 0) : w( dW), x( dX), y( dY), z( dZ) {}
|
||||
|
||||
public :
|
||||
bool IsValid( void) const
|
||||
{ return ( std::isfinite( w) && std::isfinite( x) && std::isfinite( y) && std::isfinite( z)) ; }
|
||||
bool IsSmall( void) const
|
||||
{ return ( ( w * w + x * x + y * y + z * z) < SQ_EPS_SMALL) ; }
|
||||
bool IsZero( void) const
|
||||
{ return ( ( w * w + x * x + y * y + z * z) < SQ_EPS_ZERO) ; }
|
||||
bool IsUnit( void) const
|
||||
{ return ( abs( w - 1) < EPS_ZERO && ( x * x + y * y + z * z) < SQ_EPS_ZERO) ; }
|
||||
double SqLen( void) const
|
||||
{ return ( w * w + x * x + y * y + z * z) ; }
|
||||
double Len( void) const ;
|
||||
bool Normalize( double dEps = EPS_SMALL) ;
|
||||
bool IsNormalized( void) const
|
||||
{ return ( abs( 1.0 - ( w * w + x * x + y * y + z * z)) < ( 2 * EPS_ZERO)) ; }
|
||||
Quaternion& operator +=( const Quaternion& qtQ)
|
||||
{ w += qtQ.w ; x += qtQ.x ; y += qtQ.y ; z += qtQ.z ; return *this ; }
|
||||
Quaternion& operator -=( const Quaternion& qtQ)
|
||||
{ w -= qtQ.w ; x -= qtQ.x ; y -= qtQ.y ; z -= qtQ.z ; return *this ; }
|
||||
Quaternion& operator *=( double dMul)
|
||||
{ w *= dMul ; x *= dMul ; y *= dMul ; z *= dMul ; return *this ; }
|
||||
Quaternion& operator /=( double dDiv)
|
||||
{ double dMul = 1 / dDiv ; w *= dMul ; x *= dMul ; y *= dMul ; z *= dMul ; return *this ; }
|
||||
|
||||
public :
|
||||
union {
|
||||
struct {
|
||||
double w ;
|
||||
double x ;
|
||||
double y ;
|
||||
double z ;
|
||||
} ;
|
||||
double v[4] ;
|
||||
} ;
|
||||
} ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Quaternioni notevoli
|
||||
//----------------------------------------------------------------------------
|
||||
// Quaternione non valido
|
||||
const Quaternion Q_INVALID( NAN, NAN, NAN, NAN) ;
|
||||
// Quaternione unità
|
||||
const Quaternion Q_UNIT( 1, 0, 0, 0) ;
|
||||
// Quaternione nullo
|
||||
const Quaternion Q_NULL( 0, 0, 0, 0) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Definizione da rotazione definita con asse e angolo e inverso
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT Quaternion FromAxisAngle( const Vector3d& vtAx, double dAngDeg) ;
|
||||
EGK_EXPORT bool ToAxisAngle( const Quaternion& qtQ, Vector3d& vtAx, double& dAngDeg) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Definizione da parte rotazione di un sistema di riferimento e inverso
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT Quaternion FromFrame( const Frame3d& frRef) ;
|
||||
EGK_EXPORT bool ToFrame( const Quaternion& qtQ, Frame3d& frRef) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Coniugato di un quaternione
|
||||
//----------------------------------------------------------------------------
|
||||
inline const Quaternion
|
||||
Conjugate( const Quaternion& qtQ)
|
||||
{
|
||||
return ( Quaternion( qtQ.w, -qtQ.x, -qtQ.y, -qtQ.z)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Opposto di un quaternione
|
||||
//----------------------------------------------------------------------------
|
||||
inline const Quaternion
|
||||
operator-( const Quaternion& qtQ)
|
||||
{
|
||||
return ( Quaternion( -qtQ.w, - qtQ.x, - qtQ.y, - qtQ.z)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Somma di due quaternioni
|
||||
//----------------------------------------------------------------------------
|
||||
inline const Quaternion
|
||||
operator+( const Quaternion& qtQ1, const Quaternion& qtQ2)
|
||||
{
|
||||
return ( Quaternion( qtQ1.w + qtQ2.w, qtQ1.x + qtQ2.x, qtQ1.y + qtQ2.y, qtQ1.z + qtQ2.z)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Sottrazione di due quaternioni
|
||||
//----------------------------------------------------------------------------
|
||||
inline const Quaternion
|
||||
operator-( const Quaternion& qtQ1, const Quaternion& qtQ2)
|
||||
{
|
||||
return ( Quaternion( qtQ1.w - qtQ2.w, qtQ1.x - qtQ2.x, qtQ1.y - qtQ2.y, qtQ1.z - qtQ2.z)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Prodotto di un quaternione con uno scalare
|
||||
//----------------------------------------------------------------------------
|
||||
inline const Quaternion
|
||||
operator*( const Quaternion& qtQ, double dMul)
|
||||
{
|
||||
return ( Quaternion( qtQ.w * dMul, qtQ.x * dMul, qtQ.y * dMul, qtQ.z * dMul)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Prodotto di uno scalare con un quaternione
|
||||
//----------------------------------------------------------------------------
|
||||
inline const Quaternion
|
||||
operator*( double dMul, const Quaternion& qtQ)
|
||||
{
|
||||
return ( Quaternion( qtQ.w * dMul, qtQ.x * dMul, qtQ.y * dMul, qtQ.z * dMul)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Divisione con uno scalare
|
||||
//----------------------------------------------------------------------------
|
||||
inline const Quaternion
|
||||
operator/( const Quaternion& qtQ, double dDiv)
|
||||
{
|
||||
double dMul = 1 / dDiv ;
|
||||
return ( Quaternion( qtQ.w * dMul, qtQ.x * dMul, qtQ.y * dMul, qtQ.z * dMul)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Prodotto scalare due quaternioni
|
||||
//----------------------------------------------------------------------------
|
||||
inline double
|
||||
Scalar( const Quaternion& qtQ1, const Quaternion& qtQ2)
|
||||
{
|
||||
return ( qtQ1.w * qtQ2.w + qtQ1.x * qtQ2.x + qtQ2.y * qtQ2.y + qtQ1.z * qtQ2.z) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Prodotto di due quaternioni
|
||||
//----------------------------------------------------------------------------
|
||||
inline const Quaternion
|
||||
operator*( const Quaternion& qtQ1, const Quaternion& qtQ2)
|
||||
{
|
||||
return ( Quaternion( qtQ1.w * qtQ2.w - qtQ1.x * qtQ2.x - qtQ1.y * qtQ2.y - qtQ1.z * qtQ2.z,
|
||||
qtQ1.w * qtQ2.x + qtQ1.x * qtQ2.w + qtQ1.y * qtQ2.z - qtQ1.z * qtQ2.y,
|
||||
qtQ1.w * qtQ2.y + qtQ1.y * qtQ2.w + qtQ1.z * qtQ2.x - qtQ1.x * qtQ2.z,
|
||||
qtQ1.w * qtQ2.z + qtQ1.z * qtQ2.w + qtQ1.x * qtQ2.y - qtQ1.y * qtQ2.x)) ;
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2024-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkRotationMinimizingFrame.h Data : 05.04.24 Versione : 2.6d1
|
||||
// Contenuto : Dichiarazione della classe RotationMinimizingFrame.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 05.04.24 RE Creazione modulo.
|
||||
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkCurve.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
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
class EGK_EXPORT RotationMinimizingFrame
|
||||
{
|
||||
public :
|
||||
RotationMinimizingFrame( void)
|
||||
: m_pCrv( nullptr), m_Frame0() {}
|
||||
~RotationMinimizingFrame( void)
|
||||
{ Clear() ; }
|
||||
bool Set( const ICurve* pCrv, const Frame3d& fr_Start) ;
|
||||
|
||||
public :
|
||||
bool GetFramesByStep( double dStep, bool bUniform, FRAME3DVECTOR& vRMFrames) ;
|
||||
bool GetFramesBySplit( int nIntervals, FRAME3DVECTOR& vRMFrames) ;
|
||||
bool GetFramesByTolerance( double dTol, FRAME3DVECTOR& vRMFrames) ;
|
||||
|
||||
private :
|
||||
bool Clear( void) ;
|
||||
bool IsValid( void) ;
|
||||
bool GetFrameAtParam( const Frame3d& frAct, const double dParNext, Frame3d& frNext) ;
|
||||
|
||||
private :
|
||||
ICurve* m_pCrv ; // curva per il calcolo del rotation Xplane frame
|
||||
Frame3d m_Frame0 ; // frame iniziale della curva
|
||||
} ;
|
||||
@@ -0,0 +1,51 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2024-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkRotationXplaneFrame.h Data : 05.04.24 Versione : 2.6d1
|
||||
// Contenuto : Dichiarazione della classe RotationXplaneFrame.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 05.04.24 DS Creazione modulo.
|
||||
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkCurve.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
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
class EGK_EXPORT RotationXplaneFrame
|
||||
{
|
||||
public :
|
||||
RotationXplaneFrame( void)
|
||||
: m_pCrv( nullptr), m_vtNorm(), m_vtNearX() {}
|
||||
~RotationXplaneFrame( void)
|
||||
{ Clear() ; }
|
||||
bool Set( const ICurve* pCrv, const Vector3d& vtNorm, const Vector3d& vtNearX = V_NULL) ;
|
||||
|
||||
public :
|
||||
bool GetFramesByStep( double dStep, bool bUniform, FRAME3DVECTOR& vRXFrames) ;
|
||||
bool GetFramesBySplit( int nIntervals, FRAME3DVECTOR& vRXFrames) ;
|
||||
bool GetFramesByTolerance( double dTol, FRAME3DVECTOR& vRXFrames) ;
|
||||
|
||||
private :
|
||||
bool Clear( void) ;
|
||||
bool IsValid( void) ;
|
||||
bool GetFrameAtParam( const Frame3d& frAct, const double dParNext, Frame3d& frNext) ;
|
||||
|
||||
private :
|
||||
ICurve* m_pCrv ; // curva per il calcolo del rotation Xplane frame
|
||||
Vector3d m_vtNorm ; // vettore normale al piano in cui deve sempre giacere l'asse X
|
||||
Vector3d m_vtNearX ; // vettore a cui deve essere il più vicino possibile la direzione X iniziale
|
||||
} ;
|
||||
@@ -0,0 +1,49 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2024-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkSbzFromCurves.h Data : 07.05.24 Versione : 2.6d2
|
||||
// Contenuto : Prototipi funzioni di creazione TriMesh a partire da curve.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 07.05.24 DB Creazione modulo.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkCurve.h"
|
||||
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
|
||||
#include "/EgtDev/Include/EGkSurfTriMesh.h"
|
||||
#include "/EgtDev/Include/EGkSurfBezier.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
|
||||
|
||||
////----------------------------------------------------------------------------
|
||||
//enum RS_CAP { RSCAP_NONE = 0, RSCAP_FLAT = 1, RSCAP_ROUND = 2, RSCAP_BEVEL = 3} ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT ISurfBezier* GetSurfBezierByFlatContour( const ICurve* pCurve, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfBezier* GetSurfBezierByRegion( const CICURVEPVECTOR& vpCurve, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfBezier* GetSurfBezierByExtrusion( const ICurve* pCurve, const Vector3d& vtExtr,
|
||||
bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ;
|
||||
//EGK_EXPORT ISurfBezier* GetSurfBezierByRegionExtrusion( const CICURVEPVECTOR& vpCurve, const Vector3d& vtExtr,
|
||||
// double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfBezier* GetSurfBezierByRevolve( const ICurve* pCurve, const Point3d& ptAx,
|
||||
const Vector3d& vtAx, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfBezier* GetSurfBezierByScrewing( const ICurve* pCurve, const Point3d& ptAx, const Vector3d& vtAx,
|
||||
double dAngRotDeg, double dMove, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ;
|
||||
//EGK_EXPORT ISurfBezier* GetSurfBezierRectSwept( double dDimH, double dDimV, double dBevelH, double dBevelV,
|
||||
// const ICurve* pGuide, int nCapType, double dLinTol = 10 * EPS_SMALL) ;
|
||||
//EGK_EXPORT ISurfBezier* GetSurfBezierTransSwept( const ICurve* pSect, const ICurve* pGuide, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfBezier* GetSurfBezierRuled( const Point3d& ptP, const ICurve* pCurve, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfBezier* GetSurfBezierRuled( const ICurve* pCurve1, const ICurve* pCurve2, int nType, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfBezier* GetSurfBezierSkinned( const CICURVEPVECTOR& vCrv, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfBezier* GetSurfBezierSweptInPlane( const ICurve* pSect, const ICurve* pGuide, const Vector3d& vtNorm, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfBezier* GetSurfBezierSwept3d( const ICurve* pSect, const ICurve* pGuide, const Vector3d& vtNorm, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ;
|
||||
@@ -0,0 +1,27 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkSbzStandard.h Data : 14.02.24 Versione : 2.6b2
|
||||
// Contenuto : Dichiarazione funzioni per creazione superfici Sbz
|
||||
// standard : Box, Pyramid, Cylinder, Sphere, Cone.
|
||||
//
|
||||
//
|
||||
// Modifiche : 14.02.24 DB Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkSurfBezier.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 ISurfBezier* GetSurfBezierSphere( const Point3d& ptCenter, double dR) ;
|
||||
@@ -35,6 +35,8 @@ EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionFromFatCurve( ICurve* pCrv, double
|
||||
EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionFromTriangle( const Triangle3d& Tria) ;
|
||||
EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionFromPolyLine( const PolyLine& ContourPolyLine) ;
|
||||
EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionFromPolyLineVector( const POLYLINEVECTOR& vContoursPolyLineVec) ;
|
||||
EGK_EXPORT bool CalcRegionPolyLines( const POLYLINEVECTOR& vPL, Vector3d& vtN, INTMATRIX& vnPLIndMat, BOOLVECTOR& vbInvert) ; // la funzione restituisce una matrice con la struttura dei chunk e un vettore che indica se invertire le polyline
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
class SurfFlatRegionByContours
|
||||
|
||||
+11
-6
@@ -1,19 +1,20 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2015-2015
|
||||
// EgalTech 2015-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkStmFromCurves.h Data : 01.02.15 Versione : 1.6b1
|
||||
// Contenuto : Dichiarazione della classe StmFromTriangleSoup.
|
||||
// File : EGkStmFromCurves.h Data : 27.02.24 Versione : 2.6d1
|
||||
// Contenuto : Prototipi funzioni di creazione TriMesh a partire da curve.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 19.05.14 DS Creazione modulo.
|
||||
//
|
||||
// 27.02.24 DS Aggiunta GetSurfTriMeshTransSwept.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkCurve.h"
|
||||
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
|
||||
#include "/EgtDev/Include/EGkSurfTriMesh.h"
|
||||
|
||||
//----------------------- Macro per import/export ----------------------------
|
||||
@@ -39,7 +40,11 @@ EGK_EXPORT ISurfTriMesh* GetSurfTriMeshByRevolve( const ICurve* pCurve, const Po
|
||||
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) ;
|
||||
EGK_EXPORT ISurfTriMesh* GetSurfTriMeshSwept( const ICurve* pSect, const ICurve* pGuide, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ;
|
||||
const ICurve* pGuide, int nCapType, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfTriMesh* GetSurfTriMeshSwept( const ICurve* pSect, const ICurve* pGuide, const Vector3d& vtAx,
|
||||
bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfTriMesh* GetSurfTriMeshSwept( const ISurfFlatRegion* pSfrSect, const ICurve* pGuide, const Vector3d& vtAx,
|
||||
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) ;
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
#include "/EgtDev/Include/EGkCurveComposite.h"
|
||||
#include "/EgtDev/Include/EGkSurf.h"
|
||||
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
|
||||
#include "/EgtDev/Include/EGkGeoCollection.h"
|
||||
|
||||
|
||||
@@ -59,3 +60,8 @@ struct SNurbsSurfData
|
||||
//! 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) ;
|
||||
//! Per rendere uniforme lo spazio parametrico passando da Nurbs a MultiBezier
|
||||
EGK_EXPORT bool MakeUniform( ISurfFlatRegion*& pSfr, bool& bRescaled, const DBLVECTOR& vU0, const DBLVECTOR& vV0,
|
||||
int nDegU, int nDegV, double dScaleU, double dScaleV, bool bRetry) ;
|
||||
//! Per identificare su che edge è il punto
|
||||
EGK_EXPORT bool OnWhichEdge( double u0, double u1, double v0, double v1, const Point3d& ptToAssign, int& nEdge) ;
|
||||
|
||||
+34
-4
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2020-2020
|
||||
// EgalTech 2020-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkSurfBezier.h Data : 22.03.20 Versione : 2.2c3
|
||||
// File : EGkSurfBezier.h Data : 10.04.24 Versione : 2.6d2
|
||||
// Contenuto : Dichiarazione della interfaccia ISurfBezier.
|
||||
//
|
||||
//
|
||||
@@ -14,6 +14,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkSurf.h"
|
||||
#include "/EgtDev/Include/EGkCurveComposite.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
|
||||
class PolyLine ;
|
||||
@@ -27,7 +28,16 @@ class __declspec( novtable) ISurfBezier : public ISurf
|
||||
public :
|
||||
enum Side { FROM_MINUS = -1, // da valori inferiori del parametro
|
||||
FROM_PLUS = 1} ; // da valori superiori del parametro
|
||||
public : // IGeoObj
|
||||
public :
|
||||
enum RuledType { RLT_B_ISOPAR = 0, // con parametrizzazione simile tra le due curve
|
||||
RLT_B_MINDIST = 1, // con distanza minima tra le due curve, usando start e end delle curve presenti
|
||||
RLT_B_MINDIST_PLUS = 2, // con distanza minima tra le due curve, aggiungendo punti lungo le curve dove necessario
|
||||
RLT_B_LENPAR = 3} ; // aggiungo punti alla curve in modo da matchare meglio le sottocurve, inoltre parametrizzo le curve in base alla lunghezza e non al numero di curve
|
||||
enum Is_Planar { NOT_CALCULATED = -1,
|
||||
NOT_PLANAR_SURF = 0 ,
|
||||
PLANAR_SURF = 1};
|
||||
|
||||
public : // IGeoObj
|
||||
ISurfBezier* Clone( void) const override = 0 ;
|
||||
public :
|
||||
virtual bool CopyFrom( const IGeoObj* pGObjSrc) = 0 ;
|
||||
@@ -36,7 +46,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( const ISurfFlatRegion& sfrTrimReg) = 0 ;
|
||||
virtual bool SetTrimRegion( ISurfFlatRegion& sfrTrimReg, bool bIntersectOrSubtrct = true) = 0 ;
|
||||
virtual ISurfFlatRegion* GetTrimRegion( void) const = 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 ;
|
||||
@@ -58,7 +68,27 @@ 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 ISurfTriMesh* GetApproxSurf( double dTol, double dSideMin = 100 * EPS_SMALL) 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 ;
|
||||
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 ;
|
||||
virtual bool IsPlanar( void) const = 0 ;
|
||||
virtual bool CreateByFlatContour( const PolyLine& PL) = 0 ;
|
||||
virtual bool CreateByRegion( const POLYLINEVECTOR& vPL) = 0 ;
|
||||
virtual bool CreateByExtrusion( const ICurve* pCrv, const Vector3d& vtExtr, bool bDeg3OrDeg2 = false) = 0 ;
|
||||
virtual bool CreateByScrewing( const ICurve* pCurve, const Point3d& ptAx, const Vector3d& vtAx, double dAngRotDeg, double dMove) = 0 ;
|
||||
virtual bool CreateByPointCurve( const Point3d& pt, const ICurve* pCurve) = 0 ;
|
||||
virtual bool CreateByTwoCurves( const ICurve* pCurve1, const ICurve* pCurve2, int nType) = 0 ;
|
||||
virtual bool CreateBySetOfCurves( const ICURVEPOVECTOR& vCrvBez, bool bReduceToDeg3 = true) = 0 ;
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
+29
-12
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2015-2015
|
||||
// EgalTech 2015-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkSurfFlatRegion.h Data : 05.08.15 Versione : 1.6h2
|
||||
// File : EGkSurfFlatRegion.h Data : 18.07.24 Versione : 2.6g5
|
||||
// Contenuto : Dichiarazione della interfaccia ISurfFlatRegion.
|
||||
//
|
||||
//
|
||||
@@ -17,7 +17,6 @@
|
||||
#include "/EgtDev/Include/EGkIntersCurves.h"
|
||||
#include "/EgtDev/Include/EgkCurveComposite.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
#include "/EgtDev/Include/EGkVoronoi.h"
|
||||
|
||||
class ISurfTriMesh ;
|
||||
|
||||
@@ -28,7 +27,7 @@ class __declspec( novtable) ISurfFlatRegion : public ISurf
|
||||
ISurfFlatRegion* Clone( void) const override = 0 ;
|
||||
public :
|
||||
virtual bool CopyFrom( const IGeoObj* pGObjSrc) = 0 ;
|
||||
virtual bool Clear( void) ;
|
||||
virtual bool Clear( void) = 0 ;
|
||||
virtual bool AddExtLoop( const ICurve& cCrv) = 0 ;
|
||||
virtual bool AddExtLoop( ICurve* pCrv) = 0 ;
|
||||
virtual bool AddIntLoop( const ICurve& cCrv) = 0 ;
|
||||
@@ -41,18 +40,30 @@ class __declspec( novtable) ISurfFlatRegion : public ISurf
|
||||
virtual bool GetGrossArea( double& dArea) const = 0 ;
|
||||
virtual const Point3d& GetPlanePoint( void) const = 0 ;
|
||||
virtual const Vector3d& GetNormVersor( void) const = 0 ;
|
||||
virtual bool CalcVoronoiDiagram( ICURVEPOVECTOR& vCrvs, int nBound = 3) const = 0 ;
|
||||
virtual void ResetVoronoiObject( void) const = 0 ;
|
||||
virtual bool GetMaxOffset( double& dOffs) const = 0 ;
|
||||
virtual bool CalcMedialAxis( ICURVEPOVECTOR& vCrvs, int nSide = 1) const = 0 ;
|
||||
virtual const ISurfTriMesh* GetAuxSurf( void) const = 0 ;
|
||||
virtual bool GetCurveClassification( const ICurve& Crv, double dLenMin, CRVCVECTOR& ccClass) const = 0 ;
|
||||
virtual int GetChunkCount( void) const = 0 ;
|
||||
virtual ISurfFlatRegion* CloneChunk( int nChunk) const = 0 ;
|
||||
virtual bool EraseChunk(int nChunk) = 0 ;
|
||||
virtual bool GetChunkCentroid( int nChunk, Point3d& ptCen) const = 0 ;
|
||||
virtual bool GetChunkArea( int nChunk, double& dArea) const = 0 ;
|
||||
virtual bool GetChunkPerimeter( int nChunk, double& dLen) const = 0 ;
|
||||
virtual int GetChunkSimpleClassification( int nChunk, const ISurfFlatRegion& Other, int nOthChunk) const ; // compare only outsides
|
||||
virtual bool GetChunkMaxOffset( int nChunk, double& dOffs) const = 0 ;
|
||||
virtual int GetLoopCount( int nChunk) const = 0 ;
|
||||
virtual int GetLoopCurveCount( int nChunk, int nLoop) const = 0 ;
|
||||
virtual ICurve* GetLoop( int nChunk, int nLoop) const = 0 ; // nChunk 0-based, nLoop 0-based (1°esterno, successivi interni)
|
||||
virtual bool ApproxLoopWithLines( int nChunk, int nLoop, double dLinTol, double dAngTolDeg, int nType, PolyLine& PL) const = 0 ;
|
||||
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 int GetChunkSimpleClassification( int nChunk, const ISurfFlatRegion& Other, int nOthChunk) const ; // compare only outsides
|
||||
virtual Voronoi* GetVoronoiObject( void) const = 0 ;
|
||||
virtual bool CalcVoronoiDiagram( ICURVEPOVECTOR& vCrvs, int nBound = VORONOI_STD_BOUND) const = 0 ;
|
||||
virtual bool CalcMedialAxis( ICURVEPOVECTOR& vCrvs, int nSide = Voronoi::WMAT_LEFT) const = 0 ;
|
||||
virtual bool SetCurveTempProp( int nChunk, int nLoop, int nCrv, int nProp, int nPropInd = 0) = 0 ;
|
||||
virtual bool GetCurveTempProp( int nChunk, int nLoop, int nCrv, int& nProp, int nPropInd = 0) const = 0 ;
|
||||
virtual bool ResetAllCurveTempProps( void) = 0 ;
|
||||
virtual bool SetCurveTempParam( int nChunk, int nLoop, int nCrv, double dParam, int nParamInd = 0) = 0 ;
|
||||
virtual bool GetCurveTempParam( int nChunk, int nLoop, int nCrv, double& dParam, int nParamInd = 0) const = 0 ;
|
||||
virtual bool ResetAllCurveTempParams( void) = 0 ;
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -86,3 +97,9 @@ 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 ;
|
||||
|
||||
+21
-2
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2017-2017
|
||||
// EgalTech 2017-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkSurfLocal.h Data : 29.03.17 Versione : 1.8c3
|
||||
// File : EGkSurfLocal.h Data : 08.04.24 Versione : 2.6d2
|
||||
// Contenuto : Classe gestione superfici nel locale desiderato.
|
||||
//
|
||||
//
|
||||
@@ -45,6 +45,25 @@ class SurfLocal
|
||||
m_pCopy->LocToLoc( frSrf, frLoc) ;
|
||||
m_pSrf = m_pCopy ;
|
||||
}
|
||||
SurfLocal( const ISurf* pSurf, const Frame3d& frSrf, const Frame3d& frLoc)
|
||||
: m_pSrf( nullptr), m_pCopy( nullptr)
|
||||
{ // verifica dei parametri
|
||||
if ( pSurf == nullptr || &frSrf == nullptr || &frLoc == nullptr)
|
||||
return ;
|
||||
// assegno la superficie originale
|
||||
m_pSrf = pSurf ;
|
||||
// se i riferimenti coincidono non devo fare altro
|
||||
if ( AreSameFrame( frSrf, frLoc))
|
||||
return ;
|
||||
// copio la superficie e la porto in locale
|
||||
m_pCopy = m_pSrf->Clone() ;
|
||||
if ( m_pCopy == nullptr) {
|
||||
m_pSrf = nullptr ;
|
||||
return ;
|
||||
}
|
||||
m_pCopy->LocToLoc( frSrf, frLoc) ;
|
||||
m_pSrf = m_pCopy ;
|
||||
}
|
||||
SurfLocal( const SurfLocal& Other)
|
||||
: m_pSrf( nullptr), m_pCopy( nullptr)
|
||||
{ // se non devo clonare
|
||||
|
||||
+14
-3
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2014-2023
|
||||
// EgalTech 2014-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkSurfTriMesh.h Data : 10.12.23 Versione : 2.5l2
|
||||
// File : EGkSurfTriMesh.h Data : 05.03.24 Versione : 2.6c2
|
||||
// Contenuto : Dichiarazione della interfaccia ISurfTriMesh.
|
||||
//
|
||||
//
|
||||
@@ -43,13 +43,14 @@ 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 AddTriangle( const int nIdVert[3], int nTFlag = 0) = 0 ;
|
||||
virtual bool RemoveTriangle( int nId) = 0 ;
|
||||
virtual bool AdjustTopology( void) = 0 ;
|
||||
virtual bool CreateByFlatContour( const PolyLine& PL) = 0 ;
|
||||
virtual bool CreateByRegion( const POLYLINEVECTOR& vPL) = 0 ;
|
||||
virtual bool CreateByRegion( const POLYLINEVECTOR& vPL, const INTMATRIX& vnPLIndMat) = 0 ;
|
||||
virtual bool CreateByExtrusion( const PolyLine& PL, const Vector3d& vtExtr) = 0 ;
|
||||
virtual bool CreateByPointCurve( const Point3d& ptP, const PolyLine& PL) = 0 ;
|
||||
virtual bool CreateByTwoCurves( const PolyLine& PL1, const PolyLine& PL2, int nRuledType) = 0 ;
|
||||
@@ -67,6 +68,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 ;
|
||||
@@ -87,6 +89,7 @@ class __declspec( novtable) ISurfTriMesh : public ISurf
|
||||
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 Plane3d& plPlane, double dTol, POLYLINEVECTOR& vPL, bool bAllTria = false) const = 0 ;
|
||||
virtual int GetFacetCount( void) const = 0 ;
|
||||
virtual int GetFacetSize( void) const = 0 ;
|
||||
virtual int GetFacetFromTria( int nT) const = 0 ;
|
||||
@@ -121,9 +124,17 @@ class __declspec( novtable) ISurfTriMesh : public ISurf
|
||||
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 GetShellCount( void) const = 0 ;
|
||||
virtual bool GetShellArea( int nShell, double& dArea) const = 0 ;
|
||||
virtual bool RemoveShell( int nShell) = 0 ;
|
||||
virtual ISurfTriMesh* CloneShell( int nShell) const = 0 ;
|
||||
virtual int GetPartCount( void) const = 0 ;
|
||||
virtual bool GetPartArea( int nPart, double& dArea) const = 0 ;
|
||||
virtual bool GetPartVolume( int nPart, double& dVolume) const = 0 ;
|
||||
virtual bool RemovePart( int nPart) = 0 ;
|
||||
virtual ISurfTriMesh* ClonePart( int nPart) const = 0 ;
|
||||
virtual bool SetTFlag( int nId, int nTFlag) = 0 ;
|
||||
virtual bool GetTFlag( int nId, int& nFlag) const = 0 ;
|
||||
virtual int GetMaxTFlag( void) const = 0 ;
|
||||
virtual bool ResetTFlags( void) = 0 ;
|
||||
} ;
|
||||
|
||||
+41
-18
@@ -45,7 +45,7 @@ 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
|
||||
//! 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
|
||||
@@ -58,58 +58,70 @@ class EGK_EXPORT Vector3d
|
||||
{ return ( x * x + y * y ) ; }
|
||||
//! Lunghezza del vettore nel piano XY
|
||||
double LenXY( void) const ;
|
||||
//! Verifica se il vettore è quasi nullo
|
||||
//! Verifica se il vettore è quasi nullo
|
||||
bool IsSmall( void) const
|
||||
{ return ( ( x * x + y * y + z * z) < SQ_EPS_SMALL) ; }
|
||||
//! Verifica se il vettore è esattamente nullo
|
||||
//! Verifica se il vettore è esattamente nullo
|
||||
bool IsZero( void) const
|
||||
{ return ( ( x * x + y * y + z * z) < SQ_EPS_ZERO) ; }
|
||||
//! Verifica se il vettore è quasi nullo nel piano XY
|
||||
//! Verifica se il vettore è quasi nullo nel piano XY
|
||||
bool IsSmallXY( void) const
|
||||
{ return ( ( x * x + y * y) < SQ_EPS_SMALL) ; }
|
||||
//! Verifica se il vettore è esattamente nullo nel piano XY
|
||||
//! Verifica se il vettore è esattamente nullo nel piano XY
|
||||
bool IsZeroXY( void) const
|
||||
{ return ( ( x * x + y * y) < SQ_EPS_ZERO) ; }
|
||||
//! Verifica se il vettore è normalizzato (è un versore)
|
||||
//! Verifica se il vettore è normalizzato (è un versore)
|
||||
bool IsNormalized( void) const
|
||||
{ return ( abs( 1.0 - (x * x + y * y + z * z)) < ( 2 * EPS_ZERO)) ; }
|
||||
//! Verifica se il vettore è parallelo ed equiverso con X+
|
||||
//! 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) ; }
|
||||
//! Verifica se il vettore è parallelo ed equiverso con X-
|
||||
//! 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
|
||||
//! 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) ; }
|
||||
//! Verifica se il vettore è parallelo ed equiverso con Y+
|
||||
//! Verifica se il vettore è circa parallelo a x
|
||||
bool IsXEpsilon( double dToler) const
|
||||
{ double dMO = std::max( abs( y), abs( z)) ;
|
||||
return ( abs( x) > dToler && dMO < 10 * dToler && abs( x) > KV_BIG * dMO) ; }
|
||||
//! 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) ; }
|
||||
//! Verifica se il vettore è parallelo ed equiverso con Y-
|
||||
//! 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
|
||||
//! 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) ; }
|
||||
//! Verifica se il vettore è parallelo ed equiverso con Z+
|
||||
//! Verifica se il vettore è circa parallelo a y
|
||||
bool IsYEpsilon( double dToler) const
|
||||
{ double dMO = std::max( abs( z), abs( x)) ;
|
||||
return ( abs( y) > dToler && dMO < 10 * dToler && abs( y) > KV_BIG * dMO) ; }
|
||||
//! 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) ; }
|
||||
//! Verifica se il vettore è parallelo ed equiverso con Z-
|
||||
//! 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
|
||||
//! 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) ; }
|
||||
//! Verifica se il vettore è generico
|
||||
//! Verifica se il vettore è circa parallelo a Z
|
||||
bool IsZEpsilon( double dToler) const
|
||||
{ double dMO = std::max( abs( x), abs( y)) ;
|
||||
return ( abs( z) > dToler && dMO < 10 * dToler && abs( z) > KV_BIG * dMO) ; }
|
||||
//! Verifica se il vettore è generico
|
||||
bool IsGeneric( void) const
|
||||
{ return ( ! IsX() && ! IsY() && ! IsZ()) ; }
|
||||
//! Somma sul posto con altro vettore
|
||||
@@ -193,12 +205,12 @@ EGK_EXPORT Vector3d FromSpherical( double dLen, double dAngVertDeg, double dAngO
|
||||
EGK_EXPORT Vector3d FromPolar( double dLen, double dAngDeg) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Definizione come più verticale dei vettori ortogonali a quello ricevuto
|
||||
//! Definizione come più verticale dei vettori ortogonali a quello ricevuto
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT Vector3d FromUprightOrtho( const Vector3d& vtV) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Definizione come ortogonale al primo ricevuto, orizzontale e più vicino al secondo
|
||||
//! Definizione come ortogonale al primo ricevuto, orizzontale e più vicino al secondo
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT Vector3d FromNearestHorizontalOrtho( const Vector3d& vtV, const Vector3d& vtNear) ;
|
||||
|
||||
@@ -429,6 +441,17 @@ AreOrthoExact( const Vector3d& vtV1, const Vector3d& vtV2)
|
||||
return ( abs( vtV1 * vtV2) < COS_ORTO_ANG_ZERO) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Restituisce una copia ruotata del vettore passato
|
||||
//----------------------------------------------------------------------------
|
||||
inline const Vector3d
|
||||
GetRotate( const Vector3d& vtV, const Vector3d& vtAx, double dAngDeg)
|
||||
{
|
||||
Vector3d vtW = vtV ;
|
||||
vtW.Rotate( vtAx, dAngDeg) ;
|
||||
return vtW ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Restituisce una copia in locale del vettore passato
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
+24
-45
@@ -1,49 +1,23 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2015-2023
|
||||
// EgalTech 2015-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkVolZmap.h Data : 12.09.23 Versione : 2.5i1
|
||||
// File : EGkVolZmap.h Data : 22.04.24 Versione : 2.6d4
|
||||
// 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
|
||||
@@ -53,9 +27,10 @@ class __declspec( novtable) IVolZmap : public IGeoObj
|
||||
public :
|
||||
virtual bool CopyFrom( const IGeoObj* pGObjSrc) = 0 ;
|
||||
virtual bool Clear( void) = 0 ;
|
||||
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 Create( const Point3d& ptO, double dDimX, double dDimY, double dDimZ, double dStep, bool bTriDex) = 0 ;
|
||||
virtual bool CreateEmpty( const Point3d& ptO, double dDimX, double dDimY, double dDimZ, double dStep, bool bTriDex) = 0 ;
|
||||
virtual bool CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double dStep, bool bTriDex) = 0 ;
|
||||
virtual bool CreateFromTriMesh( const ISurfTriMesh& Surf, 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 ;
|
||||
@@ -65,6 +40,8 @@ class __declspec( novtable) IVolZmap : public IGeoObj
|
||||
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 ;
|
||||
@@ -78,6 +55,8 @@ class __declspec( novtable) IVolZmap : public IGeoObj
|
||||
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 bool SetAdditiveTool( const std::string& sToolName,
|
||||
double dH, double dR, double dRc, int nFlag, bool bFirst) = 0 ;
|
||||
virtual int GetToolCount( void) const = 0 ;
|
||||
virtual bool SetCurrTool( int nCurrTool) = 0 ;
|
||||
virtual bool ResetTools( void) = 0 ;
|
||||
@@ -89,19 +68,17 @@ class __declspec( novtable) IVolZmap : public IGeoObj
|
||||
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 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 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 Cut( const Plane3d& plPlane) = 0 ;
|
||||
virtual bool Compact( void) = 0 ;
|
||||
virtual int GetPartCount( void) const = 0 ;
|
||||
@@ -111,6 +88,8 @@ class __declspec( novtable) IVolZmap : public IGeoObj
|
||||
virtual IVolZmap* ClonePart( int nPart) const = 0 ;
|
||||
virtual bool RemovePart( int nPart) = 0 ;
|
||||
virtual int GetPartMinDistFromPoint( const Point3d& ptP) const = 0 ;
|
||||
virtual bool AddSurfTm( const ISurfTriMesh* pStm) = 0 ;
|
||||
virtual bool MakeUniform( double dToler) = 0 ;
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2015-2023
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkVoronoi.h Data : 23.11.23 Versione : 2.5k5
|
||||
// Contenuto : Dichiarazione della classe Voronoi con libreria VRONI
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 23.11.23 SP Creazione modulo.
|
||||
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkFrame3d.h"
|
||||
#include "/EgtDev/Include/EGkCurve.h"
|
||||
#include "/EgtDev/Include/EGkCurveArc.h"
|
||||
#include "/EgtDev/Include/EGkCurveBezier.h"
|
||||
#include "/EgtDev/Include/EGkCurveComposite.h"
|
||||
#include "/EgtDev/Include/EGkCurveLine.h"
|
||||
#include "/EgtDev/Extern/vroni/Include/vroni_object.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
|
||||
|
||||
static const int VORONOI_STD_BOUND = 3 ;
|
||||
static const double VRONI_OFFS_TOL = 1e-14 ;
|
||||
|
||||
//-------------------------- Forward Definitions -------------------------------
|
||||
class ISurfFlatRegion ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
class Voronoi
|
||||
{
|
||||
public :
|
||||
// costanti per il lato del medial axis
|
||||
enum WMATSide { WMAT_LEFT = 0,
|
||||
WMAT_RIGHT = 1,
|
||||
WMAT_BOTHSIDES = 2} ;
|
||||
public :
|
||||
EGK_EXPORT Voronoi( void)
|
||||
: m_vroni( nullptr), m_nBound( VORONOI_STD_BOUND), m_bVDComputed( false), m_bAllowAdd( true) {} ;
|
||||
EGK_EXPORT Voronoi( const ICurve* pCrv, bool bAllowAdd) ;
|
||||
EGK_EXPORT Voronoi( const ISurfFlatRegion* pSfr, bool bAllowAdd) ;
|
||||
EGK_EXPORT ~Voronoi( void) ;
|
||||
|
||||
public :
|
||||
EGK_EXPORT bool AddCurve( const ICurve* pCrv) ;
|
||||
EGK_EXPORT bool AddSurfFlatRegion( const ISurfFlatRegion* pSfr) ;
|
||||
EGK_EXPORT ICurve* GetCurve( int nId) const ;
|
||||
EGK_EXPORT int GetCurveCount( void) const
|
||||
{ return m_vpCrvs.size() ; } ;
|
||||
|
||||
EGK_EXPORT bool CalcVoronoiDiagram( ICURVEPOVECTOR& vCrvs, int nBound = VORONOI_STD_BOUND) ;
|
||||
EGK_EXPORT bool CalcOffset( ICURVEPOVECTOR& vOffs, double dOffs, int nType) ;
|
||||
EGK_EXPORT bool CalcFatCurve( ICURVEPOVECTOR& vOffs, double dOffs, bool bSquareEnds, bool bSquareMids) ;
|
||||
EGK_EXPORT bool CalcMedialAxis( ICURVEPOVECTOR& vCrvs, int nSide) ;
|
||||
|
||||
private :
|
||||
bool Clear( void) ;
|
||||
bool IsValid( void) const
|
||||
{ return m_vroni != nullptr ; } ;
|
||||
bool AddCurveToVroni( const ICurve * pCrv) ;
|
||||
bool AddLineToVroni( const ICurveLine* pLine, int& nVroniCrv, int nLoopId, int nCrvId = 0, Point3d ptForcedEnd = P_INVALID) ;
|
||||
bool AddArcToVroni( const ICurveArc* pArc, int& nVroniCrv, int nLoopId, int nCrvId = 0, Point3d ptForcedEnd = P_INVALID) ;
|
||||
bool AddCompoToVroni( const ICurveComposite* pCompo, int& nCrv, int nLoopId) ;
|
||||
bool AddBezierToVroni( const ICurveBezier* pBezier, int& nVroniCrv, int nLoopId) ;
|
||||
|
||||
bool CalcVoronoi( int nBound = VORONOI_STD_BOUND) ;
|
||||
bool CalcVroniOffset( ICRVCOMPOPLIST& vOffs, double dOffs, bool bRightOffs, bool bLeftOffs) ;
|
||||
bool UpdateVoronoi( double dOffs) ;
|
||||
bool VerifyCurvesValidityForOffset( void) ;
|
||||
bool AdjustOpenOffsetCurve( ICurveComposite& pCompo, double dOffs) ;
|
||||
bool AdjustOffsetStart( ICurveComposite& pCompo) ;
|
||||
int GetOffsetCurveSide( const ICurveComposite& pOffs, int nCrv) ;
|
||||
ICurve* GetBisectorCurve( int i) ;
|
||||
|
||||
private :
|
||||
vroniObject* m_vroni ; // oggetto base della libreria vroni
|
||||
Frame3d m_Frame ; // frame in cui è espresso l'oggetto vroni
|
||||
int m_nBound ; // bound associato al diagramma di Voronoi corrente
|
||||
CICURVEPVECTOR m_vpCrvs ; // curve associate al Voronoi ( espresse rispetto a m_Frame)
|
||||
BBox3d m_bBox ; // box degli oggetti associati al Voronoi
|
||||
bool m_bVDComputed ; // indica se il diagramma di Voronoi è stato calcolato
|
||||
bool m_bAllowAdd ; // indica se possibile aggiungere altre curve/superifici dopo aver creato l'oggetto Voronoi
|
||||
} ;
|
||||
+89
-17
@@ -229,7 +229,11 @@ LuaGetTabFieldParam( lua_State* L, int nInd, const char* szField, T& Val)
|
||||
{
|
||||
if ( ! lua_istable( L, nInd))
|
||||
return false ;
|
||||
lua_getfield( L, nInd, szField) ;
|
||||
int nField ;
|
||||
if ( FromString( szField, nField))
|
||||
lua_rawgeti( L, nInd, nField) ;
|
||||
else
|
||||
lua_getfield( L, nInd, szField) ;
|
||||
bool bOk = LuaGetParam( L, -1, Val) ;
|
||||
lua_pop( L, 1) ;
|
||||
return bOk ;
|
||||
@@ -323,6 +327,24 @@ LuaSetParam( lua_State* L, const std::string& sPar)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
inline bool
|
||||
LuaSetParam( lua_State* L, const BOOLVECTOR& vPar)
|
||||
{
|
||||
try {
|
||||
int nSize = int( vPar.size()) ;
|
||||
lua_createtable( L, nSize, 0) ;
|
||||
for ( int i = 1 ; i <= nSize ; ++ i) {
|
||||
lua_pushboolean( L, ( vPar[i-1] ? 1 : 0)) ;
|
||||
lua_rawseti( L, -2, i) ;
|
||||
}
|
||||
}
|
||||
catch( ...) {
|
||||
return false ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
inline bool
|
||||
LuaSetParam( lua_State* L, const INTVECTOR& vPar)
|
||||
@@ -444,7 +466,11 @@ LuaSetTabFieldParam( lua_State* L, int nInd, const char* szField)
|
||||
if ( ! LuaSetParam( L))
|
||||
return false ;
|
||||
int nPos = ( nInd > 0 ? nInd : nInd - 1) ;
|
||||
lua_setfield( L, nPos, szField) ;
|
||||
int nField ;
|
||||
if ( FromString( szField, nField))
|
||||
lua_rawseti( L, nPos, nField) ;
|
||||
else
|
||||
lua_setfield( L, nPos, szField) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -465,7 +491,11 @@ LuaSetTabFieldParam( lua_State* L, int nInd, const char* szField, const T& Val)
|
||||
if ( ! LuaSetParam( L, Val))
|
||||
return false ;
|
||||
int nPos = ( nInd > 0 ? nInd : nInd - 1) ;
|
||||
lua_setfield( L, nPos, szField) ;
|
||||
int nField ;
|
||||
if ( FromString( szField, nField))
|
||||
lua_rawseti( L, nPos, nField) ;
|
||||
else
|
||||
lua_setfield( L, nPos, szField) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -493,11 +523,21 @@ LuaGetGlobVar( lua_State* L, const std::string& sVar, T& Val)
|
||||
}
|
||||
// altrimenti campo di tabella
|
||||
else {
|
||||
std::string sTab, sField ;
|
||||
SplitFirst( sVar, ".", sTab, sField) ;
|
||||
lua_getglobal( L, sTab.c_str()) ;
|
||||
bool bOk = LuaGetTabFieldParam( L, -1, sField.c_str(), Val) ;
|
||||
lua_pop( L, 1) ;
|
||||
STRVECTOR vsTokens ;
|
||||
Tokenize( sVar, ".", vsTokens) ;
|
||||
int nTokenCnt = int( vsTokens.size()) ;
|
||||
if ( nTokenCnt < 2)
|
||||
return false ;
|
||||
lua_getglobal( L, vsTokens[0].c_str()) ;
|
||||
for ( int nInd = 1 ; nInd <= nTokenCnt - 2 ; ++ nInd) {
|
||||
int nField ;
|
||||
if ( FromString( vsTokens[nInd], nField))
|
||||
lua_rawgeti( L, -1, nField) ;
|
||||
else
|
||||
lua_getfield( L, -1, vsTokens[nInd].c_str()) ;
|
||||
}
|
||||
bool bOk = LuaGetTabFieldParam( L, -1, vsTokens[nTokenCnt-1].c_str(), Val) ;
|
||||
lua_pop( L, nTokenCnt - 1) ;
|
||||
return bOk ;
|
||||
}
|
||||
}
|
||||
@@ -518,11 +558,27 @@ LuaSetGlobVar( lua_State* L, const std::string& sVar, const T& Val)
|
||||
}
|
||||
// altrimenti campo di tabella
|
||||
else {
|
||||
std::string sTab, sField ;
|
||||
SplitFirst( sVar, ".", sTab, sField) ;
|
||||
lua_getglobal( L, sTab.c_str()) ;
|
||||
bool bOk = LuaSetTabFieldParam( L, -1, sField.c_str(), Val) ;
|
||||
lua_pop( L, 1) ;
|
||||
STRVECTOR vsTokens ;
|
||||
Tokenize( sVar, ".", vsTokens) ;
|
||||
int nTokenCnt = int( vsTokens.size()) ;
|
||||
if ( nTokenCnt < 2)
|
||||
return false ;
|
||||
lua_getglobal( L, vsTokens[0].c_str()) ;
|
||||
for ( int nInd = 1 ; nInd <= nTokenCnt - 2 ; ++ nInd) {
|
||||
int nField ;
|
||||
bool bNumber = FromString( vsTokens[nInd], nField) ;
|
||||
if ( ( bNumber ? lua_rawgeti( L, -1, nField) : lua_getfield( L, -1, vsTokens[nInd].c_str())) != LUA_TTABLE) {
|
||||
lua_pop( L, 1) ;
|
||||
lua_newtable( L) ;
|
||||
lua_pushvalue( L, -1) ;
|
||||
if ( bNumber)
|
||||
lua_rawseti( L, -3, nField) ;
|
||||
else
|
||||
lua_setfield( L, -3, vsTokens[nInd].c_str()) ;
|
||||
}
|
||||
}
|
||||
bool bOk = LuaSetTabFieldParam( L, -1, vsTokens[nTokenCnt-1].c_str(), Val) ;
|
||||
lua_pop( L, nTokenCnt - 1) ;
|
||||
return bOk ;
|
||||
}
|
||||
}
|
||||
@@ -542,10 +598,26 @@ LuaResetGlobVar( lua_State* L, const std::string& sVar)
|
||||
}
|
||||
// altrimenti campo di tabella
|
||||
else {
|
||||
std::string sTab, sField ;
|
||||
SplitFirst( sVar, ".", sTab, sField) ;
|
||||
lua_getglobal( L, sTab.c_str()) ;
|
||||
bool bOk = LuaSetTabFieldParam( L, -1, sField.c_str()) ;
|
||||
STRVECTOR vsTokens ;
|
||||
Tokenize( sVar, ".", vsTokens) ;
|
||||
int nTokenCnt = int( vsTokens.size()) ;
|
||||
if ( nTokenCnt < 2)
|
||||
return false ;
|
||||
lua_getglobal( L, vsTokens[0].c_str()) ;
|
||||
for ( int nInd = 1 ; nInd <= nTokenCnt - 2 ; ++ nInd) {
|
||||
int nField ;
|
||||
bool bNumber = FromString( vsTokens[nInd], nField) ;
|
||||
if ( ( bNumber ? lua_rawgeti( L, -1, nField) : lua_getfield( L, -1, vsTokens[nInd].c_str())) != LUA_TTABLE) {
|
||||
lua_pop( L, 1) ;
|
||||
lua_newtable( L) ;
|
||||
lua_pushvalue( L, -1) ;
|
||||
if ( bNumber)
|
||||
lua_rawseti( L, -3, nField) ;
|
||||
else
|
||||
lua_setfield( L, -3, vsTokens[nInd].c_str()) ;
|
||||
}
|
||||
}
|
||||
bool bOk = LuaSetTabFieldParam( L, -1, vsTokens[nTokenCnt-1].c_str()) ;
|
||||
lua_pop( L, 1) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+1
-1
@@ -245,7 +245,7 @@ const std::string ToString( const int (&nVal)[size], int nPrec = 1)
|
||||
inline const std::string
|
||||
ToString( bool bVal)
|
||||
{ return std::string( ( bVal ? "1" : "0")) ; }
|
||||
EGN_EXPORT const std::string ToString( double dVal, int nPrec = 6) ;
|
||||
EGN_EXPORT const std::string ToString( double dVal, int nPrec = 6, int* pnErr = nullptr) ;
|
||||
template <size_t size>
|
||||
const std::string ToString( const double (&dVal)[size], int nPrec = 6)
|
||||
{ std::string sDest ; sDest.reserve( 14 * size) ;
|
||||
|
||||
+5
-2
@@ -1,13 +1,13 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2014-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGrScene.h Data : 09.01.24 Versione : 2.5l7
|
||||
// File : EGrScene.h Data : 16.02.24 Versione : 2.6b4
|
||||
// Contenuto : Dichiarazione della interfaccia IEGrScene per scena OpenGL.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 13.02.14 DS Creazione modulo.
|
||||
//
|
||||
// 16.02.24 DS Aggiunte Set/Get CameraDirOrizzOffset.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -57,10 +57,12 @@ class IEGrScene
|
||||
virtual void Destroy( void) = 0 ;
|
||||
// Camera
|
||||
virtual bool SetCenter( const Point3d& ptCenter) = 0 ;
|
||||
virtual bool SetCameraDirOrizzOffset( int nRightStepOffset = 0) = 0 ;
|
||||
virtual bool SetCamera( double dAngVertDeg, double dAngOrizzDeg, double dDist) = 0 ;
|
||||
virtual bool SetCamera( int nDir, double dDist = 0) = 0 ;
|
||||
virtual const Point3d& GetCenter( void) const = 0 ;
|
||||
virtual Point3d GetProjectedCenter( void) const = 0 ;
|
||||
virtual int GetCameraDirOrizzOffset( void) const = 0 ;
|
||||
virtual void GetCamera( double* pdAngVertDeg, double* pdAngOrizzDeg, double* pdDist = nullptr) const = 0 ;
|
||||
virtual int GetCameraDir( void) const = 0 ;
|
||||
virtual const Vector3d& GetCameraUp( void) const = 0 ;
|
||||
@@ -88,6 +90,7 @@ class IEGrScene
|
||||
virtual bool SetExtension( const BBox3d& b3Ext) = 0 ;
|
||||
virtual bool UpdateExtension( void) = 0 ;
|
||||
virtual bool SetMark( Color colMark) = 0 ;
|
||||
virtual bool SetMark2( Color colMark) = 0 ;
|
||||
virtual bool SetSelSurf( Color colSelSurf) = 0 ;
|
||||
virtual bool SetLineWidth( int nW) = 0 ;
|
||||
// Grid
|
||||
|
||||
@@ -57,7 +57,9 @@ EIN_EXPORT BOOL __stdcall EgtSetNetHwKey( BOOL bNetHwKey) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetKeyLevel( int nProd, int nVer, int nLev, int* pnKLev) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetKeyOptions( int nProd, int nVer, int nLev, unsigned int* pnOpt2) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetKeyLeftDays( int* pnLeftDays) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetKeyAssLeftDays( int* pnAssLeftDays) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetKeyOptLeftDays( int* pnOptLeftDays) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetNetHwKey( void) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetOsInfo( wchar_t*& wsOs) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetCpuInfo( wchar_t*& wsCpu) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetMemoryInfo( wchar_t*& wsMem) ;
|
||||
@@ -117,7 +119,7 @@ EIN_EXPORT BOOL __stdcall EgtImportStl( const wchar_t* wsFilePath, double dScale
|
||||
EIN_EXPORT BOOL __stdcall EgtImport3MF( const wchar_t* wsFilePath) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtImport3dm( const wchar_t* wsFilePath) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtAdvancedImportIsEnabled( void) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtAdvancedImport( const wchar_t* wsFilePath, double dLinToler) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtAdvancedImport( const wchar_t* wsFilePath, double dLinToler, int nFlag) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtExportDxf( int nId, const wchar_t* wsFilePath, int nFlag, int nFilter) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtExportStl( int nId, const wchar_t* wsFilePath, int nFilter) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtExport3MF( int nId, const wchar_t* wsFilePath, int nFilter) ;
|
||||
@@ -210,6 +212,15 @@ EIN_EXPORT int __stdcall EgtCreateVerticalDimension( int nParentId, const doubl
|
||||
const double ptDim[3], const wchar_t* wsText, int nRefType) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateAlignedDimension( int nParentId, const double ptP1[3], const double ptP2[3],
|
||||
const double ptDim[3], const wchar_t* wsText, int nRefType) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateAngularDimension( int nParentId, const double ptV[3], const double ptP1[3], const double ptP2[3],
|
||||
const double ptDim[3], const wchar_t* wsText, int nRefType) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateAngularDimensionEx( int nParentId, const double ptV1[3], const double ptP1[3],
|
||||
const double ptV2[3], const double ptP2[3], const double ptDim[3],
|
||||
const wchar_t* wsText, int nRefType) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateDiametralDimension( int nParentId, int nCrvId, const double ptDim[3],
|
||||
const wchar_t* wsText, int nRefType) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateRadialDimension( int nParentId, int nCrvId, const double ptDim[3],
|
||||
const wchar_t* wsText, int nRefType) ;
|
||||
|
||||
// GeomDB Create Curve
|
||||
EIN_EXPORT int __stdcall EgtCreateLine( int nParentId,
|
||||
@@ -241,6 +252,8 @@ EIN_EXPORT int __stdcall EgtCreateArcC2PEx( int nParentId, const double ptCen[3
|
||||
const double ptNearEnd[3], int nRefType) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateArc3P( int nParentId, const double ptP1[3],
|
||||
const double ptP2[3], const double ptP3[3], int nRefType) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateArc2PR( int nParentId, const double ptStart[3], const double ptEnd[3],
|
||||
double dRad, BOOL bCCW, int nRefType) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateArc2PD( int nParentId, const double ptStart[3], const double ptEnd[3],
|
||||
double dDirSDeg, int nRefType) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateArc2PDEx( int nParentId, const double ptStart[3],
|
||||
@@ -305,9 +318,10 @@ EIN_EXPORT int __stdcall EgtCreateSurfTmByRevolve( int nParentId, int nCrvId,
|
||||
const double ptAx[3], const double vtAx[3],
|
||||
BOOL bCapEnds, double dLinTol, int nRefType) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateSurfTmByScrewing( int nParentId, int nCrvId,
|
||||
const double ptAx[3], const double vtAx[3],
|
||||
double dAngRotDeg, double dMove, BOOL bCapEnds, double dLinTol, int nRefType) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateSurfTmSwept( int nParentId, int nSectId, int nGuideId, BOOL bCapEnds, double dLinTol) ;
|
||||
const double ptAx[3], const double vtAx[3],
|
||||
double dAngRotDeg, double dMove, BOOL bCapEnds, double dLinTol, int nRefType) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateSurfTmSwept( int nParentId, int nSectId, int nGuideId, const double vtAx[3],
|
||||
BOOL bCapEnds, double dLinTol, int nRefType) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateSurfTmRuled( int nParentId, int nPntOrCrvId1, int nCrvId2, int nType, double dLinTol) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateSurfTmByTriangles( int nParentId, int nNumId, const int nIds[], BOOL bErase) ;
|
||||
EIN_EXPORT int __stdcall EgtCreateSurfTmBySewing( int nParentId, int nNumId, const int nIds[], BOOL bErase) ;
|
||||
@@ -399,7 +413,7 @@ EIN_EXPORT BOOL __stdcall EgtSetStatus( int nId, int nStat) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtRevertStatus( int nId) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetStatus( int nId, int* pnStat) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetCalcStatus( int nId, int* pnStat) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSetMark( int nId) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSetMark( int nId, int nMark) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtResetMark( int nId) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetMark( int nId, BOOL* pnMark) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetCalcMark( int nId, BOOL* pnMark) ;
|
||||
@@ -528,6 +542,8 @@ EIN_EXPORT BOOL __stdcall EgtSurfFrAdd( int nId1, int nId2) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfFrSubtract( int nId1, int nId2) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfFrIntersect( int nId1, int nId2) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfFrOffset( int nId, double dDist, int nType) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfTmMoveVertex( int nId, int nVert, const double ptNewVert[3], int nRefType, BOOL bUpdate) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfTmMoveFacet( int nId, int nFacet, const double vtMove[3], int nRefType, BOOL bUpdate) ;
|
||||
EIN_EXPORT int __stdcall EgtSurfTmToTriangles( int nId, int* pnCount) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfTmRemoveFacet( int nId, int nFacet) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtCutSurfTmPlane( int nId, const double ptOn[3], const double vtN[3], BOOL bSaveOnEq, int nRefType) ;
|
||||
@@ -535,6 +551,7 @@ EIN_EXPORT BOOL __stdcall EgtCutSurfTmClosedCurve( int nSurfId, int nCurveId, BO
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfTmAdd( int nId1, int nId2, BOOL bTwoColors) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfTmSubtract( int nId1, int nId2, BOOL bTwoColors) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfTmIntersect( int nId1, int nId2, BOOL bTwoColors) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfTmSetFaceColor( int nId, int nFacet, int nColor) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfTmResetTwoColors( int nId) ;
|
||||
EIN_EXPORT int __stdcall EgtSurfTmSplit( int nId, int nSplitterId, int* pnCount) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfTmCut( int nId, int nCutterId, BOOL bInVsOut, BOOL bSaveOnEq) ;
|
||||
@@ -558,6 +575,9 @@ EIN_EXPORT BOOL __stdcall EgtCurveParamAtLength( int nId, double dLen, double* p
|
||||
EIN_EXPORT BOOL __stdcall EgtCurveLengthAtPoint( int nId, const double ptOn[3], double dExtend, double* pdLen) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtCurveIsClosed( int nId) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtCurveIsFlat( int nId, BOOL bUseExtrusion, double dToler, double vtN[3], double* pdDist) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtCurveIsACircle( int nId, double dToler, double ptC[3], double vtN[3], double* pdRad, BOOL* pbCCW) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtCurveIsARectangle( int nId, double dToler, double ptP[3], double vtL1[3], double vtL2[3]) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtCurveIsATrapezoid( int nId, double dToler, double ptP[3], double vtB1[3], double vtL1[3], double vtB2[3]) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtCurveAreaXY( int nId, double* pdArea) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtCurveArea( int nId, double vtN[3], double* pdDist, double* pdArea) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtCurveNearestExtremityToPoint( int nId, const double ptP[3], BOOL* pbStart) ;
|
||||
@@ -582,10 +602,13 @@ EIN_EXPORT BOOL __stdcall EgtSurfFrNormVersor( int nId, int nRefId, double vtNor
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfFrGrossArea( int nId, double* pdArea) ;
|
||||
EIN_EXPORT int __stdcall EgtSurfFrChunkCount( int nId) ;
|
||||
EIN_EXPORT int __stdcall EgtSurfFrChunkSimpleClassify( int nId1, int nChunk1, int nId2, int nChunk2, double dToler) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfFrChunkCenter( int nId, int nChunk, int nRefId, double ptCen[3], double vtNorm[3]) ;
|
||||
EIN_EXPORT int __stdcall EgtExtractSurfFrChunkLoops( int nId, int nChunk, int nDestGrpId, int* pnCount) ;
|
||||
EIN_EXPORT int __stdcall EgtSurfTmPartCount( int nId) ;
|
||||
EIN_EXPORT int __stdcall EgtSurfTmFacetCount( int nId) ;
|
||||
EIN_EXPORT int __stdcall EgtSurfTmFacetFromTria( int nId, int nT) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfTmGetVertex( int nId, int nVert, int nRefId, double ptVert[3]) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfTmGetNearestVertex( int nId, const double ptNear[3], int nRefId, int* pnVert, double ptVert[3]) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfTmFacetNearestEndPoint( int nId, int nFacet, const double ptNear[3], int nRefId,
|
||||
double ptEnd[3], double vtNorm[3]) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSurfTmFacetNearestMidPoint( int nId, int nFacet, const double ptNear[3], int nRefId,
|
||||
@@ -724,6 +747,7 @@ EIN_EXPORT BOOL __stdcall EgtGetMachGroupNewName( const wchar_t* wsName, wchar_t
|
||||
EIN_EXPORT int __stdcall EgtAddMachGroup( const wchar_t* wsName, const wchar_t* wsMachineName) ;
|
||||
EIN_EXPORT int __stdcall EgtCopyMachGroup( const wchar_t* wsSouName, const wchar_t* wsName) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtRemoveMachGroup( int nMGroupId) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtChangeMachGroupName( int nMGroupInd, const wchar_t* wsNewName) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetMachGroupName( int nMGroupId, wchar_t*& wsName) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetMachGroupMachineName( int nMGroupId, wchar_t*& wsMachineName) ;
|
||||
EIN_EXPORT int __stdcall EgtGetMachGroupId( const wchar_t* wsName) ;
|
||||
@@ -908,7 +932,8 @@ EIN_EXPORT BOOL __stdcall EgtApplyMachining( BOOL bRecalc) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtUpdateMachining( void) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtPreparePreviewMachiningTool( void) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtRemovePreviewMachiningTool( void) ;
|
||||
EIN_EXPORT int __stdcall EgtPreviewMachiningTool( int nEntId, int nFlag) ;
|
||||
EIN_EXPORT int __stdcall EgtGetPreviewMachiningToolStepCount( void) ;
|
||||
EIN_EXPORT int __stdcall EgtPreviewMachiningTool( int nEntId, int nStep) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetMachiningParamBool( int nType, BOOL* pbVal) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetMachiningParamInt( int nType, int* pnVal) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetMachiningParamDouble( int nType, double* pdVal) ;
|
||||
@@ -949,11 +974,13 @@ EIN_EXPORT BOOL __stdcall EgtSetCalcTool( const wchar_t* wsTool, const wchar_t*
|
||||
EIN_EXPORT BOOL __stdcall EgtGetCalcTool( wchar_t*& wsTool, wchar_t*& wsHead, int* pnExit) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetCalcAngles( const double vtDirT[3], const double vtDirA[3],
|
||||
int* pnStat, double* pdAngA1, double* pdAngB1, double* pdAngA2, double* pdAngB2) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetCalcPositions( const double ptP[3], double dAngA, double dAngB,
|
||||
EIN_EXPORT BOOL __stdcall EgtGetCalcAnglesEx( const double vtDirT[3], const double vtDirA[3],
|
||||
int* pnStat, double*& vAngs1, double*& vAngs2, int* pnCount) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetCalcPositions( const double ptP[3], int nCount, const double dAngs[],
|
||||
int* pnStat, double* pdX, double* pdY, double* pdZ) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetCalcTipFromPositions( double dX, double dY, double dZ, double dAngA, double dAngB,
|
||||
EIN_EXPORT BOOL __stdcall EgtGetCalcTipFromPositions( double dX, double dY, double dZ, int nCount, const double dAngs[],
|
||||
BOOL bBottom, double ptTip[3]) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetCalcToolDirFromAngles( double dAngA, double dAngB, double vtDir[3]) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetCalcToolDirFromAngles( int nCount, const double dAngs[], double vtDir[3]) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtVerifyOutstroke( double dX, double dY, double dZ, double dAngA, double dAngB, int* pnStat) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtGetOutstrokeInfo( wchar_t*& wsInfo) ;
|
||||
// Machine Move
|
||||
@@ -971,7 +998,7 @@ EIN_EXPORT BOOL __stdcall EgtInitScene( HWND hWnd, int nDriver, BOOL b2Buff, int
|
||||
EIN_EXPORT BOOL __stdcall EgtGetSceneInfo( wchar_t*& wsInfo) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSetBackground( const int nTopCol[4], const int nBottomCol[4], BOOL bRedraw) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSetLineAttribs( int nWidth) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSetMarkAttribs( const int MarkCol[4]) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSetMarkAttribs( const int MarkCol[4], const int Mark2Col[4]) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSetSelSurfAttribs( const int SelSurfCol[4]) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSetGeoLineAttribs( const int GlCol[4]) ;
|
||||
EIN_EXPORT BOOL __stdcall EgtSetGeoTriaAttribs( const int GtCol[4]) ;
|
||||
|
||||
+13
-4
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2015-2023
|
||||
// EgalTech 2015-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EMkMachMgr.h Data : 28.10.23 Versione : 2.5j4
|
||||
// File : EMkMachMgr.h Data : 22.04.24 Versione : 2.6d4
|
||||
// Contenuto : Dichiarazione della interfaccia IMachMgr.
|
||||
//
|
||||
//
|
||||
@@ -15,6 +15,9 @@
|
||||
// 21.09.22 DS Aggiunta in interfaccia GetAxisOffset.
|
||||
// 25.08.23 DS Aggiunta in interfaccia CopyMachGroup.
|
||||
// 28.10.23 DS Aggiunte in interfaccia GetClEntAxesVal, GetToolSetupPosInCurrSetup e GetAllCurrAxesName.
|
||||
// 30.03.24 DS Aggiunte in interfaccia GetAllAxesNames e GetCalcTable.
|
||||
// 02.04.24 DS Aggiunta in interfaccia GetClEntAxesMask.
|
||||
// 22.04.24 DS Aggiunta in interfaccia GetExitId.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -61,6 +64,7 @@ class __declspec( novtable) IMachMgr
|
||||
virtual int AddMachGroup( const std::string& sName, const std::string& sMachineName) = 0 ;
|
||||
virtual int CopyMachGroup( const std::string& sSouName, const std::string& sName) = 0 ;
|
||||
virtual bool RemoveMachGroup( int nId) = 0 ;
|
||||
virtual bool ChangeMachGroupName( int nId, const std::string& sNewName) = 0 ;
|
||||
virtual std::string GetMachGroupName( int nId) const = 0 ;
|
||||
virtual std::string GetMachGroupMachineName( int nId) const = 0 ;
|
||||
virtual int GetMachGroupId( const std::string& sName) const = 0 ;
|
||||
@@ -255,7 +259,8 @@ class __declspec( novtable) IMachMgr
|
||||
virtual bool MachiningUpdate( bool bPostApply = true) = 0 ;
|
||||
virtual bool PreparePreviewMachiningTool( void) const = 0 ;
|
||||
virtual bool RemovePreviewMachiningTool( void) const = 0 ;
|
||||
virtual int PreviewMachiningTool( int nEntId, int nFlag) const = 0 ;
|
||||
virtual int GetPreviewMachiningToolStepCount( void) const = 0 ;
|
||||
virtual int PreviewMachiningTool( int nEntId, int nStep) const = 0 ;
|
||||
virtual bool GetMachiningParam( int nType, bool& bVal) const = 0 ;
|
||||
virtual bool GetMachiningParam( int nType, int& nVal) const = 0 ;
|
||||
virtual bool GetMachiningParam( int nType, double& dVal) const = 0 ;
|
||||
@@ -268,6 +273,7 @@ class __declspec( novtable) IMachMgr
|
||||
virtual bool GetClEntMove( int nEntId, int& nMove) const = 0 ;
|
||||
virtual bool GetClEntFlag( int nEntId, int& nFlag, int& nFlag2) const = 0 ;
|
||||
virtual bool GetClEntIndex( int nEntId, int& nIndex) const = 0 ;
|
||||
virtual bool GetClEntAxesMask( int nEntId, int& nMask) const = 0 ;
|
||||
virtual bool GetClEntAxesVal( int nEntId, DBLVECTOR& vAxes) const = 0 ;
|
||||
// Simulation
|
||||
virtual bool SimInit( void) = 0 ;
|
||||
@@ -287,9 +293,10 @@ class __declspec( novtable) IMachMgr
|
||||
// Machine Calc
|
||||
virtual bool SetCalcTable( const std::string& sTable) = 0 ;
|
||||
virtual bool SetCalcTool( const std::string& sTool, const std::string& sHead, int nExit) = 0 ;
|
||||
virtual bool GetAllCurrAxesName( STRVECTOR& vAxName) const = 0 ;
|
||||
virtual bool GetAllCurrAxesNames( STRVECTOR& vAxName) const = 0 ;
|
||||
virtual bool SetRotAxisBlock( const std::string& sAxis, double dVal) = 0 ;
|
||||
virtual bool GetRotAxisBlocked( int nInd, std::string& sAxis, double& dVal) const = 0 ;
|
||||
virtual bool GetCalcTable( std::string& sTable) const = 0 ;
|
||||
virtual bool GetCalcTool( std::string& sTool) const = 0 ;
|
||||
virtual bool GetCalcHead( std::string& sHead) const = 0 ;
|
||||
virtual bool GetCalcExit( int& nExit) const = 0 ;
|
||||
@@ -317,6 +324,7 @@ class __declspec( novtable) IMachMgr
|
||||
virtual int GetAxisId( const std::string& sAxis) const = 0 ;
|
||||
virtual int GetHeadId( const std::string& sHead) const = 0 ;
|
||||
virtual int GetHeadExitCount( const std::string& sHead) const = 0 ;
|
||||
virtual int GetExitId( const std::string& sHead, int nExit) const = 0 ;
|
||||
virtual int GetTcPosId( const std::string& sTcPos) const = 0 ;
|
||||
virtual bool GetAxisToken( const std::string& sAxis, std::string& sToken) const = 0 ;
|
||||
virtual bool GetAxisType( const std::string& sAxis, bool& bLinear) const = 0 ;
|
||||
@@ -330,6 +338,7 @@ class __declspec( novtable) IMachMgr
|
||||
virtual bool ResetAxisPos( const std::string& sAxis) = 0 ;
|
||||
virtual bool ResetAllAxesPos( void) = 0 ;
|
||||
virtual bool GetAllTablesNames( STRVECTOR& vNames) const = 0 ;
|
||||
virtual bool GetAllAxesNames( STRVECTOR& vNames) const = 0 ;
|
||||
virtual bool GetAllHeadsNames( STRVECTOR& vNames) const = 0 ;
|
||||
virtual bool GetAllTcPosNames( STRVECTOR& vNames) const = 0 ;
|
||||
virtual bool LoadTool( const std::string& sHead, int nExit, const std::string& sTool) = 0 ;
|
||||
|
||||
+30
-9
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2015-2023
|
||||
// EgalTech 2015-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EmkMachiningConst.h Data : 06.09.23 Versione : 2.5i1
|
||||
// File : EmkMachiningConst.h Data : 29.03.24 Versione : 2.6di1
|
||||
// Contenuto : Costanti delle lavorazioni.
|
||||
//
|
||||
//
|
||||
@@ -13,6 +13,7 @@
|
||||
// 09.11.20 DS Agg. MPA_SIDEANGFEED e MPA_STEPLAST.
|
||||
// 04.02.22 DS Agg. MPA_EPICYCLESRAD e MPA_EPICYCLESDIST.
|
||||
// 06.09.23 DS Agg. 5AxMachining.
|
||||
// 29.03.24 DS Agg. MGP_APPROXLINTOL.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -39,7 +40,8 @@ enum MgpType { MGP_NONE = 0,
|
||||
MGP_EXTSAWARCMINRAD = ( MGP_DOU + 4),
|
||||
MGP_INTSAWARCMAXSIDEANG =( MGP_DOU + 5),
|
||||
MGP_SAFEAGGRBOTTZ = ( MGP_DOU + 6),
|
||||
MGP_MAXDEPTHSAFE = ( MGP_DOU + 7)} ;
|
||||
MGP_MAXDEPTHSAFE = ( MGP_DOU + 7),
|
||||
MGP_APPROXLINTOL = ( MGP_DOU + 8)} ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Costanti per tipologia di split arcs
|
||||
@@ -64,7 +66,7 @@ enum MachiningType {
|
||||
MT_SURFROUGHING = OPER_SURFROUGHING,
|
||||
MT_SURFFINISHING = OPER_SURFFINISHING,
|
||||
MT_WATERJETTING = OPER_WATERJETTING,
|
||||
MT_5AXMACHINING = OPER_5AXMACHINING
|
||||
MT_FIVEAXISMILLING = OPER_FIVEAXISMILLING
|
||||
} ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -154,6 +156,7 @@ enum MpaType { MPA_NONE = 0,
|
||||
MPA_STEPLAST = ( MPA_DOU + 51), // per tagli con lama
|
||||
MPA_EPICYCLESRAD = ( MPA_DOU + 52), // per svuotature con epicicli
|
||||
MPA_EPICYCLESDIST = ( MPA_DOU + 53), // per svuotature con epicicli
|
||||
MPA_SUBSTEP = ( MPA_DOU + 54), // per sgrossature superfici
|
||||
MPA_NAME = ( MPA_STR + 0),
|
||||
MPA_TOOL = ( MPA_STR + 1),
|
||||
MPA_DEPTH_STR = ( MPA_STR + 2),
|
||||
@@ -322,7 +325,9 @@ enum { SAWFIN_LL_STD = 0,
|
||||
enum { POCKET_SUB_ZIGZAG = 0,
|
||||
POCKET_SUB_ONEWAY = 1,
|
||||
POCKET_SUB_SPIRALIN = 2,
|
||||
POCKET_SUB_SPIRALOUT = 3} ;
|
||||
POCKET_SUB_SPIRALOUT = 3,
|
||||
POCKET_SUB_CONFORMAL_ZIGZAG = 4,
|
||||
POCKET_SUB_CONFORMAL_ONEWAY = 5} ;
|
||||
// Tipo di attacco
|
||||
enum { POCKET_LI_NONE = 0,
|
||||
POCKET_LI_GLIDE = 1,
|
||||
@@ -361,6 +366,24 @@ enum { MORTISE_PLUNGE_STEP = 0,
|
||||
MORTISE_PLUNGE_START_END = 3,
|
||||
MORTISE_PLUNGE_START_TO_END = 4} ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Parametri per sgrossatura superfici
|
||||
// Sottotipo di lavorazione
|
||||
enum { SURFROU_SUB_ZIGZAG = 0,
|
||||
SURFROU_SUB_ONEWAY = 1,
|
||||
SURFROU_SUB_SPIRALIN = 2,
|
||||
SURFROU_SUB_SPIRALOUT = 3,
|
||||
SURFROU_SUB_CONFORMAL_ZIGZAG = 4,
|
||||
SURFROU_SUB_CONFORMAL_ONEWAY = 5} ;
|
||||
// Tipo di attacco
|
||||
enum { SURFROU_LI_NONE = 0,
|
||||
SURFROU_LI_GLIDE = 1,
|
||||
SURFROU_LI_ZIGZAG = 2,
|
||||
SURFROU_LI_HELIX = 3} ;
|
||||
// Tipo di uscita
|
||||
enum { SURFROU_LO_NONE = 0,
|
||||
SURFROU_LO_GLIDE = 1} ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Parametri per finitura superfici
|
||||
// Sottotipo di lavorazione
|
||||
@@ -372,9 +395,6 @@ enum { SURFFIN_SUB_ZIGZAG = 0,
|
||||
enum { SURFFIN_LI_NONE = 0,
|
||||
SURFFIN_LI_LINEAR = 1,
|
||||
SURFFIN_LI_TANGENT = 2} ;
|
||||
// Tipo di link
|
||||
enum { SURFFIN_LL_STD = 0,
|
||||
SURFFIN_LL_CENT = 1} ;
|
||||
// Tipo di uscita
|
||||
enum { SURFFIN_LO_NONE = 0,
|
||||
SURFFIN_LO_LINEAR = 1,
|
||||
@@ -393,7 +413,8 @@ enum { WJET_EC_NONE = 0,
|
||||
WJET_EC_LOOP = 2} ;
|
||||
// Comportamento su angolo interno
|
||||
enum { WJET_IC_NONE = 0,
|
||||
WJET_IC_SLOW = 1} ;
|
||||
WJET_IC_SLOW = 1,
|
||||
WJET_IC_SLOW_FULL = 2} ;
|
||||
// Tipo di attacco
|
||||
enum { WJET_LI_NONE = 0,
|
||||
WJET_LI_LINEAR = 1,
|
||||
|
||||
@@ -35,7 +35,7 @@ static std::string MCH_ST = "ST" ;
|
||||
static std::string MCH_CL = "CL" ;
|
||||
static std::string MCH_DBL = "DBL" ;
|
||||
static std::string MCH_PATH = "P" ;
|
||||
// Nomi di entità CL speciali
|
||||
// Nomi di entità CL speciali
|
||||
static std::string MCH_CL_CLIMB = "CLIMB" ;
|
||||
static std::string MCH_CL_RISE = "RISE" ;
|
||||
static std::string MCH_CL_HOME = "HOME" ;
|
||||
@@ -45,7 +45,7 @@ static std::string MCH_CL_AGB_DWN = "AGBD" ;
|
||||
static std::string MCH_CL_AGB_IN = "AGBI" ;
|
||||
static std::string MCH_CL_AGB_OUT = "AGBO" ;
|
||||
static std::string MCH_CL_AGB_UP = "AGBU" ;
|
||||
// Nomi di entità di preview
|
||||
// Nomi di entità di preview
|
||||
static std::string MCH_PV_CUT = "CUT" ;
|
||||
static std::string MCH_PV_PRE_CUT = "PRC" ;
|
||||
static std::string MCH_PV_POST_CUT = "POC" ;
|
||||
@@ -60,6 +60,8 @@ static std::string MCH_PV_DOWN_RCUT = "DRCUT" ;
|
||||
static std::string MCH_PV_DOWN_RRCUT = "DRRCUT" ;
|
||||
static std::string MCH_PV_DOWN_RLICUT = "DRLICUT" ;
|
||||
static std::string MCH_PV_DOWN_RLOCUT = "DRLOCUT" ;
|
||||
static std::string MCH_PV_UP_RAWCUT = "RUPCUT" ;
|
||||
static std::string MCH_PV_DOWN_RAWCUT = "RDWNCUT" ;
|
||||
// Chiave info con WidthT, DeltaTi, DeltaT, ExtraCut e RawBottomHeight lama in Preview
|
||||
static std::string MCH_PV_KEY_WT = "WT" ;
|
||||
static std::string MCH_PV_KEY_DTI = "DTI" ;
|
||||
@@ -68,10 +70,10 @@ static std::string MCH_PV_KEY_EC = "EC" ;
|
||||
static std::string MCH_PV_KEY_RBH = "RBH" ;
|
||||
// Chiave info per rinvio a preview spostato nel pezzo in Preview
|
||||
static std::string MCH_PV_KEY_RELOCATE = "PvId" ;
|
||||
// Chiave info per angoli in XY con entità successiva e precedente
|
||||
// Chiave info per angoli in XY con entità successiva e precedente
|
||||
static std::string MCH_KEY_NEXTANG = "NextAng" ;
|
||||
static std::string MCH_KEY_PREVANG = "PrevAng" ;
|
||||
// Chiave info per direzione libera in XY all'inizio e alla fine dell'entità (in assenza infinito)
|
||||
// Chiave info per direzione libera in XY all'inizio e alla fine dell'entità (in assenza infinito)
|
||||
static std::string MCH_KEY_START_FREELEN = "SFL" ;
|
||||
static std::string MCH_KEY_END_FREELEN = "EFL" ;
|
||||
// Angolo esterno minimo per calcolare la direzione libera sull'arco
|
||||
@@ -106,6 +108,8 @@ static std::string KEY_MMAX = "MMAX" ;
|
||||
// Chiavi info in gruppo CL per punti assi minimo e massimo di ingombro di tutta la lavorazione
|
||||
static std::string KEY_MAXMIN = "MAXMIN" ;
|
||||
static std::string KEY_MAXMAX = "MAXMAX" ;
|
||||
// Chiave info in sottogruppo di testa per abilitarne visualizzazione in Preview (0/1 default)
|
||||
static std::string KEY_PREVIEWSHOW = "PreviewShow" ;
|
||||
|
||||
//----------------- Costanti posizione per preview utensile in lavorazione ------
|
||||
enum MchToolShow { MCH_TPM_CURR = 0,
|
||||
|
||||
+18
-18
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2015-2023
|
||||
// EgalTech 2015-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EmkOperationConst.h Data : 06.09.23 Versione : 2.5i1
|
||||
// File : EmkOperationConst.h Data : 22.05.24 Versione : 2.6e5
|
||||
// Contenuto : Costanti delle operazioni.
|
||||
//
|
||||
//
|
||||
@@ -19,21 +19,21 @@
|
||||
#pragma once
|
||||
|
||||
//------------------------ Costanti per tipo Operazioni -----------------------
|
||||
enum OperType { OPER_NULL = 0, // nulla
|
||||
OPER_DISP = 0x000100, // disposizione
|
||||
OPER_DRILLING = 0x000200, // foratura
|
||||
OPER_SAWING = 0x000400, // taglio di lama
|
||||
OPER_MILLING = 0x000800, // fresatura
|
||||
OPER_POCKETING = 0x001000, // svuotatura
|
||||
OPER_MORTISING = 0x002000, // mortasatura
|
||||
OPER_SAWROUGHING = 0x004000, // sgrossatura con lama
|
||||
OPER_SAWFINISHING = 0x008000, // finitura con lama
|
||||
OPER_GENMACHINING = 0x010000, // lavorazione generica
|
||||
OPER_CHISELING = 0x020000, // scalpellatura
|
||||
OPER_SURFROUGHING = 0x040000, // sgrossatura superficie
|
||||
OPER_SURFFINISHING = 0x080000, // finitura superficie
|
||||
OPER_WATERJETTING = 0x100000, // taglio water jet
|
||||
OPER_5AXMACHINING = 0x200000} ; // lavorazione 5 assi
|
||||
enum OperType { OPER_NULL = 0, // nulla
|
||||
OPER_DISP = 0x000100, // disposizione
|
||||
OPER_DRILLING = 0x000200, // foratura
|
||||
OPER_SAWING = 0x000400, // taglio di lama
|
||||
OPER_MILLING = 0x000800, // fresatura
|
||||
OPER_POCKETING = 0x001000, // svuotatura
|
||||
OPER_MORTISING = 0x002000, // mortasatura
|
||||
OPER_SAWROUGHING = 0x004000, // sgrossatura con lama
|
||||
OPER_SAWFINISHING = 0x008000, // finitura con lama
|
||||
OPER_GENMACHINING = 0x010000, // lavorazione generica
|
||||
OPER_CHISELING = 0x020000, // scalpellatura
|
||||
OPER_SURFROUGHING = 0x040000, // sgrossatura superficie
|
||||
OPER_SURFFINISHING = 0x080000, // finitura superficie
|
||||
OPER_WATERJETTING = 0x100000, // taglio water jet
|
||||
OPER_FIVEAXISMILLING = 0x200000} ; // lavorazione 5 assi
|
||||
// Controllo tipo valido
|
||||
bool inline IsValidDispositionType( int nType)
|
||||
{
|
||||
@@ -53,5 +53,5 @@ bool inline IsValidMachiningType( int nType)
|
||||
nType == OPER_SURFROUGHING ||
|
||||
nType == OPER_SURFFINISHING ||
|
||||
nType == OPER_WATERJETTING ||
|
||||
nType == OPER_5AXMACHINING) ;
|
||||
nType == OPER_FIVEAXISMILLING) ;
|
||||
}
|
||||
|
||||
@@ -122,3 +122,7 @@ const std::string TTH_BASE = "B" ; // posizione base portau
|
||||
const std::string TTH_LEN = "H" ; // lunghezza portautensile da naso mandrino
|
||||
const std::string TTH_DIAM = "D" ; // diametro massimo portautensile
|
||||
const std::string TTH_STEM_DIAM = "D_STEM" ; // diametro massimo gambo utensile
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Costanti per nomi di parti di utensile
|
||||
const std::string TNA_TOOL_START = "Tool_" ; // inizio nome delle geometrie che costituiscono il vero utensile
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2024-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : ENkDijkstra.h Data : 08.02.24 Versione : 2.6b1
|
||||
// Contenuto : Classe per calcolo del percorso a peso minimo su un grafo orientato.
|
||||
//
|
||||
//
|
||||
// Modifiche : 02.02.2024 RE Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EgtNumCollection.h"
|
||||
|
||||
//----------------------- Macro per import/export ----------------------------
|
||||
#undef ENK_EXPORT
|
||||
#if defined( I_AM_ENK) // da definirsi solo nella DLL
|
||||
#define ENK_EXPORT __declspec( dllexport)
|
||||
#else
|
||||
#define ENK_EXPORT __declspec( dllimport)
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
class __declspec( novtable) IDijkstra
|
||||
{
|
||||
public :
|
||||
virtual ~IDijkstra( void) {}
|
||||
virtual bool SetGraph( DBLMATRIX AdjMatrix, int nDestInd = -1) = 0 ;
|
||||
virtual bool GetPath( INTVECTOR& vNodePath) = 0 ;
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
ENK_EXPORT IDijkstra* CreateDijkstra( void) ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// costante per arco non presente
|
||||
const double WEIGHT_NO_ADJ = 1073741823U ;
|
||||
+10
-7
@@ -67,13 +67,16 @@ enum ApprType{ APP_LINES = 0, // come ICurve::APL_STD
|
||||
APP_RIGHT_CONVEX_LINES = 12, // come ICurve::APL_RIGHT_CONVEX
|
||||
APP_ARCS = 3} ;
|
||||
|
||||
//----------------- Costanti tipo punto intersezione Linea SurfTriMesh ---------
|
||||
enum SLiType { SLT_NONE = 0,
|
||||
SLT_IN = 1,
|
||||
SLT_OUT = 2,
|
||||
SLT_TG_INI = 3,
|
||||
SLT_TG_FIN = 4,
|
||||
SLT_TOUCH = 5} ;
|
||||
//----------------- Costanti tipo punto intersezione Linea Curva ---------------
|
||||
enum CLiType { CLT_NONE = 0,
|
||||
CLT_IN = 1,
|
||||
CLT_OUT = 2,
|
||||
CLT_TOUCH_IN = 3,
|
||||
CLT_TOUCH_OUT = 4,
|
||||
CLT_TGINI_IN = 5,
|
||||
CLT_TGFIN_IN = 6,
|
||||
CLT_TGINI_OUT = 7,
|
||||
CLT_TGFIN_OUT = 8} ;
|
||||
|
||||
//----------------- Costanti tipo di costruzione di superficie rigata ----------
|
||||
enum RuledType{ RUL_TYPE_ISOPAR = 0, // come ISurfTrimesh::RLT_ISOPAR
|
||||
|
||||
+124
-24
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2015-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EXcExecutor.h Data : 09.01.24 Versione : 2.5l6
|
||||
// File : EXcExecutor.h Data : 30.03.24 Versione : 2.6d1
|
||||
// Contenuto : Interfaccia Executor.
|
||||
//
|
||||
//
|
||||
@@ -62,7 +62,9 @@ EXE_EXPORT bool ExeSetNetHwKey( bool bNetHwKey, int nUserId = 0, const std::stri
|
||||
EXE_EXPORT bool ExeGetKeyLevel( int nProd, int nVer, int nLev, int& nKLev) ;
|
||||
EXE_EXPORT bool ExeGetKeyOptions( int nProd, int nVer, int nLev, unsigned int& nOpt2) ;
|
||||
EXE_EXPORT bool ExeGetKeyLeftDays( int& nLeftDays) ;
|
||||
EXE_EXPORT bool ExeGetKeyAssLeftDays( int& nAssLeftDays) ;
|
||||
EXE_EXPORT bool ExeGetKeyOptLeftDays( int& nOptLeftDays) ;
|
||||
EXE_EXPORT bool ExeGetNetHwKey( void) ;
|
||||
EXE_EXPORT bool ExeGetOsInfo( std::string& sOs) ;
|
||||
EXE_EXPORT bool ExeGetCpuInfo( std::string& sCpu) ;
|
||||
EXE_EXPORT bool ExeGetMemoryInfo( std::string& sMem) ;
|
||||
@@ -125,7 +127,7 @@ EXE_EXPORT bool ExeImportStl( const std::string& sFilePath, double dScaleFactor)
|
||||
EXE_EXPORT bool ExeImport3MF( const std::string& sFilePath) ;
|
||||
EXE_EXPORT bool ExeImport3dm( const std::string& sFilePath) ;
|
||||
EXE_EXPORT bool ExeAdvancedImportIsEnabled( void) ;
|
||||
EXE_EXPORT bool ExeAdvancedImport( const std::string& sFilePath, double dToler = 0.1) ;
|
||||
EXE_EXPORT bool ExeAdvancedImport( const std::string& sFilePath, double dToler = 0.1, int nFlag = 0) ;
|
||||
EXE_EXPORT bool ExeExportDxf( int nId, const std::string& sFilePath, int nFlag = 1, int nFilter = 393) ;
|
||||
EXE_EXPORT bool ExeExportStl( int nId, const std::string& sFilePath, int nFilter = 393) ;
|
||||
EXE_EXPORT bool ExeExport3MF( int nId, const std::string& sFilePath, int nFilter = 393) ;
|
||||
@@ -232,8 +234,11 @@ EXE_EXPORT int ExeCreateAlignedDimension( int nParentId, const Point3d& ptP1, c
|
||||
const Point3d& ptDim, const std::string& sText, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateRadialDimension( int nParentId, int nCrvId, const Point3d& ptDim, const std::string& sText, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateDiametralDimension( int nParentId, int nCrvId, const Point3d& ptDim, const std::string& sText, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateAngularDimension( int nParentId, const Point3d& ptP1, const Point3d& ptP0, const Point3d& ptP2,
|
||||
EXE_EXPORT int ExeCreateAngularDimension( int nParentId, const Point3d& ptV, const Point3d& ptP1, const Point3d& ptP2,
|
||||
const Point3d& ptDim, const std::string& sText, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateAngularDimensionEx( int nParentId, const Point3d& ptV1, const Point3d& ptP1,
|
||||
const Point3d& ptV2, const Point3d& ptP2, const Point3d& ptDim,
|
||||
const std::string& sText, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateAngularDimensionFromLines( int nParentId, const INTVECTOR vLineIds, const Point3d& ptDim,
|
||||
const std::string& sText, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateAngularDimensionFromArc( int nParentId, int nCrvId, const Point3d& ptDim,
|
||||
@@ -270,6 +275,8 @@ EXE_EXPORT int ExeCreateArcC2PEx( int nParentId, const Point3d& ptCen,
|
||||
const Point3d& ptNearEnd, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateArc3P( int nParentId, const Point3d& ptP1,
|
||||
const Point3d& ptP2, const Point3d& ptP3, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateArc2PR( int nParentId, const Point3d& ptStart, const Point3d& ptEnd,
|
||||
double dRad, bool bCCW, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateArc2PB( int nParentId, const Point3d& ptStart, const Point3d& ptEnd,
|
||||
double dBulge, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateArc2PD( int nParentId, const Point3d& ptStart, const Point3d& ptEnd,
|
||||
@@ -316,6 +323,8 @@ EXE_EXPORT int ExeCreatePolygonFromSide( int nParentId, int nNumSides, const Po
|
||||
const Point3d& ptFin, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateCirclesAlongCurve( int nParentId, int nCrvId, double dOffset, double dOverlap,
|
||||
double dStartAdd, double dEndAdd, double dDiam, int* pnCount) ;
|
||||
EXE_EXPORT int ExeCreateCurveBezierForm( int nParentId, int nCrvId, int nDeg) ;
|
||||
|
||||
// GeomDB Create Surf
|
||||
EXE_EXPORT int ExeCreateSurfFlatRegion( int nParentId, const INTVECTOR& vCrvIds, int* pnCount) ;
|
||||
EXE_EXPORT int ExeCreateSurfFrFatCurve( int nParentId, int nCrvId, double dRad, bool bSquaredEnds, bool bSquaredMids, double dLinTol) ;
|
||||
@@ -353,21 +362,45 @@ EXE_EXPORT int ExeCreateSurfTmByScrewing( int nParentId, int nCrvId,
|
||||
double dAngRotDeg, double dMove, bool bCapEnds, double dLinTol, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateSurfTmRectSwept( int nParentId, double dDimH, double dDimV, double dBevelH, double dBevelV,
|
||||
int nGuideId, int nCapType, double dLinTol) ;
|
||||
EXE_EXPORT int ExeCreateSurfTmSwept( int nParentId, int nSectId, int nGuideId, bool bCapEnds, double dLinTol) ;
|
||||
EXE_EXPORT int ExeCreateSurfTmSwept( int nParentId, int nSectId, int nGuideId, const Vector3d& vtAx,
|
||||
bool bCapEnds, double dLinTol, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateSurfTmTransSwept( int nParentId, int nSectId, int nGuideId, bool bCapEnds, double dLinTol) ;
|
||||
EXE_EXPORT int ExeCreateSurfTmRuled( int nParentId, int nPtOrCrvId1, int nPtOrCrvId2, int nType, double dLinTol) ;
|
||||
EXE_EXPORT int ExeCreateSurfTmByTriangles( int nParentId, const INTVECTOR& vIds, bool bErase) ;
|
||||
EXE_EXPORT int ExeCreateSurfTmBySewing( int nParentId, const INTVECTOR& vIds, bool bErase) ;
|
||||
EXE_EXPORT int ExeCreateSurfTmBySurfBezier( int nParentId, int nSbezId) ;
|
||||
EXE_EXPORT int ExeCreateSurfTmByVolZmap( int nParentId, int nZmapId, int nPart) ;
|
||||
EXE_EXPORT int ExeCreateSurfBezier( int nParentId, int nDegU, int nDegV, int nSpanU, int nSpanV, const PNTVECTOR& vPnt, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateSurfBezierRational( int nParentId, int nDegU, int nDegV, int nSpanU, int nSpanV, const PNTUVECTOR& vPntW, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateSurfBezierLeaves( int nParentId, int nSurfBzId, int nTextHeight = 50, bool bShowTrim = false, int* pnCount = nullptr) ;
|
||||
EXE_EXPORT int ExeCreateBezierSphere( int nParentId, const Point3d& ptCenter, double dR, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateSurfBezierTria2D( int nParentId, int nSurfBzId, int nTextHeight, bool bShowTrim, int* pnCount) ;
|
||||
EXE_EXPORT int ExeCreateSurfBzByFlatContour( int nParentId, int nCrvId, double dLinTol) ;
|
||||
EXE_EXPORT int ExeCreateSurfBzByRegion( int nParentId, const INTVECTOR& vCrvId, double dLinTol) ;
|
||||
EXE_EXPORT int ExeCreateSurfBzByExtrusion( int nParentId, int nCrvId, const Vector3d& vtExtr, bool bCapEnds,
|
||||
double dLinTol, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateSurfBzByRegionExtrusion( int nParentId, const INTVECTOR& vCrvIds, const Vector3d& vtExtr, bool bCapEnds,
|
||||
double dLinTol, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateSurfBzByScrewing( int nParentId, int nCrvId,
|
||||
const Point3d& ptAx, const Vector3d& vtAx,
|
||||
double dAngRotDeg, double dMove, bool bCapEnds, double dLinTol, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateSurfBzByRevolve( int nParentId, int nCrvId,
|
||||
const Point3d& ptAx, const Vector3d& vtAx,
|
||||
bool bCapEnds, double dLinTol, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateSurfBzByPointCurve( int nParentId, int nCrvId, const Point3d& ptAx, bool bCapEnds, double dLinTol, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateSurfBzRuled( int nParentId, int nCrvId1, int nCrvId2, int nRuledType, bool bCapEnds, double dLinTol) ;
|
||||
EXE_EXPORT int ExeCreateSurfBzSkinned( int nParentId, const INTVECTOR& nCrvId1, bool bCapEnds, double dLinTol) ;
|
||||
EXE_EXPORT int ExeCreateSurfBzSwept( int nParentId, int nSectId, int nGuideId, const Vector3d& vtAx,
|
||||
bool bCapEnds, double dLinTol, int nRefType) ;
|
||||
|
||||
// GeomDB Create Volume
|
||||
EXE_EXPORT int ExeCreateVolZmap( int nParentId, const Point3d& ptIni, double dDimX,
|
||||
double dDimY, double dDimZ, double dPrec, bool bTriDex, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateVolZmapEmpty( int nParentId, const Point3d& ptIni, double dDimX,
|
||||
double dDimY, double dDimZ, double dPrec, bool bTriDex, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateVolZmapByRegionExtrusion( int nParentId, int nSfrId, double dDimZ, double dPrec, bool bTriDex) ;
|
||||
EXE_EXPORT int ExeCreateVolZmapFromSurfTm( int nParentId, int nStmId, double dPrec, bool bTriDex) ;
|
||||
EXE_EXPORT bool ExeUpdateVolZmapByAddingSurfTm( int nVolZmapId, int nStmId) ;
|
||||
EXE_EXPORT bool ExeUniformVolZmap( int nVolZmapId, double dToler) ;
|
||||
|
||||
// GeomDB PartLayer
|
||||
EXE_EXPORT bool ExeIsPart( int nPartId) ;
|
||||
@@ -458,7 +491,7 @@ EXE_EXPORT bool ExeSetStatus( const INTVECTOR& vIds, int nStat) ;
|
||||
EXE_EXPORT bool ExeRevertStatus( int nId) ;
|
||||
EXE_EXPORT bool ExeGetStatus( int nId, int* pnStat) ;
|
||||
EXE_EXPORT bool ExeGetCalcStatus( int nId, int* pnStat) ;
|
||||
EXE_EXPORT bool ExeSetMark( int nId) ;
|
||||
EXE_EXPORT bool ExeSetMark( int nId, int nMark = 1) ;
|
||||
EXE_EXPORT bool ExeResetMark( int nId) ;
|
||||
EXE_EXPORT bool ExeGetMark( int nId, int* pnMark) ;
|
||||
EXE_EXPORT bool ExeGetCalcMark( int nId, int* pnMark) ;
|
||||
@@ -539,7 +572,7 @@ EXE_EXPORT bool ExeInvertCurve( const INTVECTOR& vIds) ;
|
||||
EXE_EXPORT bool ExeOffsetCurve( int nId, double dDist, int nType) ;
|
||||
EXE_EXPORT int ExeOffsetCurveAdv( int nId, double dDist, int nType, int* pnCount, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EXE_EXPORT int ExeCurveMedialAxis( int nId) ;
|
||||
EXE_EXPORT bool ExeApproxCurve( int nId, int nApprType, double dLinTol) ;
|
||||
EXE_EXPORT bool ExeApproxCurve( int nId, int nApprType, double dLinTol, double dMaxSegmLen = INFINITO) ;
|
||||
EXE_EXPORT bool ExeProjectCurveOnPlane( int nId, const Point3d& ptOn, const Vector3d& vtN, int nRefType) ;
|
||||
EXE_EXPORT bool ExeChangeClosedCurveStart( int nId, double dU) ;
|
||||
EXE_EXPORT bool ExeChangeClosedCurveStartPoint( int nId, const Point3d& ptP, int nRefType) ;
|
||||
@@ -589,44 +622,67 @@ EXE_EXPORT bool ExeModifyCurveCompoCurveToLine( int nId, int nCrv) ;
|
||||
EXE_EXPORT int ExeExplodeCurveCompo( int nId, int* pnCount) ;
|
||||
EXE_EXPORT bool ExeMergeCurvesInCurveCompo( int nId, double dLinTol, bool bStartEnd) ;
|
||||
EXE_EXPORT bool ExeRemoveCurveCompoUndercutOnY( int nId, double dLinTol) ;
|
||||
EXE_EXPORT bool ExeCurveCompoSetTempProp( int nId, int nCrv, int nProp, int nPropInd = 0) ;
|
||||
EXE_EXPORT bool ExeCurveCompoSetTempParam( int nId, int nCrv, double dParam, int nParamInd = 0) ;
|
||||
EXE_EXPORT bool ExeChainCurvesInGroup( int nGroupId, const Point3d& ptNear, int nRefType) ;
|
||||
EXE_EXPORT bool ExeReorderCurvesInGroup( int nGroupId, const Point3d& ptNear, int nRefType) ;
|
||||
EXE_EXPORT bool ExeProjectCurveOnSurfTm( int nCurveId, int nSurfTmId, const Vector3d& vtDir, int nDestGrpId, double dLinTol, int nRefType) ;
|
||||
EXE_EXPORT int ExeCurveGetVoronoi( int nId, int nDestGrpId, int nBound, int* pnCount) ;
|
||||
EXE_EXPORT int ExeCurveGetMedialAxis( int nId, int nDestGrpId, int nSide, int* pnCount) ;
|
||||
EXE_EXPORT bool ExeProjectCurveOnSurfTm( int nCurveId, int nSurfTmId, const Vector3d& vtDir, int nDestGrpId,
|
||||
double dLinTol, double dMaxSegmLen, int nRefType) ;
|
||||
EXE_EXPORT bool ExeProjectCurveOnSurfTmExt( int nCurveId, int nSurfTmId, int nGuideId, int nDestGrpId,
|
||||
double dLinTol, double dMaxSegmLen, bool bDirFromGuide) ;
|
||||
EXE_EXPORT bool ExeProjectCurveOnSurfBz( int nCurveId, int nSurfBzId, const Vector3d& vtDir, int nDestGrpId,
|
||||
double dLinTol, double dMaxSegmLen, int nRefType) ;
|
||||
EXE_EXPORT bool ExeProjectCurveOnSurfBzExt( int nCurveId, int nSurfBzId, int nGuideId, int nDestGrpId,
|
||||
double dLinTol, double dMaxSegmLen, bool bDirFromGuide) ;
|
||||
EXE_EXPORT int ExeCurveGetVoronoi( const INTVECTOR& vIds, int nDestGrpId, int nBound, int* pnCount) ;
|
||||
EXE_EXPORT int ExeCurveGetMedialAxis( const INTVECTOR& vIds, int nDestGrpId, int nSide, int* pnCount) ;
|
||||
EXE_EXPORT int ExeCurveGetFatCurve( int nId, int nDestGrpId, double dRad, bool bSquareEnds, bool bSquareMids, int* pnCount) ;
|
||||
EXE_EXPORT bool ExeCurveBezierIncreaseDegree( int nCrvId) ;
|
||||
EXE_EXPORT bool ExeCurveBezierDecreaseDegree( int nCrvId, double dTol = 100) ;
|
||||
EXE_EXPORT bool ExeCurveBezierApproxToNonRat( int nCrvId, double dTol = 10 * EPS_SMALL) ;
|
||||
EXE_EXPORT bool ExeCurveBezierApproxWithCubicBeziers( int nCrvId, double dTol = 10 * EPS_SMALL) ;
|
||||
|
||||
// GeomDb Surf Modify
|
||||
EXE_EXPORT bool ExeInvertSurface( const INTVECTOR& vIds) ;
|
||||
EXE_EXPORT int ExeExplodeSurface( int nId, int* pnCount) ;
|
||||
EXE_EXPORT bool ExeApproxSurface( int nId, double dLinTol) ;
|
||||
EXE_EXPORT bool ExeApproxSurface( int nId, double dLinTol, double dTriaMinSide = 100 * EPS_SMALL) ;
|
||||
EXE_EXPORT bool ExeSurfFrAdd( int nId1, int nId2) ;
|
||||
EXE_EXPORT bool ExeSurfFrSubtract( int nId1, int nId2) ;
|
||||
EXE_EXPORT bool ExeSurfFrIntersect( int nId1, int nId2) ;
|
||||
EXE_EXPORT bool ExeSurfFrOffset( int nId, double dDist, int nType) ;
|
||||
EXE_EXPORT bool ExeSurfFrOffsetAdv( int nId, double dDist, int nType, int& nNewId) ;
|
||||
EXE_EXPORT bool ExeSurfFrEraseChunk( int nId, int nChunk) ;
|
||||
EXE_EXPORT bool ExeSurfFrMoveSimpleNoCollision( int nId1, int nId2, const Vector3d& vtDir, double& dLen, int nRefType) ;
|
||||
EXE_EXPORT bool ExeSurfFrRotateSimpleNoCollision( int nId1, int nId2, const Point3d& ptCen, double& dAngDeg, int nRefType) ;
|
||||
EXE_EXPORT bool ExeSurfTmMoveVertex( int nId, int nVert, const Point3d& ptNewVert, int nRefType, bool bUpdate) ;
|
||||
EXE_EXPORT bool ExeSurfTmMoveFacet( int nId, int nFacet, const Vector3d& vtMove, int nRefType, bool bUpdate) ;
|
||||
EXE_EXPORT int ExeSurfTmToTriangles( int nId, int* pnCount) ;
|
||||
EXE_EXPORT bool ExeSurfTmRemoveFacet( int nId, int nFacet) ;
|
||||
EXE_EXPORT bool ExeSurfTmSwapFacets( int nId, int nFacet1, int nFacet2) ;
|
||||
EXE_EXPORT bool ExeSurfTmRemovePart( int nId, int nPart) ;
|
||||
EXE_EXPORT bool ExeCutSurfTmPlane( int nId, const Point3d& ptOn, const Vector3d& vtN, bool bSaveOnEq, int nRefType) ;
|
||||
EXE_EXPORT bool ExeCutSurfBzPlane( int nId, const Point3d& ptOn, const Vector3d& vtN, bool bSaveOnEq, int nRefType) ;
|
||||
EXE_EXPORT bool ExeCutSurfTmClosedCurve( int nSurfId, int nCurveId, bool bSaveOnEq) ;
|
||||
EXE_EXPORT bool ExeSurfTmAdd( int nId1, int nId2, bool bTwoColors = false) ;
|
||||
EXE_EXPORT bool ExeSurfTmSubtract( int nId1, int nId2, bool bTwoColors = false) ;
|
||||
EXE_EXPORT bool ExeSurfTmIntersect( int nId1, int nId2, bool bTwoColors = false) ;
|
||||
EXE_EXPORT bool ExeSurfTmResetTwoColors( int nId) ;
|
||||
EXE_EXPORT int ExeSurfTmSplit( int nId, int nSplitterId, int* pnCount) ;
|
||||
EXE_EXPORT bool ExeSurfTmCut( int nId, int nCutterId, bool bInVsOut, bool bSaveOnEq) ;
|
||||
EXE_EXPORT bool ExeSurfTmSubtractProjectedFacesOnFace( int nSurfId, int nFaceInd, int nDestGrpId,
|
||||
INTVECTOR vSurfsId, bool bOCFlag,
|
||||
bool& bExistProjection, int& nNewId, int& nNewFaceNbr) ;
|
||||
EXE_EXPORT bool ExeSurfTmSetFaceColor( int nId, int nFacet, int nColor) ;
|
||||
EXE_EXPORT bool ExeSurfTmGetTriaColor( int nId, int nTria, int& nColor) ;
|
||||
EXE_EXPORT bool ExeSurfTmResetTwoColors( int nId) ;
|
||||
EXE_EXPORT bool ExeSurfTmSetShowEdges( int nId, bool bShow) ;
|
||||
EXE_EXPORT bool ExeSurfTmGetShowEdges( int nId, bool& bShow) ;
|
||||
EXE_EXPORT bool ExeSurfBzTrim( int nId, int nCutterId) ;
|
||||
EXE_EXPORT bool ExeSurfTmSetSmoothAng( int nId, double dAngDeg) ;
|
||||
|
||||
// GeomDb Volume Modify
|
||||
EXE_EXPORT int ExeExplodeVolume( int nId, int* pnCount) ;
|
||||
EXE_EXPORT bool ExeVolZmapChangeResolution( int nId, int nNewRes) ;
|
||||
EXE_EXPORT bool ExeVolZmapSetShowEdges( int nId, bool bShow) ;
|
||||
EXE_EXPORT bool ExeRemoveVolZmapPart( int nId, int nPart) ;
|
||||
EXE_EXPORT bool ExeVolZmapSetStdTool( const INTVECTOR& vIds, const std::string& sToolName,
|
||||
double dLen, double dDiam, double dCornR, double dCutterH, int nFlag, bool bFirst) ;
|
||||
@@ -639,6 +695,8 @@ EXE_EXPORT bool ExeVolZmapSetMortiserTool( const INTVECTOR& vIds, const std::str
|
||||
double dLen, double dWidth, double dThick, double dCornR, int nFlag, bool bFirst) ;
|
||||
EXE_EXPORT bool ExeVolZmapSetChiselTool( const INTVECTOR& vIds, const std::string& sToolName,
|
||||
double dLen, double dWidth, double dThick, int nFlag, bool bFirst) ;
|
||||
EXE_EXPORT bool ExeVolZmapSetAdditiveTool( const INTVECTOR& vIds, const std::string& sToolName,
|
||||
double dLen, double dDiam, double dCornR, int nFlag, bool bFirst) ;
|
||||
EXE_EXPORT bool ExeVolZmapResetTools( const INTVECTOR& vIds) ;
|
||||
EXE_EXPORT int ExeVolZmapGetToolOutline( int nId, int nDestGrpId, bool bApprox = false) ;
|
||||
EXE_EXPORT bool ExeVolZmapMillingStep( int nId, const Point3d& ptPs, const Vector3d& vtDs,
|
||||
@@ -661,6 +719,7 @@ EXE_EXPORT int ExeSurfFrGetZigZagInfill( int nId, int nDestGrpId, double dStep,
|
||||
// GeomDb Curve Get
|
||||
EXE_EXPORT bool ExeCurveDomain( int nId, double* pdStart, double* pdEnd) ;
|
||||
EXE_EXPORT bool ExeCurveLength( int nId, double* pdLen) ;
|
||||
EXE_EXPORT bool ExeCurveLengthAtParam( int nId, double dPar, double* pdLen) ;
|
||||
EXE_EXPORT bool ExeCurveParamAtLength( int nId, double dLen, double* pdPar) ;
|
||||
EXE_EXPORT bool ExeCurveParamAtPoint( int nId, const Point3d& pt, double dTol, int nRefType, double* pdPar) ;
|
||||
EXE_EXPORT bool ExeCurveLengthAtPoint( int nId, const Point3d& ptOn, double dExtend, double* pdLen) ;
|
||||
@@ -687,6 +746,9 @@ EXE_EXPORT bool ExeCurveCompoCenter( int nId, int nSimpCrv, int nRefId, Point3d&
|
||||
EXE_EXPORT bool ExeCurveCompoRadius( int nId, int nSimpCrv, double& dRad) ;
|
||||
EXE_EXPORT bool ExeCurveCompoAngCenter( int nId, int nSimpCrv, double& dAngCen) ;
|
||||
EXE_EXPORT bool ExeCurveCompoNormVersor( int nId, int nSimpCrv, int nRefId, Vector3d& vtNorm) ;
|
||||
EXE_EXPORT bool ExeCurveCompoGetTempProp( int nId, INTVECTOR& vProp, int nPropInd) ;
|
||||
EXE_EXPORT bool ExeCurveCompoGetTempParam( int nId, DBLVECTOR& vParam, int nParamInd) ;
|
||||
EXE_EXPORT int ExeShowCurveBezierControlPoints( int nCrvId, int nDestGrpId, int* pnCount) ;
|
||||
|
||||
// GeomDb Surf Get
|
||||
EXE_EXPORT bool ExeSurfArea( int nId, double& dArea) ;
|
||||
@@ -694,9 +756,11 @@ EXE_EXPORT bool ExeSurfIsClosed( int nId) ;
|
||||
EXE_EXPORT bool ExeSurfVolume( int nId, double& dVol) ;
|
||||
EXE_EXPORT bool ExeSurfFrNormVersor( int nId, int nRefId, Vector3d& vtNorm) ;
|
||||
EXE_EXPORT bool ExeSurfFrGrossArea( int nId, double& dArea) ;
|
||||
EXE_EXPORT bool ExeSurfFrChunkMaxOffset( int nId, int nChunk, double& dMaxOffset) ;
|
||||
EXE_EXPORT bool ExeSurfFrTestExternal( int nId1, int nId2, double dMinDist) ;
|
||||
EXE_EXPORT int ExeSurfFrChunkCount( int nId) ;
|
||||
EXE_EXPORT int ExeSurfFrChunkSimpleClassify( int nId1, int nChunk1, int nId2, int nChunk2, double dToler = 0) ;
|
||||
EXE_EXPORT bool ExeSurfFrChunkCenter( int nId, int nChunk, int nRefId, Point3d& ptCen, Vector3d& vtN) ;
|
||||
EXE_EXPORT int ExeExtractSurfFrChunkLoops( int nId, int nChunk, int nDestGrpId, int* pnCount) ;
|
||||
EXE_EXPORT int ExeSurfFrGetZigZagInfill( int nId, int nDestGrpId, double dStep, double dAng, bool bSmooth, int* pnCount) ;
|
||||
EXE_EXPORT int ExeSurfTmVertexCount( int nId) ;
|
||||
@@ -704,6 +768,7 @@ EXE_EXPORT int ExeSurfTmFacetCount( int nId) ;
|
||||
EXE_EXPORT int ExeSurfTmPartCount( int nId) ;
|
||||
EXE_EXPORT bool ExeSurfTmGetVertex( int nId, int nVert, int nRefId, Point3d& ptVert) ;
|
||||
EXE_EXPORT bool ExeSurfTmGetNearestVertex( int nId, const Point3d& ptNear, int nRefId, int& nVert, Point3d& ptVert) ;
|
||||
EXE_EXPORT bool ExeSurfTmTriangleNormVersor( int nId, int nTria, int nRefId, Vector3d& vtNorm) ;
|
||||
EXE_EXPORT int ExeSurfTmFacetFromTria( int nId, int nT) ;
|
||||
EXE_EXPORT bool ExeSurfTmFacetAdjacencies( int nId, int nFacet, INTMATRIX& vAdj) ;
|
||||
EXE_EXPORT bool ExeSurfTmFacetNearestEndPoint( int nId, int nFacet, const Point3d& ptNear, int nRefId,
|
||||
@@ -722,12 +787,16 @@ EXE_EXPORT bool ExeSurfTmFacetOppositeSideEx( int nId, int nFacet, const Vector3
|
||||
EXE_EXPORT bool ExeSurfTmFacetsContact( int nId, int nF1, int nF2, int nRefId, bool& bAdjac, Point3d& ptP1, Point3d& ptP2, double& dAng) ;
|
||||
EXE_EXPORT int ExeExtractSurfTmLoops( int nId, int nDestGrpId, int* pnCount) ;
|
||||
EXE_EXPORT int ExeGetSurfTmSilhouette( int nId, const Vector3d& vtDir, double dToler, int nDestGrpId, int nRefType, int* pnCount, bool bAllTria = false) ;
|
||||
EXE_EXPORT int ExeGetSurfTmParSilhouettes( const INTVECTOR& vIds, const Point3d& ptOn, const Vector3d& vtN, const DBLVECTOR& vdDist,
|
||||
double dToler, int nDestGrpId, int nRefType, int* pnCount) ;
|
||||
EXE_EXPORT int ExeExtractSurfTmFacetLoops( int nId, int nFacet, int nDestGrpId, int* pnCount) ;
|
||||
EXE_EXPORT int ExeCopySurfTmFacet( int nId, int nFacet, int nDestGrpId) ;
|
||||
EXE_EXPORT bool ExeSurfTmGetAllVertInFacet( int nId, int nFacet, INTVECTOR& vVert) ;
|
||||
EXE_EXPORT bool ExeSurfTmGetFacetBBox( int nId, int nFacet, int nFlag, BBox3d& b3Box) ;
|
||||
EXE_EXPORT bool ExeSurfTmGetFacetBBoxGlob( int nId, int nFacet, int nFlag, BBox3d& b3Box) ;
|
||||
EXE_EXPORT bool ExeSurfTmGetFacetBBoxRef( int nId, int nFacet, int nFlag, const Frame3d& frRef, BBox3d& b3Box) ;
|
||||
EXE_EXPORT bool ExeSurfTmGetFacetOutlineInfo( int nId, int nFacet, int nRefId,
|
||||
int& nStatus, BOOLVECTOR& vbOpen, INTVECTOR& vnAdj, DBLVECTOR& vdLen, VCT3DVECTOR& vvtNorm, DBLVECTOR& vdElev) ;
|
||||
EXE_EXPORT int ExeSurfTmGetEdges( int nId, int nDestGrpId, bool bSmoothAng, int* pnCount) ;
|
||||
EXE_EXPORT bool ExeSurfBezierGetPoint( int nSurfId, double dU, double dV, int nRefId, Point3d& ptP) ;
|
||||
EXE_EXPORT bool ExeSurfBezierGetPointD1( int nSurfId, double dU, double dV, int nUsd, int nVsd, int nRefId,
|
||||
@@ -740,6 +809,7 @@ EXE_EXPORT bool ExeSurfBezierGetInfo( int nSurfId, int& nDegU, int& nDegV, int&
|
||||
EXE_EXPORT int ExeSurfBezierGetControlCurveU( int nSurfId, int nIndV, int nDestGrpId) ;
|
||||
EXE_EXPORT int ExeSurfBezierGetControlCurveV( int nSurfId, int nIndU, int nDestGrpId) ;
|
||||
EXE_EXPORT int ExeExtractSurfBezierLoops( int nId, int nDestGrpId, int* pnCount) ;
|
||||
EXE_EXPORT int ExeShowSurfBezierControlPoints( int nSrfId, int nDestGrpId, int* pnCount) ;
|
||||
|
||||
// GeomDb Volume Get
|
||||
EXE_EXPORT bool ExeVolZmapVolume( int nId, double& dVol) ;
|
||||
@@ -799,21 +869,32 @@ EXE_EXPORT bool ExePointSurfTmDist( const Point3d& ptP, int nStmId, int nRefType
|
||||
double* pdDist, Point3d& ptMin, int* pnTria) ;
|
||||
|
||||
// Geo Intersect
|
||||
EXE_EXPORT bool ExeLineBoxInters( const Point3d& ptP, const Vector3d& vtDir, const BBox3d& b3Box, INTDBLVECTOR& vInters) ;
|
||||
EXE_EXPORT bool ExeLineCurveInters( const Point3d& ptP, const Vector3d& vtDir, const int nId, const int nRefType,
|
||||
INTDBLVECTOR& vInters) ;
|
||||
EXE_EXPORT bool ExeLineBoxInters( const Point3d& ptP, const Vector3d& vtDir, const BBox3d& b3Box,
|
||||
INTDBLVECTOR& vInters) ;
|
||||
EXE_EXPORT bool ExeLineSurfTmInters( const Point3d& ptP, const Vector3d& vtDir, int nId, int nRefType,
|
||||
INTDBLVECTOR& vInters) ;
|
||||
EXE_EXPORT bool ExeLineSurfBzInters( const Point3d& ptP, const Vector3d& vtDir, int nId, int nRefType,
|
||||
INTDBLVECTOR& vInters) ;
|
||||
EXE_EXPORT bool ExeLineVolZmapInters( const Point3d& ptP, const Vector3d& vtDir, int nId, int nRefType,
|
||||
INTDBLVECTOR& vInters) ;
|
||||
EXE_EXPORT int ExePlaneCurveInters( const Point3d& ptOn, const Vector3d& vtN, const int nId, const int nDestGrpId, const int nRefType,
|
||||
int* pnCount) ;
|
||||
EXE_EXPORT int ExePlaneBoxInters( const Point3d& ptOn, const Vector3d& vtN, const BBox3d& b3Box, int nDestGrpId, int nRefType,
|
||||
int* pnPntCount, int* pnCrvCount, int* pnSrfCount) ;
|
||||
EXE_EXPORT bool ExeLineSurfTmInters( const Point3d& ptP, const Vector3d& vtDir, int nId, int nRefType, INTDBLVECTOR& vInters) ;
|
||||
EXE_EXPORT int ExePlaneSurfTmInters( const Point3d& ptOn, const Vector3d& vtN, int nId, int nDestGrpId, int nRefType, double dToler,
|
||||
int* pnPntCount, int* pnCrvCount, int* pnSrfCount) ;
|
||||
EXE_EXPORT int ExeParPlanesSurfTmInters( const Point3d& ptOn, const Vector3d& vtN, const DBLVECTOR& vdDist, int nId, int nDestGrpId, int nRefType, double dToler,
|
||||
int* pnGrpCount) ;
|
||||
EXE_EXPORT int ExeSurfTmSurfTmInters( int nId1, int nId2, int nDestGrpId, double dToler,
|
||||
int* pnPntCount, int* pnCrvCount, int* pnSrfCount) ;
|
||||
EXE_EXPORT int ExePlaneCurveInters( const Point3d& ptOn, const Vector3d& vtN, const int nId, const int nDestGrpId, const int nRefType, int* pnCount) ;
|
||||
EXE_EXPORT int ExeCurveCurveInters( const int nId1, const int nId2, const int nDestGrpId, int* pnPntCount, int* pnCrvCount) ;
|
||||
EXE_EXPORT bool ExeLineVolZmapInters( const Point3d& ptP, const Vector3d& vtDir, int nId, int nRefType, INTDBLVECTOR& vInters) ;
|
||||
EXE_EXPORT int ExeParPlanesSurfTmInters( const Point3d& ptOn, const Vector3d& vtN, const DBLVECTOR& vdDist, int nId, int nDestGrpId, int nRefType, double dToler,
|
||||
int* pnGrpCount) ;
|
||||
EXE_EXPORT int ExePlaneVolZmapInters( const Point3d& ptOn, const Vector3d& vtN, int nId, int nDestGrpId, int nRefType,
|
||||
int* pnCount) ;
|
||||
EXE_EXPORT int ExeCurveCurveInters( const int nId1, const int nId2, const int nDestGrpId,
|
||||
int* pnPntCount, int* pnCrvCount) ;
|
||||
EXE_EXPORT int ExeCurveSurfTmInters( const int nCrvId, const int nStmId, const int nDestGrpId,
|
||||
int* pnPntCount, int* pnCrvCount) ;
|
||||
EXE_EXPORT int ExeSurfTmSurfTmInters( int nId1, int nId2, int nDestGrpId, double dToler,
|
||||
int* pnPntCount, int* pnCrvCount, int* pnSrfCount) ;
|
||||
|
||||
// Collision Detection
|
||||
EXE_EXPORT int ExeCDeBoxSolid( const Frame3d& frBox, const Vector3d& vtDiag, int nSolidId, double dSafeDist, int nRefType) ;
|
||||
@@ -825,6 +906,16 @@ EXE_EXPORT int ExeCDeConeSolid( const Frame3d& frCone, double dR1, double dR2,
|
||||
EXE_EXPORT int ExeCDeSpheSolid( const Point3d& ptCen, double dR, int nSolidId, double dSafeDist, int nRefType) ;
|
||||
EXE_EXPORT int ExeCDeSolidSolid( int nSolid1Id, int nSolid2Id, double dSafeDist) ;
|
||||
|
||||
// Test Interference
|
||||
EXE_EXPORT int ExeTestBoxSurface( const Frame3d& frBox, const Vector3d& vtDiag, int nSurfId, double dSafeDist, int nRefType) ;
|
||||
EXE_EXPORT int ExeTestRectPrismoidSurface( const Frame3d& frPrismoid, double dBaseLenX, double dBaseLenY,
|
||||
double dTopLenX, double dTopLenY, double dHeight,
|
||||
int nSurfId, double dSafeDist, int nRefType) ;
|
||||
EXE_EXPORT int ExeTestCylSurface( const Frame3d& frCyl, double dR, double dH, int nSurfId, double dSafeDist, int nRefType) ;
|
||||
EXE_EXPORT int ExeTestConeSurface( const Frame3d& frCone, double dR1, double dR2, double dH, int nSurfId, double dSafeDist, int nRefType) ;
|
||||
EXE_EXPORT int ExeTestSpheSurface( const Point3d& ptCen, double dR, int nSurfId, double dSafeDist, int nRefType) ;
|
||||
EXE_EXPORT int ExeTestSurfaceSurface( int nSurf1Id, int nSurf2Id, double dSafeDist) ;
|
||||
|
||||
// Maximum Filler
|
||||
EXE_EXPORT bool ExeMaxFillerStart( void) ;
|
||||
EXE_EXPORT bool ExeMaxFillerAddPart( int nPartId, double dLen) ;
|
||||
@@ -926,6 +1017,7 @@ EXE_EXPORT bool ExeGetMachGroupNewName( std::string& sName) ;
|
||||
EXE_EXPORT int ExeAddMachGroup( const std::string& sName, const std::string& sMachineName) ;
|
||||
EXE_EXPORT int ExeCopyMachGroup( const std::string& sSouName, const std::string& sName) ;
|
||||
EXE_EXPORT bool ExeRemoveMachGroup( int nMGroupId) ;
|
||||
EXE_EXPORT bool ExeChangeMachGroupName( int nId, const std::string& sNewName) ;
|
||||
EXE_EXPORT bool ExeGetMachGroupName( int nId, std::string& sName) ;
|
||||
EXE_EXPORT bool ExeGetMachGroupMachineName( int nId, std::string& sMachineName) ;
|
||||
EXE_EXPORT int ExeGetMachGroupId( const std::string& sName) ;
|
||||
@@ -1018,6 +1110,7 @@ EXE_EXPORT bool ExeTdbGetCurrToolValInNotes( int nType, const std::string& sKey,
|
||||
EXE_EXPORT bool ExeTdbGetCurrToolMaxDepth( double& dMaxDepth) ;
|
||||
EXE_EXPORT bool ExeTdbGetCurrToolThDiam( double& dThDiam) ;
|
||||
EXE_EXPORT bool ExeTdbGetCurrToolThLength( double& dThLen) ;
|
||||
EXE_EXPORT bool ExeTdbCurrToolIsStandardDraw( bool& bStandard) ;
|
||||
EXE_EXPORT int ExeTdbCurrToolDraw( int nGenCtx, int nToolCtx) ;
|
||||
EXE_EXPORT bool ExeTdbReload( void) ;
|
||||
EXE_EXPORT bool ExeTdbSave( void) ;
|
||||
@@ -1116,7 +1209,8 @@ EXE_EXPORT bool ExeApplyMachining( bool bRecalc, bool bPostApply = true) ;
|
||||
EXE_EXPORT bool ExeUpdateMachining( bool bPostApply = true) ;
|
||||
EXE_EXPORT bool ExePreparePreviewMachiningTool( void) ;
|
||||
EXE_EXPORT bool ExeRemovePreviewMachiningTool( void) ;
|
||||
EXE_EXPORT int ExePreviewMachiningTool( int nEntId, int nFlag) ;
|
||||
EXE_EXPORT int ExeGetPreviewMachiningToolStepCount( void) ;
|
||||
EXE_EXPORT int ExePreviewMachiningTool( int nEntId, int nStep) ;
|
||||
EXE_EXPORT bool ExeGetMachiningParam( int nType, bool& bVal) ;
|
||||
EXE_EXPORT bool ExeGetMachiningParam( int nType, int& nVal) ;
|
||||
EXE_EXPORT bool ExeGetMachiningParam( int nType, double& dVal) ;
|
||||
@@ -1133,6 +1227,7 @@ EXE_EXPORT bool ExeUpdateAllMachiningsEx( bool bStopOnFirstErr, std::string& sEr
|
||||
EXE_EXPORT bool ExeGetClEntMove( int nEntId, int& nMove) ;
|
||||
EXE_EXPORT bool ExeGetClEntFlag( int nEntId, int& nFlag, int& nFlag2) ;
|
||||
EXE_EXPORT bool ExeGetClEntIndex( int nEntId, int& nIndex) ;
|
||||
EXE_EXPORT bool ExeGetClEntAxesMask( int nEntId, int& nMask) ;
|
||||
EXE_EXPORT bool ExeGetClEntAxesVal( int nEntId, DBLVECTOR& vAxes) ;
|
||||
|
||||
// Simulation
|
||||
@@ -1157,20 +1252,23 @@ EXE_EXPORT int ExeGetTableId( const std::string& sTable) ;
|
||||
EXE_EXPORT int ExeGetAxisId( const std::string& sAxis) ;
|
||||
EXE_EXPORT int ExeGetHeadId( const std::string& sHead) ;
|
||||
EXE_EXPORT int ExeGetHeadExitCount( const std::string& sHead) ;
|
||||
EXE_EXPORT int ExeGetExitId( const std::string& sHead, int nExit) ;
|
||||
EXE_EXPORT int ExeGetTcPosId( const std::string& sTcPos) ;
|
||||
EXE_EXPORT bool ExeGetAxisToken( const std::string& sAxis, std::string& sToken) ;
|
||||
EXE_EXPORT bool ExeGetAxisType( const std::string& sAxis, bool& bLinear) ;
|
||||
EXE_EXPORT bool ExeGetAxisInvert( const std::string& sAxis, bool& bInvert) ;
|
||||
EXE_EXPORT bool ExeGetAxisOffset( const std::string& sAxis, double& dOffset) ;
|
||||
EXE_EXPORT bool ExeGetAllTablesNames( STRVECTOR& vNames) ;
|
||||
EXE_EXPORT bool ExeGetAllAxesNames( STRVECTOR& vNames) ;
|
||||
EXE_EXPORT bool ExeGetAllHeadsNames( STRVECTOR& vNames) ;
|
||||
EXE_EXPORT bool ExeGetAllTcPosNames( STRVECTOR& vNames) ;
|
||||
// Machine Calc
|
||||
EXE_EXPORT bool ExeSetCalcTable( const std::string& sTable) ;
|
||||
EXE_EXPORT bool ExeSetCalcTool( const std::string& sTool, const std::string& sHead, int nExit) ;
|
||||
EXE_EXPORT bool ExeGetAllCurrAxesName( STRVECTOR& vAxName) ;
|
||||
EXE_EXPORT bool ExeSetRotAxisBlock( const std::string& sAxis, double dVal) ;
|
||||
EXE_EXPORT bool ExeGetCalcTable( std::string& sTable) ;
|
||||
EXE_EXPORT bool ExeGetCalcTool( std::string& sTool, std::string& sHead, int& nExit) ;
|
||||
EXE_EXPORT bool ExeGetAllCurrAxesNames( STRVECTOR& vAxName) ;
|
||||
EXE_EXPORT bool ExeGetRotAxisBlocked( int nInd, std::string& sAxis, double& dVal) ;
|
||||
EXE_EXPORT bool ExeGetCalcAngles( const Vector3d& vtDirT, const Vector3d& vtDirA,
|
||||
int& nStat, double& dAngA1, double& dAngB1, double& dAngA2, double& dAngB2) ;
|
||||
@@ -1207,7 +1305,7 @@ EXE_EXPORT bool ExeGetSceneInfo( std::string& sInfo) ;
|
||||
EXE_EXPORT bool ExeSetBackground( Color TopCol, Color BottomCol, bool bRedraw) ;
|
||||
EXE_EXPORT bool ExeGetBackground( Color& TopCol, Color& BottomCol) ;
|
||||
EXE_EXPORT bool ExeSetLineAttribs( int nWidth) ;
|
||||
EXE_EXPORT bool ExeSetMarkAttribs( Color MarkCol) ;
|
||||
EXE_EXPORT bool ExeSetMarkAttribs( Color MarkCol, Color Mark2Col) ;
|
||||
EXE_EXPORT bool ExeSetSelSurfAttribs( Color SelSurfCol) ;
|
||||
EXE_EXPORT bool ExeSetGeoLineAttribs( Color GlCol) ;
|
||||
EXE_EXPORT bool ExeSetGeoTriaAttribs( Color GtCol) ;
|
||||
@@ -1252,11 +1350,13 @@ EXE_EXPORT bool ExeResetGeoTria( bool bRedraw) ;
|
||||
EXE_EXPORT bool ExeSetWinRect( int nPrevX, int nPrevY, int nCurrX, int nCurrY, bool bRedraw) ;
|
||||
EXE_EXPORT bool ExeResetWinRect( bool bRedraw) ;
|
||||
EXE_EXPORT bool ExeZoomWin( int nPrevX, int nPrevY, int nCurrX, int nCurrY, bool bRedraw) ;
|
||||
EXE_EXPORT bool ExeSetViewOrizzOffsStep( int nDirOffsStep = 0) ;
|
||||
EXE_EXPORT bool ExeSetView( int nDir, bool bRedraw) ;
|
||||
EXE_EXPORT bool ExeSetGenericView( double dAngVertDeg, double dAngHorizDeg, bool bRedraw) ;
|
||||
EXE_EXPORT bool ExeSetViewCenter( const Point3d& ptP, bool bRedraw) ;
|
||||
EXE_EXPORT bool ExePanView( int nPrevX, int nPrevY, int nCurrX, int nCurrY, bool bRedraw) ;
|
||||
EXE_EXPORT bool ExeRotateView( int nPrevX, int nPrevY, int nCurrX, int nCurrY, bool bRedraw) ;
|
||||
EXE_EXPORT bool ExeGetViewOrizzOffsStep( int* pnDirOffsStep) ;
|
||||
EXE_EXPORT bool ExeGetView( int* pnDir) ;
|
||||
EXE_EXPORT bool ExeGetGenericView( double* pdAngVertDeg, double* pdAngHorizDeg) ;
|
||||
EXE_EXPORT bool ExeGetViewUp( Vector3d& vtUp) ;
|
||||
|
||||
+4
-3
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2015-2023
|
||||
// EgalTech 2015-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EgtKeyCodes.h Data : 01.01.23 Versione : 2.5a1
|
||||
// File : EgtKeyCodes.h Data : 16.01.24 Versione : 2.6a1
|
||||
// Contenuto : Costanti per codici di protezione librerie di base.
|
||||
//
|
||||
//
|
||||
@@ -17,6 +17,7 @@
|
||||
// 01.01.21 DS Nuova gestione KEY_BASELIB_VER con versione prodotto e mese.
|
||||
// 01.01.22 DS Passaggio a versione 24.
|
||||
// 01.01.23 DS Passaggio a versione 25.
|
||||
// 16.01.24 DS Passaggio a versione 26.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -24,7 +25,7 @@
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
const int KEY_BASELIB_PROD = 207 ;
|
||||
const int KEY_BASELIB_VER = 2512 ;
|
||||
const int KEY_BASELIB_VER = 2610 ;
|
||||
const int KEY_BASELIB_LEV = 1 ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
+6
-2
@@ -1,13 +1,14 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2014-2015
|
||||
// EgalTech 2014-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : SELkKeyProc.h Data : 27.07.15 Versione : 1.6g1
|
||||
// File : SELkKeyProc.h Data : 25.01.24 Versione : 2.6a1
|
||||
// Contenuto : Dichiarazione funzioni per la gestione della chiave.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 10.09.14 DS Creazione modulo.
|
||||
// 27.02.15 DS Agg. gestione chiavi hardware OxySec.
|
||||
// 25.01.24 DS Agg. GetKeyLevelEx per scadenza assistenza.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -25,6 +26,8 @@ bool ReadKey( const std::string& sKey, const std::string& sScramKey,
|
||||
int VerifyKey( const std::string& sKey, int nProd, int nVer, int nLev) ;
|
||||
int GetKeyLevel( const std::string& sKey, int nProd, int nVer, int nLev,
|
||||
int& nKLev, int& nKExpDays) ;
|
||||
int GetKeyLevelEx( const std::string& sKey, int nProd, int nVer, int nLev,
|
||||
int& nKLev, int& nKExpDays, int& nKAssExpDays) ;
|
||||
int GetKeyOptions( const std::string& sKey, int nProd, int nVer, int nLev,
|
||||
unsigned int& nKOpt1, unsigned int& nKOpt2, int& nKOptExpDays) ;
|
||||
int GetCurrDay( void) ;
|
||||
@@ -41,3 +44,4 @@ const int KEY_ERR_VER = 5 ;
|
||||
const int KEY_ERR_LEV = 6 ;
|
||||
const int KEY_ERR_WRONG_TIME = 7 ;
|
||||
const int KEY_ERR_TIME = 8 ;
|
||||
const int KEY_ERR_NETKEY_NOTFOUND = 9 ;
|
||||
|
||||
@@ -23,6 +23,8 @@ bool SetLockType( int nType) ;
|
||||
bool SetNetHwKey( bool bNetHwKey, int nUserId, const std::string& sAddrPort) ;
|
||||
// Libero chiave di rete (da eseguire al termine del programma)
|
||||
bool CloseNetHwKey( void) ;
|
||||
// Chiave di rete non trovata (il dispositivo non risponde)
|
||||
bool NotFoundNetHwKey( void) ;
|
||||
// Recupero l'identificativo in chiaro della protezione
|
||||
bool GetLockId( std::string& sLockId) ;
|
||||
// Recupero l'identificativo cifrato della protezione
|
||||
|
||||
Reference in New Issue
Block a user