X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FModel%2FModel_ResultPart.cpp;h=7c42dd987e0148edfc40ce12a2d3d543fe67f00f;hb=636173621bed5da6280b57908764a944f014177c;hp=f89eff7d738ec5632febcd3f19e9f44ff4b2046a;hpb=645e2cb70c0e40290725f28fdc5fec8a93338d28;p=modules%2Fshaper.git diff --git a/src/Model/Model_ResultPart.cpp b/src/Model/Model_ResultPart.cpp index f89eff7d7..7c42dd987 100644 --- a/src/Model/Model_ResultPart.cpp +++ b/src/Model/Model_ResultPart.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2019 CEA/DEN, EDF R&D +// Copyright (C) 2014-2020 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -32,9 +32,14 @@ #include #include #include +#include #include +#include + +#include + #include #include #include @@ -54,6 +59,7 @@ void Model_ResultPart::initAttributes() data()->addAttribute(BASE_REF_ID(), ModelAPI_AttributeReference::typeId()); data()->addAttribute(DEFLECTION_ID(), ModelAPI_AttributeDouble::typeId()); data()->addAttribute(TRANSPARENCY_ID(), ModelAPI_AttributeDouble::typeId()); + data()->addAttribute(ISO_LINES_ID(), ModelAPI_AttributeIntArray::typeId()); if (aDocRef->isInitialized() && // initialized immediately means already exist and will be loaded !Model_Application::getApplication()->hasDocument(aDocRef->docId())) @@ -89,7 +95,7 @@ void Model_ResultPart::activate() SessionPtr aMgr = ModelAPI_Session::get(); if (!aMgr->isOperation()) { // open transaction even document is not created to set current docs in setActiveDocument - std::string aMsg = "Activation " + data()->name(); + std::string aMsg = "Activation " + Locale::Convert::toString(data()->name()); aMgr->startOperation(aMsg); isNewTransaction = true; } @@ -193,12 +199,10 @@ std::shared_ptr Model_ResultPart::shape() ResultPtr anOrigResult = baseRef(); std::shared_ptr anOrigShape = anOrigResult->shape(); if (anOrigShape.get()) { - TopoDS_Shape aShape = anOrigShape->impl(); - if (!aShape.IsNull()) { - aShape.Move(*(myTrsf.get())); - myShape = aShape; - aResult->setImpl(new TopoDS_Shape(aShape)); - } + GeomTrsfPtr aTrsf = std::make_shared(new gp_Trsf(*myTrsf)); + GeomAlgoAPI_Transform aTransform(anOrigShape, aTrsf); + aResult = aTransform.shape(); + myShape = aResult->impl(); } if (!myShape.IsNull() && aToSendUpdate) { static const Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_UPDATED); @@ -252,7 +256,7 @@ static bool IsEqualTrsf(gp_Trsf& theT1, gp_Trsf theT2) { return true; } -std::string Model_ResultPart::nameInPart(const std::shared_ptr& theShape, +std::wstring Model_ResultPart::nameInPart(const std::shared_ptr& theShape, int& theIndex) { theIndex = 0; // not initialized @@ -278,21 +282,21 @@ std::string Model_ResultPart::nameInPart(const std::shared_ptr& t } } // something is not right - return ""; + return L""; } TopoDS_Shape aShape = theShape->impl(); if (aShape.IsNull()) - return ""; + return L""; // getting an access to the document of part std::shared_ptr aDoc = std::dynamic_pointer_cast(partDoc()); if (!aDoc.get()) // the part document is not presented for the moment - return ""; - TDF_Label anAccessLabel = aDoc->generalLabel(); + return L""; + MAYBE_UNUSED TDF_Label anAccessLabel = aDoc->generalLabel(); // make the selection attribute anyway: // otherwise just by name it is not stable to search the result - std::string aName; + std::wstring aName; // for this the context result is needed ResultPtr aContext; const std::string& aBodyGroup = ModelAPI_ResultBody::group(); @@ -326,7 +330,11 @@ bool Model_ResultPart::updateInPart(const int theIndex) AttributeSelectionListPtr aSelAttr = aDoc->selectionInPartFeature(); AttributeSelectionPtr aThisAttr = aSelAttr->value(theIndex - 1); if (aThisAttr.get()) { - return aThisAttr->update(); + if (aThisAttr->update()) { + bool aRemove = false; + aThisAttr->updateInHistory(aRemove); + return true; // it was updated + } } } return false; // something is wrong @@ -341,7 +349,7 @@ gp_Trsf Model_ResultPart::sumTrsf() { return aResult; } -bool Model_ResultPart::combineGeometrical(const int theIndex, std::string& theNewName) +bool Model_ResultPart::combineGeometrical(const int theIndex, std::wstring& theNewName) { std::shared_ptr aDoc = std::dynamic_pointer_cast(partDoc()); if (aDoc.get()) { @@ -360,7 +368,7 @@ bool Model_ResultPart::combineGeometrical(const int theIndex, std::string& theNe } std::shared_ptr Model_ResultPart::shapeInPart( - const std::string& theName, const std::string& theType, int& theIndex) + const std::wstring& theName, const std::string& theType, int& theIndex) { theIndex = 0; // not found yet std::shared_ptr aResult;