#include "HYDROData_CalculationCase.h"
#include "HYDROData_Document.h"
#include "HYDROData_Iterator.h"
+#include "HYDROData_Object.h"
#include "HYDROData_ShapesTool.h"
#include "HYDROData_Zone.h"
+#include "HYDROData_Tool.h"
#include <TopoDS.hxx>
#include <TopoDS_Shape.hxx>
{
}
-QStringList HYDROData_Region::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const
-{
- QStringList aResList = dumpObjectCreation( theTreatedObjects );
- QString aRegionName = GetName();
-
- HYDROData_SequenceOfObjects aZones = GetZones();
- HYDROData_SequenceOfObjects::Iterator anIter( aZones );
- for ( ; anIter.More(); anIter.Next() )
- {
- Handle(HYDROData_Zone) aRefZone =
- Handle(HYDROData_Zone)::DownCast( anIter.Value() );
- if ( !aRefZone.IsNull() )
- setPythonReferenceObject( theTreatedObjects, aResList, aRefZone, "AddZone" );
- }
- aResList << QString( "" );
-
- return aResList;
-}
-
bool HYDROData_Region::CanBeUpdated() const
{
return false;
bool HYDROData_Region::AddZone( const Handle(HYDROData_Zone)& theZone )
{
+ Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
+
if ( theZone.IsNull() )
return false;
Handle(HYDROData_Region)::DownCast( theZone->GetFatherObject() );
if ( !aFatherRegion.IsNull() && aFatherRegion->Label() != myLab )
{
- Handle(HYDROData_Zone) aNewZone = addNewZone();
+ Handle(HYDROData_Zone) aNewZone = addNewZone( aDocument, "", TopoDS_Face(), QStringList() );
theZone->CopyTo( aNewZone );
// To prevent changing of stored shape
myLab.FindChild( DataTag_ChildZone ).ForgetAllAttributes( true );
}
-Handle(HYDROData_Zone) HYDROData_Region::addNewZone()
+Handle(HYDROData_Zone) HYDROData_Region::addNewZone( const Handle(HYDROData_Document)& theDoc,
+ const QString& thePrefix,
+ const TopoDS_Face& theFace,
+ const QStringList& theRefObjects )
{
TDF_Label aNewLab = myLab.FindChild( DataTag_ChildZone ).NewChild();
Handle(HYDROData_Zone)::DownCast( HYDROData_Iterator::CreateObject( aNewLab, KIND_ZONE ) );
AddZone( aNewZone );
+ QString aZoneName = HYDROData_Tool::GenerateObjectName( theDoc, thePrefix );
+ aNewZone->SetName( aZoneName );
+
+ aNewZone->SetShape( theFace );
+
+ // Add the reference object for zone
+ for ( int i = 0, n = theRefObjects.length(); i < n; ++i )
+ {
+ const QString& anObjName = theRefObjects.at( i );
+ Handle(HYDROData_Object) aRefObject =
+ Handle(HYDROData_Object)::DownCast( theDoc->FindObjectByName( anObjName ) );
+ if ( aRefObject.IsNull() )
+ continue;
+
+ aNewZone->AddGeometryObject( aRefObject );
+ }
+
return aNewZone;
}
{
TopoDS_Shape aGroupEdge = anOriGroupDef.Shapes.Value( i );
- bool anIsFound = false;
- for ( int anIndex = 1; anIndex <= aMapOfSubShapes.Extent(); anIndex++ )
- {
- if ( aGroupEdge.IsPartner( aMapOfSubShapes.FindKey( anIndex ) ) )
- {
- anIsFound = true;
- break;
- }
- }
-
- if ( !anIsFound )
+ int aShapeIndex = aMapOfSubShapes.FindIndex( aGroupEdge );
+ if ( aShapeIndex <= 0 )
continue;
anOriGroupDef.Shapes.Remove( i );