Salome HOME
Merge branch 'Dev_0.6.1' of newgeom:newgeom into Dev_0.6.1
[modules/shaper.git] / src / ExchangePlugin / ExchangePlugin_ImportFeature.cpp
index a0c659805f2f72c7a7ad9441c91a3fad5107f316..11abbb3904ae5cd475c3100ca87601e61dfb1297 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
 /*
  * ExchangePlugin_ImportFeature.cpp
  *
 
 #include <GeomAPI_Shape.h>
 #include <Config_Common.h>
-#include <Events_Error.h>
 #include <ModelAPI_AttributeString.h>
 #include <ModelAPI_Data.h>
 #include <ModelAPI_Document.h>
 #include <ModelAPI_Object.h>
 #include <ModelAPI_ResultBody.h>
-
 #include <TCollection_AsciiString.hxx>
 #include <TDF_Label.hxx>
 #include <TopoDS_Shape.hxx>
@@ -69,7 +69,7 @@ void ExchangePlugin_ImportFeature::initAttributes()
  */
 void ExchangePlugin_ImportFeature::execute()
 {
-  AttributeStringPtr aFilePathAttr = boost::dynamic_pointer_cast<ModelAPI_AttributeString>(
+  AttributeStringPtr aFilePathAttr = std::dynamic_pointer_cast<ModelAPI_AttributeString>(
       data()->attribute(ExchangePlugin_ImportFeature::FILE_PATH_ID()));
   std::string aFilePath = aFilePathAttr->value();
   if(aFilePath.empty())
@@ -101,26 +101,40 @@ bool ExchangePlugin_ImportFeature::importFile(const std::string& theFileName)
                             anUnknownLabel);
    // Check if shape is valid
    if ( aShape.IsNull() ) {
-     std::string aShapeError = "An error occurred while importing " + theFileName + ": ";
-     aShapeError = aShapeError + std::string(anError.ToCString());
-     Events_Error::send(aShapeError, this);
- #ifdef _DEBUG
-     std::cerr << aShapeError << std::endl;
- #endif
+     const static std::string aShapeError = 
+       "An error occurred while importing " + theFileName + ": " + anError.ToCString();
+     setError(aShapeError);
      return false;
    }
+  //
    // Pass the results into the model
    std::string anObjectName = aPath.Name().ToCString();
    data()->setName(anObjectName);
-   boost::shared_ptr<ModelAPI_ResultBody> aResult = document()->createBody(data());
-   boost::shared_ptr<GeomAPI_Shape> aGeomShape(new GeomAPI_Shape);
+   std::shared_ptr<ModelAPI_ResultBody> aResultBody = document()->createBody(data());
+   std::shared_ptr<GeomAPI_Shape> aGeomShape(new GeomAPI_Shape);
    aGeomShape->setImpl(new TopoDS_Shape(aShape));
-   aResult->store(aGeomShape);
-   setResult(aResult);
+
+   //LoadNamingDS of the imported shape
+   loadNamingDS(aGeomShape, aResultBody);
+
+   setResult(aResultBody);
 
    return true;
 }
 
+//============================================================================
+void ExchangePlugin_ImportFeature::loadNamingDS(
+                                   std::shared_ptr<GeomAPI_Shape> theGeomShape, 
+                                            std::shared_ptr<ModelAPI_ResultBody> theResultBody)
+{  
+  //load result
+  theResultBody->store(theGeomShape);
+  int aTag(1);
+  theResultBody->loadFirstLevel(theGeomShape, aTag);
+  theResultBody->loadDisconnectedEdges(theGeomShape, aTag);
+  theResultBody->loadDisconnectedVertexes(theGeomShape, aTag); 
+}
+
 LibHandle ExchangePlugin_ImportFeature::loadImportPlugin(const std::string& theFormatName)
 {
   std::string aLibName = library(theFormatName + ID());
@@ -138,20 +152,15 @@ LibHandle ExchangePlugin_ImportFeature::loadImportPlugin(const std::string& theF
 #else
     anImportError = anImportError + std::string(dlerror());
 #endif
-    Events_Error::send(anImportError, this);
-#ifdef _DEBUG
-    std::cerr << anImportError << std::endl;
-#endif
+    setError(anImportError);
     return false;
   }
   // Test loaded plugin for existence of valid "Import" function:
   importFunctionPointer fp = (importFunctionPointer) GetProc(anImportLib, "Import");
   if (!fp) {
-    std::string aFunctionError = "No valid \"Import\" function was found in the " + aLibName;
-    Events_Error::send(aFunctionError, this);
-#ifdef _DEBUG
-    std::cerr << aFunctionError << std::endl;
-#endif
+    const static std::string aFunctionError = 
+      "No valid \"Import\" function was found in the " + aLibName;
+    setError(aFunctionError);
     UnLoadLib(anImportLib)
     return NULL;
   }