TestEgr 1.5h1 :

- aggiunta esportazione STL e DXF.
This commit is contained in:
Dario Sassi
2014-08-12 07:52:22 +00:00
parent abb81b4f29
commit bd69af5fd3
4 changed files with 108 additions and 0 deletions
BIN
View File
Binary file not shown.
+106
View File
@@ -29,6 +29,8 @@
#include "/EgtDev/Include/EGrSceExecutor.h"
#include "/EgtDev/Include/EExImportStl.h"
#include "/EgtDev/Include/EExImportDxf.h"
#include "/EgtDev/Include/EExExportStl.h"
#include "/EgtDev/Include/EExExportDxf.h"
using namespace std ;
@@ -142,6 +144,7 @@ BEGIN_MESSAGE_MAP( CTestEGrDlg, CDialog)
ON_BN_CLICKED( IDC_OPEN, OnFileOpen)
ON_BN_CLICKED( IDC_SAVE, OnFileSave)
ON_BN_CLICKED( IDC_IMPORT, OnFileImport)
ON_BN_CLICKED( IDC_EXPORT, OnFileExport)
ON_BN_CLICKED( IDC_EXEC, OnFileExec)
ON_CONTROL_RANGE( BN_CLICKED, IDC_WIREFRAME, IDC_SHADING, OnShowMode)
ON_BN_CLICKED( IDC_SHOWCURVEDIR, OnShowCurveDir)
@@ -477,6 +480,7 @@ CTestEGrDlg::OnSize( UINT nType, int cx, int cy)
MoveDlgItem( IDC_NEW, IP_TR, cx, cy) ;
MoveDlgItem( IDC_OPEN, IP_TR, cx, cy) ;
MoveDlgItem( IDC_SAVE, IP_TR, cx, cy) ;
MoveDlgItem( IDC_EXPORT, IP_TR, cx, cy) ;
MoveDlgItem( IDC_IMPORT, IP_TR, cx, cy) ;
MoveDlgItem( IDC_EXEC, IP_TR, cx, cy) ;
MoveDlgItem( IDC_SEPAR, IP_TR, cx, cy) ;
@@ -807,6 +811,47 @@ CTestEGrDlg::OnFileImport( void)
AfxMessageBox( L"Error importing file (look at Log file)", MB_ICONSTOP|MB_OK) ;
}
//----------------------------------------------------------------------------
void
CTestEGrDlg::OnFileExport( void)
{
// visualizzo il dialogo di scelta file
CFileDialog dlg( FALSE, L"*.*", NULL,
OFN_PATHMUSTEXIST|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_NOCHANGEDIR,
L"All Files (*.*)|*.*|"
L"AutoCAD Drawing Exchange (*.dxf) |*.dxf|"
L"Stereolithography (*.stl) |*.stl||",
NULL, 0, FALSE) ;
// imposto il direttorio iniziale
wstring wsDir = stringtoW( GetPrivateProfileStringUtf8( "General", "LastExpDir", "", AfxGetApp()->m_pszProfileName)) ;
if ( ! wsDir.empty())
dlg.m_ofn.lpstrInitialDir = wsDir.c_str() ;
// lancio il dialogo di scelta file
if ( dlg.DoModal() != IDOK)
return ;
// recupero la path del file
string sFilePath = WtoA( dlg.GetPathName()) ;
if ( sFilePath.empty())
return ;
// imposto cursore attesa
CWaitCursor wait ;
// divido in nome e direttorio e salvo quest'ultimo
string sFileDir ;
string sFileName ;
SplitLast( sFilePath, "\\", sFileDir, sFileName) ;
if ( ! sFileDir.empty())
WritePrivateProfileStringUtf8( "General", "LastExpDir", sFileDir.c_str(), AfxGetApp()->m_pszProfileName) ;
// salvo il file
if ( ! FileExport( sFilePath))
AfxMessageBox( L"Error exporting file (look at Log file)", MB_ICONSTOP|MB_OK) ;
}
//----------------------------------------------------------------------------
void
CTestEGrDlg::OnFileExec( void)
@@ -1238,6 +1283,67 @@ CTestEGrDlg::FileImport( const string& sFilePath)
return true ;
}
//----------------------------------------------------------------------------
bool
CTestEGrDlg::FileExport( const string& sFilePath)
{
// divido in nome e direttorio
string sFileDir ;
string sFileName ;
SplitLast( sFilePath, "\\", sFileDir, sFileName) ;
// recupero l'estensione
string sFileTitle ;
string sFileExt ;
SplitLast( sFileName, ".", sFileTitle, sFileExt) ;
ToUpper( sFileExt) ;
// verifico che l'estensione sia supportata
if ( sFileExt != "DXF" && sFileExt != "STL") {
// emetto info
string sInfo = "File type (" + sFileExt + ") not recognized" ;
LOG_INFO( m_pLogGen, sInfo.c_str())
return false ;
}
// emetto info
string sInfo = "Export File = " + sFilePath ;
LOG_INFO( m_pLogGen, sInfo.c_str())
// esporto il file DXF
if ( sFileExt == "DXF") {
// preparo l'esportatore
PtrOwner<IExportDxf> pExpDxf( CreateExportDxf()) ;
if ( ! IsValid( pExpDxf)) {
LOG_ERROR( m_pLogGen, "Error : CreateExportDxf")
return false ;
}
// eseguo l'esportazione
if ( ! pExpDxf->Export( m_pGeomDB, GDB_ID_ROOT, sFilePath)) {
return false ;
}
// log dei comandi
LOG_INFO( m_pLogCmd, ( "EXPORTDXF( 0, " + sFilePath + ")").c_str())
}
// esporto il file STL
else if ( sFileExt == "STL") {
// preparo l'esportatore
PtrOwner<IExportStl> pExpStl( CreateExportStl()) ;
if ( ! IsValid( pExpStl)) {
LOG_ERROR( m_pLogGen, "Error : CreateExportStl")
return false ;
}
// eseguo l'esportazione
if ( ! pExpStl->Export( m_pGeomDB, GDB_ID_ROOT, sFilePath)) {
return false ;
}
// log dei comandi
LOG_INFO( m_pLogCmd, ( "EXPORTSTL( 0, " + sFilePath + ")").c_str())
}
return true ;
}
//----------------------------------------------------------------------------
bool
CTestEGrDlg::FileExec( const string& sFilePath)
+2
View File
@@ -51,6 +51,7 @@ class CTestEGrDlg : public CDialog
afx_msg void OnFileOpen( void) ;
afx_msg void OnFileSave( void) ;
afx_msg void OnFileImport( void) ;
afx_msg void OnFileExport( void) ;
afx_msg void OnFileExec( void) ;
afx_msg void OnShowMode( UINT nID) ;
afx_msg void OnShowCurveDir( void) ;
@@ -83,6 +84,7 @@ class CTestEGrDlg : public CDialog
bool FileOpen( const std::string& sFilePath) ;
bool FileSave( const std::string& sFilePath) ;
bool FileImport( const std::string& sFilePath) ;
bool FileExport( const std::string& sFilePath) ;
bool FileExec( const std::string& sFilePath) ;
void EmitTitle( void) ;
// GeomDBTree
BIN
View File
Binary file not shown.