+// 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>
*/
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())
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());
#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;
}