From 880f586861f34191c711bc6e3c18069a3b399f7f Mon Sep 17 00:00:00 2001 From: DarioS Date: Fri, 7 Jul 2023 17:01:09 +0200 Subject: [PATCH 1/7] Include : - aggiornamento prototipi. --- EGkChainCurves.h | 4 +--- EGkDistPointSurfTm.h | 18 +++++++++++++++--- EGkSurfTriMesh.h | 6 ++++-- EXeExecutor.h | 7 ++++++- EgtKeyCodes.h | 2 +- 5 files changed, 27 insertions(+), 10 deletions(-) diff --git a/EGkChainCurves.h b/EGkChainCurves.h index 1019f7c..19451ef 100644 --- a/EGkChainCurves.h +++ b/EGkChainCurves.h @@ -16,7 +16,6 @@ #include "/EgtDev/Include/EGkPointGrid3d.h" #include "/EgtDev/Include/EGkGeoCollection.h" -#include class IGeomDB ; @@ -59,7 +58,6 @@ class ChainCurves EGK_EXPORT bool GetForkIds( INTVECTOR& vForkIds) ; private : - typedef std::unordered_set INTUSET ; struct CrvData { int nId ; Point3d ptStart ; @@ -92,7 +90,7 @@ class ChainCurves private : bool m_bAllowInvert ; double m_dToler ; - INTUSET m_sCrvId ; + INTUNORDSET m_sCrvId ; CRVDATAVECTOR m_vCrvData ; PointGrid3d m_PointGrid ; bool m_bFromNear ; diff --git a/EGkDistPointSurfTm.h b/EGkDistPointSurfTm.h index f9112e1..49b5d46 100644 --- a/EGkDistPointSurfTm.h +++ b/EGkDistPointSurfTm.h @@ -1,13 +1,13 @@ //---------------------------------------------------------------------------- -// EgalTech 2018-2018 +// EgalTech 2018-2023 //---------------------------------------------------------------------------- -// File : EGkDistPointTria.h Data : 11.12.18 Versione : 1.9l2 +// File : EGkDistPointTria.h Data : 06.07.23 Versione : 2.5g1 // Contenuto : Dichiarazione della classe distanza Punto da Trimesh. // // // // Modifiche : 06.12.18 LM Creazione modulo. -// +// 06.07.23 DS Aggiunta GetSurfTmNearestVertex. // //---------------------------------------------------------------------------- @@ -23,6 +23,13 @@ #define EGK_EXPORT __declspec( dllimport) #endif +//---------------------------------------------------------------------------- +// Calcola la distanza tra punto e superficie trimesh. +// Risultati : +// - distanza +// - punto sulla superficie a minima distanza +// - indice del triangolo su cui giace il punto +// - indicazione se il punto di riferimento è dalla parte interna o esterna della superficie. //---------------------------------------------------------------------------- class DistPointSurfTm { @@ -51,3 +58,8 @@ class DistPointSurfTm int m_nMinDistTriaIndex ; bool m_bIsInside ; } ; + +//---------------------------------------------------------------------------- +// Calcola l'indice del vertice della superficie a minima distanza dal punto di riferimento. +//---------------------------------------------------------------------------- +EGK_EXPORT int GetSurfTmNearestVertex( const Point3d& ptP, const ISurfTriMesh& tmSurf) ; diff --git a/EGkSurfTriMesh.h b/EGkSurfTriMesh.h index 0f20b31..e37521a 100644 --- a/EGkSurfTriMesh.h +++ b/EGkSurfTriMesh.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- -// EgalTech 2014-2022 +// EgalTech 2014-2023 //---------------------------------------------------------------------------- -// File : EGkSurfTriMesh.h Data : 10.10.22 Versione : 2.4i4 +// File : EGkSurfTriMesh.h Data : 07.07.23 Versione : 2.5g1 // Contenuto : Dichiarazione della interfaccia ISurfTriMesh. // // @@ -44,6 +44,7 @@ class __declspec( novtable) ISurfTriMesh : public ISurf virtual void SetBoundaryAngle( double dBoundaryAngDeg) = 0 ; virtual void SetSmoothAngle( double dSmoothAngDeg) = 0 ; virtual int AddVertex( const Point3d& ptVert) = 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 ; @@ -89,6 +90,7 @@ class __declspec( novtable) ISurfTriMesh : public ISurf virtual int GetFacetSize( void) const = 0 ; virtual int GetFacetFromTria( int nT) const = 0 ; virtual bool GetAllTriaInFacet( int nF, INTVECTOR& vT) const = 0 ; + virtual bool GetAllVertInFacet( int nF, INTVECTOR& vVert) const = 0 ; virtual bool GetFacetLoops( int nF, POLYLINEVECTOR& vPL) const = 0 ; virtual bool GetFacetAdjacencies( int nF, INTMATRIX& vAdj) const = 0 ; virtual bool GetFacetNearestEndPoint( int nF, const Point3d& ptNear, Point3d& ptEnd, Vector3d& vtN) const = 0 ; diff --git a/EXeExecutor.h b/EXeExecutor.h index d82c2f4..93fe0cc 100644 --- a/EXeExecutor.h +++ b/EXeExecutor.h @@ -590,6 +590,7 @@ EXE_EXPORT bool ExeSurfFrIntersect( int nId1, int nId2) ; EXE_EXPORT bool ExeSurfFrOffset( int nId, double dDist, int nType) ; 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 int ExeSurfTmToTriangles( int nId, int* pnCount) ; EXE_EXPORT bool ExeSurfTmRemoveFacet( int nId, int nFacet) ; EXE_EXPORT bool ExeSurfTmSwapFacets( int nId, int nFacet1, int nFacet2) ; @@ -675,8 +676,11 @@ EXE_EXPORT int ExeSurfFrChunkSimpleClassify( int nId1, int nChunk1, int nId2, i 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 bStepCorrection, bool bInvert, int* pnCount) ; -EXE_EXPORT int ExeSurfTmPartCount( int nId) ; +EXE_EXPORT int ExeSurfTmVertexCount( int nId) ; 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 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, @@ -695,6 +699,7 @@ 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) ; 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) ; diff --git a/EgtKeyCodes.h b/EgtKeyCodes.h index 5184ef5..8a7f9a0 100644 --- a/EgtKeyCodes.h +++ b/EgtKeyCodes.h @@ -24,7 +24,7 @@ //---------------------------------------------------------------------------- const int KEY_BASELIB_PROD = 207 ; -const int KEY_BASELIB_VER = 2506 ; +const int KEY_BASELIB_VER = 2507 ; const int KEY_BASELIB_LEV = 1 ; //---------------------------------------------------------------------------- From 3106768d3941a9de8f6debe2bd6bad84c857fc6e Mon Sep 17 00:00:00 2001 From: DarioS Date: Mon, 10 Jul 2023 11:12:33 +0200 Subject: [PATCH 2/7] Include : - aggiornamento prototipi. --- EGkGdbIterator.h | 6 +++++- EGkGeomDB.h | 7 ++++++- EGnStringUtils.h | 8 ++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/EGkGdbIterator.h b/EGkGdbIterator.h index 7c20cef..d07163b 100644 --- a/EGkGdbIterator.h +++ b/EGkGdbIterator.h @@ -1,13 +1,14 @@ //---------------------------------------------------------------------------- // EgalTech 2013-2023 //---------------------------------------------------------------------------- -// File : EGkGdbIterator.h Data : 29.01.23 Versione : 2.5a2 +// File : EGkGdbIterator.h Data : 09.07.23 Versione : 2.5g1 // Contenuto : Dichiarazione della interfaccia IGdbIterator. // // // // Modifiche : 04.12.13 DS Creazione modulo. // 29.01.23 DS Aggiunte GetAllInfo e CopyAllInfoFrom. +// 09.07.23 DS Aggiunte SetStipple e GetStipple. // //---------------------------------------------------------------------------- @@ -144,6 +145,9 @@ class __declspec( novtable) IGdbIterator virtual bool RemoveInfo( const std::string& sKey) = 0 ; virtual bool GetAllInfo( STRVECTOR& vsInfo) const = 0 ; virtual bool CopyAllInfoFrom( const IGdbIterator& iIter) = 0 ; + // Stipple + virtual bool SetStipple( int nFactor, int nPattern) = 0 ; + virtual bool GetStipple( int& nFactor, int& nPattern) const = 0 ; // TextureData virtual bool SetTextureName( const std::string& sTxrName) = 0 ; virtual bool SetTextureFrame( const Frame3d& frTxrRef) = 0 ; diff --git a/EGkGeomDB.h b/EGkGeomDB.h index c76fc8d..e8b59a5 100644 --- a/EGkGeomDB.h +++ b/EGkGeomDB.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- // EgalTech 2013-2023 //---------------------------------------------------------------------------- -// File : EGkGeomDB.h Data : 29.01.23 Versione : 2.5a +// File : EGkGeomDB.h Data : 09.07.23 Versione : 2.5g1 // Contenuto : Dichiarazione della interfaccia IGeomDB. // // @@ -12,6 +12,7 @@ // 30.05.14 DS Agg. metodi di Shear. // 03.12.14 DS Aggiunta gestione riferimento di griglia. // 29.01.23 DS Aggiunta GetAllInfo. +// 09.07.23 DS Aggiunte DumpStipple, SetStipple e GetStipple. // //---------------------------------------------------------------------------- @@ -179,6 +180,10 @@ class __declspec( novtable) IGeomDB virtual bool RemoveInfo( int nId, const std::string& sKey) = 0 ; virtual bool GetAllInfo( int nId, STRVECTOR& vsInfo) const = 0 ; virtual bool CopyAllInfoFrom( int nId, int nSouId) = 0 ; + // Stipple (significativo solo per curve) + virtual bool DumpStipple( int nId, std::string& sOut, bool bMM = true, const char* szNewLine = "\n") const = 0 ; + virtual bool SetStipple( int nId, int nFactor, int nPattern) = 0 ; + virtual bool GetStipple( int nId, int& nFactor, int& nPattern) const = 0 ; // TextureData virtual bool DumpTextureData( int nId, std::string& sOut, bool bMM = true, const char* szNewLine = "\n") const = 0 ; virtual bool SetTextureName( int nId, const std::string& sTxrName) = 0 ; diff --git a/EGnStringUtils.h b/EGnStringUtils.h index b728333..8e51f5b 100644 --- a/EGnStringUtils.h +++ b/EGnStringUtils.h @@ -196,11 +196,11 @@ EGN_EXPORT bool FromString( const std::string& sVal, STRVECTOR& vsVal) ; //---------------------------------------------------------------------------- inline const std::string -ToString( int nVal, int nPrec = 1) +ToString( int nVal, int nPrec = 1, int nRadix = 10) { // eseguo conversione char szBuff[24] ; - int nErr = _itoa_s( nVal, szBuff, 10) ; + int nErr = _itoa_s( nVal, szBuff, nRadix) ; // se errore, ritorno stringa opportuna if ( nErr != 0) { _ASSERT( 0) ; @@ -216,11 +216,11 @@ ToString( int nVal, int nPrec = 1) return sBuff ; } inline const std::string -ToString( unsigned int nVal, int nPrec = 1) +ToString( unsigned int nVal, int nPrec = 1, int nRadix = 10) { // eseguo conversione char szBuff[24] ; - int nErr = _ui64toa_s( nVal, szBuff, 24, 10) ; + int nErr = _ultoa_s( nVal, szBuff, nRadix) ; // se errore, ritorno stringa opportuna if ( nErr != 0) { _ASSERT( 0) ; From e62a6036a46e3ff4639729bf903fd1388a8b93f3 Mon Sep 17 00:00:00 2001 From: DarioS Date: Thu, 20 Jul 2023 20:44:22 +0200 Subject: [PATCH 3/7] Include : - aggiunta funzione IsGlobFrame. --- EGkFrame3d.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/EGkFrame3d.h b/EGkFrame3d.h index 6c35eb0..5fb7f16 100644 --- a/EGkFrame3d.h +++ b/EGkFrame3d.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- -// EgalTech 2013-2014 +// EgalTech 2013-2023 //---------------------------------------------------------------------------- -// File : EGkFrame3d.h Data : 30.05.14 Versione : 1.5e10 +// File : EGkFrame3d.h Data : 20.07.23 Versione : 2.5g2 // Contenuto : Dichiarazione della classe Reference Frame 3d. // // @@ -167,3 +167,12 @@ AreSameFrame( const Frame3d& frRef1, const Frame3d& frRef2) return false ; return true ; } + +//---------------------------------------------------------------------------- +// Verifica se il riferimento coincide con quello globale (o identità) +//---------------------------------------------------------------------------- +inline bool +IsGlobFrame( const Frame3d& frRef) +{ + return AreSameFrame( frRef, GLOB_FRM) ; +} From 340d11635dfad4abb3d707c4d55f269ab03f2d41 Mon Sep 17 00:00:00 2001 From: DarioS Date: Fri, 21 Jul 2023 15:10:21 +0200 Subject: [PATCH 4/7] Include : - aggiunta funzione inline ConvertCurveToComposite. --- EGkCurveComposite.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/EGkCurveComposite.h b/EGkCurveComposite.h index 63f293d..11144d7 100644 --- a/EGkCurveComposite.h +++ b/EGkCurveComposite.h @@ -84,6 +84,19 @@ inline ICurveComposite* GetCurveComposite( IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO) return nullptr ; return (static_cast(pGObj)) ; } +inline ICurveComposite* ConvertCurveToComposite( IGeoObj* pGObj) + { if ( pGObj == nullptr || ( pGObj->GetType() & GEO_CURVE) == 0) { + delete pGObj ; + return nullptr ; + } + ICurveComposite* pCrvCo = CreateCurveComposite() ; + if ( pCrvCo == nullptr) { + delete pGObj ; + return nullptr ; + } + pCrvCo->AddCurve( static_cast( pGObj)) ; + return pCrvCo ; + } //---------------------------------------------------------------------------- // Raccolte di puntatori a ICurveComposite From 1599910667a09c04ff861b5a8429d024ddd2730e Mon Sep 17 00:00:00 2001 From: DarioS Date: Fri, 28 Jul 2023 11:21:56 +0200 Subject: [PATCH 5/7] Include : - aggiornamento prototipi. --- EGkCurveByApprox.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/EGkCurveByApprox.h b/EGkCurveByApprox.h index 1ae61aa..f6af2ec 100644 --- a/EGkCurveByApprox.h +++ b/EGkCurveByApprox.h @@ -1,13 +1,13 @@ //---------------------------------------------------------------------------- -// EgalTech 2015-2015 +// EgalTech 2015-2023 //---------------------------------------------------------------------------- -// File : EGkCurveByApprox.h Data : 23.07.15 Versione : 1.6g7 +// File : EGkCurveByApprox.h Data : 28.07.23 Versione : 2.5g3 // Contenuto : Dichiarazione della classe CurveByApprox. // // // // Modifiche : 23.07.15 DS Creazione modulo. -// +// 28.07.23 DS GetArcs e GetArcsCorner. // //---------------------------------------------------------------------------- @@ -35,10 +35,11 @@ class CurveByApprox EGK_EXPORT bool Reset( void) ; EGK_EXPORT bool AddPoint( const Point3d& ptP) ; EGK_EXPORT ICurve* GetCurve( int nType, double dLinTol, double dAngTolDeg, double dLinFea) ; - EGK_EXPORT bool GetArcs( double dLinTol, double dAngTolDeg, double dLinFea, PolyArc& PA) ; + EGK_EXPORT bool GetArcs( double dLinTol, double dAngTolDeg, PolyArc& PA) ; + EGK_EXPORT bool GetArcsCorner( double dLinTol, double dAngTolDeg, double dLinFea, PolyArc& PA) ; public : - enum TYPE { ARCS_CORNER = 1, CUBIC_BEZIERS = 2} ; + enum TYPE { ARCS = 0, ARCS_CORNER = 1, CUBIC_BEZIERS = 2} ; private : bool CalcParameterization( void) ; From 11bbd29d0e720ed594e28340c788879561613f2b Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Wed, 2 Aug 2023 20:03:19 +0200 Subject: [PATCH 6/7] Include : - aggiornato codice di protezione mensile. --- EgtKeyCodes.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EgtKeyCodes.h b/EgtKeyCodes.h index 8a7f9a0..b19d875 100644 --- a/EgtKeyCodes.h +++ b/EgtKeyCodes.h @@ -24,7 +24,7 @@ //---------------------------------------------------------------------------- const int KEY_BASELIB_PROD = 207 ; -const int KEY_BASELIB_VER = 2507 ; +const int KEY_BASELIB_VER = 2508 ; const int KEY_BASELIB_LEV = 1 ; //---------------------------------------------------------------------------- From e563bbf302fddd986b91d4055cecff76b5537bd8 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 3 Aug 2023 11:16:48 +0200 Subject: [PATCH 7/7] =?UTF-8?q?Include=20:=20-=20in=20ConvertCurveToCompos?= =?UTF-8?q?ite=20aggiunta=20gestione=20estrusione,=20spessore=20e=20propri?= =?UTF-8?q?et=C3=A0=20temporanee.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EGkCurveComposite.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/EGkCurveComposite.h b/EGkCurveComposite.h index 11144d7..48b90ec 100644 --- a/EGkCurveComposite.h +++ b/EGkCurveComposite.h @@ -94,7 +94,19 @@ inline ICurveComposite* ConvertCurveToComposite( IGeoObj* pGObj) delete pGObj ; return nullptr ; } - pCrvCo->AddCurve( static_cast( pGObj)) ; + ICurve* pCrv = static_cast( pGObj) ; + Vector3d vtExtr ; + if ( pCrv->GetExtrusion( vtExtr) && ! vtExtr.IsSmall()) + pCrvCo->SetExtrusion( vtExtr) ; + double dThick ; + if ( pCrv->GetThickness( dThick) && abs( dThick) > EPS_SMALL) + pCrvCo->SetThickness( dThick) ; + for ( int i = 0 ; i < 2 ; ++ i) { + int nProp = pCrv->GetTempProp( i) ; + if ( nProp != 0) + pCrvCo->SetTempProp( nProp, i) ; + } + pCrvCo->AddCurve( pCrv) ; return pCrvCo ; }