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;hp=29579dac5115a99d6395c2ad77d35dca0b4d2fc0;p=plugins%2Fdxfplugin.git Merge from rnv/geom_plugin_imp branch --- diff --git a/CMakeLists.txt b/CMakeLists.txt index ef7537a..689dadc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,7 @@ CMAKE_POLICY(SET CMP0003 NEW) STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC) SET(${PROJECT_NAME_UC}_MAJOR_VERSION 7) -SET(${PROJECT_NAME_UC}_MINOR_VERSION 3) +SET(${PROJECT_NAME_UC}_MINOR_VERSION 4) SET(${PROJECT_NAME_UC}_PATCH_VERSION 0) SET(${PROJECT_NAME_UC}_VERSION ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION}) @@ -42,6 +42,7 @@ IF(EXISTS ${KERNEL_ROOT_DIR}) LIST(APPEND CMAKE_MODULE_PATH "${KERNEL_ROOT_DIR}/salome_adm/cmake_files") INCLUDE(SalomeMacros) FIND_PACKAGE(SalomeKERNEL REQUIRED) + KERNEL_WITH_CORBA() #check whether KERNEL builded with CORBA ADD_DEFINITIONS(${KERNEL_DEFINITIONS}) INCLUDE_DIRECTORIES(${KERNEL_INCLUDE_DIRS}) ELSE(EXISTS ${KERNEL_ROOT_DIR}) @@ -56,9 +57,38 @@ SET(BUILD_SHARED_LIBS TRUE) # Local macros: LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/adm_local/cmake_files") +# Find GEOM +# =========== +SET(GEOM_ROOT_DIR $ENV{GEOM_ROOT_DIR} CACHE PATH "Path to the Salome GEOM") +IF(EXISTS ${GEOM_ROOT_DIR}) + LIST(APPEND CMAKE_MODULE_PATH "${GEOM_ROOT_DIR}/adm_local/cmake_files") + FIND_PACKAGE(SalomeGEOM REQUIRED) + ADD_DEFINITIONS(${GEOM_DEFINITIONS}) + INCLUDE_DIRECTORIES(${GEOM_INCLUDE_DIRS}) +ELSE(EXISTS ${GEOM_ROOT_DIR}) + MESSAGE(FATAL_ERROR "We absolutely need a Salome GEOM, please define GEOM_ROOT_DIR") +ENDIF(EXISTS ${GEOM_ROOT_DIR}) + +SET(SALOME_BUILD_GUI ${SALOME_GEOM_BUILD_GUI}) + +# Find GUI(optional) +IF(SALOME_BUILD_GUI) + SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR} CACHE PATH "Path to the Salome GUI") + IF(EXISTS ${GUI_ROOT_DIR}) + LIST(APPEND CMAKE_MODULE_PATH "${GUI_ROOT_DIR}/adm_local/cmake_files") + FIND_PACKAGE(SalomeGUI) + FULL_GUI(FALSE) #check whether GUI builded in full mode and with CORBA + ADD_DEFINITIONS(${GUI_DEFINITIONS}) + INCLUDE_DIRECTORIES(${GUI_INCLUDE_DIRS}) + ELSE(EXISTS ${GUI_ROOT_DIR}) + MESSAGE(STATUS "GUI_ROOT_DIR is not well defined, DXFPLUGIN will be built without GUI!!!") + ENDIF(EXISTS ${GUI_ROOT_DIR}) + SALOME_LOG_OPTIONAL_PACKAGE(SalomeGUI SALOME_BUILD_GUI) +ENDIF(SALOME_BUILD_GUI) + # User options # ============ -#OPTION(SALOME_BUILD_DOC "Generate SALOME DXFPLUGIN documentation" ON) #for use in the future +OPTION(SALOME_BUILD_DOC "Generate SALOME DXFPLUGIN documentation" ON) OPTION(SALOME_BUILD_TESTS "Build SALOME tests" ON) IF(SALOME_BUILD_TESTS) @@ -70,7 +100,7 @@ OPTION(DXF_WRITE_LICENSE "DXF write license key" "") IF(DXF_READ_LICENSE OR DXF_WRITE_LICENSE) IF(NOT DXF_READ_LICENSE) - MESSAGE(WARNING "DXF read license keys are not specified! Runtime license will be required!") + MESSAGE(WARNING "DXF read license key is not specified! Runtime license will be required!") ELSEIF(NOT DXF_WRITE_LICENSE) MESSAGE(WARNING "DXF write license key is not specified! Runtime license will be required!") ENDIF() @@ -83,8 +113,18 @@ ENDIF() ## DXFPLUGIN specifics ## +FIND_PACKAGE(SalomePython REQUIRED) FIND_PACKAGE(SalomeCAS REQUIRED) FIND_PACKAGE(SalomeDXF REQUIRED) +FIND_PACKAGE(SalomeOmniORB REQUIRED) +FIND_PACKAGE(SalomeOmniORBPy REQUIRED) +IF(SALOME_BUILD_GUI) + FIND_PACKAGE(SalomeQt4 REQUIRED COMPONENTS QtCore QtGui) +ENDIF() +IF(SALOME_BUILD_DOC) + FIND_PACKAGE(SalomeDoxygen) + SALOME_LOG_OPTIONAL_PACKAGE(Doxygen SALOME_BUILD_DOC) +ENDIF() # Directories # =========== @@ -95,6 +135,7 @@ SET(SALOME_INSTALL_CMAKE_LOCAL adm_local/cmake_files CACHE PATH "Install path: local SALOME CMake files") SET(SALOME_INSTALL_RES share/salome/resources CACHE PATH "Install path: SALOME resources") SET(SALOME_INSTALL_DOC share/doc/salome CACHE PATH "Install path: SALOME documentation") +SET(SALOME_INSTALL_PYTHON "${SALOME_INSTALL_PYTHON}" CACHE PATH "Install path: SALOME Python stuff") # Specific to DXFPLUGIN: SET(SALOME_DXFPLUGIN_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/dxfplugin" CACHE PATH. @@ -104,19 +145,23 @@ MARK_AS_ADVANCED(SALOME_INSTALL_BINS SALOME_INSTALL_LIBS SALOME_INSTALL_HEADERS) MARK_AS_ADVANCED(SALOME_INSTALL_CMAKE_LOCAL SALOME_INSTALL_RES SALOME_INSTALL_DOC) # Accumulate environment variables for DXFPLUGIN module +SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_PYTHON}) SALOME_ACCUMULATE_ENVIRONMENT(LD_LIBRARY_PATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_LIBS}) # Sources # ======== - +ADD_SUBDIRECTORY(idl) ADD_SUBDIRECTORY(adm_local) ADD_SUBDIRECTORY(resources) ADD_SUBDIRECTORY(src) +IF(SALOME_BUILD_DOC) + ADD_SUBDIRECTORY(doc) +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) @@ -126,15 +171,23 @@ INCLUDE(CMakePackageConfigHelpers) # List of targets in this project we want to make visible to the rest of the world. # They all have to be INSTALL'd with the option "EXPORT ${PROJECT_NAME}TargetGroup" SET(_${PROJECT_NAME}_exposed_targets - DXFExport DXFImport + SalomeIDLDXFPlugin DXFPluginEngine ) +IF(SALOME_BUILD_GUI) + LIST(APPEND _${PROJECT_NAME}_exposed_targets + DXFPluginGUI + ) +ENDIF() + # Add all targets to the build-tree export set EXPORT(TARGETS ${_${PROJECT_NAME}_exposed_targets} FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake) # Ensure the variables are always defined for the configure: SET(KERNEL_ROOT_DIR "${KERNEL_ROOT_DIR}") +SET(GUI_ROOT_DIR "${GUI_ROOT_DIR}") +SET(GEOM_ROOT_DIR "${GEOM_ROOT_DIR}") SET(DXF_ROOT_DIR "${DXF_ROOT_DIR}") SET(OCCLICENSE_ROOT_DIR "${OCCLICENSE_ROOT_DIR}") @@ -142,12 +195,12 @@ SET(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include" "${PROJECT_BINARY_DIR}/inc # Build variables that will be expanded when configuring SalomeConfig.cmake: SALOME_CONFIGURE_PREPARE(DXF) - + CONFIGURE_PACKAGE_CONFIG_FILE(${PROJECT_NAME}Config.cmake.in ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake INSTALL_DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}" PATH_VARS CONF_INCLUDE_DIRS SALOME_INSTALL_CMAKE_LOCAL CMAKE_INSTALL_PREFIX - KERNEL_ROOT_DIR DXF_ROOT_DIR OCCLICENSE_ROOT_DIR) + KERNEL_ROOT_DIR GUI_ROOT_DIR GEOM_ROOT_DIR DXF_ROOT_DIR OCCLICENSE_ROOT_DIR) WRITE_BASIC_PACKAGE_VERSION_FILE(${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake VERSION ${${PROJECT_NAME_UC}_VERSION} diff --git a/DXFPLUGIN_version.h.in b/DXFPLUGIN_version.h.in deleted file mode 100644 index 09c67f8..0000000 --- a/DXFPLUGIN_version.h.in +++ /dev/null @@ -1,41 +0,0 @@ -// 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 --git a/DXFPlugin_version.h.in b/DXFPlugin_version.h.in new file mode 100644 index 0000000..09c67f8 --- /dev/null +++ b/DXFPlugin_version.h.in @@ -0,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 --git a/INSTALL b/INSTALL index b5dd7c8..52afaa3 100644 --- a/INSTALL +++ b/INSTALL @@ -27,7 +27,7 @@ Pre-requisites 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 @@ In order to build the plugin you have to do the following actions: - 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 --git a/README b/README index 9d5343c..7ca460d 100644 --- a/README +++ b/README @@ -58,12 +58,12 @@ Usage - 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 --git a/SalomeDXFPLUGINConfig.cmake.in b/SalomeDXFPLUGINConfig.cmake.in index d1726f2..fcb7203 100644 --- a/SalomeDXFPLUGINConfig.cmake.in +++ b/SalomeDXFPLUGINConfig.cmake.in @@ -29,7 +29,7 @@ # Load the dependencies for the libraries of @PROJECT_NAME@ # (contains definitions for IMPORTED targets). This is only # imported if we are not built as a subproject (in this case targets are already there) -IF(NOT TARGET DXFExport AND NOT @PROJECT_NAME@_BINARY_DIR) +IF(NOT TARGET DXFPluginEngine AND NOT @PROJECT_NAME@_BINARY_DIR) INCLUDE("@PACKAGE_SALOME_INSTALL_CMAKE_LOCAL@/@PROJECT_NAME@Targets.cmake") ENDIF() @@ -47,11 +47,13 @@ SET(DXFPLUGIN_DEFINITIONS) #### Now the specificities # Options exported by the package: -#SET(SALOME_DXFPLUGIN_BUILD_DOC @SALOME_BUILD_DOC@) +SET(SALOME_DXFPLUGIN_BUILD_DOC @SALOME_BUILD_DOC@) SET(SALOME_DXFPLUGIN_BUILD_TESTS @SALOME_BUILD_TESTS@) # Level 1 prerequisites: SET_AND_CHECK(KERNEL_ROOT_DIR_EXP "@PACKAGE_KERNEL_ROOT_DIR@") +SET_AND_CHECK(GUI_ROOT_DIR_EXP "@PACKAGE_GUI_ROOT_DIR@") +SET_AND_CHECK(GEOM_ROOT_DIR_EXP "@PACKAGE_GEOM_ROOT_DIR@") SET_AND_CHECK(DXF_ROOT_DIR_EXP "@PACKAGE_DXF_ROOT_DIR@") SET_AND_CHECK(OCCLICENSE_ROOT_DIR_EXP "@PACKAGE_OCCLICENSE_ROOT_DIR@") @@ -94,5 +96,6 @@ SET(SALOME_INSTALL_RES "@SALOME_INSTALL_RES@") SET(SALOME_INSTALL_DOC "@SALOME_INSTALL_DOC@") # Exposed DXFPLUGIN targets: -SET(DXFPLUGIN_DXFExport DXFExport) -SET(DXFPLUGIN_DXFImport DXFImport) \ No newline at end of file +SET(DXFPLUGIN_SalomeIDLDXFPlugin SalomeIDLDXFPlugin) +SET(DXFPLUGIN_DXFPluginEngine DXFPluginEngine) +SET(DXFPLUGIN_DXFPluginGUI DXFPluginGUI) diff --git a/adm_local/cmake_files/FindDXF.cmake b/adm_local/cmake_files/FindDXF.cmake index bfc7435..7301c27 100644 --- a/adm_local/cmake_files/FindDXF.cmake +++ b/adm_local/cmake_files/FindDXF.cmake @@ -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 --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100755 index 0000000..0fd283b --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,20 @@ +# 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 --git a/doc/salome/CMakeLists.txt b/doc/salome/CMakeLists.txt new file mode 100755 index 0000000..9965b85 --- /dev/null +++ b/doc/salome/CMakeLists.txt @@ -0,0 +1,21 @@ +# 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) diff --git a/doc/salome/examples/CMakeLists.txt b/doc/salome/examples/CMakeLists.txt new file mode 100644 index 0000000..7f8577e --- /dev/null +++ b/doc/salome/examples/CMakeLists.txt @@ -0,0 +1,21 @@ +# 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 --git a/doc/salome/examples/DXFPlugindemo.py b/doc/salome/examples/DXFPlugindemo.py new file mode 100644 index 0000000..81dbefe --- /dev/null +++ b/doc/salome/examples/DXFPlugindemo.py @@ -0,0 +1,23 @@ +# Import/Export DXF + +import os +import salome +salome.salome_init() +import GEOM +from salome.geom import geomBuilder +geompy = geomBuilder.New(salome.myStudy) + +# - 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, dxfFile) + +# - import shape +shape = geompy.ImportDXF(dxfFile) + +# - publish in study +geompy.addToStudy(shape, "ImportDXF") diff --git a/doc/salome/gui/CMakeLists.txt b/doc/salome/gui/CMakeLists.txt new file mode 100755 index 0000000..ceb01a0 --- /dev/null +++ b/doc/salome/gui/CMakeLists.txt @@ -0,0 +1,20 @@ +# 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 --git a/doc/salome/gui/DXFPLUGIN/CMakeLists.txt b/doc/salome/gui/DXFPLUGIN/CMakeLists.txt new file mode 100755 index 0000000..6a72dd1 --- /dev/null +++ b/doc/salome/gui/DXFPLUGIN/CMakeLists.txt @@ -0,0 +1,52 @@ +# 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 --git a/doc/salome/gui/DXFPLUGIN/doxyfile.in b/doc/salome/gui/DXFPLUGIN/doxyfile.in new file mode 100755 index 0000000..3af1e63 --- /dev/null +++ b/doc/salome/gui/DXFPLUGIN/doxyfile.in @@ -0,0 +1,114 @@ +# 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 --git a/doc/salome/gui/DXFPLUGIN/doxyfile_py.in b/doc/salome/gui/DXFPLUGIN/doxyfile_py.in new file mode 100755 index 0000000..46b644e --- /dev/null +++ b/doc/salome/gui/DXFPLUGIN/doxyfile_py.in @@ -0,0 +1,160 @@ +# 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 --git a/doc/salome/gui/DXFPLUGIN/images/export_dxf.png b/doc/salome/gui/DXFPLUGIN/images/export_dxf.png new file mode 100644 index 0000000..d8d7fd1 Binary files /dev/null and b/doc/salome/gui/DXFPLUGIN/images/export_dxf.png differ diff --git a/doc/salome/gui/DXFPLUGIN/images/head.png b/doc/salome/gui/DXFPLUGIN/images/head.png new file mode 100755 index 0000000..307d9ef Binary files /dev/null and b/doc/salome/gui/DXFPLUGIN/images/head.png differ diff --git a/doc/salome/gui/DXFPLUGIN/images/import_dxf.png b/doc/salome/gui/DXFPLUGIN/images/import_dxf.png new file mode 100644 index 0000000..ef39d63 Binary files /dev/null and b/doc/salome/gui/DXFPLUGIN/images/import_dxf.png differ diff --git a/doc/salome/gui/DXFPLUGIN/images/reopen_dxf.png b/doc/salome/gui/DXFPLUGIN/images/reopen_dxf.png new file mode 100644 index 0000000..9d6745d Binary files /dev/null and b/doc/salome/gui/DXFPLUGIN/images/reopen_dxf.png differ diff --git a/doc/salome/gui/DXFPLUGIN/input/dxfplugin_importexport_page.doc b/doc/salome/gui/DXFPLUGIN/input/dxfplugin_importexport_page.doc new file mode 100644 index 0000000..335707b --- /dev/null +++ b/doc/salome/gui/DXFPLUGIN/input/dxfplugin_importexport_page.doc @@ -0,0 +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 press "Open" button. New object (shape) + will appear in the SALOME object browser. + + \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 selected shape to the DXF file via File/Export/DXF menu. + + \image html export_dxf.png + + Enter the file name and press "Save" button. + +*/ diff --git a/doc/salome/gui/DXFPLUGIN/input/dxfplugin_python_interface_page.doc b/doc/salome/gui/DXFPLUGIN/input/dxfplugin_python_interface_page.doc new file mode 100644 index 0000000..3ab4f34 --- /dev/null +++ b/doc/salome/gui/DXFPLUGIN/input/dxfplugin_python_interface_page.doc @@ -0,0 +1,19 @@ +/*! + +\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 +

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

+\tui_script{DXFPlugindemo.py} + +*/ + + diff --git a/doc/salome/gui/DXFPLUGIN/input/index.doc b/doc/salome/gui/DXFPLUGIN/input/index.doc new file mode 100644 index 0000000..d5c7812 --- /dev/null +++ b/doc/salome/gui/DXFPLUGIN/input/index.doc @@ -0,0 +1,16 @@ +/*! + +\mainpage Introduction to DXFPLUGIN + +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 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". + +*/ diff --git a/doc/salome/gui/DXFPLUGIN/static/footer.html b/doc/salome/gui/DXFPLUGIN/static/footer.html new file mode 100755 index 0000000..a9dd3c1 --- /dev/null +++ b/doc/salome/gui/DXFPLUGIN/static/footer.html @@ -0,0 +1,13 @@ + + + + + + diff --git a/doc/salome/gui/DXFPLUGIN/static/header.html.in b/doc/salome/gui/DXFPLUGIN/static/header.html.in new file mode 100755 index 0000000..6b8c8ff --- /dev/null +++ b/doc/salome/gui/DXFPLUGIN/static/header.html.in @@ -0,0 +1,23 @@ + + + + + + + +$projectname: $title +$title + + + +$treeview +$search +$mathjax + +$extrastylesheet + + +
+ +
Version: @SALOMEDXFPLUGIN_VERSION@
+ diff --git a/doc/salome/gui/DXFPLUGIN/static/header_py.html.in b/doc/salome/gui/DXFPLUGIN/static/header_py.html.in new file mode 100644 index 0000000..0c37666 --- /dev/null +++ b/doc/salome/gui/DXFPLUGIN/static/header_py.html.in @@ -0,0 +1,24 @@ + + + + + + + +$projectname: $title +$title + + + +$treeview +$search +$mathjax + +$extrastylesheet + + +
+ +
Version: @SALOMEDXFPLUGIN_VERSION@
+
Home
+ diff --git a/doc/salome/gui/DXFPLUGIN/static/salome_extra.css b/doc/salome/gui/DXFPLUGIN/static/salome_extra.css new file mode 100644 index 0000000..3e8b838 --- /dev/null +++ b/doc/salome/gui/DXFPLUGIN/static/salome_extra.css @@ -0,0 +1,29 @@ +/* The extra CSS for doxygen 1.8.3.1 */ + +#titlearea { + background-image:url('head.png'); + background-color: #175783; + border: 1px solid; + height: 80px; + background-repeat: no-repeat; + padding: 0px; + margin: 0px; + width: 99.9%; + border-bottom: 1px solid #5373B4; +} + +div.version { + border:1px solid #0000FF; + color: #CCCCCC; + font-family: Arial, Helvetica, sans-serif; + font-size: 9pt; + text-align: center; + width:100px; + -moz-border-radius: 8px; + margin: 5px; +} + +.navpath li.footer { + line-height:15px; + text-align: right; +} \ No newline at end of file diff --git a/idl/CMakeLists.txt b/idl/CMakeLists.txt new file mode 100755 index 0000000..c0eff38 --- /dev/null +++ b/idl/CMakeLists.txt @@ -0,0 +1,49 @@ +# 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 --git a/idl/DXFPlugin.idl b/idl/DXFPlugin.idl new file mode 100644 index 0000000..867adcb --- /dev/null +++ b/idl/DXFPlugin.idl @@ -0,0 +1,52 @@ +// 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 ); + + /*! + * \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 --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt index 5275f23..f7b9b2c 100644 --- a/resources/CMakeLists.txt +++ b/resources/CMakeLists.txt @@ -18,7 +18,8 @@ # SET(DXFPLUGIN_RESOURCES_FILES - ImportExport + SalomeApp.xml + DXFPlugin.xml ) INSTALL(FILES ${DXFPLUGIN_RESOURCES_FILES} DESTINATION ${SALOME_DXFPLUGIN_INSTALL_RES_DATA}) diff --git a/resources/DXFPlugin.xml b/resources/DXFPlugin.xml new file mode 100644 index 0000000..7531e64 --- /dev/null +++ b/resources/DXFPlugin.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/ImportExport b/resources/ImportExport deleted file mode 100644 index d4ab129..0000000 --- a/resources/ImportExport +++ /dev/null @@ -1,6 +0,0 @@ -Import: DXF -Export: DXF - -DXF.Import: DXFImport -DXF.Export: DXFExport -DXF.Pattern: DXF Files ( *.dxf ) diff --git a/resources/SalomeApp.xml b/resources/SalomeApp.xml new file mode 100644 index 0000000..ba8da96 --- /dev/null +++ b/resources/SalomeApp.xml @@ -0,0 +1,32 @@ + + +
+ +
+
+ + +
+
+ +
+
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0b556b6..52332c6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -17,6 +17,142 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -ADD_SUBDIRECTORY(common) -ADD_SUBDIRECTORY(DXFExport) -ADD_SUBDIRECTORY(DXFImport) +IF(SALOME_BUILD_GUI) + INCLUDE(UseQt4Ext) + INCLUDE(${QT_USE_FILE}) +ENDIF() + +# --- options --- + +# additional include directories +INCLUDE_DIRECTORIES( + ${CAS_INCLUDE_DIRS} + ${DXF_INCLUDE_DIRS} + ${KERNEL_INCLUDE_DIRS} + ${PROJECT_BINARY_DIR} + ${PROJECT_BINARY_DIR}/idl + ) + +IF(SALOME_BUILD_GUI) + INCLUDE_DIRECTORIES( + ${QT_INCLUDE_DIRS} + ${GUI_INCLUDE_DIRS} + ${GEOM_INCLUDE_DIRS} + ) +ENDIF() + +# additional preprocessor / compiler flags +ADD_DEFINITIONS( + ${CAS_DEFINITIONS} + ) + +IF(SALOME_BUILD_GUI) +ADD_DEFINITIONS( + ${QT_DEFINITIONS} + ) +ENDIF() + +# libraries to link to +SET(_link_engine_LIBRARIES + ${CAS_TKXSBase} + ${DXF_LIBRARIES} + ${KERNEL_SALOMEBasics} + ${KERNEL_SALOMELocalTrace} + ${KERNEL_OpUtil} + ${GEOM_SalomeIDLGEOM} + ${GEOM_GEOMEngine} + ${GEOM_GEOMImpl} + ${GEOM_GEOMClient} + SalomeIDLDXFPlugin + ) + +IF(SALOME_BUILD_GUI) + SET(_link_gui_LIBRARIES + SalomeIDLDXFPlugin + ${GEOM_GEOMObject} + ${GEOM_GEOMBase} + ${GEOM_GEOMBase} + ) +ENDIF() + + +# --- headers --- + +SET(DXFPluginEngine_HEADERS + DXFPlugin_IOperations_i.hh + DXFPlugin_Engine.hxx + DXFPlugin_OperationsCreator.hxx + DXFPlugin_IOperations.hxx + DXFPlugin_IExport.hxx + DXFPlugin_IImport.hxx + DXFPlugin_ImportDriver.hxx + DXFPlugin_ExportDriver.hxx + DXFPlugin_IECallBack.hxx + ) + +IF(SALOME_BUILD_GUI) + # header files / to be processed by moc + SET(_moc_HEADERS + DXFPlugin_GUI.h + ) +ENDIF() + +# --- sources --- + +IF(SALOME_BUILD_GUI) + # sources / moc wrappings + QT4_WRAP_CPP(_moc_SOURCES ${_moc_HEADERS}) + + SET(DXFPluginGUI_SOURCES + DXFPlugin_GUI.cxx + ${_moc_SOURCES} + ) +ENDIF() + +SET(DXFPluginEngine_SOURCES + DXFPlugin_Engine.cxx + DXFPlugin_OperationsCreator.cxx + DXFPlugin_IOperations_i.cc + DXFPlugin_IOperations.cxx + DXFPlugin_ExportDriver.cxx + DXFPlugin_ImportDriver.cxx + DXFPlugin_IECallBack.cxx + ) + +# resource files / to be processed by lrelease +SET(DXFPlugin_RESOURCES + resources/DXFPlugin_msg_en.ts + resources/DXFPlugin_msg_fr.ts + resources/DXFPlugin_msg_ja.ts + ) + +# DXF plugin scripts +SET(_python_DXF_SCRIPTS + DXFPluginBuilder.py + __init__.py +) + +# --- rules --- + +# install Engine library +ADD_LIBRARY(DXFPluginEngine ${DXFPluginEngine_SOURCES}) +TARGET_LINK_LIBRARIES(DXFPluginEngine ${_link_engine_LIBRARIES}) +INSTALL(TARGETS DXFPluginEngine EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS}) + +# install GUI library +IF(SALOME_BUILD_GUI) + ADD_LIBRARY(DXFPluginGUI ${DXFPluginGUI_SOURCES}) + TARGET_LINK_LIBRARIES(DXFPluginGUI ${_link_gui_LIBRARIES}) + INSTALL(TARGETS DXFPluginGUI EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS}) + # install resources + QT4_INSTALL_TS_RESOURCES("${DXFPlugin_RESOURCES}" "${SALOME_DXFPLUGIN_INSTALL_RES_DATA}") +ENDIF() + +# install headers +INSTALL(FILES ${DXFPluginEngine_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS}) + +# install python scripts +SALOME_INSTALL_SCRIPTS("${_python_DXF_SCRIPTS}" ${SALOME_INSTALL_PYTHON}/salome/DXFPlugin DEF_PERMS) + +# configure license file +CONFIGURE_FILE(DXFPlugin_license.h.in DXFPlugin_license.h) diff --git a/src/DXFExport/CMakeLists.txt b/src/DXFExport/CMakeLists.txt deleted file mode 100644 index 8d5fe39..0000000 --- a/src/DXFExport/CMakeLists.txt +++ /dev/null @@ -1,55 +0,0 @@ -# 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 -# - -# --- options --- - -# additional include directories -INCLUDE_DIRECTORIES( - ${CAS_INCLUDE_DIRS} - ${DXF_INCLUDE_DIRS} - ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}/src/common - ${CMAKE_SOURCE_DIR}/src/common -) - -# additional preprocessor / compiler flags -ADD_DEFINITIONS( - ${CAS_DEFINITIONS} -) - -# libraries to link to -SET(_link_LIBRARIES - ${CAS_TKernel} - ${CAS_TKXSBase} - ${DXF_LIBRARIES} - ${KERNEL_SALOMEBasics} -) - -# --- sources --- - -# sources / static -SET(DXFExport_SOURCES - DXFExport.cxx -) - -# --- rules --- - -ADD_LIBRARY(DXFExport ${DXFExport_SOURCES}) -TARGET_LINK_LIBRARIES(DXFExport ${_link_LIBRARIES} ) -INSTALL(TARGETS DXFExport EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS}) diff --git a/src/DXFExport/DXFExport.cxx b/src/DXFExport/DXFExport.cxx deleted file mode 100644 index 6e267ad..0000000 --- a/src/DXFExport/DXFExport.cxx +++ /dev/null @@ -1,98 +0,0 @@ -// 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 -#include - -#include - -#include -#include -#include -#include - -#ifdef DXF_HASLICENSE -#include - -#include -#include -#endif // DXF_HASLICENSE - -extern "C" -{ - /*! - \brief Get version of the plugin. - \return the version of the plugin - */ - DXFPLUGIN_EXPORT - int GetVersion() - { - return DXFPLUGIN_VERSION; - } - - /*! - \brief Get version of the plugin. - \return the string representation of the plugin's version - */ - DXFPLUGIN_EXPORT - char* GetVersionStr() - { - return (char*)DXFPLUGIN_VERSION_STR; - } - - /*! - \brief Export shape to the DXF format. - \param theShape shape being exported - \param theFileName file path - \param theFormatName file format signature - \return error status (0 in case of success) - */ - DXFPLUGIN_EXPORT - int Export(const TopoDS_Shape& theShape, - const TCollection_AsciiString& theFileName, - const TCollection_AsciiString& theFormatName) - { -#ifdef DXF_HASLICENSE - try { - OCCLicense_Activate("DXF-W-"OCC_VERSION_STRING, DXF_WRITE_LICENSE); - } - catch (Standard_LicenseError) { - return 1; - } -#endif // DXF_HASLICENSE - - // Set "C" numeric locale to save numbers correctly - Kernel_Utils::Localizer loc; - - DxfControl_Writer aWriter; - - try { - IFSelect_ReturnStatus status ; - status = aWriter.TransferShape(theShape); - if ( status == IFSelect_RetDone ) - status = aWriter.WriteFile( theFileName.ToCString() ) ; - if ( status == IFSelect_RetDone ) - return 1; - } - catch(Standard_Failure) { - return 1; - } - return 0; - } -} // end of extern "C" diff --git a/src/DXFImport/CMakeLists.txt b/src/DXFImport/CMakeLists.txt deleted file mode 100644 index f089f2b..0000000 --- a/src/DXFImport/CMakeLists.txt +++ /dev/null @@ -1,59 +0,0 @@ -# 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 -# - -# --- options --- - -# additional include directories -INCLUDE_DIRECTORIES( - ${CAS_INCLUDE_DIRS} - ${DXF_INCLUDE_DIRS} - ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}/src/common - ${CMAKE_SOURCE_DIR}/src/common -) - -# additional preprocessor / compiler flags -ADD_DEFINITIONS( - ${CAS_DEFINITIONS} -) - -# libraries to link to -SET(_link_LIBRARIES - ${CAS_TKernel} - ${CAS_TKXSBase} - ${CAS_TKCAF} - ${CAS_TKLCAF} - ${CAS_TKMath} - ${CAS_TKBRep} - ${DXF_LIBRARIES} - ${KERNEL_SALOMEBasics} -) - -# --- sources --- - -# sources / static -SET(DXFImport_SOURCES - DXFImport.cxx -) - -# --- rules --- - -ADD_LIBRARY(DXFImport ${DXFImport_SOURCES}) -TARGET_LINK_LIBRARIES(DXFImport ${_link_LIBRARIES} ) -INSTALL(TARGETS DXFImport EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS}) diff --git a/src/DXFImport/DXFImport.cxx b/src/DXFImport/DXFImport.cxx deleted file mode 100644 index b7e6a9e..0000000 --- a/src/DXFImport/DXFImport.cxx +++ /dev/null @@ -1,171 +0,0 @@ -// 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 -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef DXF_HASLICENSE -#include - -#include -#include -#endif // DXF_HASLICENSE - -extern "C" -{ - /*! - \brief Get version of the plugin. - \return the version of the plugin - */ - DXFPLUGIN_EXPORT - int GetVersion() - { - return DXFPLUGIN_VERSION; - } - - /*! - \brief Get version of the plugin. - \return the string representation of the plugin's version - */ - DXFPLUGIN_EXPORT - char* GetVersionStr() - { - return (char*)DXFPLUGIN_VERSION_STR; - } - - /*! - \brief Import shape from the DXF format. - \param theFileName file path - \param theFormatName file format signature - \param theError error description, if there's any, is returned via this parameter - \param theShapeLabel a label in the CAF tree where shape attributes are set to - \return imported shape - */ - DXFPLUGIN_EXPORT - TopoDS_Shape Import(const TCollection_AsciiString& theFileName, - const TCollection_AsciiString& /*theFormatName*/, - TCollection_AsciiString& theError, - const TDF_Label& theShapeLabel) - { - 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; - - try { - IFSelect_ReturnStatus status = aReader.ReadFile(theFileName.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()) return aResShape; - - Handle(DxfSection_HSequenceOfObject) anObjects = aBlocks->GetObjects(); - if (anObjects.IsNull()) return aResShape; - - 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(theShapeLabel); - TNaming_Builder tnBuild(L); - tnBuild.Generated(aResShape); - - // set a name - TCollection_ExtendedString str(aName->ToCString()); - TDataStd_Name::Set(L,str); - } - } - } - else { - theError = "Wrong format of the imported file. Can't import file."; - aResShape.Nullify(); - } - } - catch (Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); - theError = aFail->GetMessageString(); - aResShape.Nullify(); - } - return aResShape; - } -} // end of extern "C" - diff --git a/src/DXFPluginBuilder.py b/src/DXFPluginBuilder.py new file mode 100644 index 0000000..ff92dd7 --- /dev/null +++ b/src/DXFPluginBuilder.py @@ -0,0 +1,101 @@ +# -*- 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 diff --git a/src/DXFPlugin_Engine.cxx b/src/DXFPlugin_Engine.cxx new file mode 100644 index 0000000..c85b284 --- /dev/null +++ b/src/DXFPlugin_Engine.cxx @@ -0,0 +1,31 @@ +// 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 --git a/src/DXFPlugin_Engine.hxx b/src/DXFPlugin_Engine.hxx new file mode 100755 index 0000000..5e166b6 --- /dev/null +++ b/src/DXFPlugin_Engine.hxx @@ -0,0 +1,33 @@ +// 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 --git a/src/DXFPlugin_ExportDriver.cxx b/src/DXFPlugin_ExportDriver.cxx new file mode 100644 index 0000000..9682266 --- /dev/null +++ b/src/DXFPlugin_ExportDriver.cxx @@ -0,0 +1,132 @@ +// 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 --git a/src/DXFPlugin_ExportDriver.hxx b/src/DXFPlugin_ExportDriver.hxx new file mode 100644 index 0000000..6f95e3c --- /dev/null +++ b/src/DXFPlugin_ExportDriver.hxx @@ -0,0 +1,50 @@ +// 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 --git a/src/DXFPlugin_GUI.cxx b/src/DXFPlugin_GUI.cxx new file mode 100644 index 0000000..e4a64cc --- /dev/null +++ b/src/DXFPlugin_GUI.cxx @@ -0,0 +1,265 @@ +// 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 --git a/src/DXFPlugin_GUI.h b/src/DXFPlugin_GUI.h new file mode 100644 index 0000000..8ccd209 --- /dev/null +++ b/src/DXFPlugin_GUI.h @@ -0,0 +1,40 @@ +// 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 --git a/src/DXFPlugin_IECallBack.cxx b/src/DXFPlugin_IECallBack.cxx new file mode 100755 index 0000000..4411ef1 --- /dev/null +++ b/src/DXFPlugin_IECallBack.cxx @@ -0,0 +1,71 @@ +// 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 --git a/src/DXFPlugin_IECallBack.hxx b/src/DXFPlugin_IECallBack.hxx new file mode 100644 index 0000000..a3710a4 --- /dev/null +++ b/src/DXFPlugin_IECallBack.hxx @@ -0,0 +1,49 @@ +// 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 --git a/src/DXFPlugin_IExport.hxx b/src/DXFPlugin_IExport.hxx new file mode 100644 index 0000000..27bb469 --- /dev/null +++ b/src/DXFPlugin_IExport.hxx @@ -0,0 +1,48 @@ +// 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 --git a/src/DXFPlugin_IImport.hxx b/src/DXFPlugin_IImport.hxx new file mode 100644 index 0000000..8a1ab26 --- /dev/null +++ b/src/DXFPlugin_IImport.hxx @@ -0,0 +1,42 @@ +// 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 --git a/src/DXFPlugin_IOperations.cxx b/src/DXFPlugin_IOperations.cxx new file mode 100644 index 0000000..7a49fa6 --- /dev/null +++ b/src/DXFPlugin_IOperations.cxx @@ -0,0 +1,165 @@ +// 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 --git a/src/DXFPlugin_IOperations.hxx b/src/DXFPlugin_IOperations.hxx new file mode 100644 index 0000000..65e5633 --- /dev/null +++ b/src/DXFPlugin_IOperations.hxx @@ -0,0 +1,42 @@ +// 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 --git a/src/DXFPlugin_IOperations_i.cc b/src/DXFPlugin_IOperations_i.cc new file mode 100644 index 0000000..c04fb8c --- /dev/null +++ b/src/DXFPlugin_IOperations_i.cc @@ -0,0 +1,109 @@ +// 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" + +// 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 --git a/src/DXFPlugin_IOperations_i.hh b/src/DXFPlugin_IOperations_i.hh new file mode 100644 index 0000000..fcf7acc --- /dev/null +++ b/src/DXFPlugin_IOperations_i.hh @@ -0,0 +1,52 @@ +// 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 --git a/src/DXFPlugin_ImportDriver.cxx b/src/DXFPlugin_ImportDriver.cxx new file mode 100644 index 0000000..c69c82e --- /dev/null +++ b/src/DXFPlugin_ImportDriver.cxx @@ -0,0 +1,215 @@ +// 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 --git a/src/DXFPlugin_ImportDriver.hxx b/src/DXFPlugin_ImportDriver.hxx new file mode 100644 index 0000000..8d03716 --- /dev/null +++ b/src/DXFPlugin_ImportDriver.hxx @@ -0,0 +1,50 @@ +// 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 --git a/src/DXFPlugin_OperationsCreator.cxx b/src/DXFPlugin_OperationsCreator.cxx new file mode 100644 index 0000000..33f396d --- /dev/null +++ b/src/DXFPlugin_OperationsCreator.cxx @@ -0,0 +1,71 @@ +// 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 --git a/src/DXFPlugin_OperationsCreator.hxx b/src/DXFPlugin_OperationsCreator.hxx new file mode 100755 index 0000000..9b941ae --- /dev/null +++ b/src/DXFPlugin_OperationsCreator.hxx @@ -0,0 +1,57 @@ +// 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 --git a/src/DXFPlugin_license.h.in b/src/DXFPlugin_license.h.in new file mode 100644 index 0000000..60a4cde --- /dev/null +++ b/src/DXFPlugin_license.h.in @@ -0,0 +1,26 @@ +// 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 --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..523c423 --- /dev/null +++ b/src/__init__.py @@ -0,0 +1,23 @@ +# -*- 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 +# diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt deleted file mode 100644 index a642ab1..0000000 --- a/src/common/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -# 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 -# - -CONFIGURE_FILE(DXFPLUGIN_license.h.in DXFPLUGIN_license.h) diff --git a/src/common/DXFPLUGIN_exports.h b/src/common/DXFPLUGIN_exports.h deleted file mode 100644 index 63950eb..0000000 --- a/src/common/DXFPLUGIN_exports.h +++ /dev/null @@ -1,33 +0,0 @@ -// 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_EXPORTS_H) -#define __DXFPLUGIN_EXPORTS_H - -#ifdef WIN32 -# if defined DXFExport_EXPORTS || defined DXFXPORTS_EXPORTS || defined DXFImport_EXPORTS || defined DXFIMPORT_EXPORTS -# define DXFPLUGIN_EXPORT __declspec(dllexport) -# else -# define DXFPLUGIN_EXPORT __declspec(dllimport) -# endif -#else // WIN32 -# define DXFPLUGIN_EXPORT -#endif // WIN32 - -#endif // __DXFPLUGIN_EXPORTS_H diff --git a/src/common/DXFPLUGIN_license.h.in b/src/common/DXFPLUGIN_license.h.in deleted file mode 100644 index 60a4cde..0000000 --- a/src/common/DXFPLUGIN_license.h.in +++ /dev/null @@ -1,26 +0,0 @@ -// 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 --git a/src/resources/DXFPlugin_msg_en.ts b/src/resources/DXFPlugin_msg_en.ts new file mode 100644 index 0000000..6021633 --- /dev/null +++ b/src/resources/DXFPlugin_msg_en.ts @@ -0,0 +1,46 @@ + + + + + @default + + MEN_EXPORTDXF + DXF + + + TOP_EXPORTDXF + Export DXF + + + STB_EXPORTDXF + Export DXF + + + MEN_IMPORTDXF + DXF + + + TOP_IMPORTDXF + Import DXF + + + STB_IMPORTDXF + Import DXF + + + + DXFPlugin_GUI + + DXF_FILES + DXF files( *.dxf ) + + + EXPORT_TITLE + Export DXF + + + IMPORT_TITLE + Import DXF + + + diff --git a/src/resources/DXFPlugin_msg_fr.ts b/src/resources/DXFPlugin_msg_fr.ts new file mode 100644 index 0000000..54f35a2 --- /dev/null +++ b/src/resources/DXFPlugin_msg_fr.ts @@ -0,0 +1,46 @@ + + + + + @default + + MEN_EXPORTDXF + DXF + + + TOP_EXPORTDXF + Exporter DXF + + + STB_EXPORTDXF + Exporter DXF + + + MEN_IMPORTDXF + DXF + + + TOP_IMPORTDXF + Importer DXF + + + STB_IMPORTDXF + Importer DXF + + + + DXFPlugin_GUI + + DXF_FILES + DXF Fichiers( *.dxf ) + + + EXPORT_TITLE + Exporter DXF + + + IMPORT_TITLE + Importer DXF + + + \ No newline at end of file diff --git a/src/resources/DXFPlugin_msg_ja.ts b/src/resources/DXFPlugin_msg_ja.ts new file mode 100644 index 0000000..6c6461e --- /dev/null +++ b/src/resources/DXFPlugin_msg_ja.ts @@ -0,0 +1,46 @@ + + + + + @default + + MEN_EXPORTDXF + DXF + + + TOP_EXPORTDXF + Export DXF + + + STB_EXPORTDXF + Export DXF + + + MEN_IMPORTDXF + DXF + + + TOP_IMPORTDXF + Import DXF + + + STB_IMPORTDXF + Import DXF + + + + DXFPlugin_GUI + + DXF_FILES + DXF files( *.dxf ) + + + EXPORT_TITLE + Export DXF + + + IMPORT_TITLE + Import DXF + + + \ No newline at end of file