Salome HOME
HYDRO feature 10: Creation/edition of the calculation case (T 1.12).
[modules/hydro.git] / src / HYDROData / HYDROData_Zone.cxx
1
2 #include "HYDROData_Zone.h"
3
4 #include "HYDROData_Bathymetry.h"
5 #include "HYDROData_Document.h"
6 #include "HYDROData_Polyline.h"
7 #include "HYDROData_Iterator.h"
8
9 #include <BRepBuilderAPI_MakeFace.hxx>
10 #include <TDataStd_IntegerArray.hxx>
11 #include <TopoDS_Wire.hxx>
12
13 #include <QColor>
14 #include <QStringList>
15
16 #define PYTHON_ZONE_ID "KIND_ZONE"
17
18 IMPLEMENT_STANDARD_HANDLE(HYDROData_Zone, HYDROData_Domain)
19 IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Zone, HYDROData_Domain)
20
21 HYDROData_Zone::HYDROData_Zone()
22 {
23 }
24
25 HYDROData_Zone::~HYDROData_Zone()
26 {
27 }
28
29 QStringList HYDROData_Zone::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const
30 {
31   QStringList aResList = HYDROData_Domain::DumpToPython( theTreatedObjects );
32   if ( aResList.isEmpty() )
33     return aResList;
34
35   aResList << QString( "" );
36
37   Handle(HYDROData_Polyline) aRefPolyline = GetPolyline();
38   setPythonReferenceObject( theTreatedObjects, aResList, aRefPolyline, "SetPolyline" );
39
40   return aResList;
41 }
42
43 void HYDROData_Zone::SetPolyline( const Handle(HYDROData_Polyline)& thePolyline )
44 {
45   SetReferenceObject( thePolyline, DataTag_Polyline );
46 }
47
48 Handle(HYDROData_Polyline) HYDROData_Zone::GetPolyline() const
49 {
50   return Handle(HYDROData_Polyline)::DownCast( 
51            GetReferenceObject( DataTag_Polyline ) );
52 }
53
54 void HYDROData_Zone::RemovePolyline()
55 {
56   ClearReferenceObjects( DataTag_Polyline );
57 }
58
59 TopoDS_Face HYDROData_Zone::Face() const
60 {
61   Handle(HYDROData_Polyline) aPolyline = GetPolyline();
62   if( !aPolyline.IsNull() )
63   {
64     TopoDS_Wire aWire = aPolyline->Wire();
65     if( !aWire.IsNull() )
66     {
67       BRepBuilderAPI_MakeFace aMakeFace( aWire, Standard_True );
68       aMakeFace.Build();
69       if( aMakeFace.IsDone() )
70         return aMakeFace.Face();
71     }
72   }
73   return TopoDS_Face();
74 }
75
76 QString HYDROData_Zone::getPythonKindId() const
77 {
78   return QString( PYTHON_ZONE_ID );
79 }
80
81
82