+
+ // Check the object 3D existance
+ checkAndSetObject3D();
+}
+
+Handle(HYDROData_DummyObject3D) HYDROData_Object::GetObject3D() const
+{
+ Handle(HYDROData_DummyObject3D) anObject;
+
+ TDF_Label aLabel = myLab.FindChild( DataTag_Object3D, false );
+ if ( !aLabel.IsNull() )
+ {
+ TDF_Label aChildLabel = aLabel.FindChild( 0, false );
+ if ( !aChildLabel.IsNull() )
+ {
+ anObject = Handle(HYDROData_DummyObject3D)::DownCast(
+ HYDROData_Iterator::Object( aChildLabel ) );
+ }
+ }
+
+ return anObject;
+}
+
+void HYDROData_Object::checkAndSetObject3D()
+{
+ TDF_Label aLabel = myLab.FindChild( DataTag_Object3D, false );
+ if ( !aLabel.IsNull() )
+ return;
+
+ TDF_Label aChildLabel = myLab.FindChild( DataTag_Object3D ).FindChild( 0 );
+ HYDROData_Iterator::CreateObject( aChildLabel, KIND_DUMMY_3D );
+}
+
+HYDROData_SequenceOfObjects HYDROData_Object::GetGroups() const
+{
+ return GetReferenceObjects( DataTag_EdgesGroup );
+}
+
+Handle(HYDROData_ShapesGroup) HYDROData_Object::GetGroup( const int theGroupId ) const
+{
+ Handle(HYDROData_ShapesGroup) aResGroup;
+
+ HYDROData_SequenceOfObjects aGroups = GetGroups();
+ if ( theGroupId < 0 || theGroupId >= aGroups.Length() )
+ return aResGroup;
+
+ aResGroup = Handle(HYDROData_ShapesGroup)::DownCast( aGroups.Value( theGroupId + 1 ) );
+
+ return aResGroup;
+}
+
+int HYDROData_Object::GetGroupId( const Handle(HYDROData_ShapesGroup)& theGroup ) const
+{
+ int aRes = -1;
+
+ HYDROData_SequenceOfObjects aGroups = GetGroups();
+ for ( int i = 1, n = aGroups.Length(); i <= n; ++i )
+ {
+ Handle(HYDROData_ShapesGroup) aGroup =
+ Handle(HYDROData_ShapesGroup)::DownCast( aGroups.Value( i ) );
+ if ( IsEqual( theGroup, aGroup ) )
+ {
+ aRes = i - 1;
+ break;
+ }
+ }
+
+ return aRes;
+}
+
+bool HYDROData_Object::SetAltitudeObject(
+ const Handle(HYDROData_IAltitudeObject)& theAltitude )
+{
+ if ( theAltitude.IsNull() )
+ return false;
+
+ Handle(HYDROData_IAltitudeObject) aPrevAltitude = GetAltitudeObject();
+ if ( IsEqual( aPrevAltitude, theAltitude ) )
+ return true;
+
+ SetReferenceObject( theAltitude, DataTag_AltitudeObject );
+
+ // Indicate model of the need to update object
+ SetToUpdate( true );
+
+ return true;
+}
+
+Handle(HYDROData_IAltitudeObject) HYDROData_Object::GetAltitudeObject() const
+{
+ return Handle(HYDROData_IAltitudeObject)::DownCast(
+ GetReferenceObject( DataTag_AltitudeObject ) );
+}
+
+void HYDROData_Object::RemoveAltitudeObject()
+{
+ Handle(HYDROData_IAltitudeObject) aPrevAltitude = GetAltitudeObject();
+ if ( aPrevAltitude.IsNull() )
+ return;
+
+ ClearReferenceObjects( DataTag_AltitudeObject );
+
+ // Indicate model of the need to update object
+ SetToUpdate( true );
+}
+
+void HYDROData_Object::SetFillingColor( const QColor& theColor )
+{
+ SetColor( theColor, DataTag_FillingColor );
+}
+
+QColor HYDROData_Object::GetFillingColor() const
+{
+ return GetColor( getDefaultFillingColor(), DataTag_FillingColor );
+}
+
+void HYDROData_Object::SetBorderColor( const QColor& theColor )
+{
+ SetColor( theColor, DataTag_BorderColor );
+}
+
+QColor HYDROData_Object::GetBorderColor() const
+{
+ return GetColor( getDefaultBorderColor(), DataTag_BorderColor );
+}
+
+QColor HYDROData_Object::getDefaultFillingColor() const
+{
+ return QColor( Qt::yellow );
+}
+
+QColor HYDROData_Object::getDefaultBorderColor() const
+{
+ return QColor( Qt::transparent );
+}
+
+QStringList HYDROData_Object::dumpObjectCreation( MapOfTreatedObjects& theTreatedObjects ) const
+{
+ QStringList aResList = HYDROData_Entity::dumpObjectCreation( theTreatedObjects );
+ if ( aResList.isEmpty() )
+ return aResList; //Object was not created
+
+ QStringList aColorsDef;
+
+ QColor aFillingColor = GetFillingColor();
+ setPythonObjectColor( aColorsDef, aFillingColor, getDefaultFillingColor(), "SetFillingColor" );
+
+ QColor aBorderColor = GetBorderColor();
+ setPythonObjectColor( aColorsDef, aBorderColor, getDefaultBorderColor(), "SetBorderColor" );
+
+ if ( !aColorsDef.isEmpty() )
+ {
+ aResList << aColorsDef;
+ aResList << QString( "" );
+ }
+
+ return aResList;
+}
+
+ObjectKind HYDROData_Object::getAltitudeObjectType() const
+{
+ return KIND_UNKNOWN;
+}
+
+Handle(HYDROData_IAltitudeObject) HYDROData_Object::getChildAltitudeObject() const
+{
+ Handle(HYDROData_IAltitudeObject) anObject;
+
+ TDF_Label aLabel = myLab.FindChild( DataTag_ChildAltitudeObject, false );
+ if ( !aLabel.IsNull() )
+ {
+ TDF_Label aChildLabel = aLabel.FindChild( 0, false );
+ if ( !aChildLabel.IsNull() )
+ {
+ anObject = Handle(HYDROData_IAltitudeObject)::DownCast(
+ HYDROData_Iterator::Object( aChildLabel ) );
+ }
+ }
+
+ return anObject;