X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FExchangePlugin%2FExchangePlugin_ImportFeature.cpp;h=e2d29c9c85ad7b2c8255a96617f8e068d9c1e5b0;hb=1d8c393b3a52defdabe34c17f1f370e71d317531;hp=f5bf2bb11ac97ee686b6ef8b18daea22612cd5fc;hpb=eaa34d7803a364b8da51b6dde8b0ee3c469ae27a;p=modules%2Fshaper.git diff --git a/src/ExchangePlugin/ExchangePlugin_ImportFeature.cpp b/src/ExchangePlugin/ExchangePlugin_ImportFeature.cpp index f5bf2bb11..e2d29c9c8 100644 --- a/src/ExchangePlugin/ExchangePlugin_ImportFeature.cpp +++ b/src/ExchangePlugin/ExchangePlugin_ImportFeature.cpp @@ -1,30 +1,27 @@ // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -/* - * ExchangePlugin_ImportFeature.cpp - * - * Created on: Aug 28, 2014 - * Author: sbh - */ +// File: ExchangePlugin_ImportFeature.cpp +// Created: Aug 28, 2014 +// Author: Sergey BELASH #include + #include -#include #include +#include +#include #include + #include #include #include +#include #include #include #include #include -#include -#include -#include -#include #include #include @@ -63,50 +60,44 @@ void ExchangePlugin_ImportFeature::initAttributes() */ void ExchangePlugin_ImportFeature::execute() { - AttributeStringPtr aFilePathAttr = std::dynamic_pointer_cast( - data()->attribute(ExchangePlugin_ImportFeature::FILE_PATH_ID())); + AttributeStringPtr aFilePathAttr = + this->string(ExchangePlugin_ImportFeature::FILE_PATH_ID()); std::string aFilePath = aFilePathAttr->value(); - if(aFilePath.empty()) + if (aFilePath.empty()) return; + importFile(aFilePath); } bool ExchangePlugin_ImportFeature::importFile(const std::string& theFileName) { // retrieve the file and plugin library names - TCollection_AsciiString aFileName(theFileName.c_str()); - OSD_Path aPath(aFileName); - TCollection_AsciiString aFormatName = aPath.Extension(); - // ".brep" -> "BREP", TCollection_AsciiString are numbered from 1 - aFormatName = aFormatName.SubString(2, aFormatName.Length()); - aFormatName.UpperCase(); + // ".brep" -> "BREP" + std::string anExtension = GeomAlgoAPI_Tools::File_Tools::extension(theFileName); // Perform the import - TCollection_AsciiString anError; - TDF_Label anUnknownLabel = TDF_Label(); - - TopoDS_Shape aShape; - if (aFormatName == "BREP") { - aShape = BREPImport::Import(aFileName, aFormatName, anError, anUnknownLabel); - } else if (aFormatName == "STEP" || aFormatName == "STP") { - aShape = STEPImport::Import(aFileName, aFormatName, anError, anUnknownLabel); - } else if (aFormatName == "IGES") { - aShape = IGESImport::Import(aFileName, aFormatName, anError, anUnknownLabel); + std::string anError; + + std::shared_ptr aGeomShape; + if (anExtension == "BREP" || anExtension == "BRP") { + aGeomShape = BREPImport(theFileName, anExtension, anError); + } else if (anExtension == "STEP" || anExtension == "STP") { + aGeomShape = STEPImport(theFileName, anExtension, anError); + } else if (anExtension == "IGES" || anExtension == "IGS") { + aGeomShape = IGESImport(theFileName, anExtension, anError); } // Check if shape is valid - if ( aShape.IsNull() ) { - const static std::string aShapeError = - "An error occurred while importing " + theFileName + ": " + anError.ToCString(); - setError(aShapeError); - return false; - } + if ( aGeomShape->isNull() ) { + const static std::string aShapeError = + "An error occurred while importing " + theFileName + ": " + anError; + setError(aShapeError); + return false; + } // Pass the results into the model - std::string anObjectName = aPath.Name().ToCString(); + std::string anObjectName = GeomAlgoAPI_Tools::File_Tools::name(theFileName); data()->setName(anObjectName); std::shared_ptr aResultBody = document()->createBody(data()); - std::shared_ptr aGeomShape(new GeomAPI_Shape); - aGeomShape->setImpl(new TopoDS_Shape(aShape)); //LoadNamingDS of the imported shape loadNamingDS(aGeomShape, aResultBody); @@ -122,13 +113,9 @@ void ExchangePlugin_ImportFeature::loadNamingDS( std::shared_ptr theResultBody) { //load result - theResultBody->store(theGeomShape); + theResultBody->getBodyBuilder()->store(theGeomShape); int aTag(1); std::string aNameMS = "Shape"; - theResultBody->loadFirstLevel(theGeomShape, aNameMS, aTag); - //std::string aNameDE = "DiscEdges"; - //theResultBody->loadDisconnectedEdges(theGeomShape, aNameDE, aTag); - //std::string aNameDV = "DiscVertexes"; - //theResultBody->loadDisconnectedVertexes(theGeomShape, aNameDV, aTag); + theResultBody->getBodyBuilder()->loadFirstLevel(theGeomShape, aNameMS, aTag); }