X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_CalculationCase.cxx;h=509c2c5fb0bb63ffbd4ca5dd173f9d7aa5d15aa0;hb=ea116c29ba9e987172ad9befad3c607ef6bfe968;hp=9813ae94d501d1f80e61fef10b951c96067d4dfd;hpb=ba70cb7d5a35a6d311acc1b061fb450afe04d0f8;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_CalculationCase.cxx b/src/HYDROData/HYDROData_CalculationCase.cxx index 9813ae94..509c2c5f 100644 --- a/src/HYDROData/HYDROData_CalculationCase.cxx +++ b/src/HYDROData/HYDROData_CalculationCase.cxx @@ -42,6 +42,10 @@ #define CALCULATION_REGIONS_PREF GetName() + "_Reg" #define CALCULATION_ZONES_PREF GetName() + "_Zone" #define CALCULATION_GROUPS_PREF GetName() + "_" +//#define DEB_CLASS2D 1 +#ifdef DEB_CLASS2D +#include +#endif #define EXPORT_NAME "HYDRO_" + GetName() @@ -87,7 +91,7 @@ void HYDROData_CalculationCase::SetName( const QString& theName ) } } - HYDROData_SequenceOfObjects aGroups = GetGeometryGroups(); + HYDROData_SequenceOfObjects aGroups = GetSplittedGroups(); anIter.Init( aGroups ); for ( ; anIter.More(); anIter.Next() ) @@ -107,7 +111,8 @@ void HYDROData_CalculationCase::SetName( const QString& theName ) QStringList HYDROData_CalculationCase::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const { QStringList aResList = dumpObjectCreation( theTreatedObjects ); - QString aCalculName = GetName(); + + QString aCalculName = GetObjPyName(); HYDROData_SequenceOfObjects aGeomObjects = GetGeometryObjects(); HYDROData_SequenceOfObjects::Iterator anIter( aGeomObjects ); @@ -115,12 +120,39 @@ QStringList HYDROData_CalculationCase::DumpToPython( MapOfTreatedObjects& theTre { Handle(HYDROData_Object) aRefGeomObj = Handle(HYDROData_Object)::DownCast( anIter.Value() ); - if ( !aRefGeomObj.IsNull() ) - setPythonReferenceObject( theTreatedObjects, aResList, aRefGeomObj, "AddGeometryObject" ); + setPythonReferenceObject( theTreatedObjects, aResList, aRefGeomObj, "AddGeometryObject" ); + } + aResList << QString( "" ); + + QString aGroupName = HYDROData_Tool::GenerateNameForPython( theTreatedObjects, "case_geom_group" ); + + HYDROData_SequenceOfObjects aGeomGroups = GetGeometryGroups(); + anIter.Init( aGeomGroups ); + for ( ; anIter.More(); anIter.Next() ) + { + Handle(HYDROData_ShapesGroup) aGeomGroup = + Handle(HYDROData_ShapesGroup)::DownCast( anIter.Value() ); + if ( aGeomGroup.IsNull() ) + continue; + + Handle(HYDROData_Object) aFatherGeom = + Handle(HYDROData_Object)::DownCast( aGeomGroup->GetFatherObject() ); + if ( aFatherGeom.IsNull() ) + continue; + + int aGroupId = aFatherGeom->GetGroupId( aGeomGroup ); + aResList << QString( "%1 = %2.GetGroup( %3 );" ) + .arg( aGroupName ).arg( aFatherGeom->GetObjPyName() ).arg( aGroupId ); + + aResList << QString( "%1.AddGeometryGroup( %2 );" ).arg( aCalculName ).arg( aGroupName ); } aResList << QString( "" ); - aResList << QString( "%1.SplitGeometryObjects();" ).arg( aCalculName ); + Handle(HYDROData_PolylineXY) aBoundaryPolyline = GetBoundaryPolyline(); + setPythonReferenceObject( theTreatedObjects, aResList, aBoundaryPolyline, "SetBoundaryPolyline" ); + aResList << QString( "" ); + + aResList << QString( "%1.Update();" ).arg( aCalculName ); aResList << QString( "" ); // Now we restore the regions and zones order @@ -134,11 +166,19 @@ QStringList HYDROData_CalculationCase::DumpToPython( MapOfTreatedObjects& theTre continue; QString aRegionName = aRegion->GetName(); - // TODO - } - aResList << QString( "" ); - aResList << QString( "%1.Update();" ).arg( aCalculName ); + HYDROData_SequenceOfObjects aZones = aRegion->GetZones(); + HYDROData_SequenceOfObjects::Iterator aZonesIter( aZones ); + for ( ; aZonesIter.More(); aZonesIter.Next() ) + { + Handle(HYDROData_Zone) aRegZone = + Handle(HYDROData_Zone)::DownCast( aZonesIter.Value() ); + if ( aRegZone.IsNull() ) + continue; + + // TODO + } + } aResList << QString( "" ); return aResList; @@ -214,8 +254,8 @@ void HYDROData_CalculationCase::Update() { const QString& anObjName = aSplitData.ObjectNames.at( i ); - Handle(HYDROData_Object) aRefObject = Handle(HYDROData_Object)::DownCast( - HYDROData_Tool::FindObjectByName( aDocument, anObjName ) ); + Handle(HYDROData_Object) aRefObject = + Handle(HYDROData_Object)::DownCast( aDocument->FindObjectByName( anObjName ) ); if ( aRefObject.IsNull() ) continue; @@ -231,7 +271,10 @@ void HYDROData_CalculationCase::Update() QString anObjName = aSplitData.ObjectNames.first(); if ( anObjName.isEmpty() ) continue; - +#ifdef DEB_CALCULATION + QString aStr = aSplitData.ObjectNames.join(" "); + cout << " CCase: Names = "< aGroupIndexes; for( int i = 1, n = aGroupDef.Shapes.Length(); i <= n; i++ ) - { + { const TopoDS_Shape& aShape = aGroupDef.Shapes.Value( i ); #ifdef DEB_CALCULATION cout << "\nOld shape(" << i << ") = " << aShape.TShape() < 0) { - aGroupIndexes.Append( anIndex ); - //break; - } else { -#ifdef DEB_CALCULATION - TCollection_AsciiString aNam("Lost_"); - if(!aMapOfSubShapes.Contains(aModifiedShape)) { - for ( int anIndex = 1; anIndex <= aMapOfSubShapes.Extent(); anIndex++ ) - { - const TopoDS_Shape& aS = aMapOfSubShapes.FindKey( anIndex ); - if ( aModifiedShape.IsPartner( aS ) ) - { - cout <<"\nIndex in Map = " << anIndex << "TShape = " << aS.TShape() <