Compare commits

...

23 Commits

Author SHA1 Message Date
Daniele Bariletti e9c515b1cb Merge branch 'master' into CmdCreateSurfBezier 2024-03-21 15:15:09 +01:00
Daniele Bariletti e4d75803ce Include :
- modificato il nome di una funzione per le Bezier.
2024-03-21 15:02:17 +01:00
SaraP cc2290fdde Include :
- aggiunti prototipi per Voronoi.
2024-03-15 16:04:03 +01:00
Dario Sassi 5870d60433 Include :
- aggiornamento prototipi.
2024-03-14 20:04:15 +01:00
Daniele Bariletti c709b90c74 Include :
- aggiunto il caso delle curve compo degeneri, composte da un solo punto.
2024-03-14 18:02:56 +01:00
SaraP b6947be971 Include :
- aggiornamento costanti per geometrie di lavorazione.
2024-03-14 10:29:44 +01:00
Daniele Bariletti 6cb8988822 Include :
- aggiunta la funzione getEdges3D per le sup di Bezier.
2024-03-14 10:05:25 +01:00
Dario Sassi 5424ebcfd1 Include :
- aggiornamento prototipi.
2024-03-13 09:27:48 +01:00
Dario Sassi 0c6127648c Include :
- aggiornamento prototipi.
2024-03-10 10:27:45 +01:00
Daniele Bariletti c259450b4f Merge branch 'master' into CmdCreateSurfBezier 2024-03-08 16:37:05 +01:00
Daniele Bariletti 3f86c9f333 Include :
- migliorate le funzioni per il recupero delle coordinate parametriche di un punto su una sup di bezier.
2024-03-08 16:35:01 +01:00
Daniele Bariletti a488d0248c Include :
- aggiunta di funzioni per il recupero della controimmagine di punti e curve su una superficie di Bezier.
2024-03-05 17:18:28 +01:00
Daniele Bariletti b90644dcd2 Include :
- aggiornamento prototipi.
2024-02-28 10:32:41 +01:00
Daniele Bariletti eab80828f7 Merge branch 'master' into CmdCreateSurfBezier 2024-02-28 09:30:36 +01:00
Daniele Bariletti c96642c373 Merge remote-tracking branch 'origin/HEAD' into CmdCreateSurfBezier 2024-02-27 16:40:29 +01:00
Daniele Bariletti 7a36482787 Include :
- aggiunta della funzione per il calcolo dei poli nelle sup di Bezier
- aggiunta la funzione per disegnare i triangoli nello spazio parametrico di una superficie Bezier.
2024-02-27 16:38:02 +01:00
Daniele Bariletti 22c4c89a5b Include :
- aggiunta funzione per tagliare una superficie bezier con un piano.
2024-02-20 12:29:50 +01:00
Daniele Bariletti 0b2c4b24b1 Merge branch 'Dist-Inters_Bezier' into CmdCreateSurfBezier 2024-02-14 14:43:41 +01:00
Daniele Bariletti c5da2d52f5 Include :
- aggiunta funzione per creazione di una sfera come superficie bezier.
2024-02-14 14:41:45 +01:00
Daniele Bariletti 93b180b129 Include :
- aggiunti i comandi per la chiamata da CAM dell'intersezione linea sup. Bezier.
2024-02-12 12:55:59 +01:00
Daniele Bariletti 29c292b075 Include :
- aggiunta intersezione tra linea e superficie di Bezier.
2024-02-08 12:05:33 +01:00
Daniele Bariletti 63b93b0cbf Merge branch 'master' into Dist-Inters_Bezier 2024-02-06 16:20:47 +01:00
Daniele Bariletti 4a81b0fc94 Include :
- aggiunte coordinate U e V ai vertici delle TriMesh.
2023-09-18 10:43:11 +02:00
14 changed files with 176 additions and 14 deletions
+1
View File
@@ -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) ;
+4
View File
@@ -94,3 +94,7 @@ EGK_EXPORT bool CalcCurveMedialAxis( const ICurve& crvC, ICURVEPOVECTOR& vCrvs,
//----------------------------------------------------------------------------
//! Calcola l'offset completo di una curva
EGK_EXPORT bool CalcCurveFatCurve( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, double dRadius, bool bSquareEnds, bool bSquareMids) ;
//----------------------------------------------------------------------------
//! Resetta l'oggetto voronoi associato alla curva liberandone la memoria
EGK_EXPORT void ResetCurveVoronoi( const ICurve& crvC) ;
+2
View File
@@ -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 ;
} ;
//-----------------------------------------------------------------------------
+5 -2
View File
@@ -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 ;
+1
View File
@@ -88,3 +88,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
+15 -1
View File
@@ -14,6 +14,7 @@
#pragma once
#include "/EgtDev/Include/EGkSurf.h"
#include "/EgtDev/Include/EGkCurveComposite.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
class PolyLine ;
@@ -36,7 +37,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 ;
@@ -59,6 +60,19 @@ class __declspec( novtable) ISurfBezier : public ISurf
virtual bool GetControlCurveOnV( int nIndU, PolyLine& plCtrlV) const = 0 ;
virtual const ISurfTriMesh* GetAuxSurf( void) const = 0 ;
virtual bool GetLeaves ( std::vector<std::tuple<int, Point3d, Point3d>>& vLeaves) const = 0 ;
virtual bool GetTriangles2D( std::vector<std::tuple<int,Point3d, Point3d, Point3d>>& vTria2D) const = 0 ;
virtual bool UnprojectPointFromStm( int nT, const Point3d& ptI, Point3d& ptSP, int nIL) const = 0 ;
virtual bool UnprojectPointFromStm( int nT, const Point3d& ptI, Point3d& ptSP, int nIL, const Point3d& ptIPrev, bool* bTroughEdge = nullptr) const = 0 ;
virtual bool UnprojectPoint( const Point3d& pt3D, Point3d& ptParam, const Point3d& ptIPrev, bool* bTroughEdge = nullptr, const Plane3d* plCut = nullptr) const = 0 ;
virtual bool UnprojectCurveFromStm( const ICurveComposite* pCC, ICRVCOMPOPVECTOR& vpCC, const Plane3d* pPlCut) const = 0 ;
// taglio la parte della superficie dalla parte positiva del versore del piano.
// Il booleano indica se tenere eventuali triangoli della trimesh ausiliaria che sono coplanari ed equiversi al piano di taglio
virtual bool Cut( const Plane3d& plPlane, bool bSaveOnEq) = 0 ;
// funzione da chiamare per calcolare i poli della superficie. NECESSARIO se si vuole tagliare la superficie con un piano
virtual bool CalcPoles( void) ;
virtual bool IncreaseUV( double& dU, double dx, bool bUOrV, double* dUVCopy = nullptr, bool bModifyOrig = true) const = 0 ;
virtual bool IncreaseUV( Point3d& ptUV, Vector3d vtH , Point3d* ptUVCopy, bool bModifyOrig) const = 0 ;
virtual bool GetLoops( ICRVCOMPOPOVECTOR& vCC, bool bLineOrBezier, int nEdge = -1) const = 0 ;
} ;
//-----------------------------------------------------------------------------
+1
View File
@@ -51,6 +51,7 @@ class __declspec( novtable) ISurfFlatRegion : public ISurf
virtual int GetChunkSimpleClassification( int nChunk, const ISurfFlatRegion& Other, int nOthChunk) const ; // compare only outsides
virtual bool CalcVoronoiDiagram( ICURVEPOVECTOR& vCrvs, int nBound = 3) const = 0 ;
virtual bool CalcMedialAxis( ICURVEPOVECTOR& vCrvs, int nSide = 1) const = 0 ;
virtual void ResetVoronoiObject( void) const = 0 ;
} ;
//-----------------------------------------------------------------------------
+4 -2
View File
@@ -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,6 +43,7 @@ class __declspec( novtable) ISurfTriMesh : public ISurf
virtual void SetLinearTolerance( double dLinTol) = 0 ;
virtual void SetBoundaryAngle( double dBoundaryAngDeg) = 0 ;
virtual void SetSmoothAngle( double dSmoothAngDeg) = 0 ;
virtual void SetShowEdges( bool bShow) = 0 ;
virtual int AddVertex( const Point3d& ptVert, double dU = -1, double dV = -1) = 0 ;
virtual bool MoveVertex( int nInd, const Point3d& ptNewVert) = 0 ;
virtual int AddTriangle( const int nIdVert[3], int nTFlag = 0) = 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 ;
+5 -3
View File
@@ -1,14 +1,14 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2023
// EgalTech 2015-2024
//----------------------------------------------------------------------------
// File : EGkVolZmap.h Data : 12.09.23 Versione : 2.5i1
// File : EGkVolZmap.h Data : 09.03.24 Versione : 2.6c2
// 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.
//
//----------------------------------------------------------------------------
@@ -39,6 +39,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 ;
+13
View File
@@ -211,6 +211,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,
@@ -529,6 +538,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) ;
@@ -587,6 +598,8 @@ EIN_EXPORT int __stdcall EgtExtractSurfFrChunkLoops( int nId, int nChunk, int n
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,
+6 -4
View File
@@ -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
+13 -2
View File
@@ -233,8 +233,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,
@@ -364,6 +367,8 @@ 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) ;
// GeomDB Create Volume
EXE_EXPORT int ExeCreateVolZmap( int nParentId, const Point3d& ptIni, double dDimX,
@@ -611,26 +616,30 @@ EXE_EXPORT bool ExeSurfFrOffsetAdv( int nId, double dDist, int nType, int& nNewI
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 ExeSurfTmResetTwoColors( int nId) ;
EXE_EXPORT bool ExeSurfTmSetShowEdges( int nId, bool bShow) ;
EXE_EXPORT bool ExeSurfBzTrim( int nId, int nCutterId) ;
// 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) ;
@@ -809,6 +818,8 @@ EXE_EXPORT bool ExeLineBoxInters( const Point3d& ptP, const Vector3d& vtDir, con
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,
+79
View File
@@ -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) ;
+27
View File
@@ -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* CreateBezierSphere( const Point3d& ptCenter, double dR) ;