From: vsr Date: Thu, 19 Mar 2015 15:40:31 +0000 (+0300) Subject: Merge from rnv/geom_plugin_imp branch X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=7f29a0d27a72d6f1c7b96fcd89655ca504105c44;p=plugins%2Facisplugin.git Merge from rnv/geom_plugin_imp branch --- 7f29a0d27a72d6f1c7b96fcd89655ca504105c44 diff --cc INSTALL index 96ec4a9,8b33d27..6d3de93 --- a/INSTALL +++ b/INSTALL @@@ -2,7 -2,7 +2,7 @@@ Installation Instructions ************************* - Copyright (C) 2014-2015 Open CASCADE S.A.S. -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 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..dc3f208 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) diff --cc doc/salome/examples/CMakeLists.txt index 0000000,0943ad6..2657c88 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/ACISPLUGIN) diff --cc doc/salome/gui/ACISPLUGIN/CMakeLists.txt index 0000000,743e277..c696421 mode 000000,100755..100755 --- a/doc/salome/gui/ACISPLUGIN/CMakeLists.txt +++ b/doc/salome/gui/ACISPLUGIN/CMakeLists.txt @@@ -1,0 -1,45 +1,45 @@@ -# 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) + + 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/ACISPluginBuilder.py ${CMAKE_SOURCE_DIR}/src/ACISPluginBuilder.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}/ACISPLUGIN DESTINATION ${SALOME_INSTALL_DOC}/gui) + INSTALL(FILES images/head.png DESTINATION ${SALOME_INSTALL_DOC}/gui/ACISPLUGIN) + INSTALL(FILES images/head.png DESTINATION ${SALOME_INSTALL_DOC}/gui/ACISPLUGIN/acispluginpy_doc) + + SET(make_clean_files ACISPLUGIN acispluginpy_doc.tag) + SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${make_clean_files}") diff --cc doc/salome/gui/ACISPLUGIN/doxyfile.in index 0000000,b46013d..bff5c3a mode 000000,100755..100755 --- a/doc/salome/gui/ACISPLUGIN/doxyfile.in +++ b/doc/salome/gui/ACISPLUGIN/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 ACISPLUGIN User's Guide" + OUTPUT_DIRECTORY = ACISPLUGIN + 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 = acispluginpy_doc.tag=../ACISPLUGIN/acispluginpy_doc + SEARCHENGINE = YES + + #--------------------------------------------------------------------------- + #Custom commands + #--------------------------------------------------------------------------- + ALIASES += tui_script{1}="\include \1 Download this script" diff --cc doc/salome/gui/ACISPLUGIN/doxyfile_py.in index 0000000,f542a25..e3fae44 mode 000000,100755..100755 --- a/doc/salome/gui/ACISPLUGIN/doxyfile_py.in +++ b/doc/salome/gui/ACISPLUGIN/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 ACISPLUGIN User's Guide" + OUTPUT_DIRECTORY = ACISPLUGIN + 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/ACISPlugin_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 = acispluginpy_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 = acispluginpy_doc.tag + SEARCHENGINE = YES diff --cc doc/salome/gui/ACISPLUGIN/static/footer.html index 0000000,e21ab0c..a9dd3c1 mode 000000,100755..100755 --- a/doc/salome/gui/ACISPLUGIN/static/footer.html +++ b/doc/salome/gui/ACISPLUGIN/static/footer.html @@@ -1,0 -1,13 +1,13 @@@ + + + + + + diff --cc doc/salome/gui/CMakeLists.txt index 0000000,1a2a012..1f591b5 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(ACISPLUGIN) diff --cc idl/ACISPlugin.idl index 0000000,be59e1c..7a96a37 mode 000000,100644..100644 --- a/idl/ACISPlugin.idl +++ b/idl/ACISPlugin.idl @@@ -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 __ACISPlugin_IDL__ + #define __ACISPlugin_IDL__ + + #include "GEOM_Gen.idl" + + module ACISPlugin + { + /*! + * \brief Interface for ACISPlugin modeling functions. + */ + interface IACISOperations : GEOM::GEOM_IOperations + { + /*! + * \brief Export the given shape into a file with given name in ACIS format. + * + * \param theObject Shape to be stored in the file. + * \param theFileName Name of the file to store the given shape in. + */ + void ExportACIS( in GEOM::GEOM_Object theObject, + in string theFileName ); + + /*! + * \brief Import a shape from the ACIS file. + * + * \param theFileName The file, containing the shape. + * \return List of GEOM_Objects, containing the created shape and propagation groups. + */ + GEOM::ListOfGO ImportACIS( in string theFileName ); + }; + }; + + #endif // __ACISPlugin_IDL__ diff --cc idl/CMakeLists.txt index 0000000,f3d62b4..c93b2ec 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(SalomeIDLACISPlugin_IDLSOURCES + ACISPlugin.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(SalomeIDLACISPlugin "${SalomeIDLACISPlugin_IDLSOURCES}" "${IDL_INCLUDE_DIRS}" "${IDL_LINK_FLAGS}") + ADD_DEPENDENCIES(SalomeIDLACISPlugin ${GEOM_SalomeIDLGEOM}) + INSTALL(TARGETS SalomeIDLACISPlugin EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS}) diff --cc resources/ACISPlugin.xml index 0000000,e23fe28..4d6dcc3 mode 000000,100644..100644 --- a/resources/ACISPlugin.xml +++ b/resources/ACISPlugin.xml @@@ -1,0 -1,43 +1,43 @@@ + + + + + + + + + + + + + + + + + + diff --cc resources/ImportExport index 10fa21b,10fa21b..0000000 deleted file mode 100644,100644 --- a/resources/ImportExport +++ /dev/null @@@ -1,6 -1,6 +1,0 @@@ --Import: ACIS --Export: ACIS -- --ACIS.Import: ACISImport --ACIS.Export: ACISExport --ACIS.Pattern: ACIS Files ( *.sat ) diff --cc resources/SalomeApp.xml index 0000000,0c841e3..c2d06d0 mode 000000,100644..100644 --- a/resources/SalomeApp.xml +++ b/resources/SalomeApp.xml @@@ -1,0 -1,32 +1,32 @@@ + + +
+ +
+
+ + +
+
+ +
+
diff --cc src/ACISPluginBuilder.py index 0000000,1fcd6f3..273bdb8 mode 000000,100644..100644 --- a/src/ACISPluginBuilder.py +++ b/src/ACISPluginBuilder.py @@@ -1,0 -1,89 +1,89 @@@ + # -*- 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 ACISPlugin import IACISOperations + + # Engine Library Name + __libraryName__ = "ACISPluginEngine" + + def GetACISPluginOperations(self): + anOp = self.GetPluginOperations(self.myStudyId, __libraryName__) + return anOp._narrow(IACISOperations) + + ## Export the given shape into a file with given name in ACIS format. + # @param theObject Shape to be stored in the file. + # @param theFileName Name of the file to store the given shape in. + def ExportACIS(self, theObject, theFileName): + """ + Export the given shape into a file with given name in ACIS format. + + Parameters: + theObject Shape to be stored in the file. + theFileName Name of the file to store the given shape in. + """ + anOp = GetACISPluginOperations(self) + anOp.ExportACIS(theObject, theFileName) + if anOp.IsDone() == 0: + raise RuntimeError, "Export : " + anOp.GetErrorCode() + pass + pass + + + ## Import a shape from the ACIS 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 ImportACIS(self, theFileName, theName=None): + """ + Import a shape from the ACIS 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 = GetACISPluginOperations(self) + aListObj = anOp.ImportACIS(theFileName) + RaiseIfFailed("ImportACIS", anOp) + aNbObj = len(aListObj) + if aNbObj > 0: + self._autoPublish(aListObj[0], theName, "imported") + if aNbObj == 1: + return aListObj[0] + return aListObj diff --cc src/ACISPlugin_Engine.cxx index 0000000,74c3999..a13771f mode 000000,100644..100644 --- a/src/ACISPlugin_Engine.cxx +++ b/src/ACISPlugin_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 "ACISPlugin_Engine.hxx" + #include "ACISPlugin_OperationsCreator.hxx" + + extern "C" + { + ACISPLUGINENGINE_EXPORT + GEOM_GenericOperationsCreator* GetOperationsCreator() + { + return new ACISPlugin_OperationsCreator(); + } + } diff --cc src/ACISPlugin_Engine.hxx index 0000000,b91f47c..c93a0eb mode 000000,100755..100755 --- a/src/ACISPlugin_Engine.hxx +++ b/src/ACISPlugin_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 _ACISPLUGIN_ENGINE_HXX_ + #define _ACISPLUGIN_ENGINE_HXX_ + + #ifdef WIN32 + #if defined ACISPLUGINENGINE_EXPORTS || defined ACISPluginEngine_EXPORTS + #define ACISPLUGINENGINE_EXPORT __declspec( dllexport ) + #else + #define ACISPLUGINENGINE_EXPORT __declspec( dllimport ) + #endif + #else + #define ACISPLUGINENGINE_EXPORT + #endif + + #endif diff --cc src/ACISPlugin_ExportDriver.cxx index 0000000,3a66932..57807a7 mode 000000,100644..100644 --- a/src/ACISPlugin_ExportDriver.cxx +++ b/src/ACISPlugin_ExportDriver.cxx @@@ -1,0 -1,132 +1,132 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + // internal includes + #include "ACISPlugin_ExportDriver.hxx" + #include "ACISPlugin_IExport.hxx" + + // KERNEL includes + #include + #include + + // GEOM includes + #include + + // OOCT includes + #include + #include + #include + #include + + #ifdef ACIS_HASLICENSE + #include "ACISPlugin_license.h" + + #include + #include + #endif // ACIS_HASLICENSE + + //======================================================================= + //function : GetID + //purpose : + //======================================================================= + const Standard_GUID& ACISPlugin_ExportDriver::GetID() + { + static Standard_GUID aGUID("4a0b4b3f-e3c7-4a7a-91c3-1f004baa0813"); + return aGUID; + } + + //======================================================================= + //function : ACISPlugin_ExportDriver + //purpose : + //======================================================================= + ACISPlugin_ExportDriver::ACISPlugin_ExportDriver() + { + } + + //======================================================================= + //function : Execute + //purpose : + //======================================================================= + Standard_Integer ACISPlugin_ExportDriver::Execute( TFunction_Logbook& log ) const + { + #ifdef ACIS_HASLICENSE + try { + OCCLicense_Activate("SAT-W-"OCC_VERSION_STRING, ACIS_WRITE_LICENSE); + } + catch (Standard_LicenseError) { + return 1; + } + #endif // ACIS_HASLICENSE + + if (Label().IsNull()) return 0; + Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction( Label() ); + + ACISPlugin_IExport aData (aFunction); + + // retrieve the being exported shape + TopoDS_Shape aShape; + Handle(GEOM_Function) aRefFunction = aData.GetOriginal(); + if( aRefFunction.IsNull() ) return 0; + aShape = aRefFunction->GetValue(); + if( aShape.IsNull() ) return 0; + // set the result of function to be used by next operations + aFunction->SetValue( aShape ); + + TCollection_AsciiString aFileName = aData.GetFileName(); + + MESSAGE("Export ACIS into file " << aFileName.ToCString()); + + // Set "C" numeric locale to save numbers correctly + Kernel_Utils::Localizer loc; + + SatControl_Writer aWriter; + + IFSelect_ReturnStatus status; + status = aWriter.TransferShape( aShape ); + if ( status == IFSelect_RetDone ) + status = aWriter.WriteFile( aFileName.ToCString() ) ; + if ( status == IFSelect_RetDone ) + return 1; + else + return 0; + } + + //======================================================================= + //function : MustExecute + //purpose : + //======================================================================= + Standard_Boolean ACISPlugin_ExportDriver::MustExecute( const TFunction_Logbook& ) const + { + return Standard_True; + } + + //================================================================================ + /*! + * \brief Returns a name of creation operation and names and values of creation parameters + */ + //================================================================================ + bool ACISPlugin_ExportDriver:: + GetCreationInformation( std::string& theOperationName, + std::vector& theParams ) + { + return false; + } + + IMPLEMENT_STANDARD_HANDLE( ACISPlugin_ExportDriver,GEOM_BaseDriver ); + IMPLEMENT_STANDARD_RTTIEXT( ACISPlugin_ExportDriver,GEOM_BaseDriver ); diff --cc src/ACISPlugin_ExportDriver.hxx index 0000000,8a6aefa..7f10279 mode 000000,100644..100644 --- a/src/ACISPlugin_ExportDriver.hxx +++ b/src/ACISPlugin_ExportDriver.hxx @@@ -1,0 -1,48 +1,48 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #ifndef _ACISPlugin_ExportDriver_HXX + #define _ACISPlugin_ExportDriver_HXX + + // GEOM includes + #include + + // OCCT includes + #include + + DEFINE_STANDARD_HANDLE( ACISPlugin_ExportDriver, GEOM_BaseDriver ); + + class ACISPlugin_ExportDriver : public GEOM_BaseDriver + { + public: + ACISPlugin_ExportDriver(); + ~ACISPlugin_ExportDriver() {}; + + static const Standard_GUID& GetID(); + virtual Standard_Integer Execute( TFunction_Logbook& log ) const; + Standard_Boolean MustExecute( const TFunction_Logbook& ) const; + virtual void Validate( TFunction_Logbook& ) const {} + + virtual bool GetCreationInformation( std::string& heOperationName, + std::vector& params ); + + DEFINE_STANDARD_RTTI( ACISPlugin_ExportDriver ) + }; + + #endif // _ACISPlugin_ExportDriver_HXX diff --cc src/ACISPlugin_GUI.cxx index 0000000,3faed45..f36893c mode 000000,100644..100644 --- a/src/ACISPlugin_GUI.cxx +++ b/src/ACISPlugin_GUI.cxx @@@ -1,0 -1,284 +1,284 @@@ -// 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 "ACISPlugin_GUI.h" + #include "ACISPlugin_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(ACISPlugin) + + //======================================================================= + // function : ACISPlugin_GUI() + // purpose : Constructor + //======================================================================= + ACISPlugin_GUI::ACISPlugin_GUI( GeometryGUI* parent ) : GEOMPluginGUI( parent ) + { + } + + //======================================================================= + // function : ~ACISPlugin_GUI + // purpose : Destructor + //======================================================================= + ACISPlugin_GUI::~ACISPlugin_GUI() + { + } + + //======================================================================= + // function : OnGUIEvent() + // purpose : + //======================================================================= + bool ACISPlugin_GUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent ) + { + QString cmd; + switch ( theCommandID ) { + case 1: + cmd = "Export_ACIS"; + case 2: + cmd = "Import_ACIS"; + default: + break; + } + return OnGUIEvent( cmd, parent ); + } + + //======================================================================= + // function : OnGUIEvent() + // purpose : + //======================================================================= + bool ACISPlugin_GUI::OnGUIEvent( const QString& theCommandID, SUIT_Desktop* parent ) + { + bool result = false; + + if ( theCommandID == "Export_ACIS" ) + { + result = exportACIS( parent ); + } + else if ( theCommandID == "Import_ACIS" ) + { + result = importACIS( parent ); + } + else + { + getGeometryGUI()->getApp()->putInfo( tr("GEOM_PRP_COMMAND").arg( theCommandID ) ); + } + return result; + } + + //======================================================================= + // function : importACIS + // purpose : + //======================================================================= + bool ACISPlugin_GUI::importACIS( 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(), "ACISPluginEngine" ); + ACISPlugin::IACISOperations_var acisOp = ACISPlugin::IACISOperations::_narrow( op ); + if ( CORBA::is_nil( acisOp ) ) return false; + + QStringList fileNames = app->getOpenFileNames( SUIT_FileDlg::getLastVisitedPath().isEmpty() ? QDir::currentPath() : QString(""), + tr( "ACIS_FILES" ), + tr( "IMPORT_TITLE" ), + parent ); + if ( fileNames.count() > 0 ) + { + QStringList entryList; + QStringList errors; + + SUIT_MessageBox::StandardButton acisAnswer = SUIT_MessageBox::NoButton; + + foreach( QString fileName, fileNames ) + { + SUIT_OverrideCursor wc; + GEOM_Operation transaction( app, acisOp.in() ); + + try + { + app->putInfo( tr( "GEOM_PRP_LOADING" ).arg( fileName ) ); + transaction.start(); + + if ( acisAnswer != SUIT_MessageBox::YesToAll && acisAnswer != SUIT_MessageBox::NoToAll ) { + SUIT_MessageBox::StandardButtons btns = SUIT_MessageBox::Yes | SUIT_MessageBox::No; + btns = btns | SUIT_MessageBox::YesToAll | SUIT_MessageBox::NoToAll; + acisAnswer = SUIT_MessageBox::question( app->desktop(), + "Question", + tr("GEOM_PUBLISH_NAMED_SHAPES"), + btns | SUIT_MessageBox::Cancel, + SUIT_MessageBox::No ); + if ( acisAnswer == SUIT_MessageBox::Cancel ) { + acisOp->SetErrorCode(OK); + return true; // cancel (break) import operation + } + } + GEOM::ListOfGO_var result = acisOp->ImportACIS( fileName.toUtf8().constData() ); + + if ( result->length() > 0 && acisOp->IsDone() ) { + GEOM::GEOM_Object_var main = result[0]; + QString publishName = GEOMBase::GetDefaultName( SUIT_Tools::file( fileName, true ) ); + main.in()->SetName( publishName.toStdString().c_str() ); + SALOMEDS::SObject_var so = GeometryGUI::GetGeomGen()->PublishInStudy( dsStudy, + SALOMEDS::SObject::_nil(), + main.in(), + publishName.toUtf8().constData() ); + if ( acisAnswer == SUIT_MessageBox::Yes || acisAnswer == SUIT_MessageBox::YesToAll ) + GeometryGUI::GetGeomGen()->PublishNamedShapesInStudy( dsStudy, main.in() ); + + entryList.append( so->GetID() ); + transaction.commit(); + } + else + { + transaction.abort(); + errors.append( QString( "%1 : %2" ).arg( fileName ).arg( acisOp->GetErrorCode() ) ); + } + } + catch( const SALOME::SALOME_Exception& e ) + { + transaction.abort(); + } + } + getGeometryGUI()->updateObjBrowser( true ); + app->browseObjects( entryList ); + + if ( errors.count() > 0 ) + { + SUIT_MessageBox::critical( parent, + tr( "GEOM_ERROR" ), + tr( "GEOM_IMPORT_ERRORS" ) + "\n" + errors.join( "\n" ) ); + } + } + return fileNames.count() > 0; + } + + //======================================================================= + // function : exportACIS + // purpose : + //======================================================================= + bool ACISPlugin_GUI::exportACIS( 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(), "ACISPluginEngine" ); + ACISPlugin::IACISOperations_var acisOp = ACISPlugin::IACISOperations::_narrow( op ); + if ( CORBA::is_nil( acisOp ) ) return false; + + LightApp_SelectionMgr* sm = app->selectionMgr(); + if ( !sm ) return false; + + SALOME_ListIO selectedObjects; + sm->selectedObjects( selectedObjects ); + bool ok = false; + + SALOME_ListIteratorOfListIO it( selectedObjects ); + for ( ; it.More(); it.Next() ) + { + Handle(SALOME_InteractiveObject) io = it.Value(); + GEOM::GEOM_Object_var obj = GEOMBase::ConvertIOinGEOMObject( io ); + + if ( CORBA::is_nil( obj ) ) continue; + + QString fileName = app->getFileName( false, + QString( io->getName() ), + tr( "ACIS_FILES" ), + tr( "EXPORT_TITLE" ), + parent ); + + if ( fileName.isEmpty() ) + return false; + + SUIT_OverrideCursor wc; + + GEOM_Operation transaction( app, acisOp.in() ); + + try + { + app->putInfo( tr( "GEOM_PRP_EXPORT" ).arg( fileName ) ); + transaction.start(); + + acisOp->ExportACIS( obj, fileName.toUtf8().constData() ); + + if ( acisOp->IsDone() ) + { + transaction.commit(); + } + else + { + transaction.abort(); + SUIT_MessageBox::critical( parent, + tr( "GEOM_ERROR" ), + tr( "GEOM_PRP_ABORT" ) + "\n" + tr( acisOp->GetErrorCode() ) ); + return false; + } + } + catch ( const SALOME::SALOME_Exception& e ) + { + transaction.abort(); + return false; + } + ok = true; + } + + if ( !ok ) + { + SUIT_MessageBox::warning( parent, + tr( "WRN_WARNING" ), + tr( "GEOM_WRN_NO_APPROPRIATE_SELECTION" ) ); + } + return ok; + } + + //===================================================================================== + // EXPORTED METHODS + //===================================================================================== + extern "C" + { + #ifdef WIN32 + __declspec( dllexport ) + #endif + GEOMGUI* GetLibGUI( GeometryGUI* parent ) + { + return new ACISPlugin_GUI( parent ); + } + } diff --cc src/ACISPlugin_GUI.h index 0000000,15a6609..37f265c mode 000000,100644..100644 --- a/src/ACISPlugin_GUI.h +++ b/src/ACISPlugin_GUI.h @@@ -1,0 -1,40 +1,40 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #ifndef ACISPlugin_GUI_H + #define ACISPlugin_GUI_H + + #include + + class ACISPlugin_GUI: public GEOMPluginGUI + { + Q_OBJECT + public: + ACISPlugin_GUI( GeometryGUI* parent ); + ~ACISPlugin_GUI(); + + bool OnGUIEvent( int commandId, SUIT_Desktop* ); + bool OnGUIEvent( const QString&, SUIT_Desktop* ); + + private: + bool importACIS( SUIT_Desktop* ); + bool exportACIS( SUIT_Desktop* ); + }; + + #endif // ACISPlugin_GUI_H diff --cc src/ACISPlugin_IECallBack.cxx index 0000000,d6793fb..966b0cd mode 000000,100755..100755 --- a/src/ACISPlugin_IECallBack.cxx +++ b/src/ACISPlugin_IECallBack.cxx @@@ -1,0 -1,71 +1,71 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + // internal includes + #include "ACISPlugin_IECallBack.hxx" + #include "ACISPlugin_IOperations.hxx" + #include "ACISPlugin_OperationsCreator.hxx" + + //============================================================================= + /*! + * constructor + */ + //============================================================================= + ACISPlugin_IECallBack::ACISPlugin_IECallBack() + { + } + + //============================================================================= + /*! + * destructor + */ + //============================================================================= + ACISPlugin_IECallBack::~ACISPlugin_IECallBack() + { + } + + //============================================================================= + /*! + * Export + */ + //============================================================================= + bool ACISPlugin_IECallBack::Export( int theDocId, + const Handle(GEOM_Object) theOriginal, + const TCollection_AsciiString& theFileName, + const TCollection_AsciiString& theFormatName ) + { + ACISPlugin_IOperations* aPluginOperations = ACISPlugin_OperationsCreator::get( GetEngine(), theDocId ); + aPluginOperations->ExportACIS( theOriginal, theFileName ); + return true; + } + + //============================================================================= + /*! + * Import + */ + //============================================================================= + Handle(TColStd_HSequenceOfTransient) + ACISPlugin_IECallBack::Import( int theDocId, + const TCollection_AsciiString& theFormatName, + const TCollection_AsciiString& theFileName ) + { + ACISPlugin_IOperations* aPluginOperations = ACISPlugin_OperationsCreator::get( GetEngine(), theDocId ); + return aPluginOperations->ImportACIS( theFileName ); + } + diff --cc src/ACISPlugin_IECallBack.hxx index 0000000,3edb110..d1c665f mode 000000,100644..100644 --- a/src/ACISPlugin_IECallBack.hxx +++ b/src/ACISPlugin_IECallBack.hxx @@@ -1,0 -1,49 +1,49 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #ifndef _ACISPlugin_IECallBack_HXX_ + #define _ACISPlugin_IECallBack_HXX_ + + // internal includes + #include "ACISPlugin_IOperations.hxx" + + // GEOM includes + #include + #include + + // OCC includes + #include + + class ACISPLUGINENGINE_EXPORT ACISPlugin_IECallBack : public GEOMImpl_IECallBack + { + public: + ACISPlugin_IECallBack(); + ~ACISPlugin_IECallBack(); + + bool Export( int theDocId, + const Handle(GEOM_Object) theOriginal, + const TCollection_AsciiString& theFileName, + const TCollection_AsciiString& theFormatName ); + + Handle(TColStd_HSequenceOfTransient) Import( int theDocId, + const TCollection_AsciiString& theFormatName, + const TCollection_AsciiString& theFileName ); + }; + + #endif diff --cc src/ACISPlugin_IExport.hxx index 0000000,6bdc0af..e623252 mode 000000,100644..100644 --- a/src/ACISPlugin_IExport.hxx +++ b/src/ACISPlugin_IExport.hxx @@@ -1,0 -1,48 +1,48 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #ifndef _ACISPlugin_IExport_HXX_ + #define _ACISPlugin_IExport_HXX_ + + #include "GEOM_Function.hxx" + + #define EXPORTACIS_ARG_ORIGINAL 1 + #define EXPORTACIS_ARG_FILENAME 2 + + class ACISPlugin_IExport + { + public: + ACISPlugin_IExport( Handle(GEOM_Function) theFunction ) + : _func(theFunction) {} + + void SetOriginal( Handle( GEOM_Function ) theOriginal) + { _func->SetReference( EXPORTACIS_ARG_ORIGINAL, theOriginal ); } + Handle( GEOM_Function ) GetOriginal() + { return _func->GetReference( EXPORTACIS_ARG_ORIGINAL ); } + + void SetFileName( const TCollection_AsciiString& theFileName ) + { _func->SetString( EXPORTACIS_ARG_FILENAME, theFileName ); } + TCollection_AsciiString GetFileName() + { return _func->GetString( EXPORTACIS_ARG_FILENAME ); } + + private: + Handle(GEOM_Function) _func; + }; + + #endif // _ACISPlugin_IExport_HXX_ diff --cc src/ACISPlugin_IImport.hxx index 0000000,79c4d77..b8e55a7 mode 000000,100644..100644 --- a/src/ACISPlugin_IImport.hxx +++ b/src/ACISPlugin_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 _ACISPlugin_IImport_HXX_ + #define _ACISPlugin_IImport_HXX_ + + #include "GEOM_Function.hxx" + + #define IMPORTACIS_ARG_FILENAME 1 + + class ACISPlugin_IImport + { + public: + ACISPlugin_IImport( Handle(GEOM_Function) theFunction) + : _func(theFunction) {} + + void SetFileName( const TCollection_AsciiString& theFileName ) + { _func->SetString( IMPORTACIS_ARG_FILENAME, theFileName ); } + TCollection_AsciiString GetFileName() + { return _func->GetString( IMPORTACIS_ARG_FILENAME ); } + + private: + Handle(GEOM_Function) _func; + }; + + #endif // _ACISPlugin_IImport_HXX_ diff --cc src/ACISPlugin_IOperations.cxx index 0000000,d107a03..7c30f9d mode 000000,100644..100644 --- a/src/ACISPlugin_IOperations.cxx +++ b/src/ACISPlugin_IOperations.cxx @@@ -1,0 -1,165 +1,165 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + // internal includes + #include "ACISPlugin_IOperations.hxx" + #include "ACISPlugin_ExportDriver.hxx" + #include "ACISPlugin_ImportDriver.hxx" + #include "ACISPlugin_IExport.hxx" + #include "ACISPlugin_IImport.hxx" + + // KERNEL includes + #include + + // GEOM includes + #include + #include + + #include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC + + //============================================================================= + /*! + * Constructor + */ + //============================================================================= + ACISPlugin_IOperations::ACISPlugin_IOperations( GEOM_Engine* theEngine, int theDocID ) + : GEOMImpl_IBaseIEOperations( theEngine, theDocID ) + { + MESSAGE( "ACISPlugin_IOperations::ACISPlugin_IOperations" ); + } + + //============================================================================= + /*! + * Destructor + */ + //============================================================================= + ACISPlugin_IOperations::~ACISPlugin_IOperations() + { + MESSAGE( "ACISPlugin_IOperations::~ACISPlugin_IOperations" ); + } + + //============================================================================= + /*! + * ExportACIS + * Export a shape to ACIS format + * \param theOriginal The shape to export + * \param theFileName The name of the file to exported + */ + //============================================================================= + void ACISPlugin_IOperations::ExportACIS( const Handle(GEOM_Object) theOriginal, + const TCollection_AsciiString& theFileName ) + { + SetErrorCode(KO); + if( theOriginal.IsNull() ) return; + + Handle(GEOM_Function) aRefFunction = theOriginal->GetLastFunction(); + if( aRefFunction.IsNull() ) return; //There is no function which creates an object to be exported + + //Add a new result object + Handle(GEOM_Object) result = GetEngine()->AddObject( GetDocID(), GEOM_IMPORT); + + //Add an Export function + Handle(GEOM_Function) aFunction = result->AddFunction( ACISPlugin_ExportDriver::GetID(), EXPORT_SHAPE ); + if( aFunction.IsNull() ) return; + + //Check if the function is set correctly + if( aFunction->GetDriverGUID() != ACISPlugin_ExportDriver::GetID() ) return; + + //Set parameters + ACISPlugin_IExport aCI( aFunction ); + aCI.SetOriginal( aRefFunction ); + aCI.SetFileName( theFileName ); + + //Perform the Export + try { + OCC_CATCH_SIGNALS; + if( !GetSolver()->ComputeFunction( aFunction ) ) { + SetErrorCode( "Not enough space on disk, or you haven't permissions to write this directory" ); + return; + } + } + catch( Standard_Failure ) { + Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + SetErrorCode( aFail->GetMessageString() ); + return; + } + + //Make a Python command + GEOM::TPythonDump(aFunction) << "geompy.ExportACIS(" << theOriginal << ", \"" + << theFileName.ToCString() << "\" )"; + + SetErrorCode(OK); + } + + //============================================================================= + /*! + * ImportACIS + * Import a shape from ACIS 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) + ACISPlugin_IOperations::ImportACIS( 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( ACISPlugin_ImportDriver::GetID(), IMPORT_SHAPE); + if (aFunction.IsNull()) return NULL; + + //Check if the function is set correctly + if (aFunction->GetDriverGUID() != ACISPlugin_ImportDriver::GetID()) return NULL; + + //Set parameters + ACISPlugin_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.ImportACIS(\"" << theFileName.ToCString() << "\" )"; + SetErrorCode(OK); + + return aSeq; + } diff --cc src/ACISPlugin_IOperations.hxx index 0000000,6e17f9d..3eae73a mode 000000,100644..100644 --- a/src/ACISPlugin_IOperations.hxx +++ b/src/ACISPlugin_IOperations.hxx @@@ -1,0 -1,42 +1,42 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + // File : ACISPlugin_IOperations.hxx + + #ifndef _ACISPlugin_IOperations_HXX_ + #define _ACISPlugin_IOperations_HXX_ + + // internal includes + #include "ACISPlugin_Engine.hxx" + + // GEOM includes + #include + + class ACISPLUGINENGINE_EXPORT ACISPlugin_IOperations: public GEOMImpl_IBaseIEOperations + { + public: + ACISPlugin_IOperations( GEOM_Engine*, int ); + ~ACISPlugin_IOperations(); + + void ExportACIS( const Handle(GEOM_Object), + const TCollection_AsciiString& ); + + Handle(TColStd_HSequenceOfTransient) ImportACIS( const TCollection_AsciiString& ); + }; + + #endif diff --cc src/ACISPlugin_IOperations_i.cc index 0000000,80ac137..089636f mode 000000,100644..100644 --- a/src/ACISPlugin_IOperations_i.cc +++ b/src/ACISPlugin_IOperations_i.cc @@@ -1,0 -1,109 +1,109 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + // internal includes + #include "ACISPlugin_IOperations_i.hh" + #include "ACISPlugin_IOperations.hxx" + #include + + // KERNEL includes + #include + + //============================================================================= + /*! + * constructor: + */ + //============================================================================= + ACISPlugin_IOperations_i::ACISPlugin_IOperations_i( PortableServer::POA_ptr thePOA, + GEOM::GEOM_Gen_ptr theEngine, + ::ACISPlugin_IOperations* theImpl ) + :GEOM_IOperations_i( thePOA, theEngine, theImpl ) + { + MESSAGE( "ACISPlugin_Operations_i::ACISPlugin_Operations_i" ); + } + + //============================================================================= + /*! + * destructor + */ + //============================================================================= + ACISPlugin_IOperations_i::~ACISPlugin_IOperations_i() + { + MESSAGE( "ACISPlugin_Operations_i::~ACISPlugin_Operations_i" ); + } + + //============================================================================= + /*! + * ExportACIS + * Export a shape to ACIS format + * \param theOriginal The shape to export + * \param theFileName The name of the exported file + */ + //============================================================================= + void ACISPlugin_IOperations_i::ExportACIS( GEOM::GEOM_Object_ptr theOriginal, + const char* theFileName ) + { + // duplicate the original shape + GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate( theOriginal ); + + //Set a not done flag + GetOperations()->SetNotDone(); + + //Get the reference shape + Handle(GEOM_Object) anOriginal = GetObjectImpl( theOriginal ); + if (anOriginal.IsNull()) return; + + //Export the shape to the file + GetOperations()->ExportACIS( anOriginal, theFileName ); + } + + //============================================================================= + /*! + * ImportACIS + * Import a shape from ACIS format + * \param theFileName The name of the file to import + * \return List of GEOM_Objects, containing the created shape and propagation groups. + */ + //============================================================================= + GEOM::ListOfGO* ACISPlugin_IOperations_i::ImportACIS( 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()->ImportACIS( 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(); + } + + ACISPlugin_IOperations* ACISPlugin_IOperations_i::GetOperations() + { + return (ACISPlugin_IOperations*)GetImpl(); + } diff --cc src/ACISPlugin_IOperations_i.hh index 0000000,717eace..8f6274c mode 000000,100644..100644 --- a/src/ACISPlugin_IOperations_i.hh +++ b/src/ACISPlugin_IOperations_i.hh @@@ -1,0 -1,52 +1,52 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #ifndef _ACISPlugin_IOperations_i_HeaderFile + #define _ACISPlugin_IOperations_i_HeaderFile + + // idl includes + #include + #include CORBA_SERVER_HEADER( GEOM_Gen ) + #include CORBA_SERVER_HEADER( ACISPlugin ) + + // internal includes + #include "ACISPlugin_Engine.hxx" + + // GEOM includes + #include + + class ACISPlugin_IOperations; + + class ACISPLUGINENGINE_EXPORT ACISPlugin_IOperations_i : + public virtual POA_ACISPlugin::IACISOperations, + public virtual GEOM_IOperations_i + { + public: + ACISPlugin_IOperations_i( PortableServer::POA_ptr thePOA, + GEOM::GEOM_Gen_ptr theEngine, + ACISPlugin_IOperations* theImpl ); + ~ACISPlugin_IOperations_i(); + + void ExportACIS( GEOM::GEOM_Object_ptr, const char* ); + GEOM::ListOfGO* ImportACIS( const char* ); + + ACISPlugin_IOperations* GetOperations(); + }; + + #endif // _ACISPlugin_IOperations_i_HeaderFile diff --cc src/ACISPlugin_ImportDriver.cxx index 0000000,efa8ee9..d23aad4 mode 000000,100644..100644 --- a/src/ACISPlugin_ImportDriver.cxx +++ b/src/ACISPlugin_ImportDriver.cxx @@@ -1,0 -1,206 +1,206 @@@ -// 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 "ACISPlugin_ImportDriver.hxx" + #include "ACISPlugin_IImport.hxx" + + // KERNEL includes + #include + #include + + // GEOM includes + #include + #include + + // OOCT includes + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + + #include + + #ifdef ACIS_HASLICENSE + #include "ACISPlugin_license.h" + + #include + #include + #endif // ACIS_HASLICENSE + + //======================================================================= + //function : GetID + //purpose : + //======================================================================= + const Standard_GUID& ACISPlugin_ImportDriver::GetID() + { + static Standard_GUID aGUID("4e2fea67-84bc-44fe-9a32-ac52a246154c"); + return aGUID; + } + + //======================================================================= + //function : ACISPlugin_ImportDriver + //purpose : + //======================================================================= + ACISPlugin_ImportDriver::ACISPlugin_ImportDriver() + { + } + + //======================================================================= + //function : Execute + //purpose : + //======================================================================= + Standard_Integer ACISPlugin_ImportDriver::Execute( TFunction_Logbook& log ) const + { + if( Label().IsNull() ) return 0; + Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction( Label() ); + + ACISPlugin_IImport aData( aFunction ); + + TCollection_AsciiString aFileName = aData.GetFileName().ToCString(); + + MESSAGE("Import ACIS from file " << aFileName); + TopoDS_Shape aResShape; + + #ifdef ACIS_HASLICENSE + try { + OCCLicense_Activate( "SAT-R-"OCC_VERSION_STRING, ACIS_READ_LICENSE); + } + catch (Standard_LicenseError) { + return aResShape; + } + #endif // ACIS_HASLICENSE + + // Set "C" numeric locale to save numbers correctly + Kernel_Utils::Localizer loc; + + SatControl_Reader aReader; + + IFSelect_ReturnStatus status = aReader.ReadFile( aFileName.ToCString() ); + if (status == IFSelect_RetDone) { + aReader.TransferRoots(); + aResShape = aReader.OneShape(); + Handle(Interface_InterfaceModel) Model = aReader.WS()->Model(); + Handle(XSControl_TransferReader) TR = aReader.WS()->TransferReader(); + if( !TR.IsNull() ) { + Handle(Transfer_TransientProcess) TP = TR->TransientProcess(); + Standard_Integer nb = Model->NbEntities(); + for (Standard_Integer i = 1; i <= nb; i ++) { + Handle(AcisEnt_Attrib) attr = Handle(AcisEnt_Attrib)::DownCast ( Model->Value(i) ); + if ( attr.IsNull() ) continue; //not only Entity Label (f.18) but Name Property also + + TCollection_AsciiString aName; + if( attr->IsKind(STANDARD_TYPE(AcisAttr_AttribGenName)) ) { + Handle(AcisAttr_AttribGenName) attrname = Handle(AcisAttr_AttribGenName)::DownCast ( attr ); + aName = attrname->myNameAttr; + } + else continue; // no name assigned + + // find target entity + Handle(AcisEnt_Entity) ent; + do { + ent = attr->myEntity; + attr = Handle(AcisEnt_Attrib)::DownCast ( ent ); + } while ( ! attr.IsNull() ); + if ( ent.IsNull() ) continue; // strange - no normal entity found ? + + // find target shape + Handle(Transfer_Binder) binder = TP->Find ( ent ); + if( binder.IsNull() ) continue; + TopoDS_Shape S = TransferBRep::ShapeResult (binder); + if( S.IsNull() ) continue; + + // create label and set shape + TDF_Label L; + TDF_TagSource aTag; + L = aTag.NewChild(aFunction->GetNamingEntry()); + TNaming_Builder tnBuild(L); + tnBuild.Generated(S); + + // set a name + TCollection_ExtendedString str(aName); + 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 ACISPlugin_ImportDriver::MustExecute( const TFunction_Logbook& ) const + { + return Standard_True; + } + + //================================================================================ + /*! + * \brief Returns a name of creation operation and names and values of creation parameters + */ + //================================================================================ + + bool ACISPlugin_ImportDriver:: + GetCreationInformation( std::string& theOperationName, + std::vector& theParams ) + { + if( Label().IsNull() ) return 0; + Handle(GEOM_Function) function = GEOM_Function::GetFunction( Label() ); + + ACISPlugin_IImport aCI( function ); + Standard_Integer aType = function->GetType(); + + theOperationName = "ImportACIS"; + + switch ( aType ) { + case IMPORT_SHAPE: + AddParam( theParams, "File name", aCI.GetFileName() ); + break; + default: + return false; + } + return true; + } + + IMPLEMENT_STANDARD_HANDLE( ACISPlugin_ImportDriver, GEOM_BaseDriver ); + IMPLEMENT_STANDARD_RTTIEXT( ACISPlugin_ImportDriver, GEOM_BaseDriver ); diff --cc src/ACISPlugin_ImportDriver.hxx index 0000000,c244140..e0e0aef mode 000000,100644..100644 --- a/src/ACISPlugin_ImportDriver.hxx +++ b/src/ACISPlugin_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 _ACISPlugin_ImportDriver_HXX + #define _ACISPlugin_ImportDriver_HXX + + // GEOM includes + #include + + // OCCT includes + #ifndef _TFunction_Logbook_HeaderFile + #include + #endif + + DEFINE_STANDARD_HANDLE( ACISPlugin_ImportDriver, GEOM_BaseDriver ); + + class ACISPlugin_ImportDriver : public GEOM_BaseDriver + { + public: + ACISPlugin_ImportDriver(); + ~ACISPlugin_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( ACISPlugin_ImportDriver ) + }; + + #endif // _ACISPlugin_ImportDriver_HXX diff --cc src/ACISPlugin_OperationsCreator.cxx index 0000000,faab5d7..ce458f1 mode 000000,100644..100644 --- a/src/ACISPlugin_OperationsCreator.cxx +++ b/src/ACISPlugin_OperationsCreator.cxx @@@ -1,0 -1,71 +1,71 @@@ -// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + // internal includes + #include "ACISPlugin_OperationsCreator.hxx" + #include "ACISPlugin_IOperations_i.hh" + #include "ACISPlugin_ExportDriver.hxx" + #include "ACISPlugin_ImportDriver.hxx" + #include "ACISPlugin_IECallBack.hxx" + + // KERNEL includes + #include + #include + + // GEOM includes + #include + + // OCCT includes + #include + + std::map ACISPlugin_OperationsCreator::_mapOfOperations; + + ACISPlugin_OperationsCreator::ACISPlugin_OperationsCreator() + { + // Register drivers + TFunction_DriverTable::Get()->AddDriver( ACISPlugin_ExportDriver::GetID(), + new ACISPlugin_ExportDriver() ); + TFunction_DriverTable::Get()->AddDriver( ACISPlugin_ImportDriver::GetID(), + new ACISPlugin_ImportDriver() ); + // Register callback + ACISPlugin_IECallBack* callback = new ACISPlugin_IECallBack(); + GEOMImpl_IECallBack::Register( "ACIS", callback ); + } + + ACISPlugin_OperationsCreator::~ACISPlugin_OperationsCreator() + { + } + + GEOM_IOperations_i* ACISPlugin_OperationsCreator::Create( PortableServer::POA_ptr thePOA, + int theStudyId, + GEOM::GEOM_Gen_ptr theEngine, + ::GEOMImpl_Gen* theGenImpl ) + { + Unexpect aCatch( SALOME_SalomeException ); + MESSAGE( "ACISPlugin_OperationsCreator::Create" ); + return new ACISPlugin_IOperations_i( thePOA, theEngine, get( theGenImpl, theStudyId ) ); + } + + ACISPlugin_IOperations* ACISPlugin_OperationsCreator::get( ::GEOMImpl_Gen* theGenImpl, + int theStudyId ) + { + if (_mapOfOperations.find( theStudyId ) == _mapOfOperations.end() ) + _mapOfOperations[theStudyId] = new ACISPlugin_IOperations( theGenImpl, theStudyId ); + return _mapOfOperations[theStudyId]; + } diff --cc src/ACISPlugin_OperationsCreator.hxx index 0000000,7440cf6..1ebd386 mode 000000,100644..100644 --- a/src/ACISPlugin_OperationsCreator.hxx +++ b/src/ACISPlugin_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_ACISPlugin_OperationsCreator_HXX_ + #define _GEOM_ACISPlugin_OperationsCreator_HXX_ + + // internal includes + #include "ACISPlugin_Engine.hxx" + + // GEOM includes + #include "GEOM_Gen_i.hh" + + // C++ includes + #include + + class ACISPlugin_IOperations; + + //===================================================================== + // Operations creator + //===================================================================== + class ACISPLUGINENGINE_EXPORT ACISPlugin_OperationsCreator : public GEOM_GenericOperationsCreator + { + public: + ACISPlugin_OperationsCreator(); + ~ACISPlugin_OperationsCreator(); + + GEOM_IOperations_i* Create( PortableServer::POA_ptr thePOA, + int theStudyId, + GEOM::GEOM_Gen_ptr theEngine, + ::GEOMImpl_Gen* theGenImpl ); + + private: + static ACISPlugin_IOperations* get( ::GEOMImpl_Gen* theGenImpl, + int theStudyId ); + + static std::map _mapOfOperations; + + friend class ACISPlugin_IECallBack; + }; + + #endif diff --cc src/ACISPlugin_license.h.in index 0000000,e41270c..04a30bc mode 000000,100644..100644 --- a/src/ACISPlugin_license.h.in +++ b/src/ACISPlugin_license.h.in @@@ -1,0 -1,26 +1,26 @@@ -// Copyright (C) 2014 OPEN CASCADE ++// Copyright (C) 2014-2015 OPEN CASCADE + // + // This library is free software; you can redistribute it and/or + // modify it under the terms of the GNU Lesser General Public + // License as published by the Free Software Foundation; either + // version 2.1 of the License, or (at your option) any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + // Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public + // License along with this library; if not, write to the Free Software + // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // + // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + // + + #if !defined(__ACISPLUGIN_LICENSE_H) + #define __ACISPLUGIN_LICENSE_H + + #define ACIS_READ_LICENSE "@ACIS_READ_LICENSE@" + #define ACIS_WRITE_LICENSE "@ACIS_WRITE_LICENSE@" + + #endif // __ACISPLUGIN_LICENSE_H diff --cc src/__init__.py index 0000000,11efe78..081daba mode 000000,100644..100644 --- a/src/__init__.py +++ b/src/__init__.py @@@ -1,0 -1,23 +1,22 @@@ -# -*- 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 + # + + # ACISPLUGIN : binding of C++ implementation with Python + # File : __init__.py + #