--- /dev/null
+# 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)
--- /dev/null
+# 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
--- /dev/null
+# Import/Export ACIS
+
+import salome
+salome.salome_init()
+import GEOM
+from salome.geom import geomBuilder
+geompy = geomBuilder.New(salome.myStudy)
+
+# Example of import from ACIS
+
+# get a path to SAMPLES_SRC
+import os
+thePath = os.getenv("DATA_DIR")
+# create filenames
+theFileName = thePath + "/Shapes/Sat/Bug841_Robot01_ACIS_15_Volumique.sat"
+
+# import shape
+Shape1 = geompy.ImportACIS(theFileName)
+geompy.addToStudy(Shape1, "Robot01_1")
+
+# It is possible also to use next format of importing and publishing in study
+
+Shape2 = geompy.ImportACIS(theFileName,"Robot01_2")
--- /dev/null
+# 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/ACISPLUGIN)
--- /dev/null
+# 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/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}")
--- /dev/null
+# 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 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 <a href=\"../../examples/ACISPLUGIN/\1\">Download this script</a>"
--- /dev/null
+# 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 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
--- /dev/null
+/*!
+
+\page acisplugin_importexport_page Import/Export ACIS
+
+For using ACISPLUGIN functionalities in SALOME:
+
+- Run SALOME and activate Geometry module.
+
+- Import the ACIS file from menu <b>File/Import/ACIS</b>.
+
+ \image html import_acis.png
+
+ Browse and select the file and click "Open" button. New object (shape)
+ will appears in the SALOME object browser.
+
+ \note If a plugin supports import of named shapes, it will be asked whether
+ to group or not these shapes corresponding to the type (see the picture below).
+
+ \image html group_acis.png
+
+ \par
+
+ \note It is possible to re-open from the initial file a previously imported shape if
+ the file has been changed on disk. For this, select <b>Reload From Disk</b>
+ in the context menu of the imported shape. The reloaded shape will have the same
+ representation parameters as before this operation.
+
+ \image html reopen_acis.png
+
+- Export to the ACIS file selecting a shape in the SALOME object browser and
+ calling menu <b>File/Export/ACIS</b>.
+
+ \image html export_acis.png
+
+ Enter the file name and click "Save" button.
+
+*/
--- /dev/null
+/*!
+
+\page acisplugin_python_interface_page Python Interface
+
+Python package ACISPluginBuilder defines several classes, destined for
+import and export CAD models in ACIS format (*.sat files).
+
+ACISPLUGIN dynamically adds several methods to the geomBuilder.
+
+Below you can see an example of usage of the ACISPluginBuilder package for
+import and export CAD models:
+
+\anchor example_ACISPlugin
+<h2>Example of import CAD model stored in ACIS format (*.sat files) with ACISPLUGIN:</h2>
+\tui_script{ACISPlugindemo.py}
+
+*/
+
+
--- /dev/null
+/*!
+
+\mainpage Introduction to ACISPLUGIN
+
+<b> ACIS SAT </b> interface to be used as plugin for SALOME Geometry
+module.
+It is destined for:
+- Importing CAD models stored in ACIS format (*.sat files) into
+SALOME study;
+- Exporting CAD models from SALOME to the *.sat files.
+
+To manage parameters of the ACISPLUGIN use \subpage acisplugin_importexport_page.
+
+Also all ACISPLUGIN functionalities are accessible via
+\subpage acisplugin_python_interface_page "ACISPLUGIN Python interface".
+
+*/
--- /dev/null
+<!-- HTML footer for doxygen 1.8.3.1-->
+<!--BEGIN GENERATE_TREEVIEW-->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ $navpath
+ <li class="footer">
+ Copyright © 2014 CEA/DEN, EDF R&D, OPEN CASCADE<br>
+ </li>
+ </ul>
+</div>
+<!--END GENERATE_TREEVIEW-->
+</body>
+</html>
--- /dev/null
+<!-- HTML header for doxygen 1.8.3.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen $doxygenversion"/>
+<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
+<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
+<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="$relpath^jquery.js"></script>
+<script type="text/javascript" src="$relpath^dynsections.js"></script>
+$treeview
+$search
+$mathjax
+<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
+$extrastylesheet
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+
+<div id="titlearea"><div align="right"><div class="version">Version: @SALOMEACISPLUGIN_VERSION@</div></div></div>
+<!-- end header part -->
--- /dev/null
+<!-- HTML header for doxygen 1.8.3.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen $doxygenversion"/>
+<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
+<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
+<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="$relpath^jquery.js"></script>
+<script type="text/javascript" src="$relpath^dynsections.js"></script>
+$treeview
+$search
+$mathjax
+<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
+$extrastylesheet
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+
+<div id="titlearea"><div align="right"><div class="version">Version: @SALOMEACISPLUGIN_VERSION@</div></div></div>
+<div align="bottom-left"><a href=../index.html>Home</a></div>
+<!-- end header part -->
--- /dev/null
+/* 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
--- /dev/null
+# 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(ACISPLUGIN)
--- /dev/null
+// 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 __ACISPlugin_GEN__
+#define __ACISPlugin_GEN__
+
+#include "GEOM_Gen.idl"
+
+module ACISPlugin {
+
+ /*!
+ * \brief Interface for ACISPlugin modeling functions.
+ */
+ interface GEOM_IACISPluginOperations : 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
--- /dev/null
+# 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(SalomeIDLACISPlugin_IDLSOURCES
+ ACISPlugin_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(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})
--- /dev/null
+<?xml version='1.0' encoding='us-ascii'?>
+<!DOCTYPE meshers PUBLIC "" "desktop.dtd">
+<!--
+ 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
+
+-->
+
+<!-- GUI customization for GEOM component -->
+
+<geom-plugins>
+
+ <geom-plugin name="ACISPlugin"
+ server-lib="ACISPluginEngine"
+ gui-lib="ACISPluginGUI">
+ <actions>
+ <action label="Import_ACIS"
+ menu="FILE/IMPORT:10/IMPORTACIS"
+ status-bar="IMPORTACIS">
+ </action>
+ <action label="Export_ACIS"
+ menu="FILE/EXPORT:10/EXPORTACIS"
+ status-bar="EXPORTACIS">
+ </action>
+ </actions>
+ </geom-plugin>
+
+</geom-plugins>
--- /dev/null
+<!--
+ 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.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+
+-->
+<document>
+ <section name="resources">
+ <parameter name="ACISPlugin" value="${ACISPLUGIN_ROOT_DIR}/share/salome/resources/acisplugin"/>
+ </section>
+ <section name="GEOM">
+ <!-- Default GEOM module plugins -->
+ <parameter name="plugins" value="ACISPlugin"/>
+ </section>
+ <section name="geom_help" >
+ <parameter name="Plug-ins/ACIS plugin User's Guide" value="${ACISPLUGIN_ROOT_DIR}/share/doc/salome/gui/ACISPLUGIN/index.html"/>
+ </section>
+</document>
--- /dev/null
+# -*- 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 ACISPlugin import GEOM_IACISPluginOperations
+
+# Engine Library Name
+__libraryName__ = "ACISPluginEngine"
+
+def GetACISPluginOperations(self):
+ anOp = self.GetPluginOperations(self.myStudyId, __libraryName__)
+ return anOp._narrow(GEOM_IACISPluginOperations)
+
+## 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
--- /dev/null
+// 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 "ACISPlugin_Engine.hxx"
+#include "ACISPlugin_OperationsCreator.hh"
+
+extern "C"
+{
+ACISPLUGINENGINE_EXPORT
+ GEOM_GenericOperationsCreator* GetOperationsCreator()
+ {
+ ACISPlugin_OperationsCreator* aCreator = new ACISPlugin_OperationsCreator();
+ return aCreator;
+ }
+}
--- /dev/null
+// 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 "ACISPluginGUI.h"
+#include "ACISPlugin_ExportDlg.h"
+#include "ACISPlugin_ImportDlg.h"
+
+// GUI includes
+#include <SUIT_Desktop.h>
+#include <SUIT_MessageBox.h>
+#include <SalomeApp_Application.h>
+#include <SALOME_ListIteratorOfListIO.hxx>
+#include <LightApp_SelectionMgr.h>
+
+// GEOM includes
+#include <GeometryGUI.h>
+
+//=======================================================================
+// function : ACISPluginGUI()
+// purpose : Constructor
+//=======================================================================
+ACISPluginGUI::ACISPluginGUI( GeometryGUI* parent ) : GEOMPluginGUI( parent )
+{
+}
+
+//=======================================================================
+// function : ~ACISPluginGUI
+// purpose : Destructor
+//=======================================================================
+ACISPluginGUI::~ACISPluginGUI()
+{
+}
+
+//=======================================================================
+// function : OnGUIEvent()
+// purpose :
+//=======================================================================
+bool ACISPluginGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
+{
+ switch ( theCommandID ) {
+ case 1:
+ return OnGUIEvent("Export_ACIS", parent);
+ case 2:
+ return OnGUIEvent("Import_ACIS", parent);
+ default:
+ return OnGUIEvent("", parent);
+ }
+ return false;
+}
+
+//=======================================================================
+// function : OnGUIEvent()
+// purpose :
+//=======================================================================
+bool ACISPluginGUI::OnGUIEvent( const QString& theCommandID, SUIT_Desktop* parent )
+{
+ SalomeApp_Application* app = getGeometryGUI()->getApp();
+ if (!app) return false;
+
+ getGeometryGUI()->EmitSignalDeactivateDialog();
+
+ SUIT_FileDlg* dialog = NULL;
+ if( theCommandID == "Export_ACIS" ) {
+ // Get selected objects
+ LightApp_SelectionMgr* sm = app->selectionMgr();
+ if( !sm ) return false;
+ SALOME_ListIO selectedObjects;
+ sm->selectedObjects( selectedObjects );
+ if( selectedObjects.Extent() == 0 ) {
+ SUIT_MessageBox::warning( app->desktop(),
+ QObject::tr("WRN_WARNING"),
+ QObject::tr("GEOM_WRN_NO_APPROPRIATE_SELECTION") );
+ }
+ else {
+ SALOME_ListIteratorOfListIO It( selectedObjects );
+ for( ; It.More(); It.Next() ) {
+ Handle(SALOME_InteractiveObject) IObject = It.Value();
+ dialog = new ACISPlugin_ExportDlg( IObject, parent );
+ if( dialog->exec() == QDialog::Accepted )
+ delete dialog;
+ }
+ }
+ }
+ else if (theCommandID == "Import_ACIS") {
+ dialog = new ACISPlugin_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 ACISPluginGUI( parent );
+ }
+}
--- /dev/null
+// 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 ACISPluginGUI_H
+#define ACISPluginGUI_H
+
+#include <GEOMPluginGUI.h>
+
+class ACISPluginGUI: public GEOMPluginGUI
+{
+public:
+ ACISPluginGUI( GeometryGUI* parent );
+ ~ACISPluginGUI();
+
+ bool OnGUIEvent( int commandId, SUIT_Desktop* );
+ bool OnGUIEvent( const QString&, SUIT_Desktop* );
+};
+
+#endif // ACISPluginGUI_H
--- /dev/null
+// 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 "ACISPlugin_ExportDlg.h"
+#include "ACISPlugin_Operations_i.hh"
+
+// GUI includes
+#include <SUIT_Session.h>
+#include <SUIT_Desktop.h>
+#include <SUIT_Tools.h>
+#include <SUIT_MessageBox.h>
+#include <SUIT_OverrideCursor.h>
+
+#include <SalomeApp_Application.h>
+
+// GEOM includes
+#include <GEOMBase.h>
+#include <GEOM_Operation.h>
+#include <GEOM_Constants.h>
+
+//=================================================================================
+// Constructor
+//=================================================================================
+ACISPlugin_ExportDlg::ACISPlugin_ExportDlg( Handle(SALOME_InteractiveObject)& object, QWidget* parent )
+: SUIT_FileDlg( parent, false, true, true ),
+ GEOMBase_Helper( dynamic_cast<SUIT_Desktop*>( parent ) )
+{
+ setWindowTitle( tr( "ACISPLUGIN_EXPORT_TITLE" ) );
+ setNameFilter( tr( "ACISPLUGIN_ACIS_FILES" ) );
+
+ myObject = object;
+ const char* objectName = myObject->getName();
+ selectFile( QString( objectName ) );
+}
+
+//=================================================================================
+// Destructor
+//=================================================================================
+ACISPlugin_ExportDlg::~ACISPlugin_ExportDlg()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+
+//=================================================================================
+// function : createOperation
+// purpose :
+//=================================================================================
+GEOM::GEOM_IOperations_ptr ACISPlugin_ExportDlg::createOperation()
+{
+ return getGeomEngine()->GetPluginOperations( getStudyId(), "ACISPluginEngine" );
+}
+
+//=================================================================================
+// function : isValid
+// purpose :
+//=================================================================================
+bool ACISPlugin_ExportDlg::isValid( QString& msg )
+{
+ bool ok = true;
+ //@@ add custom validation actions here @@//
+ return ok;
+}
+
+//=================================================================================
+// function : execute
+// purpose :
+//=================================================================================
+bool ACISPlugin_ExportDlg::execute( ObjectList& objects )
+{
+ SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ if (!app) return false;
+
+ ACISPlugin::GEOM_IACISPluginOperations_var aACISOp = ACISPlugin::GEOM_IACISPluginOperations::_narrow( getOperation() );
+ if ( aACISOp->_is_nil() ) return false;
+
+ GEOM::GEOM_Object_var anObj = GEOMBase::ConvertIOinGEOMObject( myObject );
+ if ( anObj->_is_nil() ) return false;
+
+ QString aFile = selectedFile();
+
+ // User has pressed "Cancel" --> stop the operation
+ if ( aFile.isEmpty() )
+ return false;
+
+ GEOM_Operation* anOp = new GEOM_Operation( app, aACISOp.in() );
+ try {
+ SUIT_OverrideCursor wc;
+ app->putInfo( tr("GEOM_PRP_EXPORT").arg(SUIT_Tools::file( aFile, /*withExten=*/true )) );
+ anOp->start();
+ aACISOp->ExportACIS( anObj, aFile.toUtf8().constData() );
+ if( aACISOp->IsDone() )
+ anOp->commit();
+ else {
+ anOp->abort();
+ wc.suspend();
+ SUIT_MessageBox::critical( app->desktop(),
+ QObject::tr("GEOM_ERROR"),
+ QObject::tr("GEOM_PRP_ABORT") + "\n" + QObject::tr( aACISOp->GetErrorCode() ) );
+ return false;
+ }
+ }
+ catch( const SALOME::SALOME_Exception& S_ex ) {
+ anOp->abort();
+ return false;
+ }
+
+ objects.push_back( anObj._retn() );
+ return true;
+}
+
+void ACISPlugin_ExportDlg::accept()
+{
+ SUIT_FileDlg::accept();
+ onAccept(false);
+}
--- /dev/null
+// 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 ACISPlugin_ExportDlg_H
+#define ACISPlugin_ExportDlg_H
+
+// GUI includes
+#include <SUIT_FileDlg.h>
+
+// GEOM includes
+#include <GEOM_GenericObjPtr.h>
+#include <GEOMBase_Helper.h>
+
+
+class ACISPlugin_ExportDlg: public SUIT_FileDlg, public GEOMBase_Helper
+{
+ Q_OBJECT
+
+public:
+ ACISPlugin_ExportDlg( Handle(SALOME_InteractiveObject)&, QWidget* = 0 );
+ ~ACISPlugin_ExportDlg();
+
+protected:
+ // redefined from GEOMBase_Helper
+ virtual GEOM::GEOM_IOperations_ptr createOperation();
+ virtual bool isValid( QString& );
+ virtual bool execute( ObjectList& );
+
+protected slots:
+ void accept();
+
+private:
+ Handle(SALOME_InteractiveObject) myObject;
+};
+
+#endif // ACISPlugin_ExportDlg_H
--- /dev/null
+// 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 _ACISPlugin_ExportDriver_HXX
+#define _ACISPlugin_ExportDriver_HXX
+
+// GEOM includes
+#include <GEOM_BaseDriver.hxx>
+
+// OCCT includes
+#ifndef _TFunction_Logbook_HeaderFile
+#include <TFunction_Logbook.hxx>
+#endif
+
+DEFINE_STANDARD_HANDLE( ACISPlugin_ExportDriver, GEOM_BaseDriver );
+
+class ACISPlugin_ExportDriver : public GEOM_BaseDriver
+{
+public:
+ Standard_EXPORT ACISPlugin_ExportDriver();
+ Standard_EXPORT ~ACISPlugin_ExportDriver() {};
+
+ 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<GEOM_Param>& params );
+
+DEFINE_STANDARD_RTTI( ACISPlugin_ExportDriver )
+};
+
+#endif // _ACISPlugin_ExportDriver_HXX
--- /dev/null
+// 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 "ACISPlugin_IECallBack.hxx"
+
+//=============================================================================
+/*!
+ * constructor
+ */
+//=============================================================================
+ACISPlugin_IECallBack::ACISPlugin_IECallBack( ACISPlugin_IOperations* theOperations )
+: GEOMImpl_IECallBack()
+{
+ myPluginOperations = theOperations;
+}
+
+//=============================================================================
+/*!
+ * destructor
+ */
+//=============================================================================
+ACISPlugin_IECallBack::~ACISPlugin_IECallBack()
+{
+}
+
+//=============================================================================
+/*!
+ * Export
+ */
+//=============================================================================
+bool ACISPlugin_IECallBack::Export( const Handle(GEOM_Object) theOriginal,
+ const TCollection_AsciiString& theFileName,
+ const TCollection_AsciiString& theFormatName )
+{
+ myPluginOperations->ExportACIS( theOriginal, theFileName );
+ return true;
+}
+
+//=============================================================================
+/*!
+ * Import
+ */
+//=============================================================================
+Handle(TColStd_HSequenceOfTransient)
+ACISPlugin_IECallBack::Import( const TCollection_AsciiString& theFormatName,
+ const TCollection_AsciiString& theFileName )
+{
+ return myPluginOperations->ImportACIS( theFileName );
+}
+
--- /dev/null
+// 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 _ACISPlugin_IECallBack_HXX_
+#define _ACISPlugin_IECallBack_HXX_
+
+// internal includes
+#include "ACISPlugin_IOperations.hxx"
+
+// GEOM includes
+#include <GEOM_Object.hxx>
+#include <GEOMImpl_IECallBack.hxx>
+
+// OCC includes
+#include <TCollection_AsciiString.hxx>
+
+class ACISPlugin_IECallBack : public GEOMImpl_IECallBack
+{
+public:
+ Standard_EXPORT ACISPlugin_IECallBack( ACISPlugin_IOperations* theOperations );
+ Standard_EXPORT ~ACISPlugin_IECallBack();
+
+ Standard_EXPORT virtual bool Export( const Handle(GEOM_Object) theOriginal,
+ const TCollection_AsciiString& theFileName,
+ const TCollection_AsciiString& theFormatName );
+
+ Standard_EXPORT virtual
+ Handle(TColStd_HSequenceOfTransient) Import( const TCollection_AsciiString& theFormatName,
+ const TCollection_AsciiString& theFileName );
+
+private:
+ ACISPlugin_IOperations* myPluginOperations;
+};
+
+#endif
--- /dev/null
+// 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 _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_
--- /dev/null
+// 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 _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_
--- /dev/null
+// 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 "ACISPlugin_IOperations.hxx"
+#include "ACISPlugin_ExportDriver.hxx"
+#include "ACISPlugin_ImportDriver.hxx"
+#include "ACISPlugin_IExport.hxx"
+#include "ACISPlugin_IImport.hxx"
+
+// KERNEL includes
+#include <utilities.h>
+
+// GEOM includes
+#include <GEOM_PythonDump.hxx>
+#include <GEOMImpl_Types.hxx>
+
+#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
+
+//=============================================================================
+/*!
+ * Constructor
+ */
+//=============================================================================
+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
+ * \param theIsASCII The format of the exported file (ASCII or Binary)
+ * \param theDeflection The deflection of the shape 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 {
+#if OCC_VERSION_LARGE > 0x06010000
+ OCC_CATCH_SIGNALS;
+#endif
+ 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 {
+#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.ImportACIS(\"" << theFileName.ToCString() << "\" )";
+ SetErrorCode(OK);
+
+ return aSeq;
+}
--- /dev/null
+// 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 : ACISPlugin_IOperations.hxx
+
+#ifndef _ACISPlugin_IOperations_HXX_
+#define _ACISPlugin_IOperations_HXX_
+
+// GEOM includes
+#include <GEOMImpl_IBaseIEOperations.hxx>
+
+class ACISPlugin_IOperations: public GEOMImpl_IBaseIEOperations
+{
+public:
+ Standard_EXPORT ACISPlugin_IOperations( GEOM_Engine*, int );
+ Standard_EXPORT ~ACISPlugin_IOperations();
+
+ Standard_EXPORT void ExportACIS( const Handle(GEOM_Object),
+ const TCollection_AsciiString& );
+
+ Standard_EXPORT Handle(TColStd_HSequenceOfTransient) ImportACIS( const TCollection_AsciiString& );
+};
+
+#endif
--- /dev/null
+// 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 "ACISPlugin_ImportDlg.h"
+#include "ACISPlugin_Operations_i.hh"
+
+// GUI includes
+#include <SUIT_Session.h>
+#include <SUIT_MessageBox.h>
+#include <SUIT_Desktop.h>
+#include <SUIT_Tools.h>
+#include <SalomeApp_Application.h>
+#include <SalomeApp_Study.h>
+
+// GEOM includes
+#include <GeometryGUI.h>
+#include <GEOMBase.h>
+#include <GEOM_Operation.h>
+
+//=================================================================================
+// Constructor
+//=================================================================================
+ACISPlugin_ImportDlg::ACISPlugin_ImportDlg( QWidget* parent )
+: SUIT_FileDlg( parent, true, true, true ),
+ GEOMBase_Helper( dynamic_cast<SUIT_Desktop*>( parent ) )
+{
+ setWindowTitle( tr( "ACISPLUGIN_IMPORT_TITLE" ) );
+ setAcceptMode( AcceptOpen );
+ setNameFilter( tr( "ACISPLUGIN_ACIS_FILES" ) );
+ setFileMode( QFileDialog::ExistingFiles );
+}
+
+//=================================================================================
+// Destructor
+//=================================================================================
+ACISPlugin_ImportDlg::~ACISPlugin_ImportDlg()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+
+//=================================================================================
+// function : createOperation
+// purpose :
+//=================================================================================
+GEOM::GEOM_IOperations_ptr ACISPlugin_ImportDlg::createOperation()
+{
+ return getGeomEngine()->GetPluginOperations(getStudyId(), "ACISPluginEngine");
+}
+
+//=================================================================================
+// function : isValid
+// purpose :
+//=================================================================================
+bool ACISPlugin_ImportDlg::isValid (QString& msg)
+{
+ bool ok = true;
+ //@@ add custom validation actions here @@//
+ return ok;
+}
+
+//=================================================================================
+// function : execute
+// purpose :
+//=================================================================================
+bool ACISPlugin_ImportDlg::execute( ObjectList& objects )
+{
+ bool res = false;
+ GEOM::GEOM_Object_var anObj;
+ ACISPlugin::GEOM_IACISPluginOperations_var anOper = ACISPlugin::GEOM_IACISPluginOperations::_narrow( getOperation() );
+
+ SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+ _PTR(Study) aStudy = dynamic_cast<SalomeApp_Study*> ( app->activeStudy() )->studyDS();
+ SALOMEDS::Study_var aDSStudy = GeometryGUI::ClientStudyToStudy( aStudy );
+
+ QStringList fileNames = selectedFiles();
+ if ( fileNames.count() == 0 )
+ return false; // nothing selected, return
+
+ SUIT_MessageBox::StandardButton acisAnswer = SUIT_MessageBox::NoButton;
+
+ 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();
+
+ if ( acisAnswer != SUIT_MessageBox::YesToAll && acisAnswer != SUIT_MessageBox::NoToAll ) {
+ SUIT_MessageBox::StandardButtons btns = SUIT_MessageBox::Yes | SUIT_MessageBox::No;
+ if ( i < fileNames.count()-1 ) btns = btns | SUIT_MessageBox::YesToAll | SUIT_MessageBox::NoToAll;
+ acisAnswer = SUIT_MessageBox::question( app->desktop(),
+ "Question",//tr("WRN_WARNING"),
+ tr("GEOM_PUBLISH_NAMED_SHAPES"),
+ btns | SUIT_MessageBox::Cancel,
+ SUIT_MessageBox::No );
+ if ( acisAnswer == SUIT_MessageBox::Cancel ) {
+ anOper->SetErrorCode(OK);
+ return true; // cancel (break) import operation
+ }
+ }
+
+ GEOM::ListOfGO_var anObj = anOper->ImportACIS( 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( aFileName, /*withExten=*/true ) );
+ anObjPtr->SetName( aPublishObjName.toStdString().c_str() );
+
+ SALOMEDS::SObject_var aSO =
+ GeometryGUI::GetGeomGen()->PublishInStudy( aDSStudy,
+ SALOMEDS::SObject::_nil(),
+ anObjPtr,
+ aPublishObjName.toLatin1().constData() );
+ if ( acisAnswer == SUIT_MessageBox::Yes || acisAnswer == SUIT_MessageBox::YesToAll )
+ GeometryGUI::GetGeomGen()->PublishNamedShapesInStudy( aDSStudy, anObjPtr );
+
+ 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 ACISPlugin_ImportDlg::accept()
+{
+ SUIT_FileDlg::accept();
+ onAccept( false );
+}
+
+//=================================================================================
+// function : getObjectName
+// purpose :
+//=================================================================================
+QString ACISPlugin_ImportDlg::getObjectName( GEOM::GEOM_Object_ptr object ) const
+{
+ if( object->_is_nil() )
+ return QString::null;
+ return object->GetName();
+}
--- /dev/null
+// 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 ACISPlugin_IMPORTDLG_H
+#define ACISPlugin_IMPORTDLG_H
+
+// GUI includes
+#include <SUIT_FileDlg.h>
+
+// GEOM includes
+#include <GEOMBase_Helper.h>
+#include <GEOM_GenericObjPtr.h>
+
+class ACISPlugin_ImportDlg: public SUIT_FileDlg, public GEOMBase_Helper
+{
+ Q_OBJECT
+
+public:
+ ACISPlugin_ImportDlg( QWidget* = 0 );
+ ~ACISPlugin_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 // ACISPlugin_IMPORTDLG_H
--- /dev/null
+// 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 _ACISPlugin_ImportDriver_HXX
+#define _ACISPlugin_ImportDriver_HXX
+
+// GEOM includes
+#include <GEOM_BaseDriver.hxx>
+
+// OCCT includes
+#ifndef _TFunction_Logbook_HeaderFile
+#include <TFunction_Logbook.hxx>
+#endif
+
+DEFINE_STANDARD_HANDLE( ACISPlugin_ImportDriver, GEOM_BaseDriver );
+
+class ACISPlugin_ImportDriver : public GEOM_BaseDriver
+{
+public:
+ Standard_EXPORT ACISPlugin_ImportDriver();
+ Standard_EXPORT ~ACISPlugin_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<GEOM_Param>& params );
+
+DEFINE_STANDARD_RTTI( ACISPlugin_ImportDriver )
+};
+
+#endif // _ACISPlugin_ImportDriver_HXX
--- /dev/null
+// 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 "ACISPlugin_OperationsCreator.hh"
+#include "ACISPlugin_Operations_i.hh"
+#include "ACISPlugin_ExportDriver.hxx"
+#include "ACISPlugin_ImportDriver.hxx"
+#include "ACISPlugin_IECallBack.hxx"
+
+// KERNEL includes
+#include <Utils_ExceptHandlers.hxx>
+#include <utilities.h>
+
+// GEOM includes
+#include <GEOMImpl_IECallBack.hxx>
+
+// OCCT includes
+#include <TFunction_DriverTable.hxx>
+
+//============================================================================
+// function : Create
+// purpose :
+//============================================================================
+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" );
+
+ if (_mapOfOperations.find( theStudyId ) == _mapOfOperations.end() ) {
+ ACISPlugin_IOperations* anOper = new ACISPlugin_IOperations( theGenImpl, theStudyId );
+ _mapOfOperations[theStudyId] = anOper;
+
+ // Import/Export ACIS
+ TFunction_DriverTable::Get()->AddDriver( ACISPlugin_ExportDriver::GetID(),
+ new ACISPlugin_ExportDriver() );
+ TFunction_DriverTable::Get()->AddDriver( ACISPlugin_ImportDriver::GetID(),
+ new ACISPlugin_ImportDriver() );
+
+ ACISPlugin_IECallBack* ACISCallBack = new ACISPlugin_IECallBack( anOper );
+ GEOMImpl_IECallBack::Register( "ACIS", ACISCallBack );
+ }
+
+ ACISPlugin_Operations_i* aServant =
+ new ACISPlugin_Operations_i( thePOA, theEngine, _mapOfOperations[theStudyId] );
+
+ return aServant;
+}
--- /dev/null
+// 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_ACISPlugin_OperationsCreator_HXX_
+#define _GEOM_ACISPlugin_OperationsCreator_HXX_
+
+// internal includes
+#include "ACISPlugin_Engine.hxx"
+#include "ACISPlugin_IOperations.hxx"
+
+// GEOM includes
+#include "GEOM_Gen_i.hh"
+
+// C++ includes
+#include <map>
+
+//=====================================================================
+// Operations creator
+//=====================================================================
+class ACISPLUGINENGINE_EXPORT ACISPlugin_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 <int, ACISPlugin_IOperations*> _mapOfOperations;
+};
+
+#endif
--- /dev/null
+// 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 "ACISPlugin_Operations_i.hh"
+#include <ACISPLUGIN_version.h>
+
+// KERNEL includes
+#include <utilities.h>
+
+//=============================================================================
+/*!
+ * constructor:
+ */
+//=============================================================================
+ACISPlugin_Operations_i::ACISPlugin_Operations_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_Operations_i::~ACISPlugin_Operations_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_Operations_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
+ char* aFileName = strdup( theFileName );
+
+ GetOperations()->ExportACIS( anOriginal, aFileName );
+ free( aFileName );
+}
+
+//=============================================================================
+/*!
+ * 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_Operations_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
+ char* aFileName = strdup( theFileName );
+ TCollection_AsciiString fileName( aFileName );
+
+ //Import the shape from the file
+ Handle(TColStd_HSequenceOfTransient) aHSeq = GetOperations()->ImportACIS( 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 ACISPlugin_Operations_i::GetVersion()
+{
+ return ACISPLUGIN_VERSION;
+}
+//=============================================================================
+/*!
+ * \brief Get version of the plugin.
+ * \return the string representation of the plugin's version
+*/
+//=============================================================================
+
+char* ACISPlugin_Operations_i::GetVersionStr()
+{
+ return (char*)ACISPLUGIN_VERSION_STR;
+}
--- /dev/null
+// 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 _ACISPlugin_Operations_i_HeaderFile
+#define _ACISPlugin_Operations_i_HeaderFile
+
+// idl includes
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER( GEOM_Gen )
+#include CORBA_SERVER_HEADER( ACISPlugin_Gen )
+
+// internal includes
+#include "ACISPlugin_Engine.hxx"
+#include "ACISPlugin_IOperations.hxx"
+
+// GEOM includes
+#include <GEOM_IOperations_i.hh>
+
+class ACISPLUGINENGINE_EXPORT ACISPlugin_Operations_i :
+ public virtual POA_ACISPlugin::GEOM_IACISPluginOperations,
+ public virtual GEOM_IOperations_i
+{
+public:
+ ACISPlugin_Operations_i( PortableServer::POA_ptr thePOA,
+ GEOM::GEOM_Gen_ptr theEngine,
+ ::ACISPlugin_IOperations* theImpl );
+ ~ACISPlugin_Operations_i();
+
+ void ExportACIS( GEOM::GEOM_Object_ptr, const char* );
+ GEOM::ListOfGO* ImportACIS( const char* );
+
+ // Version information
+ virtual int GetVersion();
+ virtual char* GetVersionStr();
+
+ ::ACISPlugin_IOperations* GetOperations()
+ { return (::ACISPlugin_IOperations*)GetImpl(); }
+};
+
+#endif
--- /dev/null
+# -*- 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
+#
+
+# ACISPLUGIN : binding of C++ implementation with Python
+# File : __init__.py
+#
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
+<context>
+ <name>@default</name>
+ <message>
+ <source>MEN_EXPORTACIS</source>
+ <translation>ACIS</translation>
+ </message>
+ <message>
+ <source>TOP_EXPORTACIS</source>
+ <translation>Export ACIS</translation>
+ </message>
+ <message>
+ <source>STB_EXPORTACIS</source>
+ <translation>Export ACIS</translation>
+ </message>
+ <message>
+ <source>MEN_IMPORTACIS</source>
+ <translation>ACIS</translation>
+ </message>
+ <message>
+ <source>TOP_IMPORTACIS</source>
+ <translation>Import ACIS</translation>
+ </message>
+ <message>
+ <source>STB_IMPORTACIS</source>
+ <translation>Import ACIS</translation>
+ </message>
+ <message>
+ <source>ACISPLUGIN_ACIS_FILES</source>
+ <translation>ACIS files( *.sat )</translation>
+ </message>
+</context>
+<context>
+ <name>ACISPlugin_ExportDlg</name>
+ <message>
+ <source>ACISPLUGIN_EXPORT_TITLE</source>
+ <translation>Export ACIS</translation>
+ </message>
+</context>
+<context>
+ <name>ACISPlugin_ImportDlg</name>
+ <message>
+ <source>ACISPLUGIN_IMPORT_TITLE</source>
+ <translation>Import ACIS</translation>
+ </message>
+</context>
+</TS>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_US">
+<context>
+ <name>@default</name>
+ <message>
+ <source>MEN_EXPORTACIS</source>
+ <translation>ACIS</translation>
+ </message>
+ <message>
+ <source>TOP_EXPORTACIS</source>
+ <translation>Exporter ACIS</translation>
+ </message>
+ <message>
+ <source>STB_EXPORTACIS</source>
+ <translation>Exporter ACIS</translation>
+ </message>
+ <message>
+ <source>MEN_IMPORTACIS</source>
+ <translation>ACIS</translation>
+ </message>
+ <message>
+ <source>TOP_IMPORTACIS</source>
+ <translation>Importer ACIS</translation>
+ </message>
+ <message>
+ <source>STB_IMPORTACIS</source>
+ <translation>Importer ACIS</translation>
+ </message>
+ <message>
+ <source>ACISPLUGIN_ACIS_FILES</source>
+ <translation>ACIS Fichiers( *.sat )</translation>
+ </message>
+</context>
+<context>
+ <name>ACISPlugin_ExportDlg</name>
+ <message>
+ <source>ACISPLUGIN_EXPORT_TITLE</source>
+ <translation>Exporter ACIS</translation>
+ </message>
+</context>
+<context>
+ <name>ACISPlugin_ImportDlg</name>
+ <message>
+ <source>ACISPLUGIN_IMPORT_TITLE</source>
+ <translation>Importer ACIS</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ja" sourcelanguage="en">
+<context>
+ <name>@default</name>
+ <message>
+ <source>MEN_EXPORTACIS</source>
+ <translation type="unfinished">ACIS</translation>
+ </message>
+ <message>
+ <source>TOP_EXPORTACIS</source>
+ <translation type="unfinished">Export ACIS</translation>
+ </message>
+ <message>
+ <source>STB_EXPORTACIS</source>
+ <translation type="unfinished">Export ACIS</translation>
+ </message>
+ <message>
+ <source>MEN_IMPORTACIS</source>
+ <translation type="unfinished">ACIS</translation>
+ </message>
+ <message>
+ <source>TOP_IMPORTACIS</source>
+ <translation type="unfinished">Import ACIS</translation>
+ </message>
+ <message>
+ <source>STB_IMPORTACIS</source>
+ <translation type="unfinished">Import ACIS</translation>
+ </message>
+ <message>
+ <source>ACISPLUGIN_ACIS_FILES</source>
+ <translation type="unfinished">ACIS files( *.sat )</translation>
+ </message>
+</context>
+<context>
+ <name>ACISPlugin_ExportDlg</name>
+ <message>
+ <source>ACISPLUGIN_EXPORT_TITLE</source>
+ <translation type="unfinished">Export ACIS</translation>
+ </message>
+</context>
+<context>
+ <name>ACISPlugin_ImportDlg</name>
+ <message>
+ <source>ACISPLUGIN_IMPORT_TITLE</source>
+ <translation type="unfinished">Import ACIS</translation>
+ </message>
+</context>
+</TS>
\ No newline at end of file