std::list<std::pair<TopoDS_Shape, TopoDS_Shape> >::iterator aPairsIter = aShapePairs.begin();
for(; aPairsIter != aShapePairs.end(); aPairsIter++) {
if (theFlag) { // disabled => make selection
- aBuilder.Select(aPairsIter->first, aPairsIter->second);
+ aBuilder.Select(aPairsIter->second, aPairsIter->first);
} else if (anEvol == TNaming_GENERATED) {
aBuilder.Generated(aPairsIter->first, aPairsIter->second);
} else if (anEvol == TNaming_MODIFY) {
} else if (anEvol == TNaming_PRIMITIVE) {
aBuilder.Generated(aPairsIter->second);
} else if (anEvol == TNaming_SELECTED) {
- aBuilder.Select(aPairsIter->first, aPairsIter->second);
+ aBuilder.Select(aPairsIter->second, aPairsIter->first);
}
}
// recursive call for all sub-labels
if (aShape.IsNull())
return; // null shape inside
- /*if(!theIsStoreSameShapes) {
+ if(!theIsStoreSameShapes) {
Handle(TNaming_NamedShape) aNS = TNaming_Tool::NamedShape(aShape, aShapeLab);
if(!aNS.IsNull() && !aNS->IsEmpty()) {
// This shape is already in document, store reference instead of shape;
const TDF_Label aFoundLabel = aNS->Label();
TDF_Reference::Set(aShapeLab, aFoundLabel);
+ aShapeLab.ForgetAttribute(TNaming_NamedShape::GetID());
return;
}
- }*/
+ }
aBuilder.Generated(aShape);
// register name
+ aShapeLab.ForgetAttribute(TDF_Reference::GetID());
if(!aBuilder.NamedShape()->IsEmpty()) {
Handle(TDataStd_Name) anAttr;
if(aBuilder.NamedShape()->Label().FindAttribute(TDataStd_Name::GetID(),anAttr)) {
TopoDS_Iterator aSubIter(aShapeNew);
for(int aTag = theDecomposeSolidsTag; aSubIter.More(); aSubIter.Next()) {
- /*const TopoDS_Shape& aShape = aSubIter.Value();
+ 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 + "_Solid_" + TCollection_AsciiString(aTag - theDecomposeSolidsTag)).ToCString();
+ (aName + aShapeType + TCollection_AsciiString(aTag - theDecomposeSolidsTag)).ToCString();
std::shared_ptr<Model_Document> aDoc =
std::dynamic_pointer_cast<Model_Document>(document());
aDoc->addNamingName(aSubBuilder.NamedShape()->Label(), aSolidName);
std::shared_ptr<Model_Data> aData = std::dynamic_pointer_cast<Model_Data>(data());
if (aData) {
TDF_Label aShapeLab = aData->shapeLab();
- /*Handle(TDF_Reference) aRef;
+ Handle(TDF_Reference) aRef;
if (aShapeLab.FindAttribute(TDF_Reference::GetID(), aRef)) {
aShapeLab = aRef->Get();
- }*/
+ }
Handle(TNaming_NamedShape) aName;
if (aShapeLab.FindAttribute(TNaming_NamedShape::GetID(), aName)) {
TopoDS_Shape aShape = aName->Get();