- // copy bytes one by one
- if (aData->Length() != theLen) {
- Handle(TColStd_HArray1OfByte) aNewData = new TColStd_HArray1OfByte(1, theLen);
- for(int a = 0; a < theLen; a++)
- aNewData->SetValue(a + 1, theData[a]);
- aData->ChangeArray(aNewData);
- } else {
- for(int a = 0; a < theLen; a++)
- aData->SetValue(a + 1, theData[a]);
+
+ return anObject;
+}
+
+void HYDROData_Object::checkAndSetAltitudeObject()
+{
+ Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
+
+ ObjectKind anAltitudeObjectType = getAltitudeObjectType();
+ if ( anAltitudeObjectType == KIND_UNKNOWN )
+ return; // No need to create altitude object
+
+ TDF_Label aLabel = myLab.FindChild( DataTag_ChildAltitudeObject, false );
+ if ( !aLabel.IsNull() )
+ return;
+
+ TDF_Label aChildLabel = myLab.FindChild( DataTag_ChildAltitudeObject ).FindChild( 0 );
+
+ Handle(HYDROData_IAltitudeObject) anAltitudeObject =
+ Handle(HYDROData_IAltitudeObject)::DownCast(
+ HYDROData_Iterator::CreateObject( aChildLabel, anAltitudeObjectType ) );
+
+ QString anAltitudePref = GetName() + "_Altitude";
+ QString anAltitudeName = HYDROData_Tool::GenerateObjectName( aDocument, anAltitudePref );
+ anAltitudeObject->SetName( anAltitudeName );
+
+ SetAltitudeObject( anAltitudeObject );
+}
+
+Handle(HYDROData_ShapesGroup) HYDROData_Object::createGroupObject()
+{
+ TDF_Label aNewLab = myLab.FindChild( DataTag_EdgesGroup ).NewChild();
+
+ Handle(HYDROData_ShapesGroup) aNewGroup =
+ Handle(HYDROData_ShapesGroup)::DownCast( HYDROData_Iterator::CreateObject( aNewLab, KIND_SHAPES_GROUP ) );
+ AddReferenceObject( aNewGroup, DataTag_EdgesGroup );
+
+ return aNewGroup;
+}
+
+void HYDROData_Object::RemoveGroupObjects()
+{
+ TDF_Label aLabel = myLab.FindChild( DataTag_EdgesGroup, false );
+ if ( !aLabel.IsNull() )
+ aLabel.ForgetAllAttributes();
+}
+
+void HYDROData_Object::RemoveTopShape()
+{
+ HYDROData_Entity::SetShape( DataTag_TopShape, TopoDS_Shape() );
+}
+
+void HYDROData_Object::RemoveShape3D()
+{
+ HYDROData_Entity::SetShape( DataTag_Shape3D, TopoDS_Shape() );
+}
+
+bool HYDROData_Object::IsSubmersible() const
+{
+ Handle(TDataStd_Integer) aSubMersibleAttr;
+
+ bool isSubmersible = true; //default
+ if( myLab.FindAttribute(TDataStd_Integer::GetID(), aSubMersibleAttr ) )
+ {
+ int aValue = aSubMersibleAttr->Get();
+ isSubmersible = ( aValue != 0 );