} else {
TDataStd_Integer::Set(theLab, anEvolution);
}
-
+
for(TNaming_Iterator anIter(aName); anIter.More(); anIter.Next()) {
- aShapePairs.push_back(std::pair<TopoDS_Shape, TopoDS_Shape>
+ // iterator goes in reversed order relatively to the Builder, to, make the list reversed
+ aShapePairs.push_front(std::pair<TopoDS_Shape, TopoDS_Shape>
(anIter.OldShape(), anIter.NewShape()));
}
}
TDataStd_Name::Set(aSubBuilder.NamedShape()->Label(), aSolidName.c_str());
}
}
+ } else 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<Model_Document> aDoc = std::dynamic_pointer_cast<Model_Document>(document());
+ aDoc->addNamingName(aBuilder.NamedShape()->Label(), aName);
+ }
+ }
}
}
}
void Model_BodyBuilder::buildName(const int theTag, const std::string& theName)
{
- std::string aName = data()->name() + "/" + theName;
std::shared_ptr<Model_Document> aDoc = std::dynamic_pointer_cast<Model_Document>(document());
- aDoc->addNamingName(builder(theTag)->NamedShape()->Label(), aName);
- TDataStd_Name::Set(builder(theTag)->NamedShape()->Label(),aName.c_str());
+ //aDoc->addNamingName(builder(theTag)->NamedShape()->Label(), theName);
+ TDataStd_Name::Set(builder(theTag)->NamedShape()->Label(), theName.c_str());
}
void Model_BodyBuilder::generated(
const std::shared_ptr<GeomAPI_Shape>& theNewShape, const std::string& theName, const int theTag)
TDF_Label aChildLabel = aLabel.FindChild(aTag);
TNaming_Builder aBuilder(aChildLabel);
aBuilder.Generated(anOldShape, anExp.Current());
- TCollection_AsciiString aChildName = TCollection_AsciiString((data()->name() + "/" + theName + "_").c_str()) + aTag;
- aDoc->addNamingName(aChildLabel, aChildName.ToCString());
+ TCollection_AsciiString aChildName = TCollection_AsciiString((theName + "_").c_str()) + aTag;
+ //aDoc->addNamingName(aChildLabel, aChildName.ToCString());
TDataStd_Name::Set(aChildLabel, aChildName.ToCString());
aTag++;
}
TDF_Label aChildLabel = aLabel.FindChild(aTag);
TNaming_Builder aBuilder(aChildLabel);
aBuilder.Generated(aRoot, anExp.Current());
- TCollection_AsciiString aChildName = TCollection_AsciiString((data()->name() + "/" + theName + "_").c_str()) + aTag;
- aDoc->addNamingName(aChildLabel, aChildName.ToCString());
+ TCollection_AsciiString aChildName = TCollection_AsciiString((theName + "_").c_str()) + aTag;
TDataStd_Name::Set(aChildLabel, aChildName.ToCString());
aTag++;
}
}
}
- /* TopTools_IndexedDataMapOfShapeListOfShape aDM;
- TopExp::MapShapesAndAncestors(aShape, TopAbs_EDGE, TopAbs_FACE, aDM);
- for(int i=1; i <= aDM.Extent(); i++) {
- if(aDM.FindFromIndex(i).Extent() > 1) continue;
- if (BRep_Tool::Degenerated(TopoDS::Edge(aDM.FindKey(i))))
- continue;
- builder(theTag)->Generated(aDM.FindKey(i));
- TCollection_AsciiString aStr(theTag);
- std::string aName = theName + aStr.ToCString();
- buildName(theTag, aName);
- #ifdef DEB_IMPORT
- aName += + ".brep";
- BRepTools::Write(aDM.FindKey(i), aName.c_str());
- #endif
- theTag++;
- }
- */
TopTools_MapOfShape anEdgesToDelete;
TopExp_Explorer anEx(aShape,TopAbs_EDGE);
std::string aName;