TopTools_IndexedMapOfShape argsAllSh;
TopTools_ListOfShape::Iterator it(args);
for (;it.More();it.Next())
+ {
+ const TopoDS_Shape& aSh = it.Value();
+ if (aSh.IsNull())
+ continue;
TopExp::MapShapes(it.Value(), argsAllSh);
+ }
for (int i=1;i<=argsAllSh.Extent();i++)
{
const TopoDS_Shape& arg_sh = argsAllSh(i);
bool HYDROData_CompleteCalcCase::AddObjects( const Handle(HYDROData_Document)& doc,
Handle(HYDROData_CalculationCase)& theCalcCase,
NCollection_Sequence<Handle(HYDROData_Entity)> theNewObjects,
- bool& IsIntersectionOfNewObj)
+ bool IsUseOrigNamingOfNewRegions,
+ bool& IsIntersectionOfNewObj,
+ NCollection_Sequence<Handle(HYDROData_Region)>& theNewRegions)
{
Handle(HYDROData_PolylineXY) aBndPolyline = theCalcCase->GetBoundaryPolyline();
TopoDS_Wire aBndWire;
if (!aPolyXY.IsNull())
{
TopoDS_Shape aSh = aPolyXY->GetShape();
- newShapes.push_back(aSh);
- anAlgo.AddArgument(aSh);
- QStringList aLS(aPolyXY->GetName());
- aShToRefObjects.Bind(aSh, aLS);
+ if (!aSh.IsNull())
+ {
+ newShapes.push_back(aSh);
+ anAlgo.AddArgument(aSh);
+ QStringList aLS(aPolyXY->GetName());
+ aShToRefObjects.Bind(aSh, aLS);
+ }
}
else
{
newshapesGroups.push_back(aGroup);
}
//
- newShapes.push_back(aSh);
- anAlgo.AddArgument(aSh);
- QStringList aLS(anObj->GetName());
- aShToRefObjects.Bind(aSh, aLS);
+ if (!aSh.IsNull())
+ {
+ newShapes.push_back(aSh);
+ anAlgo.AddArgument(aSh);
+ QStringList aLS(anObj->GetName());
+ aShToRefObjects.Bind(aSh, aLS);
+ }
}
}
}
NREGV.push_back(vect);
}
}
-
+
//iter through already existing zone
//substract new zones (NREGV) from old zones
for ( int i = 1; i <= aRegions.Size(); i++ )
{
const std::vector<TopoDS_Shape>& sh_vec = NREGV[k];
Handle(HYDROData_Region) aRegion = theCalcCase->addNewRegion( doc, aRegsPref );
+ theNewRegions.Append(aRegion);
+ QString OrigNameOfRegion = "";
for (int i=0;i<sh_vec.size();i++)
{
TopoDS_Face nF = TopoDS::Face(sh_vec[i]);
- QString zoneName = aZonesPref;
+ //QString zoneName = aZonesPref;
QStringList refObjList;
//
const TopTools_ListOfShape* origLS = theModifToOrigMap.Seek(nF);
}
//
Handle(HYDROData_Zone) aRegionZone = aRegion->addNewZone( doc, aZonesPref, nF, refObjList);
+
+ //try to get an origial name region (obtained from origin object)
+ if (IsUseOrigNamingOfNewRegions && !refObjList.empty() && OrigNameOfRegion == "")
+ OrigNameOfRegion = refObjList.first();
}
+ if (OrigNameOfRegion != "")
+ aRegion->SetName(OrigNameOfRegion + "_reg");
}
//GROUPS
TopTools_SequenceOfShape aSeqSh, ModifedGDefSeq;
aGroup->GetShapes(aSeqSh);
Handle(HYDROData_SplitShapesGroup) aSplitGroup = theCalcCase->addNewSplitGroup( aName );
+ theCalcCase->AddGeometryGroup( aSplitGroup );
for (int i=1;i<=aSeqSh.Length();i++)
{
}
aSplitGroup->SetShapes(ModifedGDefSeq);
}
+
return true;
}