From: mpa Date: Thu, 4 Sep 2014 11:57:51 +0000 (+0400) Subject: Implementation of XTPLUGIN as a GEOM plugin (added files) X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=a4339dc4bc7eeed81b98f7b61e33f08e4e53a364;p=plugins%2Fxtplugin.git Implementation of XTPLUGIN as a GEOM plugin (added files) --- diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100755 index 0000000..7eb84fe --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,20 @@ +# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, 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..957d7ef --- /dev/null +++ b/doc/salome/CMakeLists.txt @@ -0,0 +1,21 @@ +# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, 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) \ No newline at end of file diff --git a/doc/salome/examples/CMakeLists.txt b/doc/salome/examples/CMakeLists.txt new file mode 100644 index 0000000..bd1eaf9 --- /dev/null +++ b/doc/salome/examples/CMakeLists.txt @@ -0,0 +1,21 @@ +# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, 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 --git a/doc/salome/examples/XTPlugindemo.py b/doc/salome/examples/XTPlugindemo.py new file mode 100644 index 0000000..f223b41 --- /dev/null +++ b/doc/salome/examples/XTPlugindemo.py @@ -0,0 +1,27 @@ +# 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 + +print "Test Import XT ..." + +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" \ No newline at end of file diff --git a/doc/salome/gui/CMakeLists.txt b/doc/salome/gui/CMakeLists.txt new file mode 100755 index 0000000..f123072 --- /dev/null +++ b/doc/salome/gui/CMakeLists.txt @@ -0,0 +1,20 @@ +# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, 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 --git a/doc/salome/gui/XTPLUGIN/CMakeLists.txt b/doc/salome/gui/XTPLUGIN/CMakeLists.txt new file mode 100755 index 0000000..aab2ca7 --- /dev/null +++ b/doc/salome/gui/XTPLUGIN/CMakeLists.txt @@ -0,0 +1,45 @@ +# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, 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) + +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 ${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 --git a/doc/salome/gui/XTPLUGIN/doxyfile.in b/doc/salome/gui/XTPLUGIN/doxyfile.in new file mode 100755 index 0000000..e4e9e35 --- /dev/null +++ b/doc/salome/gui/XTPLUGIN/doxyfile.in @@ -0,0 +1,114 @@ +# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, 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 --git a/doc/salome/gui/XTPLUGIN/doxyfile_py.in b/doc/salome/gui/XTPLUGIN/doxyfile_py.in new file mode 100755 index 0000000..8d6157f --- /dev/null +++ b/doc/salome/gui/XTPLUGIN/doxyfile_py.in @@ -0,0 +1,160 @@ +# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, 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 --git a/doc/salome/gui/XTPLUGIN/images/head.png b/doc/salome/gui/XTPLUGIN/images/head.png new file mode 100755 index 0000000..307d9ef Binary files /dev/null and b/doc/salome/gui/XTPLUGIN/images/head.png differ diff --git a/doc/salome/gui/XTPLUGIN/images/import_xt.png b/doc/salome/gui/XTPLUGIN/images/import_xt.png new file mode 100644 index 0000000..161bbde Binary files /dev/null and b/doc/salome/gui/XTPLUGIN/images/import_xt.png differ diff --git a/doc/salome/gui/XTPLUGIN/images/reopen_xt.png b/doc/salome/gui/XTPLUGIN/images/reopen_xt.png new file mode 100644 index 0000000..9d6745d Binary files /dev/null and b/doc/salome/gui/XTPLUGIN/images/reopen_xt.png differ diff --git a/doc/salome/gui/XTPLUGIN/input/index.doc b/doc/salome/gui/XTPLUGIN/input/index.doc new file mode 100644 index 0000000..0b30547 --- /dev/null +++ b/doc/salome/gui/XTPLUGIN/input/index.doc @@ -0,0 +1,16 @@ +/*! + +\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; + +To manage parameters of the XTPLUGIN use \subpage xtplugin_import_page. + +Also all XTPLUGIN functionalities are accessible via +\subpage xtplugin_python_interface_page "XTPLUGIN Python interface". + +*/ diff --git a/doc/salome/gui/XTPLUGIN/input/xtplugin_import_page.doc b/doc/salome/gui/XTPLUGIN/input/xtplugin_import_page.doc new file mode 100644 index 0000000..d0e754d --- /dev/null +++ b/doc/salome/gui/XTPLUGIN/input/xtplugin_import_page.doc @@ -0,0 +1,23 @@ +/*! + +\page xtplugin_import_page Import XT + +For using 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. + + \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. + + \image html reopen_xt.png + +*/ diff --git a/doc/salome/gui/XTPLUGIN/input/xtplugin_python_interface_page.doc b/doc/salome/gui/XTPLUGIN/input/xtplugin_python_interface_page.doc new file mode 100644 index 0000000..a00567e --- /dev/null +++ b/doc/salome/gui/XTPLUGIN/input/xtplugin_python_interface_page.doc @@ -0,0 +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). + +XTPLUGIN dynamically adds several methods to the geomBuilder. + +Below you can see an example of usage of the XTPluginBuilder package for +import CAD models: + +\anchor example_XTPlugin +

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

+\tui_script{XTPlugindemo.py} + +*/ + + diff --git a/doc/salome/gui/XTPLUGIN/static/footer.html b/doc/salome/gui/XTPLUGIN/static/footer.html new file mode 100755 index 0000000..e21ab0c --- /dev/null +++ b/doc/salome/gui/XTPLUGIN/static/footer.html @@ -0,0 +1,13 @@ + + + + + + diff --git a/doc/salome/gui/XTPLUGIN/static/header.html.in b/doc/salome/gui/XTPLUGIN/static/header.html.in new file mode 100755 index 0000000..028eaab --- /dev/null +++ b/doc/salome/gui/XTPLUGIN/static/header.html.in @@ -0,0 +1,23 @@ + + + + + + + +$projectname: $title +$title + + + +$treeview +$search +$mathjax + +$extrastylesheet + + +
+ +
Version: @SALOMEXTPLUGIN_VERSION@
+ diff --git a/doc/salome/gui/XTPLUGIN/static/header_py.html.in b/doc/salome/gui/XTPLUGIN/static/header_py.html.in new file mode 100644 index 0000000..3288693 --- /dev/null +++ b/doc/salome/gui/XTPLUGIN/static/header_py.html.in @@ -0,0 +1,24 @@ + + + + + + + +$projectname: $title +$title + + + +$treeview +$search +$mathjax + +$extrastylesheet + + +
+ +
Version: @SALOMEXTPLUGIN_VERSION@
+
Home
+ diff --git a/doc/salome/gui/XTPLUGIN/static/salome_extra.css b/doc/salome/gui/XTPLUGIN/static/salome_extra.css new file mode 100644 index 0000000..3e8b838 --- /dev/null +++ b/doc/salome/gui/XTPLUGIN/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..72cd17f --- /dev/null +++ b/idl/CMakeLists.txt @@ -0,0 +1,49 @@ +# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, 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_Gen.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 --git a/idl/XTPlugin_Gen.idl b/idl/XTPlugin_Gen.idl new file mode 100644 index 0000000..3e36727 --- /dev/null +++ b/idl/XTPlugin_Gen.idl @@ -0,0 +1,42 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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_GEN__ +#define __XTPlugin_GEN__ + +#include "GEOM_Gen.idl" + +module XTPlugin { + + /*! + * \brief Interface for XTPlugin modeling functions. + */ + interface GEOM_IXTPluginOperations : 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 diff --git a/resources/SalomeApp.xml b/resources/SalomeApp.xml new file mode 100644 index 0000000..067fe64 --- /dev/null +++ b/resources/SalomeApp.xml @@ -0,0 +1,32 @@ + + +
+ +
+
+ + +
+
+ +
+
diff --git a/resources/XTPlugin.xml b/resources/XTPlugin.xml new file mode 100644 index 0000000..652294a --- /dev/null +++ b/resources/XTPlugin.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/src/XTPluginBuilder.py b/src/XTPluginBuilder.py new file mode 100644 index 0000000..20611c2 --- /dev/null +++ b/src/XTPluginBuilder.py @@ -0,0 +1,70 @@ +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, 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 GEOM_IXTPluginOperations + +# Engine Library Name +__libraryName__ = "XTPluginEngine" + +def GetXTPluginOperations(self): + anOp = self.GetPluginOperations(self.myStudyId, __libraryName__) + return anOp._narrow(GEOM_IXTPluginOperations) + +## 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 --git a/src/XTPluginEngine.cxx b/src/XTPluginEngine.cxx new file mode 100644 index 0000000..b0dd35a --- /dev/null +++ b/src/XTPluginEngine.cxx @@ -0,0 +1,32 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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.hh" + +extern "C" +{ +XTPLUGINENGINE_EXPORT + GEOM_GenericOperationsCreator* GetOperationsCreator() + { + XTPlugin_OperationsCreator* aCreator = new XTPlugin_OperationsCreator(); + return aCreator; + } +} diff --git a/src/XTPluginGUI.cxx b/src/XTPluginGUI.cxx new file mode 100644 index 0000000..ceb94bc --- /dev/null +++ b/src/XTPluginGUI.cxx @@ -0,0 +1,103 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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 "XTPluginGUI.h" +#include "XTPlugin_ImportDlg.h" + +// GUI includes +#include +#include +#include +#include +#include + +// GEOM includes +#include + +//======================================================================= +// function : XTPluginGUI() +// purpose : Constructor +//======================================================================= +XTPluginGUI::XTPluginGUI( GeometryGUI* parent ) : GEOMPluginGUI( parent ) +{ +} + +//======================================================================= +// function : ~XTPluginGUI +// purpose : Destructor +//======================================================================= +XTPluginGUI::~XTPluginGUI() +{ +} + +//======================================================================= +// function : OnGUIEvent() +// purpose : +//======================================================================= +bool XTPluginGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent ) +{ + switch ( theCommandID ) { + case 1: + return OnGUIEvent("Import_XT", parent); + default: + return OnGUIEvent("", parent); + } + return false; +} + +//======================================================================= +// function : OnGUIEvent() +// purpose : +//======================================================================= +bool XTPluginGUI::OnGUIEvent( const QString& theCommandID, SUIT_Desktop* parent ) +{ + SalomeApp_Application* app = getGeometryGUI()->getApp(); + if (!app) return false; + + getGeometryGUI()->EmitSignalDeactivateDialog(); + + SUIT_FileDlg* dialog = NULL; + if (theCommandID == "Import_XT") { + dialog = new XTPlugin_ImportDlg( parent ); + if (dialog != NULL) + dialog->show(); + if( dialog->exec() == QDialog::Accepted ) + delete dialog; + } + else { + app->putInfo( tr("GEOM_PRP_COMMAND").arg( theCommandID ) ); + } + + return true; +} + +//===================================================================================== +// EXPORTED METHODS +//===================================================================================== +extern "C" +{ +#ifdef WIN32 + __declspec( dllexport ) +#endif + GEOMGUI* GetLibGUI( GeometryGUI* parent ) + { + return new XTPluginGUI( parent ); + } +} diff --git a/src/XTPluginGUI.h b/src/XTPluginGUI.h new file mode 100644 index 0000000..b40daec --- /dev/null +++ b/src/XTPluginGUI.h @@ -0,0 +1,35 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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 XTPluginGUI_H +#define XTPluginGUI_H + +#include + +class XTPluginGUI: public GEOMPluginGUI +{ +public: + XTPluginGUI( GeometryGUI* parent ); + ~XTPluginGUI(); + + bool OnGUIEvent( int commandId, SUIT_Desktop* ); + bool OnGUIEvent( const QString&, SUIT_Desktop* ); +}; + +#endif // XTPluginGUI_H diff --git a/src/XTPlugin_IECallBack.cxx b/src/XTPlugin_IECallBack.cxx new file mode 100755 index 0000000..dd2d643 --- /dev/null +++ b/src/XTPlugin_IECallBack.cxx @@ -0,0 +1,54 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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" + +//============================================================================= +/*! + * constructor + */ +//============================================================================= +XTPlugin_IECallBack::XTPlugin_IECallBack( XTPlugin_IOperations* theOperations ) +: GEOMImpl_IECallBack() +{ + myPluginOperations = theOperations; +} + +//============================================================================= +/*! + * destructor + */ +//============================================================================= +XTPlugin_IECallBack::~XTPlugin_IECallBack() +{ +} + +//============================================================================= +/*! + * Import + */ +//============================================================================= +Handle(TColStd_HSequenceOfTransient) +XTPlugin_IECallBack::Import( const TCollection_AsciiString& theFormatName, + const TCollection_AsciiString& theFileName ) +{ + return myPluginOperations->ImportXT( theFileName ); +} + diff --git a/src/XTPlugin_IECallBack.hxx b/src/XTPlugin_IECallBack.hxx new file mode 100644 index 0000000..5537b93 --- /dev/null +++ b/src/XTPlugin_IECallBack.hxx @@ -0,0 +1,47 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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 XTPlugin_IECallBack : public GEOMImpl_IECallBack +{ +public: + Standard_EXPORT XTPlugin_IECallBack( XTPlugin_IOperations* theOperations ); + Standard_EXPORT ~XTPlugin_IECallBack(); + + Standard_EXPORT virtual + Handle(TColStd_HSequenceOfTransient) Import( const TCollection_AsciiString& theFormatName, + const TCollection_AsciiString& theFileName ); + +private: + XTPlugin_IOperations* myPluginOperations; +}; + +#endif diff --git a/src/XTPlugin_IImport.hxx b/src/XTPlugin_IImport.hxx new file mode 100644 index 0000000..9a4453c --- /dev/null +++ b/src/XTPlugin_IImport.hxx @@ -0,0 +1,42 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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 --git a/src/XTPlugin_IOperations.cxx b/src/XTPlugin_IOperations.cxx new file mode 100644 index 0000000..f2268c3 --- /dev/null +++ b/src/XTPlugin_IOperations.cxx @@ -0,0 +1,112 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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 { +#if OCC_VERSION_LARGE > 0x06010000 + OCC_CATCH_SIGNALS; +#endif + 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 --git a/src/XTPlugin_IOperations.hxx b/src/XTPlugin_IOperations.hxx new file mode 100644 index 0000000..cdd8f37 --- /dev/null +++ b/src/XTPlugin_IOperations.hxx @@ -0,0 +1,36 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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_ + +// GEOM includes +#include + +class XTPlugin_IOperations: public GEOMImpl_IBaseIEOperations +{ +public: + Standard_EXPORT XTPlugin_IOperations( GEOM_Engine*, int ); + Standard_EXPORT ~XTPlugin_IOperations(); + + Standard_EXPORT Handle(TColStd_HSequenceOfTransient) ImportXT( const TCollection_AsciiString& ); +}; + +#endif diff --git a/src/XTPlugin_ImportDlg.cxx b/src/XTPlugin_ImportDlg.cxx new file mode 100644 index 0000000..d5f962d --- /dev/null +++ b/src/XTPlugin_ImportDlg.cxx @@ -0,0 +1,142 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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_ImportDlg.h" +#include "XTPlugin_Operations_i.hh" + +// GUI includes +#include +#include +#include +#include +#include + +// GEOM includes +#include +#include + +//================================================================================= +// Constructor +//================================================================================= +XTPlugin_ImportDlg::XTPlugin_ImportDlg( QWidget* parent ) +: SUIT_FileDlg( parent, true, true, true ), + GEOMBase_Helper( dynamic_cast( parent ) ) +{ + setWindowTitle( tr( "XTPLUGIN_IMPORT_TITLE" ) ); + setAcceptMode( AcceptOpen ); + setNameFilter( tr( "XTPLUGIN_XT_FILES" ) ); + setFileMode( QFileDialog::ExistingFiles ); +} + +//================================================================================= +// Destructor +//================================================================================= +XTPlugin_ImportDlg::~XTPlugin_ImportDlg() +{ + // no need to delete child widgets, Qt does it all for us +} + +//================================================================================= +// function : createOperation +// purpose : +//================================================================================= +GEOM::GEOM_IOperations_ptr XTPlugin_ImportDlg::createOperation() +{ + return getGeomEngine()->GetPluginOperations(getStudyId(), "XTPluginEngine"); +} + +//================================================================================= +// function : isValid +// purpose : +//================================================================================= +bool XTPlugin_ImportDlg::isValid (QString& msg) +{ + bool ok = true; + //@@ add custom validation actions here @@// + return ok; +} + +//================================================================================= +// function : execute +// purpose : +//================================================================================= +bool XTPlugin_ImportDlg::execute( ObjectList& objects ) +{ + bool res = false; + GEOM::GEOM_Object_var anObj; + XTPlugin::GEOM_IXTPluginOperations_var anOper = XTPlugin::GEOM_IXTPluginOperations::_narrow( getOperation() ); + + SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); + + QStringList fileNames = selectedFiles(); + if ( fileNames.count() == 0 ) + return false; // nothing selected, return + + for( int i = 0; i < fileNames.size(); i++ ) { + QString aFileName = fileNames.at( i ); + if ( aFileName.isEmpty() ) + continue; + GEOM_Operation* anOp = new GEOM_Operation( app, anOper.in() ); + try { + app->putInfo( tr( "GEOM_PRP_LOADING" ).arg( SUIT_Tools::file( aFileName.toUtf8().constData(), /*withExten=*/true ) ) ); + anOp->start(); + GEOM::ListOfGO_var anObj = anOper->ImportXT( aFileName.toUtf8().constData() ); + if( anObj->length() > 0 && anOper->IsDone() ) { + GEOM::GEOM_Object_ptr anObjPtr = anObj[0]._retn(); + objects.push_back( anObjPtr ); + QString aPublishObjName = GEOMBase::GetDefaultName( SUIT_Tools::file( fileNames.at( i ), + /*withExten=*/true ) ); + anObjPtr->SetName( aPublishObjName.toStdString().c_str() ); + anOp->commit(); + } + else { + anOp->abort(); + SUIT_MessageBox::critical( app->desktop(), + QObject::tr("GEOM_ERROR"), + QObject::tr("GEOM_PRP_ABORT") + "\n" + QObject::tr( anOper->GetErrorCode() ) ); + } + } + catch( const SALOME::SALOME_Exception& S_ex ) { + anOp->abort(); + } + } + return true; +} + +//================================================================================= +// function : accept +// purpose : +//================================================================================= +void XTPlugin_ImportDlg::accept() +{ + SUIT_FileDlg::accept(); + onAccept(); +} + +//================================================================================= +// function : getObjectName +// purpose : +//================================================================================= +QString XTPlugin_ImportDlg::getObjectName( GEOM::GEOM_Object_ptr object ) const +{ + if( object->_is_nil() ) + return QString::null; + return object->GetName(); +} diff --git a/src/XTPlugin_ImportDlg.h b/src/XTPlugin_ImportDlg.h new file mode 100644 index 0000000..0eeb222 --- /dev/null +++ b/src/XTPlugin_ImportDlg.h @@ -0,0 +1,49 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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_IMPORTDLG_H +#define XTPlugin_IMPORTDLG_H + +// GUI includes +#include + +// GEOM includes +#include +#include + +class XTPlugin_ImportDlg: public SUIT_FileDlg, public GEOMBase_Helper +{ + Q_OBJECT + +public: + XTPlugin_ImportDlg( QWidget* = 0 ); + ~XTPlugin_ImportDlg(); + +protected: + // redefined from GEOMBase_Helper + virtual GEOM::GEOM_IOperations_ptr createOperation(); + virtual bool isValid( QString& ); + virtual bool execute( ObjectList& ); + virtual QString getObjectName( GEOM::GEOM_Object_ptr object ) const; + +protected slots: + void accept(); +}; + +#endif // XTPlugin_IMPORTDLG_H diff --git a/src/XTPlugin_ImportDriver.hxx b/src/XTPlugin_ImportDriver.hxx new file mode 100644 index 0000000..50f0ed2 --- /dev/null +++ b/src/XTPlugin_ImportDriver.hxx @@ -0,0 +1,51 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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: + Standard_EXPORT XTPlugin_ImportDriver(); + Standard_EXPORT ~XTPlugin_ImportDriver() {}; + + Standard_EXPORT static const Standard_GUID& GetID(); + Standard_EXPORT virtual Standard_Integer Execute( TFunction_Logbook& log ) const; + Standard_EXPORT Standard_Boolean MustExecute( const TFunction_Logbook& ) const; + Standard_EXPORT virtual void Validate( TFunction_Logbook& ) const {} + + Standard_EXPORT virtual + bool GetCreationInformation( std::string& theOperationName, + std::vector& params ); + +DEFINE_STANDARD_RTTI( XTPlugin_ImportDriver ) +}; + +#endif // _XTPlugin_ImportDriver_HXX diff --git a/src/XTPlugin_OperationsCreator.cc b/src/XTPlugin_OperationsCreator.cc new file mode 100644 index 0000000..30b712d --- /dev/null +++ b/src/XTPlugin_OperationsCreator.cc @@ -0,0 +1,64 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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.hh" +#include "XTPlugin_Operations_i.hh" +#include "XTPlugin_ImportDriver.hxx" +#include "XTPlugin_IECallBack.hxx" + +// KERNEL includes +#include +#include + +// GEOM includes +#include + +// OCCT includes +#include + +//============================================================================ +// function : Create +// purpose : +//============================================================================ +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" ); + + if (_mapOfOperations.find( theStudyId ) == _mapOfOperations.end() ) { + XTPlugin_IOperations* anOper = new XTPlugin_IOperations( theGenImpl, theStudyId ); + _mapOfOperations[theStudyId] = anOper; + + // Import XT + TFunction_DriverTable::Get()->AddDriver( XTPlugin_ImportDriver::GetID(), + new XTPlugin_ImportDriver() ); + + XTPlugin_IECallBack* XTCallBack = new XTPlugin_IECallBack( anOper ); + GEOMImpl_IECallBack::Register( "XT", XTCallBack ); + } + + XTPlugin_Operations_i* aServant = + new XTPlugin_Operations_i( thePOA, theEngine, _mapOfOperations[theStudyId] ); + + return aServant; +} diff --git a/src/XTPlugin_OperationsCreator.hh b/src/XTPlugin_OperationsCreator.hh new file mode 100755 index 0000000..d1ae32d --- /dev/null +++ b/src/XTPlugin_OperationsCreator.hh @@ -0,0 +1,47 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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" +#include "XTPlugin_IOperations.hxx" + +// GEOM includes +#include "GEOM_Gen_i.hh" + +// C++ includes +#include + +//===================================================================== +// Operations creator +//===================================================================== +class XTPLUGINENGINE_EXPORT XTPlugin_OperationsCreator : public GEOM_GenericOperationsCreator +{ +public: + virtual GEOM_IOperations_i* Create( PortableServer::POA_ptr thePOA, + int theStudyId, + GEOM::GEOM_Gen_ptr theEngine, + ::GEOMImpl_Gen* theGenImpl ); + private: + std::map _mapOfOperations; +}; + +#endif diff --git a/src/XTPlugin_Operations_i.cc b/src/XTPlugin_Operations_i.cc new file mode 100644 index 0000000..bb22e83 --- /dev/null +++ b/src/XTPlugin_Operations_i.cc @@ -0,0 +1,106 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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_Operations_i.hh" +#include + +// KERNEL includes +#include + +//============================================================================= +/*! + * constructor: + */ +//============================================================================= +XTPlugin_Operations_i::XTPlugin_Operations_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_Operations_i::~XTPlugin_Operations_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_Operations_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 + char* aFileName = strdup( theFileName ); + TCollection_AsciiString fileName( aFileName ); + + //Import the shape from the file + Handle(TColStd_HSequenceOfTransient) aHSeq = GetOperations()->ImportXT( fileName ); + + free( aFileName ); + 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(); +} + +//============================================================================= +/*! + * \brief Get version of the plugin. + * \return the version of the plugin +*/ +//============================================================================= + +int XTPlugin_Operations_i::GetVersion() +{ + return XTPLUGIN_VERSION; +} +//============================================================================= +/*! + * \brief Get version of the plugin. + * \return the string representation of the plugin's version +*/ +//============================================================================= + +char* XTPlugin_Operations_i::GetVersionStr() +{ + return (char*)XTPLUGIN_VERSION_STR; +} diff --git a/src/XTPlugin_Operations_i.hh b/src/XTPlugin_Operations_i.hh new file mode 100644 index 0000000..c717b09 --- /dev/null +++ b/src/XTPlugin_Operations_i.hh @@ -0,0 +1,55 @@ +// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, 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_Operations_i_HeaderFile +#define _XTPlugin_Operations_i_HeaderFile + +// idl includes +#include +#include CORBA_SERVER_HEADER( GEOM_Gen ) +#include CORBA_SERVER_HEADER( XTPlugin_Gen ) + +// internal includes +#include "XTPlugin_Engine.hxx" +#include "XTPlugin_IOperations.hxx" + +// GEOM includes +#include + +class XTPLUGINENGINE_EXPORT XTPlugin_Operations_i : + public virtual POA_XTPlugin::GEOM_IXTPluginOperations, + public virtual GEOM_IOperations_i +{ +public: + XTPlugin_Operations_i( PortableServer::POA_ptr thePOA, + GEOM::GEOM_Gen_ptr theEngine, + ::XTPlugin_IOperations* theImpl ); + ~XTPlugin_Operations_i(); + + GEOM::ListOfGO* ImportXT( const char* ); + + // Version information + virtual int GetVersion(); + virtual char* GetVersionStr(); + + ::XTPlugin_IOperations* GetOperations() + { return (::XTPlugin_IOperations*)GetImpl(); } +}; + +#endif diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..7fc622d --- /dev/null +++ b/src/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, 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 +# diff --git a/src/resources/XTPlugin_msg_en.ts b/src/resources/XTPlugin_msg_en.ts new file mode 100644 index 0000000..8be5f3b --- /dev/null +++ b/src/resources/XTPlugin_msg_en.ts @@ -0,0 +1,30 @@ + + + + + @default + + MEN_IMPORTXT + XT + + + TOP_IMPORTXT + Import XT + + + STB_IMPORTXT + Import XT + + + XTPLUGIN_XT_FILES + Parasolid Files ( *.x_t *.xt ) + + + + XTPlugin_ImportDlg + + XTPLUGIN_IMPORT_TITLE + Import XT + + + diff --git a/src/resources/XTPlugin_msg_fr.ts b/src/resources/XTPlugin_msg_fr.ts new file mode 100644 index 0000000..ca1628d --- /dev/null +++ b/src/resources/XTPlugin_msg_fr.ts @@ -0,0 +1,30 @@ + + + + + @default + + MEN_IMPORTXT + XT + + + TOP_IMPORTXT + Importer XT + + + STB_IMPORTXT + Importer XT + + + XTPLUGIN_XT_FILES + Parasolid Fichiers ( *.x_t *.xt ) + + + + XTPlugin_ImportDlg + + XTPLUGIN_IMPORT_TITLE + Importer XT + + + \ No newline at end of file diff --git a/src/resources/XTPlugin_msg_ja.ts b/src/resources/XTPlugin_msg_ja.ts new file mode 100644 index 0000000..bbee63d --- /dev/null +++ b/src/resources/XTPlugin_msg_ja.ts @@ -0,0 +1,30 @@ + + + + + @default + + MEN_IMPORTXT + XT + + + TOP_IMPORTXT + Import XT + + + STB_IMPORTXT + Import XT + + + XTPLUGIN_XT_FILES + Parasolid Files ( *.x_t *.xt ) + + + + XTPlugin_ImportDlg + + XTPLUGIN_IMPORT_TITLE + Import XT + + + \ No newline at end of file