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
GEOMArchimede BREPExport BREPImport BlockFix GEOMbasic GEOMAlgo GEOMClient GEOMImpl
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
)
IF(SALOME_BUILD_GUI)

View File

@ -151,6 +151,7 @@ SET(GEOM_SalomeIDLGEOM SalomeIDLGEOM)
SET(GEOM_STEPExport STEPExport)
SET(GEOM_STEPImport STEPImport)
SET(GEOM_STLExport STLExport)
SET(GEOM_STLImport STLImport)
SET(GEOM_ShHealOper ShHealOper)
SET(GEOM_XAO XAO)
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_STEPImport STEPImport ${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_XAO XAO ${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
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
expand the range of available formats by adding more plug-ins (for
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
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
a *.brep, *.iges or *.step file.
a *.brep, *.iges, *.step, *.sat or *.stl file.
\image html geomimport.png
@ -49,7 +49,7 @@ as before this operation.
\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>
\par

View File

@ -6,7 +6,7 @@
\b Geometry module of SALOME is destined for:
- \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"
using a wide range of functions;
- \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
BREP.Import: BREPImport
@ -17,6 +17,9 @@ STEP.Import: STEPImport
STEP.Export: STEPExport
STEP.Pattern: STEP Files ( *.step *.stp )
STL.Import: STLImport
STL.Pattern: STL Files ( *.stl )
STL_Bin.Export: STLExport
STL_Bin.Pattern: STL Binary Files ( *.stl )

View File

@ -22,7 +22,7 @@
##
SET(SUBDIRS_COMMON
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
AdvancedEngine OCC2VTK VTKExport
)

View File

@ -74,6 +74,21 @@
#include <Standard_Failure.hxx>
#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
@ -236,7 +251,8 @@ Handle(GEOM_Object) GEOMImpl_IInsertOperations::Import
if (aFunction->GetDriverGUID() != GEOMImpl_ImportDriver::GetID()) return result;
Handle(TCollection_HAsciiString) aHLibName;
if (!IsSupported(Standard_True, theFormatName.SubString(1,4), aHLibName)) {
if (!IsSupported
(Standard_True, GetImportFormatName(theFormatName), aHLibName)) {
return result;
}
TCollection_AsciiString aLibName = aHLibName->String();
@ -320,7 +336,8 @@ TCollection_AsciiString GEOMImpl_IInsertOperations::ReadValue
if (theFileName.IsEmpty() || theFormatName.IsEmpty() || theParameterName.IsEmpty()) return aValue;
Handle(TCollection_HAsciiString) aHLibName;
if (!IsSupported(Standard_True, theFormatName.SubString(1,4), aHLibName)) {
if (!IsSupported
(Standard_True, GetImportFormatName(theFormatName), aHLibName)) {
return aValue;
}
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;
}
}