34841e4c16
- aggiustamenti vari per utilizzo libreria fast_float in FromString.
80 lines
4.6 KiB
C++
80 lines
4.6 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/EE3Export3dm.h"
|
|
#include "/EgtDev/Include/EGkGeoObj.h"
|
|
#include "/EgtDev/Include/EGkGdbIterator.h"
|
|
#include "/EgtDev/Include/EGkFrame3d.h"
|
|
#include "/EgtDev/Include/EGkPoint3d.h"
|
|
#include "/EgtDev/Include/EGkCurveBezier.h"
|
|
#include "/EgtDev/Include/EGkCurveArc.h"
|
|
#include "/EgtDev/Include/EGkCurveLine.h"
|
|
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
|
|
#include "/EgtDev/Include/EGkExtText.h"
|
|
#include "/EgtDev/Include/EGkExtDimension.h"
|
|
#include "/EgtDev/Extern/opennurbs/Include/opennurbs.h"
|
|
#include <map>
|
|
|
|
typedef std::vector<ON_PolyCurve*> VONPOLYCRV ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
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& bAdded) ;
|
|
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& bEmpty) ; // nCount restituisce il numero di oggetti inseriti nel gruppo
|
|
bool TestFilter( int nLev, int nMode, int nStat, bool bGroup = false) ;
|
|
std::wstring ConvertString( const std::string& sName) { return std::wstring( sName.begin(), sName.end()) ;} ;
|
|
ON_3dPoint ConvertPoint( const Point3d& pt) { return ON_3dPoint( pt.x, pt.y, pt.z) ;} ;
|
|
ON_3dVector ConvertVector( const Vector3d& vt) { return ON_3dVector( vt.x, vt.y, vt.z) ;} ;
|
|
ON_NurbsCurve* ConvertCrvBezier( const ICurveBezier* pCrvBz) ;
|
|
ON_ArcCurve* ConvertCrvArc( const ICurveArc* pCrvArc) ;
|
|
ON_LineCurve* ConvertCrvLine( const ICurveLine* pCrvL) ;
|
|
ON_PolyCurve* ConvertCrvCompo( const ICurveComposite* pCC) ;
|
|
ON_Text* ConvertText( const IExtText* pText, const Frame3d& frDim) ;
|
|
ON_Dimension* ConvertExtDimension( const IExtDimension* pExtDim, const Frame3d& frDim) ;
|
|
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 ExportText( const std::string& sName, const IGdbIterator& iIter, const Frame3d& frFrame, const Color& cCol, const int& nLayer) ;
|
|
bool ExportDimension( 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
|
|
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>
|
|
} ;
|