X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_BodyBuilder.cpp;h=383661d8642f75678ef6a7f92a55015e398f3455;hb=5c59bf6725e7e4855b5ca956475d705e2d5b014c;hp=c8d20dbeee3044eb9e378a575cdf81e5110b781f;hpb=43a02140c75a93aecbc6a5cf45f60ce3e2f33703;p=modules%2Fshaper.git diff --git a/src/Model/Model_BodyBuilder.cpp b/src/Model/Model_BodyBuilder.cpp index c8d20dbee..383661d86 100755 --- a/src/Model/Model_BodyBuilder.cpp +++ b/src/Model/Model_BodyBuilder.cpp @@ -1,8 +1,22 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: Model_ResultBody.cpp -// Created: 08 Jul 2014 -// Author: Mikhail PONIKAROV +// Copyright (C) 2014-2017 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 +// 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 +// #include @@ -66,30 +80,31 @@ static void evolutionToSelectionRec(TDF_Label theLab, const bool theFlag) { } else { TDataStd_Integer::Set(theLab, anEvolution); } - + for(TNaming_Iterator anIter(aName); anIter.More(); anIter.Next()) { // iterator goes in reversed order relatively to the Builder, to, make the list reversed aShapePairs.push_front(std::pair (anIter.OldShape(), anIter.NewShape())); } - } - // create new - TNaming_Builder aBuilder(theLab); - TNaming_Evolution anEvol = (TNaming_Evolution)(anEvolution); - std::list >::iterator aPairsIter = aShapePairs.begin(); - for(; aPairsIter != aShapePairs.end(); aPairsIter++) { - if (theFlag) { // disabled => make selection - aBuilder.Select(aPairsIter->second, aPairsIter->first); - } else if (anEvol == TNaming_GENERATED) { - aBuilder.Generated(aPairsIter->first, aPairsIter->second); - } else if (anEvol == TNaming_MODIFY) { - aBuilder.Modify(aPairsIter->first, aPairsIter->second); - } else if (anEvol == TNaming_DELETE) { - aBuilder.Delete(aPairsIter->first); - } else if (anEvol == TNaming_PRIMITIVE) { - aBuilder.Generated(aPairsIter->second); - } else if (anEvol == TNaming_SELECTED) { - aBuilder.Select(aPairsIter->second, aPairsIter->first); + + // create new + TNaming_Builder aBuilder(theLab); + TNaming_Evolution anEvol = (TNaming_Evolution)(anEvolution); + std::list >::iterator aPairsIter = aShapePairs.begin(); + for(; aPairsIter != aShapePairs.end(); aPairsIter++) { + if (theFlag) { // disabled => make selection + aBuilder.Select(aPairsIter->second, aPairsIter->first); + } else if (anEvol == TNaming_GENERATED) { + aBuilder.Generated(aPairsIter->first, aPairsIter->second); + } else if (anEvol == TNaming_MODIFY) { + aBuilder.Modify(aPairsIter->first, aPairsIter->second); + } else if (anEvol == TNaming_DELETE) { + aBuilder.Delete(aPairsIter->first); + } else if (anEvol == TNaming_PRIMITIVE) { + aBuilder.Generated(aPairsIter->second); + } else if (anEvol == TNaming_SELECTED) { + aBuilder.Select(aPairsIter->second, aPairsIter->first); + } } } // recursive call for all sub-labels @@ -115,7 +130,7 @@ void Model_BodyBuilder::store(const std::shared_ptr& theShape, if (aData) { TDF_Label& aShapeLab = aData->shapeLab(); // clean builders - clean(); + clean(); // store the new shape as primitive TNaming_Builder aBuilder(aShapeLab); if (!theShape) @@ -135,7 +150,7 @@ void Model_BodyBuilder::store(const std::shared_ptr& theShape, } } - aBuilder.Generated(aShape); + aBuilder.Generated(aShape); // register name aShapeLab.ForgetAttribute(TDF_Reference::GetID()); if(!aBuilder.NamedShape()->IsEmpty()) { @@ -143,7 +158,8 @@ void Model_BodyBuilder::store(const std::shared_ptr& theShape, if(aBuilder.NamedShape()->Label().FindAttribute(TDataStd_Name::GetID(),anAttr)) { std::string aName (TCollection_AsciiString(anAttr->Get()).ToCString()); if(!aName.empty()) { - std::shared_ptr aDoc = std::dynamic_pointer_cast(document()); + std::shared_ptr aDoc = + std::dynamic_pointer_cast(document()); aDoc->addNamingName(aBuilder.NamedShape()->Label(), aName); } } @@ -158,7 +174,7 @@ void Model_BodyBuilder::storeGenerated(const std::shared_ptr& the if (aData) { TDF_Label& aShapeLab = aData->shapeLab(); // clean builders - clean(); + clean(); // store the new shape as primitive TNaming_Builder aBuilder(aShapeLab); if (!theFromShape || !theToShape) @@ -176,7 +192,8 @@ void Model_BodyBuilder::storeGenerated(const std::shared_ptr& the if(aBuilder.NamedShape()->Label().FindAttribute(TDataStd_Name::GetID(),anAttr)) { std::string aName (TCollection_AsciiString(anAttr->Get()).ToCString()); if(!aName.empty()) { - std::shared_ptr aDoc = std::dynamic_pointer_cast(document()); + std::shared_ptr aDoc = + std::dynamic_pointer_cast(document()); aDoc->addNamingName(aBuilder.NamedShape()->Label(), aName); } } @@ -191,7 +208,7 @@ void Model_BodyBuilder::storeModified(const std::shared_ptr& theO if (aData) { TDF_Label& aShapeLab = aData->shapeLab(); // clean builders - clean(); + clean(); // store the new shape as primitive TNaming_Builder aBuilder(aShapeLab); if (!theOldShape || !theNewShape) @@ -203,45 +220,13 @@ void Model_BodyBuilder::storeModified(const std::shared_ptr& theO if (aShapeNew.IsNull()) return; // null shape inside aBuilder.Modify(aShapeOld, aShapeNew); - if (theDecomposeSolidsTag && aShapeNew.ShapeType() == TopAbs_COMPOUND) { // make sub elements as subs - - // register name if it is possible - TCollection_AsciiString aName; - if(!aBuilder.NamedShape()->IsEmpty()) { - Handle(TDataStd_Name) anAttr; - if(aBuilder.NamedShape()->Label().FindAttribute(TDataStd_Name::GetID(),anAttr)) { - aName = TCollection_AsciiString(anAttr->Get()).ToCString(); - } - } - - TopoDS_Iterator aSubIter(aShapeNew); - for(int aTag = theDecomposeSolidsTag; aSubIter.More(); aSubIter.Next()) { - const TopoDS_Shape& aShape = aSubIter.Value(); - Handle(TNaming_NamedShape) aNS = TNaming_Tool::NamedShape(aShape, aShapeLab); - if(!aNS.IsNull() && !aNS->IsEmpty()) { - // This shape is already in document, don't add it. - continue; - } - TNaming_Builder aSubBuilder(aShapeLab.FindChild(aTag++)); - aSubBuilder.Generated(aSubIter.Value()); - if(!aName.IsEmpty()) { - TCollection_AsciiString aShapeType = aShape.ShapeType() == TopAbs_EDGE ? "_Edge_" : - aShape.ShapeType() == TopAbs_FACE ? "_Face_" : - aShape.ShapeType() == TopAbs_SOLID ? "_Solid_" : "_Shape_"; - std::string aSolidName = - (aName + aShapeType + TCollection_AsciiString(aTag - theDecomposeSolidsTag)).ToCString(); - std::shared_ptr aDoc = - std::dynamic_pointer_cast(document()); - aDoc->addNamingName(aSubBuilder.NamedShape()->Label(), aSolidName); - TDataStd_Name::Set(aSubBuilder.NamedShape()->Label(), aSolidName.c_str()); - } - } - } else if(!aBuilder.NamedShape()->IsEmpty()) { + if(!aBuilder.NamedShape()->IsEmpty()) { Handle(TDataStd_Name) anAttr; if(aBuilder.NamedShape()->Label().FindAttribute(TDataStd_Name::GetID(),anAttr)) { std::string aName (TCollection_AsciiString(anAttr->Get()).ToCString()); if(!aName.empty()) { - std::shared_ptr aDoc = std::dynamic_pointer_cast(document()); + std::shared_ptr aDoc = + std::dynamic_pointer_cast(document()); aDoc->addNamingName(aBuilder.NamedShape()->Label(), aName); } } @@ -253,7 +238,7 @@ void Model_BodyBuilder::storeWithoutNaming(const std::shared_ptr { std::shared_ptr aData = std::dynamic_pointer_cast(data()); if (aData) { - clean(); + clean(); if (!theShape.get()) return; // bad shape TopoDS_Shape aShape = theShape->impl(); @@ -303,7 +288,7 @@ void Model_BodyBuilder::generated( { TopoDS_Shape aShape = theNewShape->impl(); builder(theTag)->Generated(aShape); - if(!theName.empty()) + if(!theName.empty()) buildName(theTag, theName); } @@ -313,7 +298,7 @@ void Model_BodyBuilder::generated(const std::shared_ptr& theOldSh TopoDS_Shape anOldShape = theOldShape->impl(); TopoDS_Shape aNewShape = theNewShape->impl(); builder(theTag)->Generated(anOldShape, aNewShape); - if(!theName.empty()) + if(!theName.empty()) buildName(theTag, theName); TopAbs_ShapeEnum aGenShapeType = aNewShape.ShapeType(); if(aGenShapeType == TopAbs_WIRE || aGenShapeType == TopAbs_SHELL) { @@ -340,7 +325,7 @@ void Model_BodyBuilder::modified(const std::shared_ptr& theOldSha TopoDS_Shape anOldShape = theOldShape->impl(); TopoDS_Shape aNewShape = theNewShape->impl(); builder(theTag)->Modify(anOldShape, aNewShape); - if(!theName.empty()) + if(!theName.empty()) buildName(theTag, theName); } @@ -377,7 +362,8 @@ void Model_BodyBuilder::loadAndOrientModifiedShapes ( const int theTag, const std::string& theName, GeomAPI_DataMapOfShapeShape& theSubShapes, - const bool theIsStoreSeparate) + const bool theIsStoreSeparate, + const bool theIsStoreAsGenerated) { int anIndex = 1; int aTag = theTag; @@ -395,7 +381,8 @@ void Model_BodyBuilder::loadAndOrientModifiedShapes ( std::shared_ptr aRShape(new GeomAPI_Shape()); aRShape->setImpl((new TopoDS_Shape(aRoot))); theMS->modified(aRShape, aList); - std::list >::const_iterator anIt = aList.begin(), aLast = aList.end(); + std::list >::const_iterator + anIt = aList.begin(), aLast = aList.end(); for (; anIt != aLast; anIt++) { TopoDS_Shape aNewShape = (*anIt)->impl(); if (theSubShapes.isBound(*anIt)) { @@ -405,7 +392,13 @@ void Model_BodyBuilder::loadAndOrientModifiedShapes ( GeomShapePtr aGeomNewShape(new GeomAPI_Shape()); aGeomNewShape->setImpl(new TopoDS_Shape(aNewShape)); if(!aRoot.IsSame(aNewShape) && aResultShape->isSubShape(aGeomNewShape)) { - builder(aTag)->Modify(aRoot,aNewShape); + if(theIsStoreAsGenerated) { + // Here we store shapes as generated, to avoid problem when one parent shape produce + // several child shapes. In this case naming could not determine which shape to select. + builder(aTag)->Generated(aRoot,aNewShape); + } else { + builder(aTag)->Modify(aRoot,aNewShape); + } if(isBuilt) { if(theIsStoreSeparate) { aStream.str(std::string()); @@ -442,7 +435,8 @@ void Model_BodyBuilder::loadAndOrientGeneratedShapes ( std::shared_ptr aRShape(new GeomAPI_Shape()); aRShape->setImpl((new TopoDS_Shape(aRoot))); theMS->generated(aRShape, aList); - std::list >::const_iterator anIt = aList.begin(), aLast = aList.end(); + std::list >::const_iterator + anIt = aList.begin(), aLast = aList.end(); for (; anIt != aLast; anIt++) { TopoDS_Shape aNewShape = (*anIt)->impl(); if (theSubShapes.isBound(*anIt)) { @@ -456,15 +450,18 @@ void Model_BodyBuilder::loadAndOrientGeneratedShapes ( } TopAbs_ShapeEnum aGenShapeType = aNewShape.ShapeType(); if(aGenShapeType == TopAbs_WIRE || aGenShapeType == TopAbs_SHELL) { - TopAbs_ShapeEnum anExplodeShapeType = aGenShapeType == TopAbs_WIRE ? TopAbs_EDGE : TopAbs_FACE; + TopAbs_ShapeEnum anExplodeShapeType = + aGenShapeType == TopAbs_WIRE ? TopAbs_EDGE : TopAbs_FACE; const TDF_Label aLabel = builder(theTag)->NamedShape()->Label(); int aTag = 1; - std::shared_ptr aDoc = std::dynamic_pointer_cast(document()); + std::shared_ptr aDoc = + std::dynamic_pointer_cast(document()); for(TopExp_Explorer anExp(aNewShape, anExplodeShapeType); anExp.More(); anExp.Next()) { TDF_Label aChildLabel = aLabel.FindChild(aTag); TNaming_Builder aBuilder(aChildLabel); aBuilder.Generated(aRoot, anExp.Current()); - TCollection_AsciiString aChildName = TCollection_AsciiString((theName + "_").c_str()) + aTag; + TCollection_AsciiString aChildName = + TCollection_AsciiString((theName + "_").c_str()) + aTag; TDataStd_Name::Set(aChildLabel, aChildName.ToCString()); aTag++; } @@ -474,9 +471,9 @@ void Model_BodyBuilder::loadAndOrientGeneratedShapes ( } //======================================================================= -int getDangleShapes(const TopoDS_Shape& theShapeIn, +int getDangleShapes(const TopoDS_Shape& theShapeIn, const TopAbs_ShapeEnum theGeneratedFrom, - TopTools_DataMapOfShapeShape& theDangles) + TopTools_DataMapOfShapeShape& theDangles) { theDangles.Clear(); TopTools_IndexedDataMapOfShapeListOfShape subShapeAndAncestors; @@ -502,21 +499,21 @@ void loadGeneratedDangleShapes( TopTools_DataMapOfShapeShape dangles; if (!getDangleShapes(theShapeIn, theGeneratedFrom, dangles)) return; TopTools_DataMapIteratorOfDataMapOfShapeShape itr(dangles); - for (; itr.More(); itr.Next()) + for (; itr.More(); itr.Next()) theBuilder->Generated(itr.Key(), itr.Value()); } //======================================================================= -void Model_BodyBuilder::loadNextLevels(std::shared_ptr theShape, +void Model_BodyBuilder::loadNextLevels(std::shared_ptr theShape, const std::string& theName, int& theTag) { if(theShape->isNull()) return; - TopoDS_Shape aShape = theShape->impl(); + TopoDS_Shape aShape = theShape->impl(); std::string aName; - if (aShape.ShapeType() == TopAbs_SOLID) { + if (aShape.ShapeType() == TopAbs_SOLID) { TopExp_Explorer expl(aShape, TopAbs_FACE); - for (; expl.More(); expl.Next()) { - builder(theTag)->Generated(expl.Current()); + for (; expl.More(); expl.Next()) { + builder(theTag)->Generated(expl.Current()); TCollection_AsciiString aStr(theTag); aName = theName + aStr.ToCString(); buildName(theTag, aName); @@ -530,7 +527,7 @@ void Model_BodyBuilder::loadNextLevels(std::shared_ptr theShape, if (Faces.Extent() > 1 || (aShape.ShapeType() == TopAbs_SHELL && Faces.Extent() == 1)) { TopExp_Explorer expl(aShape, TopAbs_FACE); for (; expl.More(); expl.Next()) { - builder(theTag)->Generated(expl.Current()); + builder(theTag)->Generated(expl.Current()); TCollection_AsciiString aStr(theTag); aName = theName + aStr.ToCString(); buildName(theTag, aName); @@ -539,7 +536,7 @@ void Model_BodyBuilder::loadNextLevels(std::shared_ptr theShape, } TopTools_IndexedDataMapOfShapeListOfShape anEdgeAndNeighbourFaces; TopExp::MapShapesAndAncestors(aShape, TopAbs_EDGE, TopAbs_FACE, anEdgeAndNeighbourFaces); - for (Standard_Integer i = 1; i <= anEdgeAndNeighbourFaces.Extent(); i++) + for (Standard_Integer i = 1; i <= anEdgeAndNeighbourFaces.Extent(); i++) { const TopTools_ListOfShape& aLL = anEdgeAndNeighbourFaces.FindFromIndex(i); if (aLL.Extent() < 2) { @@ -577,25 +574,25 @@ void Model_BodyBuilder::loadNextLevels(std::shared_ptr theShape, theTag++; } } else { - TopExp_Explorer expl(aShape, TopAbs_EDGE); - for (; expl.More(); expl.Next()) { + TopExp_Explorer expl(aShape, TopAbs_EDGE); + for (; expl.More(); expl.Next()) { builder(theTag)->Generated(expl.Current()); TCollection_AsciiString aStr(theTag); aName = theName + aStr.ToCString(); buildName(theTag, aName); theTag++; - } + } // and load generated vertices. TopTools_DataMapOfShapeShape generated; - if (getDangleShapes(aShape, TopAbs_EDGE, generated)) + if (getDangleShapes(aShape, TopAbs_EDGE, generated)) { TNaming_Builder* pBuilder = builder(theTag++); - loadGeneratedDangleShapes(aShape, TopAbs_EDGE, pBuilder); + loadGeneratedDangleShapes(aShape, TopAbs_EDGE, pBuilder); } } } else if (aShape.ShapeType() == TopAbs_EDGE) { TopExp_Explorer expl(aShape, TopAbs_VERTEX); - for (; expl.More(); expl.Next()) { + for (; expl.More(); expl.Next()) { builder(theTag)->Generated(expl.Current()); TCollection_AsciiString aStr(theTag); aName = theName + aStr.ToCString(); @@ -606,8 +603,8 @@ void Model_BodyBuilder::loadNextLevels(std::shared_ptr theShape, } //======================================================================= -int findAmbiguities(const TopoDS_Shape& theShapeIn, - TopTools_ListOfShape& theList) +int findAmbiguities(const TopoDS_Shape& theShapeIn, + TopTools_ListOfShape& theList) { int aNumEdges(0); theList.Clear(); @@ -630,21 +627,21 @@ int findAmbiguities(const TopoDS_Shape& theShapeIn, if(ancestors1.Extent() == ancestors2.Extent() && ancestors1.Extent() > 1) { int aNum (ancestors2.Extent()); TopTools_ListIteratorOfListOfShape it(ancestors2); - for(;it.More();it.Next()) + for(;it.More();it.Next()) if(aMap1.Contains(it.Value())) aNum--; if(aNum == 0) { - if(aMap2.Add(aKeyEdge1)) + if(aMap2.Add(aKeyEdge1)) aKeyList.Append(aKeyEdge1); if(aMap2.Add(aKeyEdge2)) aKeyList.Append(aKeyEdge2); } } - } // at the end ==> List of edges to be named in addition + } // at the end ==> List of edges to be named in addition } aNumEdges = aKeyList.Extent(); if(aNumEdges) - theList.Assign(aKeyList); - return aNumEdges; + theList.Assign(aKeyList); + return aNumEdges; } //======================================================================= @@ -652,7 +649,7 @@ void Model_BodyBuilder::loadFirstLevel( std::shared_ptr theShape, const std::string& theName, int& theTag) { if(theShape->isNull()) return; - TopoDS_Shape aShape = theShape->impl(); + TopoDS_Shape aShape = theShape->impl(); std::string aName; if (aShape.ShapeType() == TopAbs_COMPOUND || aShape.ShapeType() == TopAbs_COMPSOLID) { TopoDS_Iterator itr(aShape); @@ -662,22 +659,22 @@ void Model_BodyBuilder::loadFirstLevel( aName = theName + aStr.ToCString(); buildName(theTag, aName); if(!theName.empty()) buildName(theTag, aName); - if (itr.Value().ShapeType() == TopAbs_COMPOUND || - itr.Value().ShapeType() == TopAbs_COMPSOLID) + if (itr.Value().ShapeType() == TopAbs_COMPOUND || + itr.Value().ShapeType() == TopAbs_COMPSOLID) { std::shared_ptr itrShape(new GeomAPI_Shape()); itrShape->setImpl(new TopoDS_Shape(itr.Value())); loadFirstLevel(itrShape, theName, theTag); } else { std::shared_ptr itrShape(new GeomAPI_Shape()); - itrShape->setImpl(new TopoDS_Shape(itr.Value())); + itrShape->setImpl(new TopoDS_Shape(itr.Value())); loadNextLevels(itrShape, theName, theTag); } } } else { std::shared_ptr itrShape(new GeomAPI_Shape()); itrShape->setImpl(new TopoDS_Shape(aShape)); - loadNextLevels(itrShape, theName, theTag); + loadNextLevels(itrShape, theName, theTag); } TopTools_ListOfShape aList; if(findAmbiguities(aShape, aList)) { @@ -696,7 +693,7 @@ void Model_BodyBuilder::loadDisconnectedEdges( std::shared_ptr theShape, const std::string& theName, int& theTag) { if(theShape->isNull()) return; - TopoDS_Shape aShape = theShape->impl(); + TopoDS_Shape aShape = theShape->impl(); TopTools_DataMapOfShapeListOfShape edgeNaborFaces; TopTools_ListOfShape empty; TopExp_Explorer explF(aShape, TopAbs_FACE); @@ -714,13 +711,13 @@ void Model_BodyBuilder::loadDisconnectedEdges( break; } } - if (faceIsNew) - edgeNaborFaces.ChangeFind(anEdge).Append(aFace); + if (faceIsNew) + edgeNaborFaces.ChangeFind(anEdge).Append(aFace); } } TopTools_MapOfShape anEdgesToDelete; - TopExp_Explorer anEx(aShape,TopAbs_EDGE); + TopExp_Explorer anEx(aShape,TopAbs_EDGE); std::string aName; for(;anEx.More();anEx.Next()) { Standard_Boolean aC0 = Standard_False; @@ -750,26 +747,27 @@ void Model_BodyBuilder::loadDisconnectedEdges( theTag++; } } - } + } TopTools_MapIteratorOfMapOfShape itDelete(anEdgesToDelete); - for(;itDelete.More();itDelete.Next()) - edgeNaborFaces.UnBind(itDelete.Key()); + for(;itDelete.More();itDelete.Next()) + edgeNaborFaces.UnBind(itDelete.Key()); edgeNaborFaces.UnBind(anEdge1); } if (aC0) { builder(theTag)->Generated(anEdge1); TCollection_AsciiString aStr(theTag); aName = theName + aStr.ToCString(); - buildName(theTag, aName); + buildName(theTag, aName); theTag++; } - } + } } -void Model_BodyBuilder::loadDisconnectedVertexes(std::shared_ptr theShape, const std::string& theName, int& theTag) +void Model_BodyBuilder::loadDisconnectedVertexes(std::shared_ptr theShape, + const std::string& theName, int& theTag) { if(theShape->isNull()) return; - TopoDS_Shape aShape = theShape->impl(); + TopoDS_Shape aShape = theShape->impl(); TopTools_DataMapOfShapeListOfShape vertexNaborEdges; TopTools_ListOfShape empty; TopExp_Explorer explF(aShape, TopAbs_EDGE); @@ -796,11 +794,11 @@ void Model_BodyBuilder::loadDisconnectedVertexes(std::shared_ptr TopTools_DataMapIteratorOfDataMapOfShapeListOfShape itr(vertexNaborEdges); for (; itr.More(); itr.Next()) { const TopTools_ListOfShape& naborEdges = itr.Value(); - if (naborEdges.Extent() < 2) { + if (naborEdges.Extent() < 2) { builder(theTag)->Generated(itr.Key()); TCollection_AsciiString aStr(theTag); aName = theName + aStr.ToCString(); - buildName(theTag, aName); + buildName(theTag, aName); theTag++; } } @@ -831,7 +829,7 @@ std::shared_ptr Model_BodyBuilder::shape() bool Model_BodyBuilder::isLatestEqual(const std::shared_ptr& theShape) { if (theShape.get()) { - TopoDS_Shape aShape = theShape->impl(); + TopoDS_Shape aShape = theShape->impl(); std::shared_ptr aData = std::dynamic_pointer_cast(data()); if (aData) { TDF_Label& aShapeLab = aData->shapeLab();