Merge branch '3dm_import+trim&mesh'
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2023
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EExImport3dm.h Data : 26.06.23 Versione : 2.5f1
|
||||
// Contenuto : Dichiarazione della interfaccia IImport3dm.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 26.06.23 DB Creazione modulo.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkGeomDB.h"
|
||||
#include <string>
|
||||
|
||||
//----------------------- Macro per import/export ----------------------------
|
||||
#undef EEK_EXPORT
|
||||
#if defined( I_AM_EEX) // da definirsi solo nella DLL
|
||||
#define EEX_EXPORT __declspec( dllexport)
|
||||
#else
|
||||
#define EEX_EXPORT __declspec( dllimport)
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
class __declspec( novtable) IImport3dm
|
||||
{
|
||||
public :
|
||||
virtual ~IImport3dm( void) {}
|
||||
virtual bool Import( const std::string& sFile, IGeomDB* pGDB, int nIdGroup, double dScaleFactor = 1,
|
||||
double dTextHeight = 2.0, double dExtLine = 5.0, double dArrLen = 5.0, double dTextDist = 2.0,
|
||||
bool bLenIsMM = true, int nDecDig = -2, std::string sFont = "ModernPropS.Nfe") = 0 ;
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
extern "C" {
|
||||
EEX_EXPORT IImport3dm* CreateImport3dm( void) ;
|
||||
}
|
||||
+5
-1
@@ -32,14 +32,18 @@ struct CNurbsData
|
||||
bool bRat ; // flag di curva razionale (pesi non tutti unitari)
|
||||
bool bPeriodic ; // flag per segnalare vettore dei nodi periodico
|
||||
bool bClosed ; // flag di curva chiusa
|
||||
bool bClamped ; // flag di curva clamped
|
||||
bool bExtraKnotes ; // flag per segnalare presenza di nodi extra all'inizio e fine (totale 2)
|
||||
DBLVECTOR vU ; // vettore dei nodi
|
||||
PNTVECTOR vCP ; // vettore dei punti di controllo
|
||||
DBLVECTOR vW ; // vettore dei pesi
|
||||
|
||||
CNurbsData( void) : nDeg( 0), bRat( false), bPeriodic( false), bClosed( false), bExtraKnotes( false) {}
|
||||
CNurbsData( void) : nDeg( 0), bRat( false), bPeriodic( false), bClosed( false), bClamped( false), bExtraKnotes(false) {}
|
||||
} ;
|
||||
|
||||
// N.B. : in caso la curva sia razionale i punti di controllo sono in forma NON OMOGENEA [ x, y, z, w] ( dove la forma OMOGENEA è [ w*x, w*y, w*z, w])
|
||||
// tutte le operazioni richiedono la forma OMOGENEA, finite le quali posso riportarmi alla forma NON OMOGENEA
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Trasforma un arco in una nuova curva di Bezier semplice o composta
|
||||
EGK_EXPORT ICurve* ArcToBezierCurve( const ICurve* pArc) ;
|
||||
|
||||
@@ -35,13 +35,15 @@ class StmFromTriangleSoup
|
||||
EGK_EXPORT ~StmFromTriangleSoup( void) ;
|
||||
EGK_EXPORT bool Start( int nBuckets = GRID_STD_BUCKETS) ;
|
||||
EGK_EXPORT bool AddTriangle( const Triangle3d& Tria) ;
|
||||
EGK_EXPORT bool AddTriangle( const Point3d& ptP0, const Point3d& ptP1, const Point3d& ptP2) ;
|
||||
EGK_EXPORT bool AddTriangle( const Point3d& ptP0, const Point3d& ptP1, const Point3d& ptP2,
|
||||
const double dU0 = -1, const double dV0 = -1, const double dU1 = -1, const double dV1 = -1,
|
||||
const double dU2 = -1, const double dV2 = -1) ;
|
||||
EGK_EXPORT bool AddSurfTriMesh( const ISurfTriMesh& stmSource) ;
|
||||
EGK_EXPORT bool End( void) ;
|
||||
EGK_EXPORT ISurfTriMesh* GetSurf( void) ;
|
||||
|
||||
private :
|
||||
inline int AddVertex( const Point3d& ptP) ;
|
||||
inline int AddVertex( const Point3d& ptP, const double dU = -1, const double dV = -1) ;
|
||||
|
||||
private :
|
||||
ISurfTriMesh* m_pSTM ;
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2023-2023
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkSurfAux.h Data : 09.08.23 Versione :
|
||||
// Contenuto : Dichiarazione funzioni ausiliarie per ISurf.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 09.08.23 DB Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "/EgtDev/Include/EGkCurveComposite.h"
|
||||
#include "/EgtDev/Include/EGkSurf.h"
|
||||
#include "/EgtDev/Include/EGkGeoCollection.h"
|
||||
|
||||
|
||||
//----------------------- Macro per import/export ----------------------------
|
||||
#undef EGK_EXPORT
|
||||
#if defined( I_AM_EGK) // da definirsi solo nella DLL
|
||||
#define EGK_EXPORT __declspec( dllexport)
|
||||
#else
|
||||
#define EGK_EXPORT __declspec( dllimport)
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Struttura dati per superficie Nurbs
|
||||
struct SNurbsSurfData
|
||||
{
|
||||
int nDegU ; // grado in U
|
||||
int nDegV ; // grado in V
|
||||
bool bRat ; // flag di superficie razionale (pesi non tutti unitari)
|
||||
bool bPeriodicU ; // flag per segnalare vettore dei nodi periodico in U
|
||||
bool bPeriodicV ; // flag per segnalare vettore dei nodi periodico in V
|
||||
bool bClosedU ; // flag di superficie chiusa sul parametro U
|
||||
bool bClosedV ; // flag di superficie chiusa sul parametro V
|
||||
bool bClampedU ; // flag di superficie clamped sul parametro U
|
||||
bool bClampedV ; // flag di superficie clamped sul parametro V
|
||||
bool bExtraKnotes ; // flag per segnalare presenza di nodi extra all'inizio e fine (totale 2)
|
||||
DBLVECTOR vU ; // vettore dei nodi in U
|
||||
DBLVECTOR vV ; // vettore dei nodi in V
|
||||
int nCPU ; // numero di punti di controllo in U
|
||||
int nCPV ; // numero di punti di controllo in V
|
||||
PNTVECTOR vCP ; // vettore dei punti di controllo
|
||||
PNTMATRIX mCP ; // matrice dei punti di controllo
|
||||
DBLMATRIX mW ; // matrice dei pesi
|
||||
|
||||
SNurbsSurfData( void) : nDegU( 0), nDegV( 0), bRat( false), bPeriodicU( false), bPeriodicV( false), bClosedU( false), bClosedV( false),
|
||||
bClampedU( false), bClampedV( false), bExtraKnotes(false) {}
|
||||
} ;
|
||||
|
||||
// N.B. : in caso la superficie sia razionale i punti di controllo sono in forma NON OMOGENEA [ x, y, z, w] ( dove la forma omogenea è [ w*x, w*y, w*z, w])
|
||||
// tutte le operazioni richiedono la forma OMOGENEA, finite le quali posso riportarmi alla forma NON OMOGENEA
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Trasforma una superficie Nurbs standard in una nuova superficie di Bezier semplice o composta
|
||||
EGK_EXPORT bool NurbsSurfaceCanonicalize( SNurbsSurfData& snData) ;
|
||||
EGK_EXPORT ISurf* NurbsToBezierSurface( const SNurbsSurfData& snData) ;
|
||||
@@ -37,6 +37,7 @@ class __declspec( novtable) ISurfBezier : public ISurf
|
||||
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 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 ;
|
||||
virtual const Point3d& GetControlPoint( int nInd, bool* pbOk) const = 0 ;
|
||||
@@ -57,6 +58,7 @@ class __declspec( novtable) ISurfBezier : public ISurf
|
||||
virtual bool GetControlCurveOnU( int nIndV, PolyLine& plCtrlU) const = 0 ;
|
||||
virtual bool GetControlCurveOnV( int nIndU, PolyLine& plCtrlV) const = 0 ;
|
||||
virtual const ISurfTriMesh* GetAuxSurf( void) const = 0 ;
|
||||
virtual bool GetLeaves ( std::vector<std::tuple<int, Point3d, Point3d>>& vLeaves) const = 0 ;
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
+4
-1
@@ -43,7 +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 int AddVertex( const Point3d& ptVert) = 0 ;
|
||||
virtual int AddVertex( const Point3d& ptVert, const double dU = -1, const 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 ;
|
||||
@@ -68,8 +68,11 @@ class __declspec( novtable) ISurfTriMesh : public ISurf
|
||||
virtual double GetLinearTolerance( void) const = 0 ;
|
||||
virtual double GetSmoothAngle( void) const = 0 ;
|
||||
virtual bool GetVertex( int nId, Point3d& ptP) const = 0 ;
|
||||
virtual bool GetVertexParam( int nId, double& dU, double& dV) const = 0 ;
|
||||
virtual int GetFirstVertex( Point3d& ptP) const = 0 ;
|
||||
virtual int GetFirstVertexParam( int nId, double& dU, double& dV) const = 0 ;
|
||||
virtual int GetNextVertex( int nId, Point3d& ptP) const = 0 ;
|
||||
virtual int GetNextVertexParam( int nId, double& dU, double& dV) const = 0 ;
|
||||
virtual bool GetTriangle( int nId, int nIdVert[3]) const = 0 ;
|
||||
virtual int GetFirstTriangle( int nIdVert[3]) const = 0 ;
|
||||
virtual int GetNextTriangle( int nId, int nIdVert[3]) const = 0 ;
|
||||
|
||||
@@ -121,6 +121,7 @@ EXE_EXPORT bool ExeImportDxf( const std::string& sFilePath, double dScaleFactor)
|
||||
EXE_EXPORT bool ExeImportPnt( const std::string& sFilePath, int nFlag) ;
|
||||
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, double dScaleFactor) ;
|
||||
EXE_EXPORT bool ExeAdvancedImportIsEnabled( void) ;
|
||||
EXE_EXPORT bool ExeAdvancedImport( const std::string& sFilePath, double dToler = 0.1) ;
|
||||
EXE_EXPORT bool ExeExportDxf( int nId, const std::string& sFilePath, int nFlag = 1, int nFilter = 393) ;
|
||||
@@ -358,6 +359,7 @@ 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) ;
|
||||
|
||||
// GeomDB Create Volume
|
||||
EXE_EXPORT int ExeCreateVolZmap( int nParentId, const Point3d& ptIni, double dDimX,
|
||||
@@ -612,6 +614,7 @@ EXE_EXPORT bool ExeSurfTmCut( int nId, int nCutterId, bool bInVsOut, bool bSaveO
|
||||
EXE_EXPORT bool ExeSurfTmSubtractProjectedFacesOnFace( int nSurfId, int nFaceInd, int nDestGrpId,
|
||||
INTVECTOR vSurfsId, bool bOCFlag,
|
||||
bool& bExistProjection, int& nNewId, int& nNewFaceNbr) ;
|
||||
EXE_EXPORT bool ExeSurfBzTrim( int nId, int nCutterId) ;
|
||||
|
||||
// GeomDb Volume Modify
|
||||
EXE_EXPORT int ExeExplodeVolume( int nId, int* pnCount) ;
|
||||
|
||||
Reference in New Issue
Block a user