From: vsr Date: Wed, 27 May 2015 09:05:29 +0000 (+0300) Subject: Merge from rnv/geom_plugin_imp branch X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=df82a39353ce2dd7a05538022e18eaf66af07548;p=plugins%2Fdxfplugin.git Merge from rnv/geom_plugin_imp branch --- df82a39353ce2dd7a05538022e18eaf66af07548 diff --cc CMakeLists.txt index ef7537a,1b3400d..689dadc --- a/CMakeLists.txt +++ b/CMakeLists.txt @@@ -116,7 -161,7 +161,7 @@@ ENDIF( # Header configuration # ==================== SALOME_XVERSION(${PROJECT_NAME}) --SALOME_CONFIGURE_FILE(DXFPLUGIN_version.h.in DXFPLUGIN_version.h) ++SALOME_CONFIGURE_FILE(DXFPlugin_version.h.in DXFPlugin_version.h INSTALL ${SALOME_INSTALL_HEADERS}) # Configuration export # (here only the level 1 prerequisites are exposed) diff --cc DXFPLUGIN_version.h.in index 09c67f8,36c86ea..0000000 deleted file mode 100644,100644 --- a/DXFPLUGIN_version.h.in +++ /dev/null @@@ -1,41 -1,41 +1,0 @@@ - // Copyright (C) 2014-2015 OPEN CASCADE -// Copyright (C) 2014 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, or (at your option) any later version. --// --// 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 --// -- --#if !defined(__DXFPLUGIN_VERSION_H) --#define __DXFPLUGIN_VERSION_H -- --/*! -- Specify version of SALOME DXFPLUGIN module, as follows -- -- DXFPLUGIN_VERSION_MAJOR : (integer) number identifying major version -- DXFPLUGIN_VERSION_MINOR : (integer) number identifying minor version -- DXFPLUGIN_VERSION_MAINTENANCE : (integer) number identifying maintenance version -- DXFPLUGIN_VERSION_STR : (string) complete version number "major.minor.maintenance" -- DXFPLUGIN_VERSION : (hex) complete version number (major << 16) + (minor << 8) + maintenance -- DXFPLUGIN_DEVELOPMENT : (integer) indicates development version when set to 1 --*/ -- --#define DXFPLUGIN_VERSION_MAJOR @SALOMEDXFPLUGIN_MAJOR_VERSION@ --#define DXFPLUGIN_VERSION_MINOR @SALOMEDXFPLUGIN_MINOR_VERSION@ --#define DXFPLUGIN_VERSION_MAINTENANCE @SALOMEDXFPLUGIN_PATCH_VERSION@ --#define DXFPLUGIN_VERSION_STR "@SALOMEDXFPLUGIN_VERSION@" --#define DXFPLUGIN_VERSION @SALOMEDXFPLUGIN_XVERSION@ --#define DXFPLUGIN_DEVELOPMENT @SALOMEDXFPLUGIN_VERSION_DEV@ -- --#endif // __DXFPLUGIN_VERSION_H diff --cc DXFPlugin_version.h.in index 0000000,0000000..09c67f8 new file mode 100644 --- /dev/null +++ b/DXFPlugin_version.h.in @@@ -1,0 -1,0 +1,41 @@@ ++// Copyright (C) 2014-2015 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, or (at your option) any later version. ++// ++// 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 ++// ++ ++#if !defined(__DXFPLUGIN_VERSION_H) ++#define __DXFPLUGIN_VERSION_H ++ ++/*! ++ Specify version of SALOME DXFPLUGIN module, as follows ++ ++ DXFPLUGIN_VERSION_MAJOR : (integer) number identifying major version ++ DXFPLUGIN_VERSION_MINOR : (integer) number identifying minor version ++ DXFPLUGIN_VERSION_MAINTENANCE : (integer) number identifying maintenance version ++ DXFPLUGIN_VERSION_STR : (string) complete version number "major.minor.maintenance" ++ DXFPLUGIN_VERSION : (hex) complete version number (major << 16) + (minor << 8) + maintenance ++ DXFPLUGIN_DEVELOPMENT : (integer) indicates development version when set to 1 ++*/ ++ ++#define DXFPLUGIN_VERSION_MAJOR @SALOMEDXFPLUGIN_MAJOR_VERSION@ ++#define DXFPLUGIN_VERSION_MINOR @SALOMEDXFPLUGIN_MINOR_VERSION@ ++#define DXFPLUGIN_VERSION_MAINTENANCE @SALOMEDXFPLUGIN_PATCH_VERSION@ ++#define DXFPLUGIN_VERSION_STR "@SALOMEDXFPLUGIN_VERSION@" ++#define DXFPLUGIN_VERSION @SALOMEDXFPLUGIN_XVERSION@ ++#define DXFPLUGIN_DEVELOPMENT @SALOMEDXFPLUGIN_VERSION_DEV@ ++ ++#endif // __DXFPLUGIN_VERSION_H diff --cc INSTALL index b5dd7c8,4e1b94d..52afaa3 --- a/INSTALL +++ b/INSTALL @@@ -27,7 -27,7 +27,7 @@@ Pre-requisite DXF plugin for SALOME Geometry module requires: - SALOME, at least KERNEL module (http://www.salome-platform.org). --- Open CASCADE Technology and OCCT DXF XDE Import/Export product ++- Open CASCADE Technology and OCCT DXF Import/Export XDE product (http://www.opencascade.org). ================== @@@ -42,12 -42,12 +42,12 @@@ In order to build the plugin you have t - for csh: -- % setenv DXF_ROOT_DIR /path/to/the/DXF-6.7.0 ++ % setenv DXF_ROOT_DIR /path/to/the/DXF-6.9.0 % setenv LD_LIBRARY_PATH ${DXF_ROOT_DIR}/lib:${LD_LIBRARY_PATH} - for bash: -- % export DXF_ROOT_DIR=/path/to/the/DXF-6.7.0 ++ % export DXF_ROOT_DIR=/path/to/the/DXF-6.9.0 % export LD_LIBRARY_PATH=${DXF_ROOT_DIR}/lib:${LD_LIBRARY_PATH} Note, that OCCT DXF XDE product requires OCCT license library. diff --cc README index 9d5343c,b23d438..7ca460d --- a/README +++ b/README @@@ -58,12 -58,12 +58,12 @@@ Usag - for csh: -- % setenv DXF_ROOT_DIR /path/to/the/DXF-6.7.0 ++ % setenv DXF_ROOT_DIR /path/to/the/DXF-6.9.0 % setenv LD_LIBRARY_PATH ${DXF_ROOT_DIR}/lib:${LD_LIBRARY_PATH} - for bash: -- % export DXF_ROOT_DIR=/path/to/the/DXF-6.7.0 ++ % export DXF_ROOT_DIR=/path/to/the/DXF-6.9.0 % export LD_LIBRARY_PATH=${DXF_ROOT_DIR}/lib:${LD_LIBRARY_PATH} * OCCT DXF XDE product requires also an OCCT license library. diff --cc adm_local/cmake_files/FindDXF.cmake index bfc7435,3f24d2d..7301c27 --- a/adm_local/cmake_files/FindDXF.cmake +++ b/adm_local/cmake_files/FindDXF.cmake @@@ -49,14 -49,14 +49,14 @@@ ENDIF(OCCTLICENSE_INCLUDE_DIRS FIND_LIBRARY(DXF_TKACIS NAMES TKACIS) FIND_LIBRARY(DXF_TKDXF NAMES TKDXF) --FIND_LIBRARY(DXF_TKOCCLicense NAMES TKOCCLicense) FIND_LIBRARY(DXF_TKXDEDXF NAMES TKXDEDXF) ++FIND_LIBRARY(DXF_TKOCCLicense NAMES TKOCCLicense) SET(DXF_LIBRARIES ${DXF_TKACIS} ${DXF_TKDXF} -- ${DXF_TKOCCLicense} ${DXF_TKXDEDXF} ++ ${DXF_TKOCCLicense} ) INCLUDE(FindPackageHandleStandardArgs) diff --cc doc/CMakeLists.txt index 0000000,7eb84fe..0fd283b mode 000000,100755..100755 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@@ -1,0 -1,20 +1,20 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 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, or (at your option) any later version. + # + # 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 + # + + ADD_SUBDIRECTORY(salome) diff --cc doc/salome/CMakeLists.txt index 0000000,957d7ef..9965b85 mode 000000,100755..100755 --- a/doc/salome/CMakeLists.txt +++ b/doc/salome/CMakeLists.txt @@@ -1,0 -1,21 +1,21 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 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, or (at your option) any later version. + # + # 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 + # + + ADD_SUBDIRECTORY(examples) -ADD_SUBDIRECTORY(gui) ++ADD_SUBDIRECTORY(gui) diff --cc doc/salome/examples/CMakeLists.txt index 0000000,9dad95b..7f8577e mode 000000,100644..100644 --- a/doc/salome/examples/CMakeLists.txt +++ b/doc/salome/examples/CMakeLists.txt @@@ -1,0 -1,21 +1,21 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 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, or (at your option) any later version. + # + # 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(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.py") + INSTALL(FILES ${files} DESTINATION ${SALOME_INSTALL_DOC}/examples/DXFPLUGIN) diff --cc doc/salome/examples/DXFPlugindemo.py index 0000000,313fb3b..81dbefe mode 000000,100644..100644 --- a/doc/salome/examples/DXFPlugindemo.py +++ b/doc/salome/examples/DXFPlugindemo.py @@@ -1,0 -1,34 +1,23 @@@ + # Import/Export DXF + ++import os + import salome + salome.salome_init() -import GEOM,os ++import GEOM + from salome.geom import geomBuilder + geompy = geomBuilder.New(salome.myStudy) - -# Example of import/export file in DXF format - -print "Test Export/Import DXF ..." - -tmpDir = os.getenv("TEMP") -if tmpDir == None: - tmpDir = "/tmp" + -# File for Export/Import testing -fileExportImport = tmpDir + "/testExportImportDXF.dxf" ++# - path to the file ++dxfFile = os.path.join(os.getenv("TEMP", "/tmp"), "testExportImportDXF.dxf") + -# create shape -box = geompy.MakeBoxDXDYDZ(100,100,100) - -# export shape -geompy.ExportDXF(box,fileExportImport) - -# import shape -Shape1 = geompy.ImportDXF(fileExportImport) -geompy.addToStudy(Shape1, "ImportDXF_1") ++# - create shape ++box = geompy.MakeBoxDXDYDZ(100, 100, 100) + -# It is possible also to use next format of importing and publishing in study ++# - export shape ++geompy.ExportDXF(box, dxfFile) + -Shape2 = geompy.ImportDXF(fileExportImport,"ImportDXF_2") ++# - import shape ++shape = geompy.ImportDXF(dxfFile) + -print "OK" ++# - publish in study ++geompy.addToStudy(shape, "ImportDXF") diff --cc doc/salome/gui/CMakeLists.txt index 0000000,efac789..ceb01a0 mode 000000,100755..100755 --- a/doc/salome/gui/CMakeLists.txt +++ b/doc/salome/gui/CMakeLists.txt @@@ -1,0 -1,20 +1,20 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 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, or (at your option) any later version. + # + # 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 + # + + ADD_SUBDIRECTORY(DXFPLUGIN) diff --cc doc/salome/gui/DXFPLUGIN/CMakeLists.txt index 0000000,598bde7..6a72dd1 mode 000000,100755..100755 --- a/doc/salome/gui/DXFPLUGIN/CMakeLists.txt +++ b/doc/salome/gui/DXFPLUGIN/CMakeLists.txt @@@ -1,0 -1,45 +1,52 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 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, or (at your option) any later version. + # + # 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 + # + + SALOME_CONFIGURE_FILE(doxyfile.in doxyfile) + SALOME_CONFIGURE_FILE(doxyfile_py.in doxyfile_py) + SALOME_CONFIGURE_FILE(static/header.html.in ${CMAKE_CURRENT_BINARY_DIR}/static/header.html) + SALOME_CONFIGURE_FILE(static/header_py.html.in ${CMAKE_CURRENT_BINARY_DIR}/static/header_py.html) + ++# Generate a temporary python file, needed for the generation of the documentation ++# of the plugin. ++SALOME_ACCUMULATE_ENVIRONMENT(GEOM_PluginsList NOCHECK DXFPlugin) ++SET(_plugins_cmd_options ${GEOM_ROOT_DIR}/bin/salome/collect_geom_methods.py -d -o tmp/geomBuilder.py DXFPlugin) ++SALOME_GENERATE_ENVIRONMENT_SCRIPT(_plugins_cmd env_script "${PYTHON_EXECUTABLE}" "${_plugins_cmd_options}") ++ + SET(kernel_file "$ENV{KERNEL_ROOT_DIR}/bin/salome/prepare_generating_doc.py") + IF(WIN32) + STRING(REPLACE "/" "\\" kernel_file ${kernel_file}) + ENDIF(WIN32) + + ADD_CUSTOM_TARGET(usr_docs ${CMAKE_COMMAND} -E make_directory tmp + COMMAND ${PYTHON_EXECUTABLE} ${kernel_file} -o tmp/DXFPluginBuilder.py ${CMAKE_SOURCE_DIR}/src/DXFPluginBuilder.py ++ COMMAND ${_plugins_cmd} + COMMAND ${DOXYGEN_EXECUTABLE} doxyfile_py + COMMAND ${DOXYGEN_EXECUTABLE} doxyfile + COMMAND ${CMAKE_COMMAND} -E remove_directory tmp + VERBATIM + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + + INSTALL(CODE "EXECUTE_PROCESS(COMMAND \"${CMAKE_COMMAND}\" --build ${PROJECT_BINARY_DIR} --target usr_docs)") + INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DXFPLUGIN DESTINATION ${SALOME_INSTALL_DOC}/gui) + INSTALL(FILES images/head.png DESTINATION ${SALOME_INSTALL_DOC}/gui/DXFPLUGIN) + INSTALL(FILES images/head.png DESTINATION ${SALOME_INSTALL_DOC}/gui/DXFPLUGIN/dxfpluginpy_doc) + + SET(make_clean_files DXFPLUGIN dxfpluginpy_doc.tag) + SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${make_clean_files}") diff --cc doc/salome/gui/DXFPLUGIN/doxyfile.in index 0000000,7f54ec4..3af1e63 mode 000000,100755..100755 --- a/doc/salome/gui/DXFPLUGIN/doxyfile.in +++ b/doc/salome/gui/DXFPLUGIN/doxyfile.in @@@ -1,0 -1,114 +1,114 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 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, or (at your option) any later version. + # + # 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 + # + + #--------------------------------------------------------------------------- + # Project related configuration options + #--------------------------------------------------------------------------- + PROJECT_NAME = "SALOME DXFPLUGIN User's Guide" + OUTPUT_DIRECTORY = DXFPLUGIN + CREATE_SUBDIRS = NO + OUTPUT_LANGUAGE = English + TAB_SIZE = 5 + + #--------------------------------------------------------------------------- + # configuration options related to warning and progress messages + #--------------------------------------------------------------------------- + QUIET = NO + WARNINGS = YES + + #--------------------------------------------------------------------------- + #Input related options + #--------------------------------------------------------------------------- + INPUT = @CMAKE_CURRENT_SOURCE_DIR@/input + FILE_PATTERNS = *.doc + EXCLUDE = + IMAGE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/images + EXAMPLE_PATH = @CMAKE_SOURCE_DIR@/doc/salome/examples + + #--------------------------------------------------------------------------- + #HTML related options + #--------------------------------------------------------------------------- + GENERATE_HTML = YES + HTML_OUTPUT = . + HTML_HEADER = @CMAKE_CURRENT_BINARY_DIR@/static/header.html + HTML_FOOTER = @CMAKE_CURRENT_SOURCE_DIR@/static/footer.html + HTML_EXTRA_STYLESHEET = @CMAKE_CURRENT_SOURCE_DIR@/static/salome_extra.css + TOC_EXPAND = YES + DISABLE_INDEX = NO + GENERATE_TREEVIEW = YES + TREEVIEW_WIDTH = 300 + + + #--------------------------------------------------------------------------- + # Configuration options related to the dot tool... + #--------------------------------------------------------------------------- + CLASS_DIAGRAMS = NO + HIDE_UNDOC_RELATIONS = NO + HAVE_DOT = NO + CLASS_GRAPH = NO + COLLABORATION_GRAPH = NO + GROUP_GRAPHS = NO + UML_LOOK = NO + TEMPLATE_RELATIONS = NO + INCLUDE_GRAPH = NO + INCLUDED_BY_GRAPH = NO + CALL_GRAPH = NO + GRAPHICAL_HIERARCHY = NO + DIRECTORY_GRAPH = NO + DOT_IMAGE_FORMAT = jpg + DOT_FONTNAME = Arial + DOT_PATH =. + DOTFILE_DIRS =. + MAX_DOT_GRAPH_WIDTH = 1024 + MAX_DOT_GRAPH_HEIGHT = 1200 + MAX_DOT_GRAPH_DEPTH = 0 + DOT_TRANSPARENT = NO + DOT_MULTI_TARGETS = NO + + + GENERATE_LEGEND = NO + DOT_CLEANUP = YES + + #--------------------------------------------------------------------------- + #SORT related options + #--------------------------------------------------------------------------- + SORT_GROUP_NAMES = NO + + #--------------------------------------------------------------------------- + #LaTeX related option + #--------------------------------------------------------------------------- + GENERATE_LATEX = NO + EXTRA_PACKAGES = amsmath + + #--------------------------------------------------------------------------- + #RTF related options + #--------------------------------------------------------------------------- + GENERATE_RTF = NO + + #--------------------------------------------------------------------------- + #External reference options + #--------------------------------------------------------------------------- + + TAGFILES = dxfpluginpy_doc.tag=../DXFPLUGIN/dxfpluginpy_doc + SEARCHENGINE = YES + + #--------------------------------------------------------------------------- + #Custom commands + #--------------------------------------------------------------------------- + ALIASES += tui_script{1}="\include \1 Download this script" diff --cc doc/salome/gui/DXFPLUGIN/doxyfile_py.in index 0000000,bb77f41..46b644e mode 000000,100755..100755 --- a/doc/salome/gui/DXFPLUGIN/doxyfile_py.in +++ b/doc/salome/gui/DXFPLUGIN/doxyfile_py.in @@@ -1,0 -1,160 +1,160 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 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, or (at your option) any later version. + # + # 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 + # + + #--------------------------------------------------------------------------- + # Project related configuration options + #--------------------------------------------------------------------------- + PROJECT_NAME = "SALOME DXFPLUGIN User's Guide" + OUTPUT_DIRECTORY = DXFPLUGIN + CREATE_SUBDIRS = NO + OUTPUT_LANGUAGE = English + USE_WINDOWS_ENCODING = NO + BRIEF_MEMBER_DESC = YES + REPEAT_BRIEF = YES + ALWAYS_DETAILED_SEC = YES + INLINE_INHERITED_MEMB = YES + FULL_PATH_NAMES = NO + SHORT_NAMES = NO + JAVADOC_AUTOBRIEF = YES + MULTILINE_CPP_IS_BRIEF = NO + DETAILS_AT_TOP = NO + INHERIT_DOCS = YES + SEPARATE_MEMBER_PAGES = NO + TAB_SIZE = 5 + OPTIMIZE_OUTPUT_FOR_C = YES + OPTIMIZE_OUTPUT_JAVA = YES + BUILTIN_STL_SUPPORT = NO + DISTRIBUTE_GROUP_DOC = NO + SUBGROUPING = YES + + #--------------------------------------------------------------------------- + # Build related options + #--------------------------------------------------------------------------- + EXTRACT_ALL = YES + EXTRACT_PRIVATE = YES + EXTRACT_STATIC = NO + EXTRACT_LOCAL_CLASSES = YES + EXTRACT_LOCAL_METHODS = NO + HIDE_UNDOC_MEMBERS = NO + HIDE_UNDOC_CLASSES = NO + HIDE_FRIEND_COMPOUNDS = NO + HIDE_IN_BODY_DOCS = NO + INTERNAL_DOCS = YES + CASE_SENSE_NAMES = YES + HIDE_SCOPE_NAMES = YES + SHOW_INCLUDE_FILES = YES + INLINE_INFO = YES + SORT_MEMBER_DOCS = NO + SORT_BRIEF_DOCS = NO + SORT_BY_SCOPE_NAME = NO + GENERATE_TODOLIST = YES + GENERATE_TESTLIST = YES + GENERATE_BUGLIST = YES + GENERATE_DEPRECATEDLIST= YES + MAX_INITIALIZER_LINES = 25 + SHOW_USED_FILES = NO + SHOW_DIRECTORIES = NO + + #--------------------------------------------------------------------------- + # configuration options related to source browsing + #--------------------------------------------------------------------------- + SOURCE_BROWSER = NO + INLINE_SOURCES = NO + STRIP_CODE_COMMENTS = YES + REFERENCED_BY_RELATION = NO + REFERENCES_RELATION = YES + USE_HTAGS = NO + VERBATIM_HEADERS = YES + + #--------------------------------------------------------------------------- + # configuration options related to warning and progress messages + #--------------------------------------------------------------------------- + QUIET = NO + WARNINGS = YES + WARN_IF_UNDOCUMENTED = YES + WARN_IF_DOC_ERROR = YES + WARN_NO_PARAMDOC = NO + EXCLUDE_SYMLINKS = NO + EXAMPLE_RECURSIVE = NO + + #--------------------------------------------------------------------------- + #Input related options + #--------------------------------------------------------------------------- + INPUT = tmp @CMAKE_SOURCE_DIR@/idl/DXFPlugin_Gen.idl + FILE_PATTERNS = + IMAGE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/images + RECURSIVE = NO + EXAMPLE_PATH = @CMAKE_SOURCE_DIR@/src/ + + #--------------------------------------------------------------------------- + #HTML related options + #--------------------------------------------------------------------------- + GENERATE_HTML = YES + HTML_OUTPUT = dxfpluginpy_doc + HTML_HEADER = @CMAKE_CURRENT_BINARY_DIR@/static/header_py.html + HTML_FOOTER = @CMAKE_CURRENT_SOURCE_DIR@/static/footer.html + HTML_EXTRA_STYLESHEET = @CMAKE_CURRENT_SOURCE_DIR@/static/salome_extra.css + TOC_EXPAND = YES + DISABLE_INDEX = NO + GENERATE_TREEVIEW = YES + TREEVIEW_WIDTH = 300 + + #--------------------------------------------------------------------------- + #LaTeX related option + #--------------------------------------------------------------------------- + GENERATE_LATEX = NO + + #--------------------------------------------------------------------------- + #RTF related options + #--------------------------------------------------------------------------- + GENERATE_RTF = NO + + #--------------------------------------------------------------------------- + # Configuration options related to the dot tool + #--------------------------------------------------------------------------- + CLASS_DIAGRAMS = NO + HIDE_UNDOC_RELATIONS = NO + HAVE_DOT = YES + CLASS_GRAPH = YES + COLLABORATION_GRAPH = NO + GROUP_GRAPHS = NO + UML_LOOK = NO + TEMPLATE_RELATIONS = YES + INCLUDE_GRAPH = YES + INCLUDED_BY_GRAPH = YES + CALL_GRAPH = NO + GRAPHICAL_HIERARCHY = YES + DIRECTORY_GRAPH = YES + DOT_IMAGE_FORMAT = png + DOT_FONTNAME = Arial + DOT_PATH = + DOTFILE_DIRS = + MAX_DOT_GRAPH_WIDTH = 1024 + MAX_DOT_GRAPH_HEIGHT = 1024 + MAX_DOT_GRAPH_DEPTH = 1000 + DOT_TRANSPARENT = NO + DOT_MULTI_TARGETS = NO + GENERATE_LEGEND = NO + DOT_CLEANUP = YES + + #--------------------------------------------------------------------------- + #External reference options + #--------------------------------------------------------------------------- + GENERATE_TAGFILE = dxfpluginpy_doc.tag + SEARCHENGINE = YES diff --cc doc/salome/gui/DXFPLUGIN/input/dxfplugin_importexport_page.doc index 0000000,30ae626..335707b mode 000000,100644..100644 --- a/doc/salome/gui/DXFPLUGIN/input/dxfplugin_importexport_page.doc +++ b/doc/salome/gui/DXFPLUGIN/input/dxfplugin_importexport_page.doc @@@ -1,0 -1,30 +1,29 @@@ + /*! + + \page dxfplugin_importexport_page Import/Export DXF + + For using DXFPLUGIN functionalities in SALOME: + + - Run SALOME and activate Geometry module. + + - Import the DXF file from menu File/Import/DXF. + + \image html import_dxf.png + - Browse and select the file and click "Open" button. New object (shape) - will appears in the SALOME object browser. ++ Browse and select the file and press "Open" button. New object (shape) ++ will appear in the SALOME object browser. + - \note It is possible to re-open from the initial file a previously imported shape if - the file has been changed on disk. For this, select Reload From Disk - in the context menu of the imported shape. The reloaded shape will have the same - representation parameters as before this operation. ++ \note It is possible to re-load a previously imported shape from the initial file if ++ the file has been changed on disk. For this, select Reload From Disk item ++ in the Object browser's context menu of the imported shape. The reloaded shape will ++ have the same representation parameters as before this operation. + + \image html reopen_dxf.png + -- Export to the DXF file selecting a shape in the SALOME object browser and - calling menu File/Export/DXF. ++- Export selected shape to the DXF file via File/Export/DXF menu. + + \image html export_dxf.png + - Enter the file name and click "Save" button. ++ Enter the file name and press "Save" button. + + */ diff --cc doc/salome/gui/DXFPLUGIN/input/dxfplugin_python_interface_page.doc index 0000000,e2725fa..3ab4f34 mode 000000,100644..100644 --- a/doc/salome/gui/DXFPLUGIN/input/dxfplugin_python_interface_page.doc +++ b/doc/salome/gui/DXFPLUGIN/input/dxfplugin_python_interface_page.doc @@@ -1,0 -1,19 +1,19 @@@ + /*! + + \page dxfplugin_python_interface_page Python Interface + -Python package DXFPluginBuilder defines several classes, destined for -import and export CAD models in DXF format (*.dxf files). ++Python package DXFPluginBuilder defines several functions that allow ++importing and exporting CAD models in DXF format (*.dxf files). + + DXFPLUGIN dynamically adds several methods to the geomBuilder. + + Below you can see an example of usage of the DXFPluginBuilder package for + import and export CAD models: + + \anchor example_DXFPlugin +

Example of import/export CAD model stored in DXF format (*.dxf files) with DXFPLUGIN:

+ \tui_script{DXFPlugindemo.py} + + */ + + diff --cc doc/salome/gui/DXFPLUGIN/input/index.doc index 0000000,78568cf..d5c7812 mode 000000,100644..100644 --- a/doc/salome/gui/DXFPLUGIN/input/index.doc +++ b/doc/salome/gui/DXFPLUGIN/input/index.doc @@@ -1,0 -1,17 +1,16 @@@ + /*! + + \mainpage Introduction to DXFPLUGIN + -\b DXF interface to be used as plugin for SALOME Geometry -module. -It is destined for: -- Importing CAD models stored in DXF format (*.dxf files) into -SALOME study; ++The \b DXFPLUGIN implements DXF interface as a plugin for SALOME Geometry module. ++ ++It can be used for: ++- Importing CAD models stored in DXF format (*.dxf files) into SALOME study; + - Exporting CAD models from SALOME to the *.dxf files. + -To manage parameters of the DXFPLUGIN use \subpage dxfplugin_importexport_page. ++To use functionality of the DXFPLUGIN refer to \subpage dxfplugin_importexport_page. + -Also all DXFPLUGIN functionalities are accessible via ++Also all functionalities of the DXFPLUGIN are accessible via + \subpage dxfplugin_python_interface_page "DXFPLUGIN Python interface". + + */ diff --cc doc/salome/gui/DXFPLUGIN/static/footer.html index 0000000,e21ab0c..a9dd3c1 mode 000000,100755..100755 --- a/doc/salome/gui/DXFPLUGIN/static/footer.html +++ b/doc/salome/gui/DXFPLUGIN/static/footer.html @@@ -1,0 -1,13 +1,13 @@@ + + + + + + diff --cc idl/CMakeLists.txt index 0000000,6fd41e0..c0eff38 mode 000000,100755..100755 --- a/idl/CMakeLists.txt +++ b/idl/CMakeLists.txt @@@ -1,0 -1,49 +1,49 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 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, or (at your option) any later version. + # + # 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 + # + + INCLUDE(UseOmniORB) + + INCLUDE_DIRECTORIES( + ${KERNEL_INCLUDE_DIRS} + ${GEOM_INCLUDE_DIRS} + ${OMNIORB_INCLUDE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ) + + IF(WIN32) + ADD_DEFINITIONS(-DNOGDI) + ENDIF(WIN32) + + SET(SalomeIDLDXFPlugin_IDLSOURCES + DXFPlugin.idl + ) + + SET(IDL_INCLUDE_DIRS + ${KERNEL_ROOT_DIR}/idl/salome + ${GEOM_ROOT_DIR}/idl/salome + ${CMAKE_CURRENT_SOURCE_DIR} + ) + SET(IDL_LINK_FLAGS + ${KERNEL_SalomeIDLKernel} + ${GEOM_SalomeIDLGEOM} + ) + + OMNIORB_ADD_MODULE(SalomeIDLDXFPlugin "${SalomeIDLDXFPlugin_IDLSOURCES}" "${IDL_INCLUDE_DIRS}" "${IDL_LINK_FLAGS}") + ADD_DEPENDENCIES(SalomeIDLDXFPlugin ${GEOM_SalomeIDLGEOM}) + INSTALL(TARGETS SalomeIDLDXFPlugin EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS}) diff --cc idl/DXFPlugin.idl index 0000000,935dbf2..867adcb mode 000000,100644..100644 --- a/idl/DXFPlugin.idl +++ b/idl/DXFPlugin.idl @@@ -1,0 -1,52 +1,52 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + #ifndef __DXFPlugin_IDL__ + #define __DXFPlugin_IDL__ + + #include "GEOM_Gen.idl" + + module DXFPlugin + { + /*! + * \brief Interface for DXFPlugin modeling functions. + */ + interface IDXFOperations : GEOM::GEOM_IOperations + { + /*! + * \brief Export the given shape into a file with given name in DXF format. + * + * \param theObject Shape to be stored in the file. + * \param theFileName Name of the file to store the given shape in. + */ + void ExportDXF( in GEOM::GEOM_Object theObject, - in string theFileName ); ++ in string theFileName ); + + /*! + * \brief Import a shape from the DXF file. + * + * \param theFileName The file, containing the shape. + * \return List of GEOM_Objects, containing the created shape and propagation groups. + */ + GEOM::ListOfGO ImportDXF( in string theFileName ); + }; + }; + + #endif // __DXFPlugin_IDL__ + diff --cc resources/DXFPlugin.xml index 0000000,258e9fe..7531e64 mode 000000,100644..100644 --- a/resources/DXFPlugin.xml +++ b/resources/DXFPlugin.xml @@@ -1,0 -1,43 +1,43 @@@ + + + + + + + + + + + + + + + + + + diff --cc resources/SalomeApp.xml index 0000000,466c936..ba8da96 mode 000000,100644..100644 --- a/resources/SalomeApp.xml +++ b/resources/SalomeApp.xml @@@ -1,0 -1,32 +1,32 @@@ + + +
+ +
+
+ + +
+
+ +
+
diff --cc src/DXFPluginBuilder.py index 0000000,63404d6..ff92dd7 mode 000000,100644..100644 --- a/src/DXFPluginBuilder.py +++ b/src/DXFPluginBuilder.py @@@ -1,0 -1,89 +1,101 @@@ + # -*- coding: iso-8859-1 -*- -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 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, or (at your option) any later version. + # + # 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 + # + + from DXFPlugin import IDXFOperations + + # Engine Library Name + __libraryName__ = "DXFPluginEngine" + ++## Get DXF plugin operations interface ++# @return an instance of DXF plugin operations interface + def GetDXFPluginOperations(self): ++ """ ++ Get DXF plugin operations interface. ++ ++ Returns: ++ An instance of DXF plugin operations interface ++ """ + anOp = self.GetPluginOperations(self.myStudyId, __libraryName__) + return anOp._narrow(IDXFOperations) + + ## Export the given shape into a file with given name in DXF format. + # @param theObject Shape to be stored in the file. + # @param theFileName Name of the file to store the given shape in. ++# @sa ImportDXF + def ExportDXF(self, theObject, theFileName): + """ + Export the given shape into a file with given name in DXF format. + + Parameters: + theObject Shape to be stored in the file. + theFileName Name of the file to store the given shape in. + """ + anOp = GetDXFPluginOperations(self) + anOp.ExportDXF(theObject, theFileName) + if anOp.IsDone() == 0: + raise RuntimeError, "Export : " + anOp.GetErrorCode() + pass + pass + + + ## Import a shape from the DXF file + # @param theFileName The file, containing the shape. + # @param theName Object name; when specified, this parameter is used + # for result publication in the study. Otherwise, if automatic + # publication is switched on, default value is used for result name. + # + # @return New GEOM.GEOM_Object, containing the imported shape. + # If material names are imported it returns the list of + # objects. The first one is the imported object followed by + # material groups. ++# + # @note Auto publishing is allowed for the shape itself. Imported + # material groups are not automatically published. ++# ++# @sa ExportDXF + def ImportDXF(self, theFileName, theName=None): + """ + Import a shape from the DXF file + + Parameters: + theFileName The file, containing the shape. + theName Object name; when specified, this parameter is used + for result publication in the study. Otherwise, if automatic + publication is switched on, default value is used for result name. + + Returns: + New GEOM.GEOM_Object, containing the imported shape. + If material names are imported it returns the list of + objects. The first one is the imported object followed by + material groups. + Note: + Auto publishing is allowed for the shape itself. Imported + material groups are not automatically published. + """ + from salome.geom.geomBuilder import RaiseIfFailed + anOp = GetDXFPluginOperations(self) + aListObj = anOp.ImportDXF(theFileName) + RaiseIfFailed("ImportDXF", anOp) + aNbObj = len(aListObj) + if aNbObj > 0: + self._autoPublish(aListObj[0], theName, "imported") + if aNbObj == 1: + return aListObj[0] + return aListObj diff --cc src/DXFPlugin_Engine.cxx index 0000000,e3a40d2..c85b284 mode 000000,100644..100644 --- a/src/DXFPlugin_Engine.cxx +++ b/src/DXFPlugin_Engine.cxx @@@ -1,0 -1,31 +1,31 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + // internal includes + #include "DXFPlugin_Engine.hxx" + #include "DXFPlugin_OperationsCreator.hxx" + + extern "C" + { + DXFPLUGINENGINE_EXPORT + GEOM_GenericOperationsCreator* GetOperationsCreator() + { + return new DXFPlugin_OperationsCreator(); + } + } diff --cc src/DXFPlugin_Engine.hxx index 0000000,073d0df..5e166b6 mode 000000,100755..100755 --- a/src/DXFPlugin_Engine.hxx +++ b/src/DXFPlugin_Engine.hxx @@@ -1,0 -1,33 +1,33 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + #ifndef _DXFPLUGIN_ENGINE_HXX_ + #define _DXFPLUGIN_ENGINE_HXX_ + + #ifdef WIN32 + #if defined DXFPLUGINENGINE_EXPORTS || defined DXFPluginEngine_EXPORTS + #define DXFPLUGINENGINE_EXPORT __declspec( dllexport ) + #else + #define DXFPLUGINENGINE_EXPORT __declspec( dllimport ) + #endif + #else + #define DXFPLUGINENGINE_EXPORT + #endif + + #endif diff --cc src/DXFPlugin_ExportDriver.cxx index 0000000,97dc381..9682266 mode 000000,100644..100644 --- a/src/DXFPlugin_ExportDriver.cxx +++ b/src/DXFPlugin_ExportDriver.cxx @@@ -1,0 -1,132 +1,132 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + // internal includes + #include "DXFPlugin_ExportDriver.hxx" + #include "DXFPlugin_IExport.hxx" + + // KERNEL includes + #include + #include + + // GEOM includes + #include + + // OOCT includes + #include + #include + #include + #include + + #ifdef DXF_HASLICENSE + #include "DXFPlugin_license.h" + + #include + #include + #endif // DXF_HASLICENSE + + //======================================================================= + //function : GetID + //purpose : + //======================================================================= + const Standard_GUID& DXFPlugin_ExportDriver::GetID() + { + static Standard_GUID aGUID("5bad3191-8af9-4b90-9e95-31f5fdb65304"); + return aGUID; + } + + //======================================================================= + //function : DXFPlugin_ExportDriver + //purpose : + //======================================================================= + DXFPlugin_ExportDriver::DXFPlugin_ExportDriver() + { + } + + //======================================================================= + //function : Execute + //purpose : + //======================================================================= + Standard_Integer DXFPlugin_ExportDriver::Execute( TFunction_Logbook& log ) const + { + #ifdef DXF_HASLICENSE + try { + OCCLicense_Activate("DXF-W-"OCC_VERSION_STRING, DXF_WRITE_LICENSE); + } + catch (Standard_LicenseError) { + return 1; + } + #endif // DXF_HASLICENSE + + if (Label().IsNull()) return 0; + Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction( Label() ); + + DXFPlugin_IExport aData (aFunction); + + // retrieve the being exported shape + TopoDS_Shape aShape; + Handle(GEOM_Function) aRefFunction = aData.GetOriginal(); + if( aRefFunction.IsNull() ) return 0; + aShape = aRefFunction->GetValue(); + if( aShape.IsNull() ) return 0; + // set the result of function to be used by next operations + aFunction->SetValue( aShape ); + + TCollection_AsciiString aFileName = aData.GetFileName(); + + MESSAGE("Export DXF into file " << aFileName.ToCString()); + + // Set "C" numeric locale to save numbers correctly + Kernel_Utils::Localizer loc; + + DxfControl_Writer aWriter; + + IFSelect_ReturnStatus status ; + status = aWriter.TransferShape( aShape ); + if ( status == IFSelect_RetDone ) + status = aWriter.WriteFile( aFileName.ToCString() ) ; + if ( status == IFSelect_RetDone ) + return 1; + else + return 0; + } + + //======================================================================= + //function : MustExecute + //purpose : + //======================================================================= + Standard_Boolean DXFPlugin_ExportDriver::MustExecute( const TFunction_Logbook& ) const + { + return Standard_True; + } + + //================================================================================ + /*! + * \brief Returns a name of creation operation and names and values of creation parameters + */ + //================================================================================ + bool DXFPlugin_ExportDriver:: + GetCreationInformation( std::string& theOperationName, + std::vector& theParams ) + { + return false; + } + + IMPLEMENT_STANDARD_HANDLE( DXFPlugin_ExportDriver,GEOM_BaseDriver ); + IMPLEMENT_STANDARD_RTTIEXT( DXFPlugin_ExportDriver,GEOM_BaseDriver ); diff --cc src/DXFPlugin_ExportDriver.hxx index 0000000,ad88707..6f95e3c mode 000000,100644..100644 --- a/src/DXFPlugin_ExportDriver.hxx +++ b/src/DXFPlugin_ExportDriver.hxx @@@ -1,0 -1,50 +1,50 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + #ifndef _DXFPlugin_ExportDriver_HXX + #define _DXFPlugin_ExportDriver_HXX + + // GEOM includes + #include + + // OCCT includes + #ifndef _TFunction_Logbook_HeaderFile + #include + #endif + + DEFINE_STANDARD_HANDLE( DXFPlugin_ExportDriver, GEOM_BaseDriver ); + + class DXFPlugin_ExportDriver : public GEOM_BaseDriver + { + public: + DXFPlugin_ExportDriver(); + ~DXFPlugin_ExportDriver() {}; + + static const Standard_GUID& GetID(); + virtual Standard_Integer Execute( TFunction_Logbook& log ) const; + Standard_Boolean MustExecute( const TFunction_Logbook& ) const; + virtual void Validate( TFunction_Logbook& ) const {} + + virtual bool GetCreationInformation( std::string& theOperationName, + std::vector& params ); + + DEFINE_STANDARD_RTTI( DXFPlugin_ExportDriver ) + }; + + #endif // _DXFPlugin_ExportDriver_HXX diff --cc src/DXFPlugin_GUI.cxx index 0000000,6f74748..e4a64cc mode 000000,100644..100644 --- a/src/DXFPlugin_GUI.cxx +++ b/src/DXFPlugin_GUI.cxx @@@ -1,0 -1,265 +1,265 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + // internal includes + #include "DXFPlugin_GUI.h" + + // GUI includes + #include + #include + #include + #include + #include + #include + #include + #include + #include + + // GEOM includes + #include "GeometryGUI.h" + #include "GEOM_Operation.h" + #include "GEOMBase.h" + #include "GEOM_Displayer.h" + + #include + #include CORBA_SERVER_HEADER(DXFPlugin) + + //======================================================================= + // function : DXFPlugin_GUI() + // purpose : Constructor + //======================================================================= + DXFPlugin_GUI::DXFPlugin_GUI( GeometryGUI* parent ) : GEOMPluginGUI( parent ) + { + } + + //======================================================================= + // function : ~DXFPlugin_GUI + // purpose : Destructor + //======================================================================= + DXFPlugin_GUI::~DXFPlugin_GUI() + { + } + + //======================================================================= + // function : OnGUIEvent() + // purpose : + //======================================================================= + bool DXFPlugin_GUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent ) + { + QString cmd; + switch ( theCommandID ) { + case 1: + cmd = "Export_DXF"; + case 2: + cmd = "Import_DXF"; + default: + break; + } + return OnGUIEvent( cmd, parent ); + } + + //======================================================================= + // function : OnGUIEvent() + // purpose : + //======================================================================= + bool DXFPlugin_GUI::OnGUIEvent( const QString& theCommandID, SUIT_Desktop* parent ) + { + bool result = false; + + if ( theCommandID == "Export_DXF" ) + { + result = exportDXF( parent ); + } + else if ( theCommandID == "Import_DXF" ) + { + result = importDXF( parent ); + } + else + { + getGeometryGUI()->getApp()->putInfo( tr("GEOM_PRP_COMMAND").arg( theCommandID ) ); + } + return result; + } + + //======================================================================= + // function : importDXF + // purpose : + //======================================================================= + bool DXFPlugin_GUI::importDXF( SUIT_Desktop* parent ) + { + SalomeApp_Application* app = getGeometryGUI()->getApp(); + if ( !app ) return false; + SalomeApp_Study* study = dynamic_cast ( app->activeStudy() ); + if ( !study ) return false; + + SALOMEDS::Study_var dsStudy = GeometryGUI::ClientStudyToStudy( study->studyDS() ); + GEOM::GEOM_IOperations_var op = GeometryGUI::GetGeomGen()->GetPluginOperations( dsStudy->StudyId(), "DXFPluginEngine" ); + DXFPlugin::IDXFOperations_var dxfOp = DXFPlugin::IDXFOperations::_narrow( op ); + if ( CORBA::is_nil( dxfOp ) ) return false; + + QStringList fileNames = app->getOpenFileNames( SUIT_FileDlg::getLastVisitedPath().isEmpty() ? QDir::currentPath() : QString(""), + tr( "DXF_FILES" ), + tr( "IMPORT_TITLE" ), + parent ); + if ( fileNames.count() > 0 ) + { + QStringList entryList; + QStringList errors; + + foreach( QString fileName, fileNames ) + { + SUIT_OverrideCursor wc; + GEOM_Operation transaction( app, dxfOp.in() ); + + try + { + app->putInfo( tr( "GEOM_PRP_LOADING" ).arg( fileName ) ); + transaction.start(); + GEOM::ListOfGO_var result = dxfOp->ImportDXF( fileName.toUtf8().constData() ); + if ( result->length() > 0 && dxfOp->IsDone() ) + { + GEOM::GEOM_Object_var main = result[0]; + QString publishName = GEOMBase::GetDefaultName( SUIT_Tools::file( fileName, true ) ); + SALOMEDS::SObject_var so = GeometryGUI::GetGeomGen()->PublishInStudy( dsStudy, + SALOMEDS::SObject::_nil(), + main.in(), + publishName.toUtf8().constData() ); + + entryList.append( so->GetID() ); + transaction.commit(); + GEOM_Displayer( study ).Display( main.in() ); + } + else + { + transaction.abort(); + errors.append( QString( "%1 : %2" ).arg( fileName ).arg( dxfOp->GetErrorCode() ) ); + } + } + catch( const SALOME::SALOME_Exception& e ) + { + transaction.abort(); + } + } + getGeometryGUI()->updateObjBrowser( true ); + app->browseObjects( entryList ); + + if ( errors.count() > 0 ) + { + SUIT_MessageBox::critical( parent, + tr( "GEOM_ERROR" ), + tr( "GEOM_IMPORT_ERRORS" ) + "\n" + errors.join( "\n" ) ); + } + } + return fileNames.count() > 0; + } + + //======================================================================= + // function : exportDXF + // purpose : + //======================================================================= + bool DXFPlugin_GUI::exportDXF( SUIT_Desktop* parent ) + { + SalomeApp_Application* app = getGeometryGUI()->getApp(); + if ( !app ) return false; + SalomeApp_Study* study = dynamic_cast ( app->activeStudy() ); + if ( !study ) return false; + + SALOMEDS::Study_var dsStudy = GeometryGUI::ClientStudyToStudy( study->studyDS() ); + GEOM::GEOM_IOperations_var op = GeometryGUI::GetGeomGen()->GetPluginOperations( dsStudy->StudyId(), "DXFPluginEngine" ); + DXFPlugin::IDXFOperations_var dxfOp = DXFPlugin::IDXFOperations::_narrow( op ); + if ( CORBA::is_nil( dxfOp ) ) return false; + + LightApp_SelectionMgr* sm = app->selectionMgr(); + if ( !sm ) return false; + + SALOME_ListIO selectedObjects; + sm->selectedObjects( selectedObjects ); + bool ok = false; + + SALOME_ListIteratorOfListIO it( selectedObjects ); + for ( ; it.More(); it.Next() ) + { + Handle(SALOME_InteractiveObject) io = it.Value(); + GEOM::GEOM_Object_var obj = GEOMBase::ConvertIOinGEOMObject( io ); + + if ( CORBA::is_nil( obj ) ) continue; + + QString fileName = app->getFileName( false, + QString( io->getName() ), + tr( "DXF_FILES" ), + tr( "EXPORT_TITLE" ), + parent ); + + if ( fileName.isEmpty() ) + return false; + + SUIT_OverrideCursor wc; + + GEOM_Operation transaction( app, dxfOp.in() ); + + try + { + app->putInfo( tr( "GEOM_PRP_EXPORT" ).arg( fileName ) ); + transaction.start(); + + dxfOp->ExportDXF( obj, fileName.toUtf8().constData() ); + + if ( dxfOp->IsDone() ) + { + transaction.commit(); + } + else + { + transaction.abort(); + SUIT_MessageBox::critical( parent, + tr( "GEOM_ERROR" ), + tr( "GEOM_PRP_ABORT" ) + "\n" + tr( dxfOp->GetErrorCode() ) ); + return false; + } + } + catch ( const SALOME::SALOME_Exception& e ) + { + transaction.abort(); + return false; + } + ok = true; + } + + if ( !ok ) + { + SUIT_MessageBox::warning( parent, + tr( "WRN_WARNING" ), + tr( "GEOM_WRN_NO_APPROPRIATE_SELECTION" ) ); + } + return ok; + } + + //===================================================================================== + // EXPORTED METHODS + //===================================================================================== + extern "C" + { + #ifdef WIN32 + __declspec( dllexport ) + #endif + GEOMGUI* GetLibGUI( GeometryGUI* parent ) + { + return new DXFPlugin_GUI( parent ); + } + } diff --cc src/DXFPlugin_GUI.h index 0000000,99045fd..8ccd209 mode 000000,100644..100644 --- a/src/DXFPlugin_GUI.h +++ b/src/DXFPlugin_GUI.h @@@ -1,0 -1,40 +1,40 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + #ifndef DXFPlugin_GUI_H + #define DXFPlugin_GUI_H + + #include + + class DXFPlugin_GUI: public GEOMPluginGUI + { + Q_OBJECT + public: + DXFPlugin_GUI( GeometryGUI* parent ); + ~DXFPlugin_GUI(); + + bool OnGUIEvent( int commandId, SUIT_Desktop* ); + bool OnGUIEvent( const QString&, SUIT_Desktop* ); + + private: + bool importDXF( SUIT_Desktop* ); + bool exportDXF( SUIT_Desktop* ); + }; + + #endif // DXFPlugin_GUI_H diff --cc src/DXFPlugin_IECallBack.cxx index 0000000,8aa1685..4411ef1 mode 000000,100755..100755 --- a/src/DXFPlugin_IECallBack.cxx +++ b/src/DXFPlugin_IECallBack.cxx @@@ -1,0 -1,71 +1,71 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + // internal includes + #include "DXFPlugin_IECallBack.hxx" + #include "DXFPlugin_IOperations.hxx" + #include "DXFPlugin_OperationsCreator.hxx" + + //============================================================================= + /*! + * constructor + */ + //============================================================================= + DXFPlugin_IECallBack::DXFPlugin_IECallBack() + { + } + + //============================================================================= + /*! + * destructor + */ + //============================================================================= + DXFPlugin_IECallBack::~DXFPlugin_IECallBack() + { + } + + //============================================================================= + /*! + * Export + */ + //============================================================================= + bool DXFPlugin_IECallBack::Export( int theDocId, + const Handle(GEOM_Object) theOriginal, + const TCollection_AsciiString& theFileName, + const TCollection_AsciiString& theFormatName ) + { + DXFPlugin_IOperations* aPluginOperations = DXFPlugin_OperationsCreator::get( GetEngine(), theDocId ); + aPluginOperations->ExportDXF( theOriginal, theFileName ); + return true; + } + + //============================================================================= + /*! + * Import + */ + //============================================================================= + Handle(TColStd_HSequenceOfTransient) + DXFPlugin_IECallBack::Import( int theDocId, + const TCollection_AsciiString& theFormatName, + const TCollection_AsciiString& theFileName ) + { + DXFPlugin_IOperations* aPluginOperations = DXFPlugin_OperationsCreator::get( GetEngine(), theDocId ); + return aPluginOperations->ImportDXF( theFileName ); + } + diff --cc src/DXFPlugin_IECallBack.hxx index 0000000,0e0b5c1..a3710a4 mode 000000,100644..100644 --- a/src/DXFPlugin_IECallBack.hxx +++ b/src/DXFPlugin_IECallBack.hxx @@@ -1,0 -1,49 +1,49 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + #ifndef _DXFPlugin_IECallBack_HXX_ + #define _DXFPlugin_IECallBack_HXX_ + + // internal includes + #include "DXFPlugin_IOperations.hxx" + + // GEOM includes + #include + #include + + // OCC includes + #include + + class DXFPLUGINENGINE_EXPORT DXFPlugin_IECallBack : public GEOMImpl_IECallBack + { + public: + DXFPlugin_IECallBack(); + ~DXFPlugin_IECallBack(); + + bool Export( int theDocId, + const Handle(GEOM_Object) theOriginal, + const TCollection_AsciiString& theFileName, + const TCollection_AsciiString& theFormatName ); + + Handle(TColStd_HSequenceOfTransient) Import( int theDocId, + const TCollection_AsciiString& theFormatName, + const TCollection_AsciiString& theFileName ); + }; + + #endif diff --cc src/DXFPlugin_IExport.hxx index 0000000,860cf24..27bb469 mode 000000,100644..100644 --- a/src/DXFPlugin_IExport.hxx +++ b/src/DXFPlugin_IExport.hxx @@@ -1,0 -1,48 +1,48 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + #ifndef _DXFPlugin_IExport_HXX_ + #define _DXFPlugin_IExport_HXX_ + + #include "GEOM_Function.hxx" + + #define EXPORTDXF_ARG_ORIGINAL 1 + #define EXPORTDXF_ARG_FILENAME 2 + + class DXFPlugin_IExport + { + public: + DXFPlugin_IExport( Handle(GEOM_Function) theFunction ) + : _func(theFunction) {} + + void SetOriginal( Handle( GEOM_Function ) theOriginal) + { _func->SetReference( EXPORTDXF_ARG_ORIGINAL, theOriginal ); } + Handle( GEOM_Function ) GetOriginal() + { return _func->GetReference( EXPORTDXF_ARG_ORIGINAL ); } + + void SetFileName( const TCollection_AsciiString& theFileName ) + { _func->SetString( EXPORTDXF_ARG_FILENAME, theFileName ); } + TCollection_AsciiString GetFileName() + { return _func->GetString( EXPORTDXF_ARG_FILENAME ); } + + private: + Handle(GEOM_Function) _func; + }; + + #endif // _DXFPlugin_IExport_HXX_ diff --cc src/DXFPlugin_IImport.hxx index 0000000,e33c410..8a1ab26 mode 000000,100644..100644 --- a/src/DXFPlugin_IImport.hxx +++ b/src/DXFPlugin_IImport.hxx @@@ -1,0 -1,42 +1,42 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + #ifndef _DXFPlugin_IImport_HXX_ + #define _DXFPlugin_IImport_HXX_ + + #include "GEOM_Function.hxx" + + #define IMPORTDXF_ARG_FILENAME 1 + + class DXFPlugin_IImport + { + public: + DXFPlugin_IImport( Handle(GEOM_Function) theFunction) + : _func(theFunction) {} + + void SetFileName( const TCollection_AsciiString& theFileName ) + { _func->SetString( IMPORTDXF_ARG_FILENAME, theFileName ); } + TCollection_AsciiString GetFileName() + { return _func->GetString( IMPORTDXF_ARG_FILENAME ); } + + private: + Handle(GEOM_Function) _func; + }; + + #endif // _DXFPlugin_IImport_HXX_ diff --cc src/DXFPlugin_IOperations.cxx index 0000000,65b3732..7a49fa6 mode 000000,100644..100644 --- a/src/DXFPlugin_IOperations.cxx +++ b/src/DXFPlugin_IOperations.cxx @@@ -1,0 -1,165 +1,165 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + // internal includes + #include "DXFPlugin_IOperations.hxx" + #include "DXFPlugin_ExportDriver.hxx" + #include "DXFPlugin_ImportDriver.hxx" + #include "DXFPlugin_IExport.hxx" + #include "DXFPlugin_IImport.hxx" + + // KERNEL includes + #include + + // GEOM includes + #include + #include + + #include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC + + //============================================================================= + /*! + * Constructor + */ + //============================================================================= + DXFPlugin_IOperations::DXFPlugin_IOperations( GEOM_Engine* theEngine, int theDocID ) + : GEOMImpl_IBaseIEOperations( theEngine, theDocID ) + { + MESSAGE( "DXFPlugin_IOperations::DXFPlugin_IOperations" ); + } + + //============================================================================= + /*! + * Destructor + */ + //============================================================================= + DXFPlugin_IOperations::~DXFPlugin_IOperations() + { + MESSAGE( "DXFPlugin_IOperations::~DXFPlugin_IOperations" ); + } + + //============================================================================= + /*! + * ExportDXF + * Export a shape to DXF format + * \param theOriginal The shape to export + * \param theFileName The name of the file to exported + */ + //============================================================================= + void DXFPlugin_IOperations::ExportDXF( const Handle(GEOM_Object) theOriginal, + const TCollection_AsciiString& theFileName ) + { + SetErrorCode(KO); + if( theOriginal.IsNull() ) return; + + Handle(GEOM_Function) aRefFunction = theOriginal->GetLastFunction(); + if( aRefFunction.IsNull() ) return; //There is no function which creates an object to be exported + + //Add a new result object + Handle(GEOM_Object) result = GetEngine()->AddObject( GetDocID(), GEOM_IMPORT); + + //Add an Export function + Handle(GEOM_Function) aFunction = result->AddFunction( DXFPlugin_ExportDriver::GetID(), EXPORT_SHAPE ); + if( aFunction.IsNull() ) return; + + //Check if the function is set correctly + if( aFunction->GetDriverGUID() != DXFPlugin_ExportDriver::GetID() ) return; + + //Set parameters + DXFPlugin_IExport aCI( aFunction ); + aCI.SetOriginal( aRefFunction ); + aCI.SetFileName( theFileName ); + + //Perform the Export + try { + OCC_CATCH_SIGNALS; + if( !GetSolver()->ComputeFunction( aFunction ) ) { + SetErrorCode( "Not enough space on disk, or you haven't permissions to write this directory" ); + return; + } + } + catch( Standard_Failure ) { + Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + SetErrorCode( aFail->GetMessageString() ); + return; + } + + //Make a Python command + GEOM::TPythonDump(aFunction) << "geompy.ExportDXF(" << theOriginal << ", \"" + << theFileName.ToCString() << "\" )"; + + SetErrorCode(OK); + } + + //============================================================================= + /*! + * ImportDXF + * Import a shape from DXF format + * \param theFileName The name of the file to import + * \return List of GEOM_Objects, containing the created shape and propagation groups. + */ + //============================================================================= + Handle(TColStd_HSequenceOfTransient) + DXFPlugin_IOperations::ImportDXF( const TCollection_AsciiString& theFileName ) + { + SetErrorCode(KO); + if( theFileName.IsEmpty() ) return NULL; + + //Add a new result object + Handle(GEOM_Object) anImported = GetEngine()->AddObject( GetDocID(), GEOM_IMPORT ); + + //Add an Import function + Handle(GEOM_Function) aFunction = + anImported->AddFunction( DXFPlugin_ImportDriver::GetID(), IMPORT_SHAPE); + if (aFunction.IsNull()) return NULL; + + //Check if the function is set correctly + if (aFunction->GetDriverGUID() != DXFPlugin_ImportDriver::GetID()) return NULL; + + //Set parameters + DXFPlugin_IImport aCI( aFunction ); + aCI.SetFileName( theFileName ); + + //Perform the Import + Handle(TColStd_HSequenceOfTransient) aSeq = new TColStd_HSequenceOfTransient; + + try { + OCC_CATCH_SIGNALS; + if( !GetSolver()->ComputeFunction( aFunction ) ) { + SetErrorCode( "Import driver failed" ); + return NULL; + } + aSeq->Append(anImported); + + // Greate material groups. + //MakeMaterialGroups( anImported, aSeq ); + } + catch( Standard_Failure ) { + Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + SetErrorCode( aFail->GetMessageString() ); + return NULL; + } + + //Make a Python command + GEOM::TPythonDump pd (aFunction); + pd << aSeq << " = geompy.ImportDXF(\"" << theFileName.ToCString() << "\" )"; + SetErrorCode(OK); + + return aSeq; + } diff --cc src/DXFPlugin_IOperations.hxx index 0000000,c3d9d26..65e5633 mode 000000,100644..100644 --- a/src/DXFPlugin_IOperations.hxx +++ b/src/DXFPlugin_IOperations.hxx @@@ -1,0 -1,42 +1,42 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 : DXFPlugin_IOperations.hxx + + #ifndef _DXFPlugin_IOperations_HXX_ + #define _DXFPlugin_IOperations_HXX_ + + // internal includes + #include "DXFPlugin_Engine.hxx" + + // GEOM includes + #include + + class DXFPLUGINENGINE_EXPORT DXFPlugin_IOperations: public GEOMImpl_IBaseIEOperations + { + public: + DXFPlugin_IOperations( GEOM_Engine*, int ); + ~DXFPlugin_IOperations(); + + void ExportDXF( const Handle(GEOM_Object), + const TCollection_AsciiString& ); + + Handle(TColStd_HSequenceOfTransient) ImportDXF( const TCollection_AsciiString& ); + }; + + #endif diff --cc src/DXFPlugin_IOperations_i.cc index 0000000,bca345b..c04fb8c mode 000000,100644..100644 --- a/src/DXFPlugin_IOperations_i.cc +++ b/src/DXFPlugin_IOperations_i.cc @@@ -1,0 -1,109 +1,109 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + // internal includes + #include "DXFPlugin_IOperations_i.hh" + #include "DXFPlugin_IOperations.hxx" -#include ++#include "DXFPlugin_version.h" + + // KERNEL includes + #include + + //============================================================================= + /*! + * constructor: + */ + //============================================================================= + DXFPlugin_IOperations_i::DXFPlugin_IOperations_i( PortableServer::POA_ptr thePOA, + GEOM::GEOM_Gen_ptr theEngine, + ::DXFPlugin_IOperations* theImpl ) + :GEOM_IOperations_i( thePOA, theEngine, theImpl ) + { + MESSAGE( "DXFPlugin_Operations_i::DXFPlugin_Operations_i" ); + } + + //============================================================================= + /*! + * destructor + */ + //============================================================================= + DXFPlugin_IOperations_i::~DXFPlugin_IOperations_i() + { + MESSAGE( "DXFPlugin_Operations_i::~DXFPlugin_Operations_i" ); + } + + //============================================================================= + /*! + * ExportDXF + * Export a shape to DXF format + * \param theOriginal The shape to export + * \param theFileName The name of the exported file + */ + //============================================================================= + void DXFPlugin_IOperations_i::ExportDXF( GEOM::GEOM_Object_ptr theOriginal, + const char* theFileName ) + { + // duplicate the original shape + GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate( theOriginal ); + + //Set a not done flag + GetOperations()->SetNotDone(); + + //Get the reference shape + Handle(GEOM_Object) anOriginal = GetObjectImpl( theOriginal ); + if (anOriginal.IsNull()) return; + + //Export the shape to the file + GetOperations()->ExportDXF( anOriginal, theFileName ); + } + + //============================================================================= + /*! + * ImportDXF + * Import a shape from DXF format + * \param theFileName The name of the file to import + * \return List of GEOM_Objects, containing the created shape and propagation groups. + */ + //============================================================================= + GEOM::ListOfGO* DXFPlugin_IOperations_i::ImportDXF( const char* theFileName ) + { + GEOM::ListOfGO_var aSeq = new GEOM::ListOfGO; + + //Set a not done flag + GetOperations()->SetNotDone(); + + //Import the shape from the file + Handle(TColStd_HSequenceOfTransient) aHSeq = GetOperations()->ImportDXF( theFileName ); + + if( !GetOperations()->IsDone() || aHSeq.IsNull() ) + return aSeq._retn(); + + // Copy created objects. + Standard_Integer aLength = aHSeq->Length(); + aSeq->length( aLength ); + for( Standard_Integer i = 1; i <= aLength; i++ ) + aSeq[i-1] = GetObject( Handle(GEOM_Object)::DownCast( aHSeq->Value(i) ) ); + + return aSeq._retn(); + } + + DXFPlugin_IOperations* DXFPlugin_IOperations_i::GetOperations() + { + return (DXFPlugin_IOperations*)GetImpl(); + } diff --cc src/DXFPlugin_IOperations_i.hh index 0000000,689e900..fcf7acc mode 000000,100644..100644 --- a/src/DXFPlugin_IOperations_i.hh +++ b/src/DXFPlugin_IOperations_i.hh @@@ -1,0 -1,52 +1,52 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + #ifndef _DXFPlugin_IOperations_i_HeaderFile + #define _DXFPlugin_IOperations_i_HeaderFile + + // idl includes + #include + #include CORBA_SERVER_HEADER( GEOM_Gen ) + #include CORBA_SERVER_HEADER( DXFPlugin ) + + // internal includes + #include "DXFPlugin_Engine.hxx" + + // GEOM includes + #include + + class DXFPlugin_IOperations; + + class DXFPLUGINENGINE_EXPORT DXFPlugin_IOperations_i : + public virtual POA_DXFPlugin::IDXFOperations, + public virtual GEOM_IOperations_i + { + public: + DXFPlugin_IOperations_i( PortableServer::POA_ptr thePOA, + GEOM::GEOM_Gen_ptr theEngine, + DXFPlugin_IOperations* theImpl ); + ~DXFPlugin_IOperations_i(); + + void ExportDXF( GEOM::GEOM_Object_ptr, const char* ); + GEOM::ListOfGO* ImportDXF( const char* ); + + DXFPlugin_IOperations* GetOperations(); + }; + + #endif // _DXFPlugin_IOperations_i_HeaderFile diff --cc src/DXFPlugin_ImportDriver.cxx index 0000000,c9615c2..c69c82e mode 000000,100644..100644 --- a/src/DXFPlugin_ImportDriver.cxx +++ b/src/DXFPlugin_ImportDriver.cxx @@@ -1,0 -1,215 +1,215 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + // internal includes + #include "DXFPlugin_ImportDriver.hxx" + #include "DXFPlugin_IImport.hxx" + + // KERNEL includes + #include + #include + + // GEOM includes + #include + #include + + // OOCT includes + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + + #include + + #ifdef DXF_HASLICENSE + #include "DXFPlugin_license.h" + + #include + #include + #endif // DXF_HASLICENSE + + //======================================================================= + //function : GetID + //purpose : + //======================================================================= + const Standard_GUID& DXFPlugin_ImportDriver::GetID() + { + static Standard_GUID aGUID("dc74f282-3542-419f-a755-c5ab6aba17c5"); + return aGUID; + } + + //======================================================================= + //function : DXFPlugin_ImportDriver + //purpose : + //======================================================================= + DXFPlugin_ImportDriver::DXFPlugin_ImportDriver() + { + } + + //======================================================================= + //function : Execute + //purpose : + //======================================================================= + Standard_Integer DXFPlugin_ImportDriver::Execute( TFunction_Logbook& log ) const + { + if( Label().IsNull() ) return 0; + Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction( Label() ); + + DXFPlugin_IImport aData( aFunction ); + + TCollection_AsciiString aFileName = aData.GetFileName().ToCString(); + + MESSAGE("Import DXF from file " << aFileName); + + TopoDS_Shape aResShape; + + #ifdef DXF_HASLICENSE + try { + OCCLicense_Activate( "DXF-R-"OCC_VERSION_STRING, DXF_READ_LICENSE); + } + catch (Standard_LicenseError) { + return aResShape; + } + #endif + + // Set "C" numeric locale to save numbers correctly + Kernel_Utils::Localizer loc; + + DxfControl_Reader aReader; + + IFSelect_ReturnStatus status = aReader.ReadFile( aFileName.ToCString() ); + if (status == IFSelect_RetDone) { + aReader.TransferRoots(); + aResShape = aReader.OneShape(); + + // ATTENTION: this is a workaround for mantis issue 0020442 remark 0010776 + // It should be removed after patching OCCT for bug OCC22436 + // (fix for OCCT is expected in service pack next to OCCT6.3sp12) + if (aResShape.ShapeType() == TopAbs_COMPOUND) { + int nbSub1 = 0; + TopoDS_Shape currShape; + TopoDS_Iterator It (aResShape, Standard_True, Standard_True); + for (; It.More(); It.Next()) { + nbSub1++; + currShape = It.Value(); + } + if (nbSub1 == 1) + aResShape = currShape; + } + Handle(DxfSection_Model) aModel = Handle(DxfSection_Model)::DownCast( aReader.WS()->Model() ); + Handle(XSControl_TransferReader) TR = aReader.WS()->TransferReader(); + if (!TR.IsNull()) { + Handle(Transfer_TransientProcess) TP = TR->TransientProcess(); + + Handle(DxfSection_Section) aBlocks = aModel->FindSection("BLOCKS"); + if( !aBlocks.IsNull() ) { + Handle(DxfSection_HSequenceOfObject) anObjects = aBlocks->GetObjects(); + for (Standard_Integer i = 1; i <= anObjects->Length(); i++) { + Handle(DxfSection_Block) aBlock = Handle(DxfSection_Block)::DownCast(anObjects->Value(i)); + if (aBlock.IsNull()) continue; + Handle(TCollection_HAsciiString) aName = aBlock->GetBlockName1(); + if (aName.IsNull()) continue; + + Handle(Transfer_Binder) binder = TP->Find ( aBlock ); + if (binder.IsNull()) continue; + TopoDS_Shape aResShape = TransferBRep::ShapeResult (binder); + if (aResShape.IsNull()) continue; + + // create label and set shape + TDF_Label L; + TDF_TagSource aTag; + L = aTag.NewChild(aFunction->GetNamingEntry()); + TNaming_Builder tnBuild(L); + tnBuild.Generated(aResShape); + + // set a name + TCollection_ExtendedString str( aName->ToCString() ); + TDataStd_Name::Set(L,str); + } + } + } + } + else { + TCollection_AsciiString anError = "Wrong format of the imported file. Can't import file."; + StdFail_NotDone::Raise( anError.ToCString() ); + aResShape.Nullify(); + } + + if( aResShape.IsNull() ) return 0; + + aFunction->SetValue( aResShape ); + + log.SetTouched( Label() ); + + return 1; + } + + //======================================================================= + //function : MustExecute + //purpose : + //======================================================================= + Standard_Boolean DXFPlugin_ImportDriver::MustExecute( const TFunction_Logbook& ) const + { + return Standard_True; + } + + //================================================================================ + /*! + * \brief Returns a name of creation operation and names and values of creation parameters + */ + //================================================================================ + + bool DXFPlugin_ImportDriver:: + GetCreationInformation( std::string& theOperationName, + std::vector& theParams ) + { + if( Label().IsNull() ) return 0; + Handle(GEOM_Function) function = GEOM_Function::GetFunction( Label() ); + + DXFPlugin_IImport aCI( function ); + Standard_Integer aType = function->GetType(); + + theOperationName = "ImportDXF"; + + switch ( aType ) { + case IMPORT_SHAPE: + AddParam( theParams, "File name", aCI.GetFileName() ); + break; + default: + return false; + } + return true; + } + + IMPLEMENT_STANDARD_HANDLE( DXFPlugin_ImportDriver, GEOM_BaseDriver ); + IMPLEMENT_STANDARD_RTTIEXT( DXFPlugin_ImportDriver, GEOM_BaseDriver ); diff --cc src/DXFPlugin_ImportDriver.hxx index 0000000,dfc6ac4..8d03716 mode 000000,100644..100644 --- a/src/DXFPlugin_ImportDriver.hxx +++ b/src/DXFPlugin_ImportDriver.hxx @@@ -1,0 -1,50 +1,50 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + #ifndef _DXFPlugin_ImportDriver_HXX + #define _DXFPlugin_ImportDriver_HXX + + // GEOM includes + #include + + // OCCT includes + #ifndef _TFunction_Logbook_HeaderFile + #include + #endif + + DEFINE_STANDARD_HANDLE( DXFPlugin_ImportDriver, GEOM_BaseDriver ); + + class DXFPlugin_ImportDriver : public GEOM_BaseDriver + { + public: + DXFPlugin_ImportDriver(); + ~DXFPlugin_ImportDriver() {}; + + static const Standard_GUID& GetID(); + virtual Standard_Integer Execute( TFunction_Logbook& log ) const; + Standard_Boolean MustExecute( const TFunction_Logbook& ) const; + virtual void Validate( TFunction_Logbook& ) const {} + + virtual bool GetCreationInformation( std::string& theOperationName, + std::vector& params ); + + DEFINE_STANDARD_RTTI( DXFPlugin_ImportDriver ) + }; + + #endif // _DXFPlugin_ImportDriver_HXX diff --cc src/DXFPlugin_OperationsCreator.cxx index 0000000,a20b6c8..33f396d mode 000000,100644..100644 --- a/src/DXFPlugin_OperationsCreator.cxx +++ b/src/DXFPlugin_OperationsCreator.cxx @@@ -1,0 -1,71 +1,71 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + // internal includes + #include "DXFPlugin_OperationsCreator.hxx" + #include "DXFPlugin_IOperations_i.hh" + #include "DXFPlugin_ExportDriver.hxx" + #include "DXFPlugin_ImportDriver.hxx" + #include "DXFPlugin_IECallBack.hxx" + + // KERNEL includes + #include + #include + + // GEOM includes + #include + + // OCCT includes + #include + + std::map DXFPlugin_OperationsCreator::_mapOfOperations; + + DXFPlugin_OperationsCreator::DXFPlugin_OperationsCreator() + { + // Register drivers + TFunction_DriverTable::Get()->AddDriver( DXFPlugin_ExportDriver::GetID(), + new DXFPlugin_ExportDriver() ); + TFunction_DriverTable::Get()->AddDriver( DXFPlugin_ImportDriver::GetID(), + new DXFPlugin_ImportDriver() ); + // Register callback + DXFPlugin_IECallBack* callback = new DXFPlugin_IECallBack(); + GEOMImpl_IECallBack::Register( "DXF", callback ); + } + + DXFPlugin_OperationsCreator::~DXFPlugin_OperationsCreator() + { + } + + GEOM_IOperations_i* DXFPlugin_OperationsCreator::Create( PortableServer::POA_ptr thePOA, + int theStudyId, + GEOM::GEOM_Gen_ptr theEngine, + ::GEOMImpl_Gen* theGenImpl ) + { + Unexpect aCatch( SALOME_SalomeException ); + MESSAGE( "DXFPlugin_OperationsCreator::Create" ); + return new DXFPlugin_IOperations_i( thePOA, theEngine, get( theGenImpl, theStudyId ) ); + } + + DXFPlugin_IOperations* DXFPlugin_OperationsCreator::get( ::GEOMImpl_Gen* theGenImpl, + int theStudyId ) + { + if (_mapOfOperations.find( theStudyId ) == _mapOfOperations.end() ) + _mapOfOperations[theStudyId] = new DXFPlugin_IOperations( theGenImpl, theStudyId ); + return _mapOfOperations[theStudyId]; + } diff --cc src/DXFPlugin_OperationsCreator.hxx index 0000000,3d8df73..9b941ae mode 000000,100755..100755 --- a/src/DXFPlugin_OperationsCreator.hxx +++ b/src/DXFPlugin_OperationsCreator.hxx @@@ -1,0 -1,57 +1,57 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + #ifndef _GEOM_DXFPlugin_OperationsCreator_HXX_ + #define _GEOM_DXFPlugin_OperationsCreator_HXX_ + + // internal includes + #include "DXFPlugin_Engine.hxx" + + // GEOM includes + #include "GEOM_Gen_i.hh" + + // C++ includes + #include + + class DXFPlugin_IOperations; + + //===================================================================== + // Operations creator + //===================================================================== + class DXFPLUGINENGINE_EXPORT DXFPlugin_OperationsCreator : public GEOM_GenericOperationsCreator + { + public: + DXFPlugin_OperationsCreator(); + ~DXFPlugin_OperationsCreator(); + + GEOM_IOperations_i* Create( PortableServer::POA_ptr thePOA, + int theStudyId, + GEOM::GEOM_Gen_ptr theEngine, + ::GEOMImpl_Gen* theGenImpl ); + + private: + static DXFPlugin_IOperations* get( ::GEOMImpl_Gen* theGenImpl, + int theStudyId ); + + static std::map _mapOfOperations; + + friend class DXFPlugin_IECallBack; + }; + + #endif diff --cc src/DXFPlugin_license.h.in index 0000000,545d181..60a4cde mode 000000,100644..100644 --- a/src/DXFPlugin_license.h.in +++ b/src/DXFPlugin_license.h.in @@@ -1,0 -1,26 +1,26 @@@ -// Copyright (C) 2014 OPEN CASCADE ++// Copyright (C) 2014-2015 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, or (at your option) any later version. + // + // 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 + // + + #if !defined(__DXFPLUGIN_LICENSE_H) + #define __DXFPLUGIN_LICENSE_H + + #define DXF_READ_LICENSE "@DXF_READ_LICENSE@" + #define DXF_WRITE_LICENSE "@DXF_WRITE_LICENSE@" + + #endif // __DXFPLUGIN_LICENSE_H diff --cc src/__init__.py index 0000000,f97508b..523c423 mode 000000,100644..100644 --- a/src/__init__.py +++ b/src/__init__.py @@@ -1,0 -1,23 +1,23 @@@ + # -*- coding: iso-8859-1 -*- -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 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, or (at your option) any later version. + # + # 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 + # + + # DXFPLUGIN : binding of C++ implementation with Python + # File : __init__.py + #