2e385022f3
- correzione del filtro. - aggiunta del materiale alle trimesh.
80 lines
3.8 KiB
C++
80 lines
3.8 KiB
C++
//----------------------------------------------------------------------------
|
|
// EgalTech 2023
|
|
//----------------------------------------------------------------------------
|
|
// File : Export3dm.cpp Data : 21.09.23 Versione :
|
|
// Contenuto : Dichiarazione della classe ExportStl.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 21.09.23 DB Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#define NOMINMAX
|
|
|
|
#include "/EgtDev/Include/EExExport3dm.h"
|
|
#include "/EgtDev/Include/EGnWriter.h"
|
|
#include "/EgtDev/Extern/opennurbs/Include/opennurbs.h"
|
|
#include <map>
|
|
|
|
class IGdbIterator ;
|
|
class IGeoObj ;
|
|
class Frame3d ;
|
|
class Point3d ;
|
|
class ICurveBezier ;
|
|
class ICurveArc ;
|
|
class ICurveLine ;
|
|
class ISurfFlatRegion ;
|
|
class ON_3dPoint ;
|
|
class ON_3dVector ;
|
|
class ON_Object ;
|
|
class ON_NurbsCurve ;
|
|
class ON_ArcCurve ;
|
|
class ON_LineCurve ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
class Export3dm : public IExport3dm
|
|
{
|
|
public :
|
|
virtual bool SetOptions( int nFilter) ;
|
|
virtual bool Export( IGeomDB* pGDB, int nId, const std::string& sFile) ;
|
|
|
|
public :
|
|
Export3dm(void) : m_nFilter(EEXFLT_DEFAULT) {
|
|
CalcGroupFilter() ;
|
|
}
|
|
|
|
private :
|
|
bool ExportObject( const IGdbIterator& iIter, const int& nLayer) ;
|
|
bool AddObjectToModel( const IGdbIterator& iIter, ON_Object* onObject, const int& nLayer, const std::string& sName, const Color& cCol,
|
|
ON_3dmObjectAttributes* pOnAttr = nullptr) ;
|
|
bool AddInfoToObject( const IGdbIterator& iIter, ON_Object* onObject) ;
|
|
bool ScanGroup( const IGdbIterator& iIter, const int& nLayer) ;
|
|
bool TestFilter( int nLev, int nMode, int nStat, bool bGroup = false) ;
|
|
std::wstring ConvertString( const std::string& sName) ;
|
|
ON_3dPoint ConvertPoint( const Point3d& pt) ;
|
|
ON_3dVector ConvertVector( const Vector3d& vt) ;
|
|
ON_NurbsCurve* ConvertCrvBezier( const ICurveBezier* pCrvBz) ;
|
|
ON_ArcCurve* ConvertCrvArc( const ICurveArc* pCrvArc) ;
|
|
ON_LineCurve* ConvertCrvLine( const ICurveLine* pCrvL) ;
|
|
bool ExportPnt( const std::string& sName, const IGdbIterator& iIter, const Frame3d& frFrame, const Color& cCol, const int& nLayer) ;
|
|
bool ExportSrfBz( const std::string& sName, const IGdbIterator& iIter, const Frame3d& frFrame, const Color& cCol, const int& nLayer) ;
|
|
bool ExportSTM( const std::string& sName, const IGdbIterator& iIter, const Frame3d& frFrame, const Color& cCol, const int& nLayer) ;
|
|
bool ExportCrvArc( const std::string& sName, const IGdbIterator& iIter, const Frame3d& frFrame, const Color& cCol, const int& nLayer) ;
|
|
bool ExportCrvBezier( const std::string& sName, const IGdbIterator& iIter, const Frame3d& frFrame, const Color& cCol, const int& nLayer) ;
|
|
bool ExportCrvCompo( const std::string& sName, const IGdbIterator& iIter, const Frame3d& frFrame, const Color& cCol, const int& nLayer) ;
|
|
bool ExportCrvLine( const std::string& sName, const IGdbIterator& iIter, const Frame3d& frFrame, const Color& cCol, const int& nLayer) ;
|
|
bool CalcGroupFilter( void) ;
|
|
|
|
private :
|
|
int m_nFilter ; // filtro su livello, modo e stato, se l'oggeto da valutare è un oggetto geometrico
|
|
int m_nGroupFilter ; // filtro su livello, modo e stato, se l'oggetto da valutare è un gruppo
|
|
Writer m_Writer ; // scrittore di file di testo
|
|
ONX_Model m_model ; // modello opennurbs
|
|
std::map<int,int> m_mLayer ; // mappa dei layer <indice layer nge, indice del componente layer nel modello 3dm>
|
|
std::map<std::string,int> m_mMaterial ; // mappa dei materiali <stringa del colore ( R,G,B), indice del componente material nel modello 3dm>
|
|
} ;
|