Salome HOME
Implementation of ACISPLUGIN as a GEOM plugin (removed and modified files)
authormpa <mpa@opencascade.com>
Wed, 3 Sep 2014 09:49:02 +0000 (13:49 +0400)
committermpa <mpa@opencascade.com>
Wed, 3 Sep 2014 09:49:02 +0000 (13:49 +0400)
CMakeLists.txt
SalomeACISPLUGINConfig.cmake.in
resources/CMakeLists.txt
src/ACISExport/CMakeLists.txt [deleted file]
src/ACISImport/CMakeLists.txt [deleted file]
src/ACISPlugin_Engine.hxx [changed mode: 0644->0755]
src/ACISPlugin_ExportDriver.cxx
src/ACISPlugin_ImportDriver.cxx
src/CMakeLists.txt
src/common/CMakeLists.txt [deleted file]

index c3c84ea370c48e1086258c52e591480473d8e04e..591127843d2db8a409b5fae78b2c4662fc03befd 100644 (file)
@@ -42,6 +42,7 @@ IF(EXISTS ${KERNEL_ROOT_DIR})
   LIST(APPEND CMAKE_MODULE_PATH "${KERNEL_ROOT_DIR}/salome_adm/cmake_files")
   INCLUDE(SalomeMacros)
   FIND_PACKAGE(SalomeKERNEL REQUIRED)
+  KERNEL_WITH_CORBA() #check whether KERNEL builded with CORBA
   ADD_DEFINITIONS(${KERNEL_DEFINITIONS})
   INCLUDE_DIRECTORIES(${KERNEL_INCLUDE_DIRS})
 ELSE(EXISTS ${KERNEL_ROOT_DIR})
@@ -56,9 +57,38 @@ SET(BUILD_SHARED_LIBS TRUE)
 # Local macros:
 LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/adm_local/cmake_files")
 
+# Find GEOM
+# ===========
+SET(GEOM_ROOT_DIR $ENV{GEOM_ROOT_DIR} CACHE PATH "Path to the Salome GEOM")
+IF(EXISTS ${GEOM_ROOT_DIR})
+  LIST(APPEND CMAKE_MODULE_PATH "${GEOM_ROOT_DIR}/adm_local/cmake_files")
+  FIND_PACKAGE(SalomeGEOM REQUIRED)
+  ADD_DEFINITIONS(${GEOM_DEFINITIONS})
+  INCLUDE_DIRECTORIES(${GEOM_INCLUDE_DIRS})
+ELSE(EXISTS ${GEOM_ROOT_DIR})
+  MESSAGE(FATAL_ERROR "We absolutely need a Salome GEOM, please define GEOM_ROOT_DIR")
+ENDIF(EXISTS ${GEOM_ROOT_DIR})
+
+SET(SALOME_BUILD_GUI ${SALOME_GEOM_BUILD_GUI})
+
+# Find GUI(optional)
+IF(SALOME_BUILD_GUI)
+  SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR} CACHE PATH "Path to the Salome GUI")
+  IF(EXISTS ${GUI_ROOT_DIR})
+    LIST(APPEND CMAKE_MODULE_PATH "${GUI_ROOT_DIR}/adm_local/cmake_files")
+    FIND_PACKAGE(SalomeGUI)
+    FULL_GUI(FALSE) #check whether GUI builded in full mode and with CORBA
+    ADD_DEFINITIONS(${GUI_DEFINITIONS})
+    INCLUDE_DIRECTORIES(${GUI_INCLUDE_DIRS})
+  ELSE(EXISTS ${GUI_ROOT_DIR})
+    MESSAGE(STATUS "GUI_ROOT_DIR is not well defined, ACISPLUGIN will be built without GUI!!!")
+  ENDIF(EXISTS ${GUI_ROOT_DIR})
+  SALOME_LOG_OPTIONAL_PACKAGE(SalomeGUI SALOME_BUILD_GUI)
+ENDIF(SALOME_BUILD_GUI)
+
 # User options
 # ============
-#OPTION(SALOME_BUILD_DOC "Generate SALOME ACISPLUGIN documentation" ON) #for use in the future
+OPTION(SALOME_BUILD_DOC "Generate SALOME ACISPLUGIN documentation" ON)
 OPTION(SALOME_BUILD_TESTS "Build SALOME tests" ON)
 
 IF(SALOME_BUILD_TESTS)
@@ -70,7 +100,7 @@ OPTION(ACIS_WRITE_LICENSE "ACIS write license key" "")
 
 IF(ACIS_READ_LICENSE OR ACIS_WRITE_LICENSE)
   IF(NOT ACIS_READ_LICENSE)
-    MESSAGE(WARNING "ACIS read license keys are not specified! Runtime license will be required!")
+    MESSAGE(WARNING "ACIS read license key is not specified! Runtime license will be required!")
   ELSEIF(NOT ACIS_WRITE_LICENSE)
     MESSAGE(WARNING "ACIS write license key is not specified! Runtime license will be required!") 
   ENDIF() 
@@ -83,8 +113,18 @@ ENDIF()
 ## ACISPLUGIN specifics
 ##
 
+FIND_PACKAGE(SalomePython REQUIRED)
 FIND_PACKAGE(SalomeCAS REQUIRED)
 FIND_PACKAGE(SalomeACIS REQUIRED)
+FIND_PACKAGE(SalomeOmniORB REQUIRED)
+FIND_PACKAGE(SalomeOmniORBPy REQUIRED)
+IF(SALOME_BUILD_GUI)
+  FIND_PACKAGE(SalomeQt4 REQUIRED COMPONENTS QtCore QtGui)
+ENDIF()
+IF(SALOME_BUILD_DOC)
+  FIND_PACKAGE(SalomeDoxygen)
+  SALOME_LOG_OPTIONAL_PACKAGE(Doxygen SALOME_BUILD_DOC)
+ENDIF()
 
 # Directories
 # ===========
@@ -95,6 +135,7 @@ SET(SALOME_INSTALL_CMAKE_LOCAL adm_local/cmake_files CACHE PATH
     "Install path: local SALOME CMake files")
 SET(SALOME_INSTALL_RES share/salome/resources CACHE PATH "Install path: SALOME resources")
 SET(SALOME_INSTALL_DOC share/doc/salome CACHE PATH "Install path: SALOME documentation")
+SET(SALOME_INSTALL_PYTHON "${SALOME_INSTALL_PYTHON}" CACHE PATH "Install path: SALOME Python stuff")
 
 # Specific to ACISPLUGIN:
 SET(SALOME_ACISPLUGIN_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/acisplugin" CACHE PATH.
@@ -104,14 +145,18 @@ MARK_AS_ADVANCED(SALOME_INSTALL_BINS SALOME_INSTALL_LIBS SALOME_INSTALL_HEADERS)
 MARK_AS_ADVANCED(SALOME_INSTALL_CMAKE_LOCAL SALOME_INSTALL_RES SALOME_INSTALL_DOC)
 
 # Accumulate environment variables for ACISPLUGIN module
+SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_PYTHON})
 SALOME_ACCUMULATE_ENVIRONMENT(LD_LIBRARY_PATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_LIBS})
 
 # Sources 
 # ========
-
+ADD_SUBDIRECTORY(idl)
 ADD_SUBDIRECTORY(adm_local)
 ADD_SUBDIRECTORY(resources)
 ADD_SUBDIRECTORY(src)
+IF(SALOME_BUILD_DOC)
+  ADD_SUBDIRECTORY(doc)
+ENDIF()
 
 # Header configuration
 # ====================
@@ -126,15 +171,23 @@ INCLUDE(CMakePackageConfigHelpers)
 # List of targets in this project we want to make visible to the rest of the world.
 # They all have to be INSTALL'd with the option "EXPORT ${PROJECT_NAME}TargetGroup"
 SET(_${PROJECT_NAME}_exposed_targets 
-  ACISExport ACISImport
+  SalomeIDLACISPlugin ACISPluginEngine
 )
 
+IF(SALOME_BUILD_GUI)
+  LIST(APPEND _${PROJECT_NAME}_exposed_targets 
+    ACISPluginGUI
+    )
+ENDIF()
+
 # Add all targets to the build-tree export set
 EXPORT(TARGETS ${_${PROJECT_NAME}_exposed_targets}
   FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake)
 
 # Ensure the variables are always defined for the configure:
 SET(KERNEL_ROOT_DIR "${KERNEL_ROOT_DIR}")
+SET(GUI_ROOT_DIR "${GUI_ROOT_DIR}")
+SET(GEOM_ROOT_DIR "${GEOM_ROOT_DIR}")
 SET(ACIS_ROOT_DIR "${ACIS_ROOT_DIR}")
 SET(OCCLICENSE_ROOT_DIR "${OCCLICENSE_ROOT_DIR}")
 
@@ -147,7 +200,7 @@ CONFIGURE_PACKAGE_CONFIG_FILE(${PROJECT_NAME}Config.cmake.in
     ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
     INSTALL_DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}"
     PATH_VARS CONF_INCLUDE_DIRS SALOME_INSTALL_CMAKE_LOCAL CMAKE_INSTALL_PREFIX
-    KERNEL_ROOT_DIR ACIS_ROOT_DIR OCCLICENSE_ROOT_DIR)
+    KERNEL_ROOT_DIR GUI_ROOT_DIR GEOM_ROOT_DIR ACIS_ROOT_DIR OCCLICENSE_ROOT_DIR)
 
 WRITE_BASIC_PACKAGE_VERSION_FILE(${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
     VERSION ${${PROJECT_NAME_UC}_VERSION}
index b325e7ac1a74f9a1e84264ef3e2222474541f2a3..7f172f78e67778eac8e334541cbbbc44d87a6117 100644 (file)
@@ -29,7 +29,7 @@
 # Load the dependencies for the libraries of @PROJECT_NAME@ 
 # (contains definitions for IMPORTED targets). This is only 
 # imported if we are not built as a subproject (in this case targets are already there)
-IF(NOT TARGET ACISExport AND NOT @PROJECT_NAME@_BINARY_DIR)
+IF(NOT TARGET ACISPluginEngine AND NOT @PROJECT_NAME@_BINARY_DIR)
   INCLUDE("@PACKAGE_SALOME_INSTALL_CMAKE_LOCAL@/@PROJECT_NAME@Targets.cmake")
 ENDIF()   
 
@@ -47,11 +47,13 @@ SET(ACISPLUGIN_DEFINITIONS)
 #### Now the specificities
 
 # Options exported by the package:
-#SET(SALOME_ACISPLUGIN_BUILD_DOC   @SALOME_BUILD_DOC@)
+SET(SALOME_ACISPLUGIN_BUILD_DOC   @SALOME_BUILD_DOC@)
 SET(SALOME_ACISPLUGIN_BUILD_TESTS @SALOME_BUILD_TESTS@)
 
 # Level 1 prerequisites:
 SET_AND_CHECK(KERNEL_ROOT_DIR_EXP "@PACKAGE_KERNEL_ROOT_DIR@")
+SET_AND_CHECK(GUI_ROOT_DIR_EXP "@PACKAGE_GUI_ROOT_DIR@")
+SET_AND_CHECK(GEOM_ROOT_DIR_EXP "@PACKAGE_GEOM_ROOT_DIR@")
 SET_AND_CHECK(ACIS_ROOT_DIR_EXP "@PACKAGE_ACIS_ROOT_DIR@")
 SET_AND_CHECK(OCCLICENSE_ROOT_DIR_EXP "@PACKAGE_OCCLICENSE_ROOT_DIR@")
 
@@ -94,5 +96,6 @@ SET(SALOME_INSTALL_RES "@SALOME_INSTALL_RES@")
 SET(SALOME_INSTALL_DOC "@SALOME_INSTALL_DOC@")
 
 # Exposed ACISPLUGIN targets:
-SET(ACISPLUGIN_ACISExport ACISExport)
-SET(ACISPLUGIN_ACISImport ACISImport)
\ No newline at end of file
+SET(ACISPLUGIN_SalomeIDLACISPlugin SalomeIDLACISPlugin)
+SET(ACISPLUGIN_ACISPluginEngine ACISPluginEngine)
+SET(ACISPLUGIN_ACISPluginGUI ACISPluginGUI)
index be45365852cdd23624bdf1b404bc8c101bb2ddd4..efa7be67034b4b19de0ad89c811d88910d517025 100644 (file)
@@ -18,7 +18,8 @@
 #
 
 SET(ACISPLUGIN_RESOURCES_FILES
-  ImportExport
+  SalomeApp.xml
+  ACISPlugin.xml
 )
 
 INSTALL(FILES ${ACISPLUGIN_RESOURCES_FILES} DESTINATION ${SALOME_ACISPLUGIN_INSTALL_RES_DATA})
diff --git a/src/ACISExport/CMakeLists.txt b/src/ACISExport/CMakeLists.txt
deleted file mode 100644 (file)
index 8c067fc..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (C) 2014  OPEN CASCADE
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-
-# --- options ---
-
-# additional include directories
-INCLUDE_DIRECTORIES(
-  ${CAS_INCLUDE_DIRS}
-  ${ACIS_INCLUDE_DIRS}
-  ${CMAKE_BINARY_DIR}
-  ${CMAKE_BINARY_DIR}/src/common
-  ${CMAKE_SOURCE_DIR}/src/common
-)
-
-# additional preprocessor / compiler flags
-ADD_DEFINITIONS(
-  ${CAS_DEFINITIONS}
-)
-
-# libraries to link to
-SET(_link_LIBRARIES
-  ${CAS_TKernel} 
-  ${CAS_TKXSBase}
-  ${ACIS_LIBRARIES}
-  ${KERNEL_SALOMEBasics}
-)
-
-# --- sources ---
-
-# sources / static
-SET(ACISExport_SOURCES
-  ACISExport.cxx
-)
-
-# --- rules ---
-
-ADD_LIBRARY(ACISExport ${ACISExport_SOURCES})
-TARGET_LINK_LIBRARIES(ACISExport ${_link_LIBRARIES} )
-INSTALL(TARGETS ACISExport EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
diff --git a/src/ACISImport/CMakeLists.txt b/src/ACISImport/CMakeLists.txt
deleted file mode 100644 (file)
index 3269faf..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (C) 2014  OPEN CASCADE
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-
-# --- options ---
-
-# additional include directories
-INCLUDE_DIRECTORIES(
-  ${CAS_INCLUDE_DIRS}
-  ${ACIS_INCLUDE_DIRS}
-  ${CMAKE_BINARY_DIR}
-  ${CMAKE_BINARY_DIR}/src/common
-  ${CMAKE_SOURCE_DIR}/src/common
-)
-
-# additional preprocessor / compiler flags
-ADD_DEFINITIONS(
-  ${CAS_DEFINITIONS}
-)
-
-# libraries to link to
-SET(_link_LIBRARIES
-  ${CAS_TKernel} 
-  ${CAS_TKXSBase}
-  ${CAS_TKCAF}
-  ${CAS_TKLCAF}
-  ${CAS_TKMath}
-  ${CAS_TKBRep}
-  ${ACIS_LIBRARIES}
-  ${KERNEL_SALOMEBasics}
-)
-
-# --- sources ---
-
-# sources / static
-SET(ACISImport_SOURCES
-  ACISImport.cxx
-)
-
-# --- rules ---
-
-ADD_LIBRARY(ACISImport ${ACISImport_SOURCES})
-TARGET_LINK_LIBRARIES(ACISImport ${_link_LIBRARIES} )
-INSTALL(TARGETS ACISImport EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
old mode 100644 (file)
new mode 100755 (executable)
index 94ba750..d7dbb92
@@ -1,4 +1,4 @@
-// Copyright (C) 2014  OPEN CASCADE
+// 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
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-#if !defined (__ACISPLUGIN_EXPORTS_H)
-#define __ACISPLUGIN_EXPORTS_H
+#ifndef _ACISPLUGIN_ENGINE_HXX_
+#define _ACISPLUGIN_ENGINE_HXX_
 
 #ifdef WIN32
-#  if defined ACISExport_EXPORTS || defined ACISEXPORTS_EXPORTS || defined ACISImport_EXPORTS || defined ACISIMPORT_EXPORTS
-#    define ACISPLUGIN_EXPORT __declspec(dllexport)
-#  else
-#    define ACISPLUGIN_EXPORT __declspec(dllimport)
-#  endif
-#else  // WIN32
-#  define ACISPLUGIN_EXPORT
-#endif // 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 // __ACISPLUGIN_EXPORTS_H
+#endif
index aaecd275842d567fe7ef5dd4d42529126e055003..455033bc3f05a07d2a24e00a31abcf0a592d887f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014  OPEN CASCADE
+// 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
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-#include <ACISPLUGIN_exports.h>
-#include <ACISPLUGIN_version.h>
+// internal includes
+#include "ACISPlugin_ExportDriver.hxx"
+#include "ACISPlugin_IExport.hxx"
+#include "ACISPlugin_Engine.hxx"
 
+// KERNEL includes
 #include <Basics_Utils.hxx>
+#include <utilities.h>
 
+// GEOM includes
+#include <GEOM_Function.hxx>
+
+// OOCT includes
 #include <IFSelect_ReturnStatus.hxx>
 #include <SatControl_Writer.hxx>
 #include <TCollection_AsciiString.hxx>
 #include <TopoDS_Shape.hxx>
 
 #ifdef ACIS_HASLICENSE
-#include <ACISPLUGIN_license.h>
+#include "ACISPlugin_license.h"
 
 #include <OCCLicense_Activate.hxx>
 #include <Standard_LicenseError.hxx>
 #endif // ACIS_HASLICENSE
 
-extern "C"
+//=======================================================================
+//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
 {
-  /*!
-    \brief Get version of the plugin.
-    \return the version of the plugin
-  */
-  ACISPLUGIN_EXPORT
-  int GetVersion()
-  {
-    return ACISPLUGIN_VERSION;
-  }
-
-  /*!
-    \brief Get version of the plugin.
-    \return the string representation of the plugin's version
-  */
-  ACISPLUGIN_EXPORT
-  char* GetVersionStr()
-  {
-    return (char*)ACISPLUGIN_VERSION_STR;
-  }
-
-  /*!
-    \brief Export shape to the ACIS format.
-    \param theShape shape being exported
-    \param theFileName file path
-    \param theFormatName file format signature
-    \return error status (0 in case of success)
-  */
-  ACISPLUGIN_EXPORT
-  int Export(const TopoDS_Shape& theShape,
-             const TCollection_AsciiString& theFileName,
-             const TCollection_AsciiString& theFormatName)
-  {
 #ifdef ACIS_HASLICENSE
     try {
       OCCLicense_Activate("SAT-W-"OCC_VERSION_STRING, ACIS_WRITE_LICENSE);
@@ -76,23 +74,60 @@ extern "C"
       return 1;
     }
 #endif // ACIS_HASLICENSE
-    
-    // Set "C" numeric locale to save numbers correctly
-    Kernel_Utils::Localizer loc;
-    
-    SatControl_Writer aWriter;
-    
-    try {
-      IFSelect_ReturnStatus status ;
-      status = aWriter.TransferShape(theShape);
-      if ( status == IFSelect_RetDone )
-       status = aWriter.WriteFile( theFileName.ToCString() ) ;
-      if ( status == IFSelect_RetDone )
-       return 1;
-    }
-    catch(Standard_Failure) {
-      return 1;
-    }
+
+  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;
-  }
-} // end of extern "C"
+}
+
+//=======================================================================
+//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<GEOM_Param>& theParams )
+{
+  return false;
+}
+
+IMPLEMENT_STANDARD_HANDLE( ACISPlugin_ExportDriver,GEOM_BaseDriver );
+IMPLEMENT_STANDARD_RTTIEXT( ACISPlugin_ExportDriver,GEOM_BaseDriver );
index 352cc63be7f5475c513bdf502d0332ae319371aa..c7cd2ec5b254e99ca1b563547b144d6c06030221 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014  OPEN CASCADE
+// 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
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-#include <ACISPLUGIN_exports.h>
-#include <ACISPLUGIN_version.h>
+// internal includes
+#include "ACISPlugin_ImportDriver.hxx"
+#include "ACISPlugin_IImport.hxx"
+#include "ACISPlugin_Engine.hxx"
 
+// KERNEL includes
 #include <Basics_Utils.hxx>
+#include <utilities.h>
 
+// GEOM includes
+#include <GEOM_Function.hxx>
+#include <GEOMImpl_Types.hxx>
+
+// OOCT includes
 #include <AcisAttr_AttribGenName.hxx>
 #include <AcisEnt_Attrib.hxx>
 #include <IFSelect_ReturnStatus.hxx>
 #include <XSControl_TransferReader.hxx>
 #include <XSControl_WorkSession.hxx>
 
+#include <StdFail_NotDone.hxx>
+
 #ifdef ACIS_HASLICENSE
-#include <ACISPLUGIN_license.h>
+#include "ACISPlugin_license.h"
 
 #include <OCCLicense_Activate.hxx>
 #include <Standard_LicenseError.hxx>
 #endif // ACIS_HASLICENSE
 
-extern "C"
+//=======================================================================
+//function : GetID
+//purpose  :
+//=======================================================================
+const Standard_GUID& ACISPlugin_ImportDriver::GetID()
 {
-  /*!
-    \brief Get version of the plugin.
-    \return the version of the plugin
-  */
-  ACISPLUGIN_EXPORT
-  int GetVersion()
-  {
-    return ACISPLUGIN_VERSION;
-  }
+  static Standard_GUID aGUID("4e2fea67-84bc-44fe-9a32-ac52a246154c");
+  return aGUID;
+}
 
-  /*!
-    \brief Get version of the plugin.
-    \return the string representation of the plugin's version
-  */
-  ACISPLUGIN_EXPORT
-  char* GetVersionStr()
-  {
-    return (char*)ACISPLUGIN_VERSION_STR;
-  }
+//=======================================================================
+//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;
 
-  /*!
-    \brief Import shape from the ACIS format.
-    \param theFileName file path
-    \param theFormatName file format signature
-    \param theError error description, if there's any, is returned via this parameter
-    \param theShapeLabel a label in the CAF tree where shape attributes are set to
-    \return imported shape
-  */
-  ACISPLUGIN_EXPORT
-  TopoDS_Shape Import(const TCollection_AsciiString& theFileName,
-                      const TCollection_AsciiString& /*theFormatName*/,
-                      TCollection_AsciiString&       theError,
-                     const TDF_Label& theShapeLabel)
-  {
-    TopoDS_Shape aResShape;
-    
 #ifdef ACIS_HASLICENSE
-    try {
-      OCCLicense_Activate( "SAT-R-"OCC_VERSION_STRING, ACIS_READ_LICENSE);
-    }
-    catch (Standard_LicenseError) {
-      return aResShape;
-    }
+  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;
-    
-    try {
-      IFSelect_ReturnStatus status = aReader.ReadFile(theFileName.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;
-           
-           //if( S.IsEqual(aResShape) ) continue;
-           
-           // create label and set shape
-           TDF_Label L;
-           TDF_TagSource aTag;
-           L = aTag.NewChild(theShapeLabel);
-           TNaming_Builder tnBuild(L);
-           tnBuild.Generated(S);
-           
-           // set a name
-           TCollection_ExtendedString str(aName);
-           TDataStd_Name::Set(L,str);
-         }
-       }
-      }
-      else {
-       theError = "Wrong format of the imported file. Can't import file.";
-       aResShape.Nullify();
+  // 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);
       }
     }
-    catch (Standard_Failure) {
-      Handle(Standard_Failure) aFail = Standard_Failure::Caught();
-      theError = aFail->GetMessageString();
-      aResShape.Nullify();
-    }
-    return aResShape;
   }
-} // end of extern "C"
+  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<GEOM_Param>& 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 );
index d61376fbdd06dde76e89f342e855ede4b2946c5e..e737dd52e333ab9b72d49d71cd6de420b58e39f1 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014  OPEN CASCADE
+# 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
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-ADD_SUBDIRECTORY(common)
-ADD_SUBDIRECTORY(ACISExport)
-ADD_SUBDIRECTORY(ACISImport)
+IF(SALOME_BUILD_GUI)
+  INCLUDE(UseQt4Ext)
+  INCLUDE(${QT_USE_FILE})
+ENDIF()
+
+# --- options ---
+
+# additional include directories
+INCLUDE_DIRECTORIES(
+  ${CAS_INCLUDE_DIRS}
+  ${ACIS_INCLUDE_DIRS}
+  ${KERNEL_INCLUDE_DIRS}
+  ${GUI_INCLUDE_DIRS}
+  ${PROJECT_BINARY_DIR}
+  ${PROJECT_BINARY_DIR}/idl
+  )
+  
+IF(SALOME_BUILD_GUI)
+  INCLUDE_DIRECTORIES(
+    ${QT_INCLUDE_DIRS}
+    )
+ENDIF()
+
+# additional preprocessor / compiler flags
+ADD_DEFINITIONS(
+  ${CAS_DEFINITIONS}
+  )
+  
+IF(SALOME_BUILD_GUI)
+ADD_DEFINITIONS(
+  ${QT_DEFINITIONS}
+  )
+ENDIF()
+
+# libraries to link to
+SET(_link_LIBRARIES
+  ${CAS_TKXSBase}
+  ${ACIS_LIBRARIES}
+  ${KERNEL_SALOMEBasics}
+  ${KERNEL_SALOMELocalTrace}
+  ${KERNEL_OpUtil}
+  ${GEOM_SalomeIDLGEOM}
+  ${GEOM_GEOMEngine}
+  ${GEOM_GEOMImpl}
+  ${GEOM_GEOMClient}
+  SalomeIDLACISPlugin
+  )
+  
+IF(SALOME_BUILD_GUI)
+  SET(_link_LIBRARIES
+    ${_link_LIBRARIES}
+    ${GEOM_GEOMBase}
+    )
+ENDIF()
+
+
+# --- headers ---
+
+SET(ACISPluginEngine_HEADERS
+  ACISPlugin_Operations_i.hh
+  ACISPlugin_Engine.hxx
+  ACISPlugin_OperationsCreator.hh
+  ACISPlugin_IOperations.hxx
+  ACISPlugin_IExport.hxx 
+  ACISPlugin_IImport.hxx
+  ACISPlugin_ImportDriver.hxx 
+  ACISPlugin_ExportDriver.hxx
+  ACISPlugin_IECallBack.hxx
+  )
+
+IF(SALOME_BUILD_GUI)  
+  # header files / to be processed by moc
+  SET(_moc_HEADERS
+    ACISPlugin_ExportDlg.h
+    ACISPlugin_ImportDlg.h
+    )
+ENDIF()
+
+# --- sources ---
+
+IF(SALOME_BUILD_GUI)
+  # sources / moc wrappings
+  QT4_WRAP_CPP(_moc_SOURCES ${_moc_HEADERS})
+
+  SET(ACISPluginGUI_SOURCES
+    ACISPluginGUI.cxx
+    ACISPlugin_ExportDlg.cxx
+    ACISPlugin_ImportDlg.cxx
+    ${_moc_SOURCES}
+    )
+ENDIF()
+  
+SET(ACISPluginEngine_SOURCES
+  ACISPluginEngine.cxx
+  ACISPlugin_OperationsCreator.cc
+  ACISPlugin_Operations_i.cc
+  ACISPlugin_IOperations.cxx
+  ACISPlugin_ExportDriver.cxx
+  ACISPlugin_ImportDriver.cxx
+  ACISPlugin_IECallBack.cxx
+  )
+  
+# resource files / to be processed by lrelease
+SET(ACISPlugin_RESOURCES
+  resources/ACISPlugin_msg_en.ts
+  resources/ACISPlugin_msg_fr.ts
+  resources/ACISPlugin_msg_ja.ts
+  )
+
+# ACIS plugin scripts
+SET(_python_ACIS_SCRIPTS
+  ACISPluginBuilder.py
+  __init__.py
+)
+
+# --- rules ---
+
+# install Engine library
+ADD_LIBRARY(ACISPluginEngine ${ACISPluginEngine_SOURCES})
+TARGET_LINK_LIBRARIES(ACISPluginEngine ${_link_LIBRARIES})
+INSTALL(TARGETS ACISPluginEngine EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
+
+# install GUI library
+IF(SALOME_BUILD_GUI)
+  ADD_LIBRARY(ACISPluginGUI ${ACISPluginGUI_SOURCES})
+  TARGET_LINK_LIBRARIES(ACISPluginGUI ${_link_LIBRARIES})
+  INSTALL(TARGETS ACISPluginGUI EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
+  # install resources
+  QT4_INSTALL_TS_RESOURCES("${ACISPlugin_RESOURCES}" "${SALOME_ACISPLUGIN_INSTALL_RES_DATA}")
+ENDIF()
+
+# install headers
+INSTALL(FILES ${ACISPluginEngine_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
+
+# install python scripts
+SALOME_INSTALL_SCRIPTS("${_python_ACIS_SCRIPTS}" ${SALOME_INSTALL_PYTHON}/salome/ACISPlugin DEF_PERMS)
+
+# configure license file
+CONFIGURE_FILE(ACISPlugin_license.h.in ACISPlugin_license.h)
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
deleted file mode 100644 (file)
index 4a6e068..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2014  OPEN CASCADE
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-
-CONFIGURE_FILE(ACISPLUGIN_license.h.in ACISPLUGIN_license.h)