diff --git a/EGkDistLineLine.h b/EGkDistLineLine.h new file mode 100644 index 0000000..1fa0203 --- /dev/null +++ b/EGkDistLineLine.h @@ -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 ; +} ; diff --git a/EGkLuaAux.h b/EGkLuaAux.h index 9cd5510..cf2e004 100644 --- a/EGkLuaAux.h +++ b/EGkLuaAux.h @@ -1,13 +1,14 @@ //---------------------------------------------------------------------------- // EgalTech 2015-2024 //---------------------------------------------------------------------------- -// File : EGkLuaAux.h Data : 14.04.24 Versione : 2.6d4 +// 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. // //---------------------------------------------------------------------------- @@ -276,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) diff --git a/EGkVolZmap.h b/EGkVolZmap.h index 27966e9..bcd4e29 100644 --- a/EGkVolZmap.h +++ b/EGkVolZmap.h @@ -88,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 ; } ; //----------------------------------------------------------------------------- diff --git a/EGnLuaAux.h b/EGnLuaAux.h index 0767a40..98fa942 100644 --- a/EGnLuaAux.h +++ b/EGnLuaAux.h @@ -323,6 +323,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) diff --git a/EXeExecutor.h b/EXeExecutor.h index f59595e..a0ea65f 100644 --- a/EXeExecutor.h +++ b/EXeExecutor.h @@ -389,6 +389,8 @@ EXE_EXPORT int ExeCreateVolZmapEmpty( int nParentId, const Point3d& ptIni, doub 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) ; @@ -767,6 +769,8 @@ EXE_EXPORT bool ExeSurfTmGetAllVertInFacet( int nId, int nFacet, INTVECTOR& vVer 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,