0022315: EDF 2722 GEOM: Import STL in GEOM

This commit is contained in:
skv 2013-11-12 08:22:19 +00:00
parent 7555ded134
commit a84676a7fa
10 changed files with 156 additions and 10 deletions

View File

@ -243,7 +243,7 @@ INCLUDE(CMakePackageConfigHelpers)
SET(_${PROJECT_NAME}_exposed_targets SET(_${PROJECT_NAME}_exposed_targets
GEOMArchimede BREPExport BREPImport BlockFix GEOMbasic GEOMAlgo GEOMClient GEOMImpl GEOMArchimede BREPExport BREPImport BlockFix GEOMbasic GEOMAlgo GEOMClient GEOMImpl
GEOMUtils GEOMEngine GEOM_SupervEngine IGESExport IGESImport GEOMSketcher GEOMUtils GEOMEngine GEOM_SupervEngine IGESExport IGESImport GEOMSketcher
SalomeIDLGEOM STEPExport STEPImport STLExport ShHealOper XAO AdvancedEngine OCC2VTK SalomeIDLGEOM STEPExport STEPImport STLExport STLImport ShHealOper XAO AdvancedEngine OCC2VTK
VTKExport VTKExport
) )
IF(SALOME_BUILD_GUI) IF(SALOME_BUILD_GUI)

View File

@ -151,6 +151,7 @@ SET(GEOM_SalomeIDLGEOM SalomeIDLGEOM)
SET(GEOM_STEPExport STEPExport) SET(GEOM_STEPExport STEPExport)
SET(GEOM_STEPImport STEPImport) SET(GEOM_STEPImport STEPImport)
SET(GEOM_STLExport STLExport) SET(GEOM_STLExport STLExport)
SET(GEOM_STLImport STLImport)
SET(GEOM_ShHealOper ShHealOper) SET(GEOM_ShHealOper ShHealOper)
SET(GEOM_XAO XAO) SET(GEOM_XAO XAO)
SET(GEOM_AdvancedEngine AdvancedEngine) SET(GEOM_AdvancedEngine AdvancedEngine)

View File

@ -38,6 +38,7 @@ FIND_LIBRARY(GEOM_SalomeIDLGEOM SalomeIDLGEOM ${GEOM_ROOT_DIR}/lib/salome)
FIND_LIBRARY(GEOM_STEPExport STEPExport ${GEOM_ROOT_DIR}/lib/salome) FIND_LIBRARY(GEOM_STEPExport STEPExport ${GEOM_ROOT_DIR}/lib/salome)
FIND_LIBRARY(GEOM_STEPImport STEPImport ${GEOM_ROOT_DIR}/lib/salome) FIND_LIBRARY(GEOM_STEPImport STEPImport ${GEOM_ROOT_DIR}/lib/salome)
FIND_LIBRARY(GEOM_STLExport STLExport ${GEOM_ROOT_DIR}/lib/salome) FIND_LIBRARY(GEOM_STLExport STLExport ${GEOM_ROOT_DIR}/lib/salome)
FIND_LIBRARY(GEOM_STLImport STLImport ${GEOM_ROOT_DIR}/lib/salome)
FIND_LIBRARY(GEOM_ShHealOper ShHealOper ${GEOM_ROOT_DIR}/lib/salome) FIND_LIBRARY(GEOM_ShHealOper ShHealOper ${GEOM_ROOT_DIR}/lib/salome)
FIND_LIBRARY(GEOM_XAO XAO ${GEOM_ROOT_DIR}/lib/salome) FIND_LIBRARY(GEOM_XAO XAO ${GEOM_ROOT_DIR}/lib/salome)
FIND_LIBRARY(GEOM_AdvancedEngine AdvancedEngine ${GEOM_ROOT_DIR}/lib/salome) FIND_LIBRARY(GEOM_AdvancedEngine AdvancedEngine ${GEOM_ROOT_DIR}/lib/salome)

View File

@ -3,17 +3,17 @@
\page import_export_geom_obj_page Importing/exporting geometrical objects \page import_export_geom_obj_page Importing/exporting geometrical objects
In Geometry module you can import and export geometrical objects In Geometry module you can import and export geometrical objects
from/into BREP, IGES, STEP files. The mechanisms of import and export from/into BREP, IGES, STEP, ACIS and STL files. The mechanisms of import and export
are implemented via plug-ins, which gives the opportunity to are implemented via plug-ins, which gives the opportunity to
expand the range of available formats by adding more plug-ins (for expand the range of available formats by adding more plug-ins (for
example, CATIA 5). example, CATIA 5).
<em>To import geometrical objects from a BREP, IGES, STEP file:</em> <em>To import geometrical objects from a BREP, IGES, STEP, ACIS or STL file:</em>
\par \par
From the \b File menu choose \b Import. In the opening dialog box \b Import From the \b File menu choose \b Import. In the opening dialog box \b Import
select the required format of the file for importation and search for select the required format of the file for importation and search for
a *.brep, *.iges or *.step file. a *.brep, *.iges, *.step, *.sat or *.stl file.
\image html geomimport.png \image html geomimport.png
@ -49,7 +49,7 @@ as before this operation.
\image html geomimport_reopen.png \image html geomimport_reopen.png
\n <em>To export geometrical objects into a BREP, IGES, STEP \n <em>To export geometrical objects into a BREP, IGES, STEP, ACIS or STL
file:</em> file:</em>
\par \par

View File

@ -6,7 +6,7 @@
\b Geometry module of SALOME is destined for: \b Geometry module of SALOME is destined for:
- \subpage import_export_geom_obj_page "import and export of geometrical models" - \subpage import_export_geom_obj_page "import and export of geometrical models"
in IGES, BREP and STEP formats; in IGES, BREP, STEP, ACIS and STL formats;
- \subpage create_geom_obj_page "construction of geometrical objects" - \subpage create_geom_obj_page "construction of geometrical objects"
using a wide range of functions; using a wide range of functions;
- \subpage view_geom_obj_page "viewing geometrical objects" in the OCC - \subpage view_geom_obj_page "viewing geometrical objects" in the OCC

View File

@ -1,4 +1,4 @@
Import: BREP|IGES|STEP|ACIS Import: BREP|IGES|STEP|STL|ACIS
Export: BREP|IGES|IGES_5_3|STEP|STL_Bin|STL_ASCII|ACIS|VTK Export: BREP|IGES|IGES_5_3|STEP|STL_Bin|STL_ASCII|ACIS|VTK
BREP.Import: BREPImport BREP.Import: BREPImport
@ -17,6 +17,9 @@ STEP.Import: STEPImport
STEP.Export: STEPExport STEP.Export: STEPExport
STEP.Pattern: STEP Files ( *.step *.stp ) STEP.Pattern: STEP Files ( *.step *.stp )
STL.Import: STLImport
STL.Pattern: STL Files ( *.stl )
STL_Bin.Export: STLExport STL_Bin.Export: STLExport
STL_Bin.Pattern: STL Binary Files ( *.stl ) STL_Bin.Pattern: STL Binary Files ( *.stl )

View File

@ -22,7 +22,7 @@
## ##
SET(SUBDIRS_COMMON SET(SUBDIRS_COMMON
ARCHIMEDE BlockFix GEOMAlgo SKETCHER GEOM BREPExport ARCHIMEDE BlockFix GEOMAlgo SKETCHER GEOM BREPExport
BREPImport IGESExport IGESImport STEPExport STEPImport STLExport BREPImport IGESExport IGESImport STEPExport STEPImport STLExport STLImport
ShHealOper GEOMUtils XAO XAO_Swig GEOMImpl GEOM_I GEOMClient GEOM_I_Superv GEOM_SWIG GEOM_PY ShHealOper GEOMUtils XAO XAO_Swig GEOMImpl GEOM_I GEOMClient GEOM_I_Superv GEOM_SWIG GEOM_PY
AdvancedEngine OCC2VTK VTKExport AdvancedEngine OCC2VTK VTKExport
) )

View File

@ -74,6 +74,21 @@
#include <Standard_Failure.hxx> #include <Standard_Failure.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC #include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
/**
* This function returns the input format name from the original format name.
*/
static TCollection_AsciiString GetImportFormatName
(const TCollection_AsciiString& theFormatName)
{
Standard_Integer aLastInd = 4;
if (theFormatName.Search("STL") == 1) {
aLastInd = 3;
}
return theFormatName.SubString(1, aLastInd);
}
//============================================================================= //=============================================================================
/*! /*!
* constructor * constructor
@ -236,7 +251,8 @@ Handle(GEOM_Object) GEOMImpl_IInsertOperations::Import
if (aFunction->GetDriverGUID() != GEOMImpl_ImportDriver::GetID()) return result; if (aFunction->GetDriverGUID() != GEOMImpl_ImportDriver::GetID()) return result;
Handle(TCollection_HAsciiString) aHLibName; Handle(TCollection_HAsciiString) aHLibName;
if (!IsSupported(Standard_True, theFormatName.SubString(1,4), aHLibName)) { if (!IsSupported
(Standard_True, GetImportFormatName(theFormatName), aHLibName)) {
return result; return result;
} }
TCollection_AsciiString aLibName = aHLibName->String(); TCollection_AsciiString aLibName = aHLibName->String();
@ -320,7 +336,8 @@ TCollection_AsciiString GEOMImpl_IInsertOperations::ReadValue
if (theFileName.IsEmpty() || theFormatName.IsEmpty() || theParameterName.IsEmpty()) return aValue; if (theFileName.IsEmpty() || theFormatName.IsEmpty() || theParameterName.IsEmpty()) return aValue;
Handle(TCollection_HAsciiString) aHLibName; Handle(TCollection_HAsciiString) aHLibName;
if (!IsSupported(Standard_True, theFormatName.SubString(1,4), aHLibName)) { if (!IsSupported
(Standard_True, GetImportFormatName(theFormatName), aHLibName)) {
return aValue; return aValue;
} }
TCollection_AsciiString aLibName = aHLibName->String(); TCollection_AsciiString aLibName = aHLibName->String();

52
src/STLImport/CMakeLists.txt Executable file
View File

@ -0,0 +1,52 @@
# Copyright (C) 2012-2013 CEA/DEN, EDF R&D, OPEN CASCADE
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
# --- options ---
# additional include directories
INCLUDE_DIRECTORIES(
${CAS_INCLUDE_DIRS}
${PTHREAD_INCLUDE_DIR}
${KERNEL_INCLUDE_DIRS}
)
# additional preprocessor / compiler flags
ADD_DEFINITIONS(
${CAS_DEFINITIONS}
)
# libraries to link to
SET(_link_LIBRARIES
${CAS_TKSTL}
${KERNEL_SALOMELocalTrace}
)
# --- sources ---
SET(STLImport_SOURCES
STLImport.cxx
)
# --- rules ---
ADD_LIBRARY(STLImport ${STLImport_SOURCES})
TARGET_LINK_LIBRARIES(STLImport ${_link_LIBRARIES})
INSTALL(TARGETS STLImport EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})

72
src/STLImport/STLImport.cxx Executable file
View File

@ -0,0 +1,72 @@
// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
// File: STLImport.cxx
// Author: Sergey KHROMOV
#include "utilities.h"
#include <StlAPI_Reader.hxx>
#include <TCollection_AsciiString.hxx>
#include <TopoDS_Shape.hxx>
#include <TDF_Label.hxx>
#ifdef WIN32
#if defined STLIMPORT_EXPORTS || defined STLImport_EXPORTS
#define STLIMPORT_EXPORT __declspec( dllexport )
#else
#define STLIMPORT_EXPORT __declspec( dllimport )
#endif
#else
#define STLIMPORT_EXPORT
#endif
//=============================================================================
/*!
*
*/
//=============================================================================
extern "C"
{
STLIMPORT_EXPORT
TopoDS_Shape Import (const TCollection_AsciiString& theFileName,
const TCollection_AsciiString& /*theFormatName*/,
TCollection_AsciiString& theError,
const TDF_Label&)
{
MESSAGE("Import STL from file " << theFileName.ToCString());
StlAPI_Reader aReader;
TopoDS_Shape aShape;
aReader.Read(aShape, theFileName.ToCString());
if (aShape.IsNull()) {
theError = "STL Import failed";
}
return aShape;
}
}