From: vsr Date: Wed, 27 May 2015 14:07:21 +0000 (+0300) Subject: Merge from rnv/geom_plugin_imp branch X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=41c8f7a3ebfba54e407bd90e0c3ba22642bf3af4;p=plugins%2Fxtplugin.git Merge from rnv/geom_plugin_imp branch --- 41c8f7a3ebfba54e407bd90e0c3ba22642bf3af4 diff --cc CMakeLists.txt index fe63d74,0023106..472e495 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@@ -110,7 -155,7 +155,7 @@@ ENDIF( # Header configuration # ==================== SALOME_XVERSION(${PROJECT_NAME}) --SALOME_CONFIGURE_FILE(XTPLUGIN_version.h.in XTPLUGIN_version.h) ++SALOME_CONFIGURE_FILE(XTPlugin_version.h.in XTPlugin_version.h INSTALL ${SALOME_INSTALL_HEADERS}) # Configuration export # (here only the level 1 prerequisites are exposed) diff --cc INSTALL index 935c98c,935c98c..8f4e78c --- a/INSTALL +++ b/INSTALL @@@ -2,7 -2,7 +2,7 @@@ Installation Instructions ************************* --Copyright (C) 2014 Open CASCADE S.A.S. ++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 @@@ -42,12 -42,12 +42,12 @@@ In order to build the plugin you have t - for csh: -- % setenv XT_ROOT_DIR /path/to/the/XT-6.7.0 ++ % setenv XT_ROOT_DIR /path/to/the/XT-6.9.0 % setenv LD_LIBRARY_PATH ${XT_ROOT_DIR}/lib:${LD_LIBRARY_PATH} - for bash: -- % export XT_ROOT_DIR=/path/to/the/XT-6.7.0 ++ % export XT_ROOT_DIR=/path/to/the/XT-6.9.0 % export LD_LIBRARY_PATH=${XT_ROOT_DIR}/lib:${LD_LIBRARY_PATH} Note, that OCCT Parasolid XDE product requires OCCT license library. diff --cc README index 1d19ff8,1d19ff8..701ae14 --- a/README +++ b/README @@@ -2,7 -2,7 +2,7 @@@ README ****** --Copyright (C) 2014 Open CASCADE S.A.S. ++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 @@@ -57,12 -57,12 +57,12 @@@ Usag - for csh: -- % setenv XT_ROOT_DIR /path/to/the/XT-6.7.0 ++ % setenv XT_ROOT_DIR /path/to/the/XT-6.9.0 % setenv LD_LIBRARY_PATH ${XT_ROOT_DIR}/lib:${LD_LIBRARY_PATH} - for bash: -- % export XT_ROOT_DIR=/path/to/the/XT-6.7.0 ++ % export XT_ROOT_DIR=/path/to/the/XT-6.9.0 % export LD_LIBRARY_PATH=${XT_ROOT_DIR}/lib:${LD_LIBRARY_PATH} * OCCT Parasolid XDE product requires also an OCCT license library. diff --cc XTPLUGIN_version.h.in index 7def155,9e13e50..0000000 deleted file mode 100644,100644 --- a/XTPLUGIN_version.h.in +++ /dev/null @@@ -1,41 -1,41 +1,0 @@@ - // Copyright (C) 2014-2015 OPEN CASCADE -// Copyright (C) 2014 OPEN CASCADE --// --// This library is free software; you can redistribute it and/or --// modify it under the terms of the GNU Lesser General Public --// License as published by the Free Software Foundation; either --// version 2.1 of the License, or (at your option) any later version. --// --// This library is distributed in the hope that it will be useful, --// but WITHOUT ANY WARRANTY; without even the implied warranty of --// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --// Lesser General Public License for more details. --// --// You should have received a copy of the GNU Lesser General Public --// License along with this library; if not, write to the Free Software --// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --// --// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com --// -- --#if !defined(__XTPLUGIN_VERSION_H) --#define __XTPLUGIN_VERSION_H -- --/*! -- Specify version of SALOME XTPLUGIN module, as follows -- -- XTPLUGIN_VERSION_MAJOR : (integer) number identifying major version -- XTPLUGIN_VERSION_MINOR : (integer) number identifying minor version -- XTPLUGIN_VERSION_MAINTENANCE : (integer) number identifying maintenance version -- XTPLUGIN_VERSION_STR : (string) complete version number "major.minor.maintenance" -- XTPLUGIN_VERSION : (hex) complete version number (major << 16) + (minor << 8) + maintenance -- XTPLUGIN_DEVELOPMENT : (integer) indicates development version when set to 1 --*/ -- --#define XTPLUGIN_VERSION_MAJOR @SALOMEXTPLUGIN_MAJOR_VERSION@ --#define XTPLUGIN_VERSION_MINOR @SALOMEXTPLUGIN_MINOR_VERSION@ --#define XTPLUGIN_VERSION_MAINTENANCE @SALOMEXTPLUGIN_PATCH_VERSION@ --#define XTPLUGIN_VERSION_STR "@SALOMEXTPLUGIN_VERSION@" --#define XTPLUGIN_VERSION @SALOMEXTPLUGIN_XVERSION@ --#define XTPLUGIN_DEVELOPMENT @SALOMEXTPLUGIN_VERSION_DEV@ -- --#endif // __XTPLUGIN_VERSION_H diff --cc XTPlugin_version.h.in index 0000000,0000000..7def155 new file mode 100644 --- /dev/null +++ b/XTPlugin_version.h.in @@@ -1,0 -1,0 +1,41 @@@ ++// Copyright (C) 2014-2015 OPEN CASCADE ++// ++// This library is free software; you can redistribute it and/or ++// modify it under the terms of the GNU Lesser General Public ++// License as published by the Free Software Foundation; either ++// version 2.1 of the License, or (at your option) any later version. ++// ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++// Lesser General Public License for more details. ++// ++// You should have received a copy of the GNU Lesser General Public ++// License along with this library; if not, write to the Free Software ++// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++// ++// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com ++// ++ ++#if !defined(__XTPLUGIN_VERSION_H) ++#define __XTPLUGIN_VERSION_H ++ ++/*! ++ Specify version of SALOME XTPLUGIN module, as follows ++ ++ XTPLUGIN_VERSION_MAJOR : (integer) number identifying major version ++ XTPLUGIN_VERSION_MINOR : (integer) number identifying minor version ++ XTPLUGIN_VERSION_MAINTENANCE : (integer) number identifying maintenance version ++ XTPLUGIN_VERSION_STR : (string) complete version number "major.minor.maintenance" ++ XTPLUGIN_VERSION : (hex) complete version number (major << 16) + (minor << 8) + maintenance ++ XTPLUGIN_DEVELOPMENT : (integer) indicates development version when set to 1 ++*/ ++ ++#define XTPLUGIN_VERSION_MAJOR @SALOMEXTPLUGIN_MAJOR_VERSION@ ++#define XTPLUGIN_VERSION_MINOR @SALOMEXTPLUGIN_MINOR_VERSION@ ++#define XTPLUGIN_VERSION_MAINTENANCE @SALOMEXTPLUGIN_PATCH_VERSION@ ++#define XTPLUGIN_VERSION_STR "@SALOMEXTPLUGIN_VERSION@" ++#define XTPLUGIN_VERSION @SALOMEXTPLUGIN_XVERSION@ ++#define XTPLUGIN_DEVELOPMENT @SALOMEXTPLUGIN_VERSION_DEV@ ++ ++#endif // __XTPLUGIN_VERSION_H diff --cc doc/CMakeLists.txt index 0000000,7eb84fe..0fd283b mode 000000,100755..100755 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@@ -1,0 -1,20 +1,20 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 OPEN CASCADE + # + # This library is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public + # License as published by the Free Software Foundation; either + # version 2.1 of the License, or (at your option) any later version. + # + # This library is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + # Lesser General Public License for more details. + # + # You should have received a copy of the GNU Lesser General Public + # License along with this library; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + # + # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + # + + ADD_SUBDIRECTORY(salome) diff --cc doc/salome/CMakeLists.txt index 0000000,957d7ef..9965b85 mode 000000,100755..100755 --- a/doc/salome/CMakeLists.txt +++ b/doc/salome/CMakeLists.txt @@@ -1,0 -1,21 +1,21 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 OPEN CASCADE + # + # This library is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public + # License as published by the Free Software Foundation; either + # version 2.1 of the License, or (at your option) any later version. + # + # This library is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + # Lesser General Public License for more details. + # + # You should have received a copy of the GNU Lesser General Public + # License along with this library; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + # + # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + # + + ADD_SUBDIRECTORY(examples) -ADD_SUBDIRECTORY(gui) ++ADD_SUBDIRECTORY(gui) diff --cc doc/salome/examples/CMakeLists.txt index 0000000,bd1eaf9..dd10956 mode 000000,100644..100644 --- a/doc/salome/examples/CMakeLists.txt +++ b/doc/salome/examples/CMakeLists.txt @@@ -1,0 -1,21 +1,21 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 OPEN CASCADE + # + # This library is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public + # License as published by the Free Software Foundation; either + # version 2.1 of the License, or (at your option) any later version. + # + # This library is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + # Lesser General Public License for more details. + # + # You should have received a copy of the GNU Lesser General Public + # License along with this library; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + # + # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + # + + FILE(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.py") + INSTALL(FILES ${files} DESTINATION ${SALOME_INSTALL_DOC}/examples/XTPLUGIN) diff --cc doc/salome/examples/XTPlugindemo.py index 0000000,f223b41..fd27125 mode 000000,100644..100644 --- a/doc/salome/examples/XTPlugindemo.py +++ b/doc/salome/examples/XTPlugindemo.py @@@ -1,0 -1,27 +1,20 @@@ + # Import XT + + import salome + salome.salome_init() + import GEOM + from salome.geom import geomBuilder + geompy = geomBuilder.New(salome.myStudy) + -# Example of import file in XT format ++# - path to the file ++xtFile = "/path/to/the/xt/file.x_t" + -print "Test Import XT ..." ++if os.path.exists(xtFile): ++ # - import shape ++ shape = geompy.ImportXT(xtFile) ++ ++ # - publish in study ++ geompy.addToStudy(shape, "ImportXT") + -dir = "" # please define import directory here -if dir != "": - # File for Import testing - fileImport = dir + "" # please define file name here - if fileImport != dir: - # import shape - Shape1 = geompy.ImportXT(fileImport) - geompy.addToStudy(Shape1, "ImportXT_1") - # It is possible also to use next format of importing and publishing in study - Shape2 = geompy.ImportXT(fileImport,"ImportXT_2") - print "OK" - else: - print "please define file name in python file" + else: - print "please define import directory in python file" ++ print "ERROR: File %s does not exist" % xtFile diff --cc doc/salome/gui/CMakeLists.txt index 0000000,f123072..3b0fece mode 000000,100755..100755 --- a/doc/salome/gui/CMakeLists.txt +++ b/doc/salome/gui/CMakeLists.txt @@@ -1,0 -1,20 +1,20 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 OPEN CASCADE + # + # This library is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public + # License as published by the Free Software Foundation; either + # version 2.1 of the License, or (at your option) any later version. + # + # This library is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + # Lesser General Public License for more details. + # + # You should have received a copy of the GNU Lesser General Public + # License along with this library; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + # + # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + # + + ADD_SUBDIRECTORY(XTPLUGIN) diff --cc doc/salome/gui/XTPLUGIN/CMakeLists.txt index 0000000,aab2ca7..2c992a8 mode 000000,100755..100755 --- a/doc/salome/gui/XTPLUGIN/CMakeLists.txt +++ b/doc/salome/gui/XTPLUGIN/CMakeLists.txt @@@ -1,0 -1,45 +1,52 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 OPEN CASCADE + # + # This library is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public + # License as published by the Free Software Foundation; either + # version 2.1 of the License, or (at your option) any later version. + # + # This library is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + # Lesser General Public License for more details. + # + # You should have received a copy of the GNU Lesser General Public + # License along with this library; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + # + # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + # + + SALOME_CONFIGURE_FILE(doxyfile.in doxyfile) + SALOME_CONFIGURE_FILE(doxyfile_py.in doxyfile_py) + SALOME_CONFIGURE_FILE(static/header.html.in ${CMAKE_CURRENT_BINARY_DIR}/static/header.html) + SALOME_CONFIGURE_FILE(static/header_py.html.in ${CMAKE_CURRENT_BINARY_DIR}/static/header_py.html) + ++# Generate a temporary python file, needed for the generation of the documentation ++# of the plugin. ++SALOME_ACCUMULATE_ENVIRONMENT(GEOM_PluginsList NOCHECK XTPlugin) ++SET(_plugins_cmd_options ${GEOM_ROOT_DIR}/bin/salome/collect_geom_methods.py -d -o tmp/geomBuilder.py XTPlugin) ++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/XTPluginBuilder.py ${CMAKE_SOURCE_DIR}/src/XTPluginBuilder.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}/XTPLUGIN DESTINATION ${SALOME_INSTALL_DOC}/gui) + INSTALL(FILES images/head.png DESTINATION ${SALOME_INSTALL_DOC}/gui/XTPLUGIN) + INSTALL(FILES images/head.png DESTINATION ${SALOME_INSTALL_DOC}/gui/XTPLUGIN/xtpluginpy_doc) + + SET(make_clean_files XTPLUGIN xtpluginpy_doc.tag) + SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${make_clean_files}") diff --cc doc/salome/gui/XTPLUGIN/doxyfile.in index 0000000,e4e9e35..868181e mode 000000,100755..100755 --- a/doc/salome/gui/XTPLUGIN/doxyfile.in +++ b/doc/salome/gui/XTPLUGIN/doxyfile.in @@@ -1,0 -1,114 +1,114 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 OPEN CASCADE + # + # This library is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public + # License as published by the Free Software Foundation; either + # version 2.1 of the License, or (at your option) any later version. + # + # This library is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + # Lesser General Public License for more details. + # + # You should have received a copy of the GNU Lesser General Public + # License along with this library; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + # + # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + # + + #--------------------------------------------------------------------------- + # Project related configuration options + #--------------------------------------------------------------------------- + PROJECT_NAME = "SALOME XTPLUGIN User's Guide" + OUTPUT_DIRECTORY = XTPLUGIN + 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 = xtpluginpy_doc.tag=../XTPLUGIN/xtpluginpy_doc + SEARCHENGINE = YES + + #--------------------------------------------------------------------------- + #Custom commands + #--------------------------------------------------------------------------- + ALIASES += tui_script{1}="\include \1 Download this script" diff --cc doc/salome/gui/XTPLUGIN/doxyfile_py.in index 0000000,8d6157f..5dfead6 mode 000000,100755..100755 --- a/doc/salome/gui/XTPLUGIN/doxyfile_py.in +++ b/doc/salome/gui/XTPLUGIN/doxyfile_py.in @@@ -1,0 -1,160 +1,160 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 OPEN CASCADE + # + # This library is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public + # License as published by the Free Software Foundation; either + # version 2.1 of the License, or (at your option) any later version. + # + # This library is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + # Lesser General Public License for more details. + # + # You should have received a copy of the GNU Lesser General Public + # License along with this library; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + # + # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + # + + #--------------------------------------------------------------------------- + # Project related configuration options + #--------------------------------------------------------------------------- + PROJECT_NAME = "SALOME XTPLUGIN User's Guide" + OUTPUT_DIRECTORY = XTPLUGIN + 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/XTPlugin_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 = xtpluginpy_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 = xtpluginpy_doc.tag + SEARCHENGINE = YES diff --cc doc/salome/gui/XTPLUGIN/input/index.doc index 0000000,0b30547..f390823 mode 000000,100644..100644 --- a/doc/salome/gui/XTPLUGIN/input/index.doc +++ b/doc/salome/gui/XTPLUGIN/input/index.doc @@@ -1,0 -1,16 +1,15 @@@ + /*! + + \mainpage Introduction to XTPLUGIN + -\b Parasolid interface to be used as plugin for SALOME Geometry -module. -It is destined for: -- Importing CAD models stored in Parasolid format ( *.x_t and *.xt files ) into -SALOME study; ++The \b XTPLUGIN implements \b Parasolid interface as a plugin for SALOME Geometry module. + -To manage parameters of the XTPLUGIN use \subpage xtplugin_import_page. ++It can be used for importing CAD models stored in Parasolid format ( *.x_t and *.xt files ) into ++SALOME study. + -Also all XTPLUGIN functionalities are accessible via ++To use functionality of the XTPLUGIN refer to \subpage xtplugin_import_page. ++ ++Also all functionalities of the XTPLUGIN are accessible via + \subpage xtplugin_python_interface_page "XTPLUGIN Python interface". + + */ diff --cc doc/salome/gui/XTPLUGIN/input/xtplugin_import_page.doc index 0000000,d0e754d..6991a2d mode 000000,100644..100644 --- a/doc/salome/gui/XTPLUGIN/input/xtplugin_import_page.doc +++ b/doc/salome/gui/XTPLUGIN/input/xtplugin_import_page.doc @@@ -1,0 -1,23 +1,23 @@@ + /*! + + \page xtplugin_import_page Import XT + -For using XTPLUGIN functionalities in SALOME: ++To use XTPLUGIN functionalities in SALOME: + + - Run SALOME and activate Geometry module. + + - Import the XT file from menu File/Import/XT. + + \image html import_xt.png + - Browse and select the file and click "Open" button. New object (shape) - will appears in the SALOME object browser. ++ Browse and select the file and press "Open" button. New object (shape) ++ will appear in the SALOME object browser. + - \note It is possible to re-open from the initial file a previously imported shape if - the file has been changed on disk. For this, select Reload From Disk - in the context menu of the imported shape. The reloaded shape will have the same - representation parameters as before this operation. ++ \note It is possible to re-load a previously imported shape from the initial file if ++ the file has been changed on disk. For this, select Reload From Disk item ++ in the Object browser's context menu of the imported shape. The reloaded shape will ++ have the same representation parameters as before this operation. + + \image html reopen_xt.png + + */ diff --cc doc/salome/gui/XTPLUGIN/input/xtplugin_python_interface_page.doc index 0000000,a00567e..0768a93 mode 000000,100644..100644 --- a/doc/salome/gui/XTPLUGIN/input/xtplugin_python_interface_page.doc +++ b/doc/salome/gui/XTPLUGIN/input/xtplugin_python_interface_page.doc @@@ -1,0 -1,19 +1,19 @@@ + /*! + + \page xtplugin_python_interface_page Python Interface + -Python package XTPluginBuilder defines several classes, destined for -import CAD models in Parasolid format (*.x_t and *.xt files). ++Python package XTPluginBuilder defines a function that allows ++importing CAD models in Parasolid format (*.x_t and *.xt files). + + XTPLUGIN dynamically adds several methods to the geomBuilder. + + Below you can see an example of usage of the XTPluginBuilder package for -import CAD models: ++importing CAD models: + + \anchor example_XTPlugin -

Example of import CAD model stored in Parasolid format (*.x_t and *.xt files) with XTPLUGIN:

++

Example of importing of CAD model stored in Parasolid format (*.x_t and *.xt files) with XTPLUGIN:

+ \tui_script{XTPlugindemo.py} + + */ + + diff --cc doc/salome/gui/XTPLUGIN/static/footer.html index 0000000,e21ab0c..a9dd3c1 mode 000000,100755..100755 --- a/doc/salome/gui/XTPLUGIN/static/footer.html +++ b/doc/salome/gui/XTPLUGIN/static/footer.html @@@ -1,0 -1,13 +1,13 @@@ + + + + + + diff --cc idl/CMakeLists.txt index 0000000,121bda3..001cd36 mode 000000,100755..100755 --- a/idl/CMakeLists.txt +++ b/idl/CMakeLists.txt @@@ -1,0 -1,49 +1,49 @@@ -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 OPEN CASCADE + # + # This library is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public + # License as published by the Free Software Foundation; either + # version 2.1 of the License, or (at your option) any later version. + # + # This library is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + # Lesser General Public License for more details. + # + # You should have received a copy of the GNU Lesser General Public + # License along with this library; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + # + # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + # + + INCLUDE(UseOmniORB) + + INCLUDE_DIRECTORIES( + ${KERNEL_INCLUDE_DIRS} + ${GEOM_INCLUDE_DIRS} + ${OMNIORB_INCLUDE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ) + + IF(WIN32) + ADD_DEFINITIONS(-DNOGDI) + ENDIF(WIN32) + + SET(SalomeIDLXTPlugin_IDLSOURCES + XTPlugin.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(SalomeIDLXTPlugin "${SalomeIDLXTPlugin_IDLSOURCES}" "${IDL_INCLUDE_DIRS}" "${IDL_LINK_FLAGS}") + ADD_DEPENDENCIES(SalomeIDLXTPlugin ${GEOM_SalomeIDLGEOM}) + INSTALL(TARGETS SalomeIDLXTPlugin EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS}) diff --cc idl/XTPlugin.idl index 0000000,05e8e97..8749783 mode 000000,100644..100644 --- a/idl/XTPlugin.idl +++ b/idl/XTPlugin.idl @@@ -1,0 -1,42 +1,42 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #ifndef __XTPlugin_IDL__ + #define __XTPlugin_IDL__ + + #include "GEOM_Gen.idl" + + module XTPlugin + { + /*! + * \brief Interface for XTPlugin modeling functions. + */ + interface IXTOperations : GEOM::GEOM_IOperations + { + /*! + * \brief Import a shape from the XT file. + * + * \param theFileName The file, containing the shape. + * \return List of GEOM_Objects, containing the created shape and propagation groups. + */ + GEOM::ListOfGO ImportXT( in string theFileName ); + }; + }; + + #endif // __XTPlugin_IDL__ diff --cc resources/SalomeApp.xml index 0000000,067fe64..2187f1f mode 000000,100644..100644 --- a/resources/SalomeApp.xml +++ b/resources/SalomeApp.xml @@@ -1,0 -1,32 +1,32 @@@ + + +
+ +
+
+ + +
+
+ +
+
diff --cc resources/XTPlugin.xml index 0000000,652294a..61ebe17 mode 000000,100644..100644 --- a/resources/XTPlugin.xml +++ b/resources/XTPlugin.xml @@@ -1,0 -1,39 +1,39 @@@ + + + + + + + + + + + + + + + + diff --cc src/XTPluginBuilder.py index 0000000,7c4ae02..8f93690 mode 000000,100644..100644 --- a/src/XTPluginBuilder.py +++ b/src/XTPluginBuilder.py @@@ -1,0 -1,70 +1,78 @@@ + # -*- coding: iso-8859-1 -*- -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 OPEN CASCADE + # + # This library is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public + # License as published by the Free Software Foundation; either + # version 2.1 of the License, or (at your option) any later version. + # + # This library is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + # Lesser General Public License for more details. + # + # You should have received a copy of the GNU Lesser General Public + # License along with this library; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + # + # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + # + + from XTPlugin import IXTOperations + + # Engine Library Name + __libraryName__ = "XTPluginEngine" + ++## Get XT plugin operations interface ++# @return an instance of XT plugin operations interface + def GetXTPluginOperations(self): ++ """ ++ Get XT plugin operations interface. ++ ++ Returns: ++ An instance of XT plugin operations interface ++ """ + anOp = self.GetPluginOperations(self.myStudyId, __libraryName__) + return anOp._narrow(IXTOperations) + + ## Import a shape from the XT 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. + def ImportXT(self, theFileName, theName=None): + """ + Import a shape from the XT 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 = GetXTPluginOperations(self) + aListObj = anOp.ImportXT(theFileName) + RaiseIfFailed("ImportXT", anOp) + aNbObj = len(aListObj) + if aNbObj > 0: + self._autoPublish(aListObj[0], theName, "imported") + if aNbObj == 1: + return aListObj[0] + return aListObj diff --cc src/XTPlugin_Engine.cxx index 0000000,3fac07c..2999b77 mode 000000,100644..100644 --- a/src/XTPlugin_Engine.cxx +++ b/src/XTPlugin_Engine.cxx @@@ -1,0 -1,31 +1,31 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + // internal includes + #include "XTPlugin_Engine.hxx" + #include "XTPlugin_OperationsCreator.hxx" + + extern "C" + { + XTPLUGINENGINE_EXPORT + GEOM_GenericOperationsCreator* GetOperationsCreator() + { + return new XTPlugin_OperationsCreator(); + } + } diff --cc src/XTPlugin_Engine.hxx index 0000000,005bdeb..a7021d0 mode 000000,100755..100755 --- a/src/XTPlugin_Engine.hxx +++ b/src/XTPlugin_Engine.hxx @@@ -1,0 -1,33 +1,33 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #ifndef _XTPLUGIN_ENGINE_HXX_ + #define _XTPLUGIN_ENGINE_HXX_ + + #ifdef WIN32 + #if defined XTPLUGINENGINE_EXPORTS || defined XTPluginEngine_EXPORTS + #define XTPLUGINENGINE_EXPORT __declspec( dllexport ) + #else + #define XTPLUGINENGINE_EXPORT __declspec( dllimport ) + #endif + #else + #define XTPLUGINENGINE_EXPORT + #endif + + #endif diff --cc src/XTPlugin_GUI.cxx index 0000000,2e9d98f..11057cf mode 000000,100644..100644 --- a/src/XTPlugin_GUI.cxx +++ b/src/XTPlugin_GUI.cxx @@@ -1,0 -1,181 +1,181 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + // internal includes + #include "XTPlugin_GUI.h" + #include "XTPlugin_IOperations_i.hh" + + // 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(XTPlugin) + + //======================================================================= + // function : XTPlugin_GUI() + // purpose : Constructor + //======================================================================= + XTPlugin_GUI::XTPlugin_GUI( GeometryGUI* parent ) : GEOMPluginGUI( parent ) + { + } + + //======================================================================= + // function : ~XTPlugin_GUI + // purpose : Destructor + //======================================================================= + XTPlugin_GUI::~XTPlugin_GUI() + { + } + + //======================================================================= + // function : OnGUIEvent() + // purpose : + //======================================================================= + bool XTPlugin_GUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent ) + { + QString cmd; + switch ( theCommandID ) { + case 1: + cmd = "Import_XT"; + default: + break; + } + return OnGUIEvent( cmd, parent ); + } + + //======================================================================= + // function : OnGUIEvent() + // purpose : + //======================================================================= + bool XTPlugin_GUI::OnGUIEvent( const QString& theCommandID, SUIT_Desktop* parent ) + { + bool result = false; + + if ( theCommandID == "Import_XT" ) + { + result = importXT( parent ); + } + else + { + getGeometryGUI()->getApp()->putInfo( tr("GEOM_PRP_COMMAND").arg( theCommandID ) ); + } + + return result; + + } + + //======================================================================= + // function : importXT + // purpose : + //======================================================================= + bool XTPlugin_GUI::importXT( 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(), "XTPluginEngine" ); + XTPlugin::IXTOperations_var xtOp = XTPlugin::IXTOperations::_narrow( op ); + if ( CORBA::is_nil( xtOp ) ) return false; + + QStringList fileNames = app->getOpenFileNames( SUIT_FileDlg::getLastVisitedPath().isEmpty() ? QDir::currentPath() : QString(""), + tr( "XT_FILES" ), + tr( "IMPORT_TITLE" ), + parent ); + if ( fileNames.count() > 0 ) + { + QStringList entryList; + QStringList errors; + + foreach( QString fileName, fileNames ) + { + SUIT_OverrideCursor wc; + GEOM_Operation transaction( app, xtOp.in() ); + + try + { + app->putInfo( tr( "GEOM_PRP_LOADING" ).arg( fileName ) ); + transaction.start(); + GEOM::ListOfGO_var result = xtOp->ImportXT( fileName.toUtf8().constData() ); + if ( result->length() > 0 && xtOp->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( xtOp->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; + } + + //===================================================================================== + // EXPORTED METHODS + //===================================================================================== + extern "C" + { + #ifdef WIN32 + __declspec( dllexport ) + #endif + GEOMGUI* GetLibGUI( GeometryGUI* parent ) + { + return new XTPlugin_GUI( parent ); + } + } diff --cc src/XTPlugin_GUI.h index 0000000,1231345..1ef3e09 mode 000000,100644..100644 --- a/src/XTPlugin_GUI.h +++ b/src/XTPlugin_GUI.h @@@ -1,0 -1,39 +1,39 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #ifndef XTPlugin_GUI_H + #define XTPlugin_GUI_H + + #include + + class XTPlugin_GUI: public GEOMPluginGUI + { + Q_OBJECT + public: + XTPlugin_GUI( GeometryGUI* parent ); + ~XTPlugin_GUI(); + + bool OnGUIEvent( int commandId, SUIT_Desktop* ); + bool OnGUIEvent( const QString&, SUIT_Desktop* ); + + private: + bool importXT( SUIT_Desktop* ); + }; + + #endif // XTPlugin_GUI_H diff --cc src/XTPlugin_IECallBack.cxx index 0000000,c782013..5088796 mode 000000,100755..100755 --- a/src/XTPlugin_IECallBack.cxx +++ b/src/XTPlugin_IECallBack.cxx @@@ -1,0 -1,56 +1,56 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + // internal includes + #include "XTPlugin_IECallBack.hxx" + #include "XTPlugin_IOperations.hxx" + #include "XTPlugin_OperationsCreator.hxx" + + //============================================================================= + /*! + * constructor + */ + //============================================================================= + XTPlugin_IECallBack::XTPlugin_IECallBack() + { + } + + //============================================================================= + /*! + * destructor + */ + //============================================================================= + XTPlugin_IECallBack::~XTPlugin_IECallBack() + { + } + + //============================================================================= + /*! + * Import + */ + //============================================================================= + Handle(TColStd_HSequenceOfTransient) + XTPlugin_IECallBack::Import( int theDocId, + const TCollection_AsciiString& theFormatName, + const TCollection_AsciiString& theFileName ) + { + XTPlugin_IOperations* aPluginOperations = XTPlugin_OperationsCreator::get( GetEngine(), theDocId ); + return aPluginOperations->ImportXT( theFileName ); + } + diff --cc src/XTPlugin_IECallBack.hxx index 0000000,975e7e1..6ef4e71 mode 000000,100644..100644 --- a/src/XTPlugin_IECallBack.hxx +++ b/src/XTPlugin_IECallBack.hxx @@@ -1,0 -1,44 +1,44 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #ifndef _XTPlugin_IECallBack_HXX_ + #define _XTPlugin_IECallBack_HXX_ + + // internal includes + #include "XTPlugin_IOperations.hxx" + + // GEOM includes + #include + #include + + // OCC includes + #include + + class XTPLUGINENGINE_EXPORT XTPlugin_IECallBack : public GEOMImpl_IECallBack + { + public: + XTPlugin_IECallBack(); + ~XTPlugin_IECallBack(); + + Handle(TColStd_HSequenceOfTransient) Import( int theDocId, + const TCollection_AsciiString& theFormatName, + const TCollection_AsciiString& theFileName ); + }; + + #endif diff --cc src/XTPlugin_IImport.hxx index 0000000,9a4453c..a3e2286 mode 000000,100644..100644 --- a/src/XTPlugin_IImport.hxx +++ b/src/XTPlugin_IImport.hxx @@@ -1,0 -1,42 +1,42 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #ifndef _XTPlugin_IImport_HXX_ + #define _XTPlugin_IImport_HXX_ + + #include "GEOM_Function.hxx" + + #define IMPORTXT_ARG_FILENAME 1 + + class XTPlugin_IImport + { + public: + XTPlugin_IImport( Handle(GEOM_Function) theFunction) + : _func(theFunction) {} + + void SetFileName( const TCollection_AsciiString& theFileName ) + { _func->SetString( IMPORTXT_ARG_FILENAME, theFileName ); } + TCollection_AsciiString GetFileName() + { return _func->GetString( IMPORTXT_ARG_FILENAME ); } + + private: + Handle(GEOM_Function) _func; + }; + + #endif // _XTPlugin_IImport_HXX_ diff --cc src/XTPlugin_IOperations.cxx index 0000000,411be1f..b7bc97f mode 000000,100644..100644 --- a/src/XTPlugin_IOperations.cxx +++ b/src/XTPlugin_IOperations.cxx @@@ -1,0 -1,110 +1,110 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + // internal includes + #include "XTPlugin_IOperations.hxx" + #include "XTPlugin_ImportDriver.hxx" + #include "XTPlugin_IImport.hxx" + + // KERNEL includes + #include + + // GEOM includes + #include + #include + + #include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC + + //============================================================================= + /*! + * Constructor + */ + //============================================================================= + XTPlugin_IOperations::XTPlugin_IOperations( GEOM_Engine* theEngine, int theDocID ) + : GEOMImpl_IBaseIEOperations( theEngine, theDocID ) + { + MESSAGE( "XTPlugin_IOperations::XTPlugin_IOperations" ); + } + + //============================================================================= + /*! + * Destructor + */ + //============================================================================= + XTPlugin_IOperations::~XTPlugin_IOperations() + { + MESSAGE( "XTPlugin_IOperations::~XTPlugin_IOperations" ); + } + + //============================================================================= + /*! + * ImportXT + * Import a shape from XT 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) + XTPlugin_IOperations::ImportXT( 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( XTPlugin_ImportDriver::GetID(), IMPORT_SHAPE); + if (aFunction.IsNull()) return NULL; + + //Check if the function is set correctly + if (aFunction->GetDriverGUID() != XTPlugin_ImportDriver::GetID()) return NULL; + + //Set parameters + XTPlugin_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.ImportXT(\"" << theFileName.ToCString() << "\" )"; + SetErrorCode(OK); + + return aSeq; + } diff --cc src/XTPlugin_IOperations.hxx index 0000000,d259c99..cb7bdfd mode 000000,100644..100644 --- a/src/XTPlugin_IOperations.hxx +++ b/src/XTPlugin_IOperations.hxx @@@ -1,0 -1,39 +1,39 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + // File : XTPlugin_IOperations.hxx + + #ifndef _XTPlugin_IOperations_HXX_ + #define _XTPlugin_IOperations_HXX_ + + // internal includes + #include "XTPlugin_Engine.hxx" + + // GEOM includes + #include + + class XTPLUGINENGINE_EXPORT XTPlugin_IOperations: public GEOMImpl_IBaseIEOperations + { + public: + XTPlugin_IOperations( GEOM_Engine*, int ); + ~XTPlugin_IOperations(); + + Handle(TColStd_HSequenceOfTransient) ImportXT( const TCollection_AsciiString& ); + }; + + #endif diff --cc src/XTPlugin_IOperations_i.cc index 0000000,47dcac8..964e2e7 mode 000000,100644..100644 --- a/src/XTPlugin_IOperations_i.cc +++ b/src/XTPlugin_IOperations_i.cc @@@ -1,0 -1,84 +1,84 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + // internal includes + #include "XTPlugin_IOperations_i.hh" + #include "XTPlugin_IOperations.hxx" -#include ++#include "XTPlugin_version.h" + + // KERNEL includes + #include + + //============================================================================= + /*! + * constructor: + */ + //============================================================================= + XTPlugin_IOperations_i::XTPlugin_IOperations_i( PortableServer::POA_ptr thePOA, + GEOM::GEOM_Gen_ptr theEngine, + ::XTPlugin_IOperations* theImpl ) + :GEOM_IOperations_i( thePOA, theEngine, theImpl ) + { + MESSAGE( "XTPlugin_Operations_i::XTPlugin_Operations_i" ); + } + + //============================================================================= + /*! + * destructor + */ + //============================================================================= + XTPlugin_IOperations_i::~XTPlugin_IOperations_i() + { + MESSAGE( "XTPlugin_Operations_i::~XTPlugin_Operations_i" ); + } + + //============================================================================= + /*! + * ImportXT + * Import a shape from XT format + * \param theFileName The name of the file to import + * \return List of GEOM_Objects, containing the created shape and propagation groups. + */ + //============================================================================= + GEOM::ListOfGO* XTPlugin_IOperations_i::ImportXT( 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()->ImportXT( 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(); + } + + XTPlugin_IOperations* XTPlugin_IOperations_i::GetOperations() + { + return (XTPlugin_IOperations*)GetImpl(); + } diff --cc src/XTPlugin_IOperations_i.hh index 0000000,5fea3b9..c998040 mode 000000,100644..100644 --- a/src/XTPlugin_IOperations_i.hh +++ b/src/XTPlugin_IOperations_i.hh @@@ -1,0 -1,51 +1,51 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #ifndef _XTPlugin_IOperations_i_HeaderFile + #define _XTPlugin_IOperations_i_HeaderFile + + // idl includes + #include + #include CORBA_SERVER_HEADER( GEOM_Gen ) + #include CORBA_SERVER_HEADER( XTPlugin ) + + // internal includes + #include "XTPlugin_Engine.hxx" + + // GEOM includes + #include + + class XTPlugin_IOperations; + + class XTPLUGINENGINE_EXPORT XTPlugin_IOperations_i : + public virtual POA_XTPlugin::IXTOperations, + public virtual GEOM_IOperations_i + { + public: + XTPlugin_IOperations_i( PortableServer::POA_ptr thePOA, + GEOM::GEOM_Gen_ptr theEngine, + XTPlugin_IOperations* theImpl ); + ~XTPlugin_IOperations_i(); + + GEOM::ListOfGO* ImportXT( const char* ); + + XTPlugin_IOperations* GetOperations(); + }; + + #endif // _XTPlugin_IOperations_i_HeaderFile diff --cc src/XTPlugin_ImportDriver.cxx index 0000000,32f2feb..dbdb02d mode 000000,100644..100644 --- a/src/XTPlugin_ImportDriver.cxx +++ b/src/XTPlugin_ImportDriver.cxx @@@ -1,0 -1,265 +1,265 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + // internal includes + #include "XTPlugin_ImportDriver.hxx" + #include "XTPlugin_IImport.hxx" + #include "XTPlugin_Engine.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 + #include + #include + #include + #include + + #include + + #ifdef XT_HASLICENSE + #include "XTPlugin_license.h" + + #include + #include + #endif // XT_HASLICENSE + + //======================================================================= + //function : GetID + //purpose : + //======================================================================= + const Standard_GUID& XTPlugin_ImportDriver::GetID() + { + static Standard_GUID aGUID("81cc16bb-486f-4ec7-87b2-960b4aed557f"); + return aGUID; + } + + //======================================================================= + //function : XTPlugin_ImportDriver + //purpose : + //======================================================================= + XTPlugin_ImportDriver::XTPlugin_ImportDriver() + { + } + + //======================================================================= + //function : Execute + //purpose : + //======================================================================= + Standard_Integer XTPlugin_ImportDriver::Execute( TFunction_Logbook& log ) const + { + if( Label().IsNull() ) return 0; + Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction( Label() ); + + XTPlugin_IImport aData( aFunction ); + + TCollection_AsciiString aFileName = aData.GetFileName().ToCString(); + + MESSAGE("Import XT from file " << aFileName); + + TopoDS_Shape aResShape; + + #ifdef XT_HASLICENSE + try { + OCCLicense_Activate( "XT-R-"OCC_VERSION_STRING, XT_READ_LICENSE); + } + catch (Standard_LicenseError) { + return aResShape; + } + #endif // XT_HASLICENSE + + // Set "C" numeric locale to save numbers correctly + Kernel_Utils::Localizer loc; + + XtControl_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(XtData_Model) aModel = Handle(XtData_Model)::DownCast( aReader.WS()->Model() ); + Handle(XSControl_TransferReader) TR = aReader.WS()->TransferReader(); + if (!TR.IsNull()) { + Handle(Transfer_TransientProcess) TP = TR->TransientProcess(); + Standard_Integer nb = aModel->NbEntities(); + for (Standard_Integer i = 1; i <= nb; i ++) { + Handle(XtData_Object) XtOb = Handle(XtData_Object)::DownCast ( aModel->Value(i) ); + if (XtOb.IsNull()) continue; + + Handle(XtAttributes_AttribGroup) XtAG; + Standard_Boolean MayBeName = Standard_False; + + if (XtOb->IsKind(STANDARD_TYPE(XtTopoDS_Topology))) { + Handle(XtTopoDS_Topology) XtT = Handle(XtTopoDS_Topology)::DownCast(XtOb); + XtAG = XtT->AttributesGroups(); + MayBeName = Standard_True; + } + else if (XtOb->IsKind(STANDARD_TYPE(XtGeom_Surface))) { + Handle(XtGeom_Surface) XtGS = Handle(XtGeom_Surface)::DownCast(XtOb); + XtAG = XtGS->AttributesGroups(); + MayBeName = Standard_True; + } + else if (XtOb->IsKind(STANDARD_TYPE(XtGeom_Curve))) { + Handle(XtGeom_Curve) XtGC = Handle(XtGeom_Curve)::DownCast(XtOb); + XtAG = XtGC->AttributesGroups(); + MayBeName = Standard_True; + } + else if (XtOb->IsKind(STANDARD_TYPE(XtGeom_Point))) { + Handle(XtGeom_Point) XtGP = Handle(XtGeom_Point)::DownCast(XtOb); + XtAG = XtGP->AttributesGroups(); + MayBeName = Standard_True; + } + + if (MayBeName) { + TCollection_AsciiString string; + Standard_Boolean IsName = Standard_False; + Handle(XtAttributes_Attribute) XtA = Handle(XtAttributes_Attribute)::DownCast(XtAG); + if (!XtA.IsNull()) { + Handle(XtAttributes_AttribDef) XtAD = XtA->Definition(); + while (!XtAD.IsNull()) { + if (XtAD->TypeID()==8017) { + const Handle(XtData_HArray1OfObject) &HAFV = XtA->Fields(); + const Standard_Integer NbFV = HAFV->Length(); + for (Standard_Integer j=1; j<=NbFV; j++) { + const Handle(XtData_Object) &FV = HAFV->Value(j); + if(!FV.IsNull() && FV->IsKind(STANDARD_TYPE(XtAttributes_CharValues))) { + string = Handle(XtAttributes_CharValues)::DownCast(FV)->Values(); + IsName = Standard_True; + } + } + } + XtAD = XtAD->Next(); + } + } + if (IsName) { + // find target shape + Handle(Transfer_Binder) binder = TP->Find ( XtOb ); + if ( binder.IsNull() ) continue; + TopoDS_Shape S = TransferBRep::ShapeResult (binder); + if ( S.IsNull() ) continue; + + TDF_Label L; + TDF_TagSource aTag; + L = aTag.NewChild(aFunction->GetNamingEntry()); + TNaming_Builder tnBuild(L); + tnBuild.Generated(S); + + // set a name to the document + string.LeftAdjust(); + string.RightAdjust(); + TCollection_ExtendedString str ( string ); + 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 XTPlugin_ImportDriver::MustExecute( const TFunction_Logbook& ) const + { + return Standard_True; + } + + //================================================================================ + /*! + * \brief Returns a name of creation operation and names and values of creation parameters + */ + //================================================================================ + + bool XTPlugin_ImportDriver:: + GetCreationInformation( std::string& theOperationName, + std::vector& theParams ) + { + if( Label().IsNull() ) return 0; + Handle(GEOM_Function) function = GEOM_Function::GetFunction( Label() ); + + XTPlugin_IImport aCI( function ); + Standard_Integer aType = function->GetType(); + + theOperationName = "ImportXT"; + + switch ( aType ) { + case IMPORT_SHAPE: + AddParam( theParams, "File name", aCI.GetFileName() ); + break; + default: + return false; + } + return true; + } + + IMPLEMENT_STANDARD_HANDLE( XTPlugin_ImportDriver, GEOM_BaseDriver ); + IMPLEMENT_STANDARD_RTTIEXT( XTPlugin_ImportDriver, GEOM_BaseDriver ); diff --cc src/XTPlugin_ImportDriver.hxx index 0000000,6ec1dd2..82873f7 mode 000000,100644..100644 --- a/src/XTPlugin_ImportDriver.hxx +++ b/src/XTPlugin_ImportDriver.hxx @@@ -1,0 -1,50 +1,50 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #ifndef _XTPlugin_ImportDriver_HXX + #define _XTPlugin_ImportDriver_HXX + + // GEOM includes + #include + + // OCCT includes + #ifndef _TFunction_Logbook_HeaderFile + #include + #endif + + DEFINE_STANDARD_HANDLE( XTPlugin_ImportDriver, GEOM_BaseDriver ); + + class XTPlugin_ImportDriver : public GEOM_BaseDriver + { + public: + XTPlugin_ImportDriver(); + ~XTPlugin_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( XTPlugin_ImportDriver ) + }; + + #endif // _XTPlugin_ImportDriver_HXX diff --cc src/XTPlugin_OperationsCreator.cxx index 0000000,a419d73..df24048 mode 000000,100644..100644 --- a/src/XTPlugin_OperationsCreator.cxx +++ b/src/XTPlugin_OperationsCreator.cxx @@@ -1,0 -1,68 +1,68 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + // internal includes + #include "XTPlugin_OperationsCreator.hxx" + #include "XTPlugin_IOperations_i.hh" + #include "XTPlugin_ImportDriver.hxx" + #include "XTPlugin_IECallBack.hxx" + + // KERNEL includes + #include + #include + + // GEOM includes + #include + + // OCCT includes + #include + + std::map XTPlugin_OperationsCreator::_mapOfOperations; + + XTPlugin_OperationsCreator::XTPlugin_OperationsCreator() + { + // Register drivers + TFunction_DriverTable::Get()->AddDriver( XTPlugin_ImportDriver::GetID(), + new XTPlugin_ImportDriver() ); + // Register callback + XTPlugin_IECallBack* callback = new XTPlugin_IECallBack(); + GEOMImpl_IECallBack::Register( "XT", callback ); + } + + XTPlugin_OperationsCreator::~XTPlugin_OperationsCreator() + { + } + + GEOM_IOperations_i* XTPlugin_OperationsCreator::Create( PortableServer::POA_ptr thePOA, + int theStudyId, + GEOM::GEOM_Gen_ptr theEngine, + ::GEOMImpl_Gen* theGenImpl ) + { + Unexpect aCatch( SALOME_SalomeException ); + MESSAGE( "XTPlugin_OperationsCreator::Create" ); + return new XTPlugin_IOperations_i( thePOA, theEngine, get( theGenImpl, theStudyId ) ); + } + + XTPlugin_IOperations* XTPlugin_OperationsCreator::get( ::GEOMImpl_Gen* theGenImpl, + int theStudyId ) + { + if (_mapOfOperations.find( theStudyId ) == _mapOfOperations.end() ) + _mapOfOperations[theStudyId] = new XTPlugin_IOperations( theGenImpl, theStudyId ); + return _mapOfOperations[theStudyId]; + } diff --cc src/XTPlugin_OperationsCreator.hxx index 0000000,f89be10..c5f329d mode 000000,100755..100755 --- a/src/XTPlugin_OperationsCreator.hxx +++ b/src/XTPlugin_OperationsCreator.hxx @@@ -1,0 -1,57 +1,57 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #ifndef _GEOM_XTPlugin_OperationsCreator_HXX_ + #define _GEOM_XTPlugin_OperationsCreator_HXX_ + + // internal includes + #include "XTPlugin_Engine.hxx" + + // GEOM includes + #include "GEOM_Gen_i.hh" + + // C++ includes + #include + + class XTPlugin_IOperations; + + //===================================================================== + // Operations creator + //===================================================================== + class XTPLUGINENGINE_EXPORT XTPlugin_OperationsCreator : public GEOM_GenericOperationsCreator + { + public: + XTPlugin_OperationsCreator(); + ~XTPlugin_OperationsCreator(); + + GEOM_IOperations_i* Create( PortableServer::POA_ptr thePOA, + int theStudyId, + GEOM::GEOM_Gen_ptr theEngine, + ::GEOMImpl_Gen* theGenImpl ); + + private: + static XTPlugin_IOperations* get( ::GEOMImpl_Gen* theGenImpl, + int theStudyId ); + + static std::map _mapOfOperations; + + friend class XTPlugin_IECallBack; + }; + + #endif diff --cc src/XTPlugin_license.h.in index 0000000,12c7089..de18bbe mode 000000,100644..100644 --- a/src/XTPlugin_license.h.in +++ b/src/XTPlugin_license.h.in @@@ -1,0 -1,25 +1,25 @@@ -// Copyright (C) 2014 OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #if !defined(__XTPLUGIN_LICENSE_H) + #define __XTPLUGIN_LICENSE_H + + #define XT_READ_LICENSE "@XT_READ_LICENSE@" + + #endif // __XTPLUGIN_LICENSE_H diff --cc src/__init__.py index 0000000,7fc622d..c8478a0 mode 000000,100644..100644 --- a/src/__init__.py +++ b/src/__init__.py @@@ -1,0 -1,23 +1,23 @@@ + # -*- coding: iso-8859-1 -*- -# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++# Copyright (C) 2014-2015 OPEN CASCADE + # + # This library is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public + # License as published by the Free Software Foundation; either + # version 2.1 of the License, or (at your option) any later version. + # + # This library is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + # Lesser General Public License for more details. + # + # You should have received a copy of the GNU Lesser General Public + # License along with this library; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + # + # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + # + + # XTPLUGIN : binding of C++ implementation with Python + # File : __init__.py + #