# 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)
+++ /dev/null
- // 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
--- /dev/null
--- /dev/null
++// 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
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).
==================
- 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.
- 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.
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)
--- /dev/null
-# 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)
--- /dev/null
-# 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)
--- /dev/null
-# 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)
--- /dev/null
-import GEOM,os
+ # Import/Export DXF
+
++import os
+ import salome
+ salome.salome_init()
-
-# Example of import/export file in DXF format
-
-print "Test Export/Import DXF ..."
-
-tmpDir = os.getenv("TEMP")
-if tmpDir == None:
- tmpDir = "/tmp"
++import GEOM
+ from salome.geom import geomBuilder
+ geompy = geomBuilder.New(salome.myStudy)
-# File for Export/Import testing
-fileExportImport = tmpDir + "/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")
++# - path to the file
++dxfFile = os.path.join(os.getenv("TEMP", "/tmp"), "testExportImportDXF.dxf")
+
-# It is possible also to use next format of importing and publishing in study
++# - create shape
++box = geompy.MakeBoxDXDYDZ(100, 100, 100)
+
-Shape2 = geompy.ImportDXF(fileExportImport,"ImportDXF_2")
++# - export shape
++geompy.ExportDXF(box, dxfFile)
+
-print "OK"
++# - import shape
++shape = geompy.ImportDXF(dxfFile)
+
++# - publish in study
++geompy.addToStudy(shape, "ImportDXF")
--- /dev/null
-# 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)
--- /dev/null
-# 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}")
--- /dev/null
-# 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 <a href=\"../../examples/DXFPLUGIN/\1\">Download this script</a>"
--- /dev/null
-# 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
--- /dev/null
- Browse and select the file and click "Open" button. New object (shape)
- will appears in the SALOME object browser.
+ /*!
+
+ \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 <b>File/Import/DXF</b>.
+
+ \image html import_dxf.png
+
- \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 <b>Reload From Disk</b>
- in the context menu of the imported shape. The reloaded shape will have the same
- representation parameters as before this operation.
++ Browse and select the file and press "Open" button. New object (shape)
++ will appear in the SALOME object browser.
+
-- Export to the DXF file selecting a shape in the SALOME object browser and
- calling menu <b>File/Export/DXF</b>.
++ \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 <b>Reload From Disk</b> 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
+
- Enter the file name and click "Save" button.
++- Export selected shape to the DXF file via <b>File/Export/DXF</b> menu.
+
+ \image html export_dxf.png
+
++ Enter the file name and press "Save" button.
+
+ */
--- /dev/null
-Python package DXFPluginBuilder defines several classes, destined for
-import and export CAD models in DXF format (*.dxf files).
+ /*!
+
+ \page dxfplugin_python_interface_page Python Interface
+
++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
+ <h2>Example of import/export CAD model stored in DXF format (*.dxf files) with DXFPLUGIN:</h2>
+ \tui_script{DXFPlugindemo.py}
+
+ */
+
+
--- /dev/null
-\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;
+ /*!
+
+ \mainpage Introduction to DXFPLUGIN
+
-To manage parameters of the DXFPLUGIN use \subpage dxfplugin_importexport_page.
++The \b DXFPLUGIN implements <b>DXF</b> 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.
+
-Also all DXFPLUGIN functionalities are accessible via
++To use functionality of the DXFPLUGIN refer to \subpage dxfplugin_importexport_page.
+
++Also all functionalities of the DXFPLUGIN are accessible via
+ \subpage dxfplugin_python_interface_page "DXFPLUGIN Python interface".
+
+ */
--- /dev/null
- Copyright © 2014 CEA/DEN, EDF R&D, OPEN CASCADE<br>
+ <!-- HTML footer for doxygen 1.8.3.1-->
+ <!--BEGIN GENERATE_TREEVIEW-->
+ <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ $navpath
+ <li class="footer">
++ Copyright © 2014-2015 OPEN CASCADE<br>
+ </li>
+ </ul>
+ </div>
+ <!--END GENERATE_TREEVIEW-->
+ </body>
+ </html>
--- /dev/null
-# 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})
--- /dev/null
-// 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__
+
--- /dev/null
- Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE
+ <?xml version='1.0' encoding='us-ascii'?>
+ <!DOCTYPE meshers PUBLIC "" "desktop.dtd">
+ <!--
++ 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
+
+ -->
+
+ <!-- GUI customization for GEOM component -->
+
+ <geom-plugins>
+
+ <geom-plugin name="DXFPlugin"
+ server-lib="DXFPluginEngine"
+ gui-lib="DXFPluginGUI">
+ <actions>
+ <action label="Import_DXF"
+ menu="FILE/IMPORT:10/IMPORTDXF"
+ status-bar="IMPORTDXF">
+ </action>
+ <action label="Export_DXF"
+ menu="FILE/EXPORT:10/EXPORTDXF"
+ status-bar="EXPORTDXF">
+ </action>
+ </actions>
+ </geom-plugin>
+
+ </geom-plugins>
--- /dev/null
- 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.
+
+ 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
+
+ -->
+ <document>
+ <section name="resources">
+ <parameter name="DXFPlugin" value="${DXFPLUGIN_ROOT_DIR}/share/salome/resources/dxfplugin"/>
+ </section>
+ <section name="GEOM">
+ <!-- Default GEOM module plugins -->
+ <parameter name="plugins" value="DXFPlugin"/>
+ </section>
+ <section name="geom_help" >
+ <parameter name="Plug-ins/DXF plugin User's Guide" value="${DXFPLUGIN_ROOT_DIR}/share/doc/salome/gui/DXFPLUGIN/index.html"/>
+ </section>
+ </document>
--- /dev/null
-# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE
+ # -*- coding: iso-8859-1 -*-
++# 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
--- /dev/null
-// 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();
+ }
+ }
--- /dev/null
-// 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
--- /dev/null
-// 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 <Basics_Utils.hxx>
+ #include <utilities.h>
+
+ // GEOM includes
+ #include <GEOM_Function.hxx>
+
+ // OOCT includes
+ #include <IFSelect_ReturnStatus.hxx>
+ #include <DxfControl_Writer.hxx>
+ #include <TCollection_AsciiString.hxx>
+ #include <TopoDS_Shape.hxx>
+
+ #ifdef DXF_HASLICENSE
+ #include "DXFPlugin_license.h"
+
+ #include <OCCLicense_Activate.hxx>
+ #include <Standard_LicenseError.hxx>
+ #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<GEOM_Param>& theParams )
+ {
+ return false;
+ }
+
+ IMPLEMENT_STANDARD_HANDLE( DXFPlugin_ExportDriver,GEOM_BaseDriver );
+ IMPLEMENT_STANDARD_RTTIEXT( DXFPlugin_ExportDriver,GEOM_BaseDriver );
--- /dev/null
-// 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 <GEOM_BaseDriver.hxx>
+
+ // OCCT includes
+ #ifndef _TFunction_Logbook_HeaderFile
+ #include <TFunction_Logbook.hxx>
+ #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<GEOM_Param>& params );
+
+ DEFINE_STANDARD_RTTI( DXFPlugin_ExportDriver )
+ };
+
+ #endif // _DXFPlugin_ExportDriver_HXX
--- /dev/null
-// 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 <SUIT_Desktop.h>
+ #include <SUIT_FileDlg.h>
+ #include <SUIT_MessageBox.h>
+ #include <SUIT_OverrideCursor.h>
+ #include <SUIT_Tools.h>
+ #include <LightApp_SelectionMgr.h>
+ #include <SalomeApp_Application.h>
+ #include <SalomeApp_Study.h>
+ #include <SALOME_ListIO.hxx>
+
+ // GEOM includes
+ #include "GeometryGUI.h"
+ #include "GEOM_Operation.h"
+ #include "GEOMBase.h"
+ #include "GEOM_Displayer.h"
+
+ #include <SALOMEconfig.h>
+ #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<SalomeApp_Study*> ( 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<SalomeApp_Study*> ( 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 );
+ }
+ }
--- /dev/null
-// 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 <GEOMPluginGUI.h>
+
+ 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
--- /dev/null
-// 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 );
+ }
+
--- /dev/null
-// 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 <GEOM_Object.hxx>
+ #include <GEOMImpl_IECallBack.hxx>
+
+ // OCC includes
+ #include <TCollection_AsciiString.hxx>
+
+ 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
--- /dev/null
-// 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_
--- /dev/null
-// 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_
--- /dev/null
-// 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 <utilities.h>
+
+ // GEOM includes
+ #include <GEOM_PythonDump.hxx>
+ #include <GEOMImpl_Types.hxx>
+
+ #include <Standard_ErrorHandler.hxx> // 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;
+ }
--- /dev/null
-// 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 <GEOMImpl_IBaseIEOperations.hxx>
+
+ 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
--- /dev/null
-// 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 <DXFPLUGIN_version.h>
++#include "DXFPlugin_version.h"
+
+ // KERNEL includes
+ #include <utilities.h>
+
+ //=============================================================================
+ /*!
+ * 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();
+ }
--- /dev/null
-// 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 <SALOMEconfig.h>
+ #include CORBA_SERVER_HEADER( GEOM_Gen )
+ #include CORBA_SERVER_HEADER( DXFPlugin )
+
+ // internal includes
+ #include "DXFPlugin_Engine.hxx"
+
+ // GEOM includes
+ #include <GEOM_IOperations_i.hh>
+
+ 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
--- /dev/null
-// 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 <Basics_Utils.hxx>
+ #include <utilities.h>
+
+ // GEOM includes
+ #include <GEOM_Function.hxx>
+ #include <GEOMImpl_Types.hxx>
+
+ // OOCT includes
+ #include <DxfControl_Reader.hxx>
+ #include <DxfSection_Block.hxx>
+ #include <DxfSection_HSequenceOfObject.hxx>
+ #include <DxfSection_Model.hxx>
+ #include <DxfSection_Section.hxx>
+ #include <IFSelect_ReturnStatus.hxx>
+ #include <TCollection_AsciiString.hxx>
+ #include <TCollection_HAsciiString.hxx>
+ #include <TDF_Label.hxx>
+ #include <TDataStd_Name.hxx>
+ #include <TNaming_Builder.hxx>
+ #include <TopoDS_Shape.hxx>
+ #include <TopoDS_Iterator.hxx>
+ #include <TransferBRep.hxx>
+ #include <Transfer_Binder.hxx>
+ #include <Transfer_TransientProcess.hxx>
+ #include <XSControl_TransferReader.hxx>
+ #include <XSControl_WorkSession.hxx>
+
+ #include <StdFail_NotDone.hxx>
+
+ #ifdef DXF_HASLICENSE
+ #include "DXFPlugin_license.h"
+
+ #include <OCCLicense_Activate.hxx>
+ #include <Standard_LicenseError.hxx>
+ #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<GEOM_Param>& 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 );
--- /dev/null
-// 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 <GEOM_BaseDriver.hxx>
+
+ // OCCT includes
+ #ifndef _TFunction_Logbook_HeaderFile
+ #include <TFunction_Logbook.hxx>
+ #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<GEOM_Param>& params );
+
+ DEFINE_STANDARD_RTTI( DXFPlugin_ImportDriver )
+ };
+
+ #endif // _DXFPlugin_ImportDriver_HXX
--- /dev/null
-// 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 <Utils_ExceptHandlers.hxx>
+ #include <utilities.h>
+
+ // GEOM includes
+ #include <GEOMImpl_IECallBack.hxx>
+
+ // OCCT includes
+ #include <TFunction_DriverTable.hxx>
+
+ std::map <int, DXFPlugin_IOperations*> 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];
+ }
--- /dev/null
-// 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 <map>
+
+ 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 <int, DXFPlugin_IOperations*> _mapOfOperations;
+
+ friend class DXFPlugin_IECallBack;
+ };
+
+ #endif
--- /dev/null
-// 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
--- /dev/null
-# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE
+ # -*- coding: iso-8859-1 -*-
++# 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
+ #