- TDF_Label aLab = theTag == 0 ? myLab : myLab.FindChild(theTag);
- // array is empty, remove the attribute
- if (theLen <= 0) {
- aLab.ForgetAttribute(TDataStd_ByteArray::GetID());
- return;
- }
- // store data of image in byte array
- Handle(TDataStd_ByteArray) aData;
- if (!aLab.FindAttribute(TDataStd_ByteArray::GetID(), aData)) {
- aData = TDataStd_ByteArray::Set(aLab, 1, theLen);
- }
- // 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]);
- }
+ Handle(TNaming_NamedShape) aNamedShape;
+ if( myLab.FindChild( DataTag_TopShape ).FindAttribute( TNaming_NamedShape::GetID(), aNamedShape ) )
+ return aNamedShape->Get();
+ return TopoDS_Shape();