- if ( myMainEntry == "")
- return myEntry.toLatin1().data();
-
- return myMainEntry.toLatin1().data();
-}
-
-//=================================================================================
-// function : GetCorrectedListOfIds
-// purpose : Called to convert the list of IDs from sub-shape IDs to main shape IDs
-//=================================================================================
-QList<int>
-StdMeshersGUI_SubShapeSelectorWdg::GetCorrectedListOfIDs( bool fromSubshapeToMainshape,
- bool* isOK )
-{
- if (( myMainShape.IsNull() || myGeomShape.IsNull() ) && fromSubshapeToMainshape )
- return myListOfIDs;
- else if (( myMainShape.IsNull() /*||*/&& myGeomShape.IsNull() ) && !fromSubshapeToMainshape )
- return mySelectedIDs;
-
- if ( !fromSubshapeToMainshape ) // called from SetListOfIDs
- {
- if ( myMainShape.IsNull() )
- std::swap( myMainShape, myGeomShape );
- }
-
- QList<int> aList;
- TopTools_IndexedMapOfShape aGeomMap, aMainMap;
- TopExp::MapShapes(myMainShape, aMainMap);
- if ( !myGeomShape.IsNull() )
- TopExp::MapShapes(myGeomShape, aGeomMap);
-
- bool ok = true;
- if ( fromSubshapeToMainshape ) // convert indexes from sub-shape to mainshape
- {
- int size = myListOfIDs.size();
- for (int i = 0; i < size; i++) {
- int index = myListOfIDs.at(i);
- if ( aGeomMap.Extent() < index )
- {
- ok = false;
- }
- else
- {
- TopoDS_Shape aSubShape = aGeomMap.FindKey( index );
- if ( mySubShType != aSubShape.ShapeType() )
- ok = false;
- if ( !aMainMap.Contains( aSubShape ))
- ok = false;
- else
- index = aMainMap.FindIndex( aSubShape );
- }
- aList.append( index );
- }
- myIsNotCorrected = false;
- }
- else // convert indexes from main shape to sub-shape, or just check indices
- {
- int size = mySelectedIDs.size();
- for (int i = 0; i < size; i++) {
- int index = mySelectedIDs.at(i);
- if ( aMainMap.Extent() < index )
- {
- ok = false;
- }
- else
- {
- TopoDS_Shape aSubShape = aMainMap.FindKey( index );
- if ( mySubShType != aSubShape.ShapeType() )
- ok = false;
- if ( !aGeomMap.Contains( aSubShape ) && !aGeomMap.IsEmpty() )
- ok = false;
- else
- index = aGeomMap.FindIndex( aSubShape );
- }
- aList.append( index );
- }
- }
- if ( isOK ) *isOK = ok;
-
- return aList;