return aResList;
}
+HYDROData_SequenceOfObjects HYDROData_Channel::GetAllReferenceObjects() const
+{
+ HYDROData_SequenceOfObjects aResSeq = HYDROData_ArtificialObject::GetAllReferenceObjects();
+
+ Handle(HYDROData_Polyline3D) aGuideLine = GetGuideLine();
+ if ( !aGuideLine.IsNull() )
+ aResSeq.Append( aGuideLine );
+
+ Handle(HYDROData_Profile) aProfile = GetProfile();
+ if ( !aProfile.IsNull() )
+ aResSeq.Append( aProfile );
+
+ return aResSeq;
+}
+
TopoDS_Shape HYDROData_Channel::GetTopShape() const
{
return getTopShape();
void HYDROData_Channel::Update()
{
- removeTopShape();
- removeShape3D();
- SetToUpdate( false );
+ HYDROData_ArtificialObject::Update();
Handle(HYDROData_Polyline3D) aGuideLine = GetGuideLine();
Handle(HYDROData_Profile) aProfile = GetProfile();
bool HYDROData_Channel::SetGuideLine( const Handle(HYDROData_Polyline3D)& theGuideLine )
{
- if ( theGuideLine.IsNull() )
+ Handle(HYDROData_Polyline3D) aPrevGuideLine = GetGuideLine();
+
+ if ( theGuideLine.IsNull() )
+ {
+ RemoveGuideLine();
+ return !aPrevGuideLine.IsNull();
+ }
+
+ if ( IsEqual( aPrevGuideLine, theGuideLine ) )
return false;
-
+
TopoDS_Wire aHydraulicWire = TopoDS::Wire( theGuideLine->GetTopShape() );
if ( aHydraulicWire.IsNull() )
return false; // The polyline must be a single wire
- Handle(HYDROData_Polyline3D) aPrevGuideLine = GetGuideLine();
- if ( IsEqual( aPrevGuideLine, theGuideLine ) )
- return true;
-
SetReferenceObject( theGuideLine, DataTag_GuideLine );
// Indicate model of the need to update the chanel presentation
bool HYDROData_Channel::SetProfile( const Handle(HYDROData_Profile)& theProfile )
{
- if ( theProfile.IsNull() )
- return false;
-
Handle(HYDROData_Profile) aPrevProfile = GetProfile();
+
+ if ( theProfile.IsNull() )
+ {
+ RemoveProfile();
+ return !aPrevProfile.IsNull();
+ }
+
if ( IsEqual( aPrevProfile, theProfile ) )
- return true;
+ return false;
SetReferenceObject( theProfile, DataTag_Profile );